Abstract :
Generating code automatically from the design level increases product quality and productivity but also facilitates maintenance and evolution by limiting changes to the design level. Flexibility is a basic requirement that should be fulfilled by automatic code generators: the translation strategies should be easily adapted to different platforms or company standards and also to the evolution of the system which they produce. We present our approach to flexible code generation, in the frame of our SDL methodology, and the code generator tool ProgGen. The methodology focuses on the design phase and distinguishes between functional design (i.e. describing behavior) and implementation design (i.e. describing the concrete system). The implementation design description plays a central role in the code generation process. ProgGen is a generic tool which can be used to produce SDL translators; the output is controlled by a set of code skeletons. The skeletons can easily be tailored to support changes in the hand-coded software interfaces (e.g. driver interfaces), in the implementation platform or in the non functional requirements. The use of ProgGen at Alcatel Telecom Norway illustrates how the code generation process has been formalized. Finally, we show how ProgGen is used in the ESPRIT project PROTEUS where our goal is to complete automation of the entire system building.