This paper describes the techniques and the tools developed to construct CO-OPN specifications (Concurrent Object Oriented Petri Nets) and to derive parallel programs. CO-OPN is a specification language allowing to describe concurrent aspects and data-structure of computer programs in an abstract way. The concurrent part of the formalism is described with Petri nets while the data-structure are described with algebraic abstract data types. In the CO-OPN formalism, this association is structured by the notion of object. The environment developed around CO-OPN is SANDS (Structured Algebraic Nets Development System). The production of quality software needs the use of a complete development method based on a life cycle including specification and implementation phases. This method must provide techniques in order to derive implementation from specification and for verifying if the implementation is adequate. The development of software must be supported by tools such as editors, validation and verification processes. A tool for obtaining correct parallel programs from formally specified problems is presented. The technique we propose is based on the concept of transformations oriented into the context of parallelism. In addition we introduce a methodology for deriving correct parallel algorithms.