Extensibility is one of the main design goals of Jupe. We try to build up an architecture that facilitates extending and enhancing. The most important extensions would be the support for other programming languages than Java and for other diagram types than class diagrams. Figure 6.1 shows the five layers of Jupe including support for C++ and UML sequence diagrams.
As UML2 is an implementation of the UML standard and independent of the programming language, no adaption of it would be necessary. The other layers, model, editparts and figures could be reused, too. Depending on the programming language it could be unavoidable to add or hide small parts. E.g. the concept of interfaces isn't known in C++, so the class diagram editor should not provide their creation when working with it. On the other hand, there could be features of UML which are supported by another programming language, but not by Java. They are consequently neither included in our model, nor in the editparts nor figures. Although small adaptations are necessary, most parts of our work could be reused.
The actual work would be to provide synchronization between the source code in the new programming language and UML2. It consists of a similar work as described in chapter 5.
On the contrary, adding a new diagram type demands to develop new model, editpart and figure layers. They highly depend on the diagram type and cannot be reused on code level. Their development could be resembling to the work described in the sections 4.3 and 4.4. The use of a model layer is essential for GEF, since it requires an application model. Further, the concept of property IDs should be implemented in a similar way to the class diagram model in order to integrate the new diagram type in the plugin.
http://jupe.binaervarianz.de