Many UML 2.0 products have been able to generate code for languages like Ada, C, C++, and Java from UML (Universal Modeling Language) models. Typically, though, the C developer was expected to learn UML. Legacy code would be maintained, but the new target would be UML. While it's not a bad approach, it doesn't always make friends.
The new C support in the latest release (V7) of Telelogic's Rhapsody breaks the mold by allowing C developers to employ modeling while retaining the file and directory hierarchy they already use with tools such as the Eclipse IDE (integrated development environment).
This isn't just a use of the existing source files but rather showing and building graphical models using these file relationships (see the figure). Rhapsody's reverse engineering feature can scan source files and create these C-style models, making startup almost effortless.
Even more important is the ability to move back and forth between the Eclipse CDT (C/C++ Development Tools) and the UML model. Changes move in both directions, letting designers complete high-level UML design and have the changes reflected in the code. Likewise, new functions added to the C source code will show up as functions available in UML. A few mouse clicks can move from C source code to the matching UML definition and back again.
Of course, changes can drive programmers and managers to drink if the right code management tools aren't used. That's why the new graphical differentiation feature is so important. It graphically highlights changes in the UML models.
Another addition in V7 is support for the Mathworks' Simulink R2006b. It provides a similar linkage between UML and Simulink's code allowing equations and Simulink modeling code to be incorporated into Rhapsody. The integration provides co-execution capabilities.