# What is Papyrus Software Designer?

Papyrus designer is an extension of the UML Papyrus editor. It supports the software design by providing code generation from models including embedded and real-time systems as potential targets. In does this at two different levels of abstraction.

- Direct code generation for a specific programming language. Currently, C++ and Java are supported, C will be supported soon. The code generators also support reverse and roundtrip code generation.

- Perform a sequence of model-to-model transformations prior to code generation, as shown in the following image:

Tool Chain overview

There are pre-defined transformation chains. One supports component-based models. In this case, the generation starts from a model that includes the definition of software components, hardware nodes and deployment information. The latter consists of a definition of the instances of components and nodes and an allocation between these. Code generation is done by a sequence of transformations steps. The model transformation takes care of some platform specific aspects (e.g. communication mechanisms or thread allocation), based on non-functional properties.

Papyrus Software Designer is integrated into the open source UML editor Papyrus, The UML profile MARTE is used for non-functional properties.