Implementation Modeling for Software Systems

This describes using UML models in the implementation phase, but ignores MDA/MDD approaches, because these are described separately here: Model Driven Architecture, Model Driven Development

Motivation/Idea
A model on implementation level describes how a software system is implemented. The modeled constructs have a mapping to entities in the implementation, like in the source code, the database structures or in the software configuration. It also can contain informations on the used design patterns. It is not required that the model is complete: not everything in the implementation need to be modeled. For the correctness of the model, it is important that there is no contradiction to the implementation.

One approach for this is to have a 1:1 relation between the model and the code. If this is achieved, then the model both serves as a visual aid to present and understand the implementation of a software system, and for organizing and updating the sources. The main challenge of this approach is to keep both model and sources in sync, which can be a hard task for large software systems.

The strong request for such synchronization capability and round-trip-engineering functionality reveals that there is a great interest in that approach.

Limitations
UML tool vendors advertise the strength of their tools in supporting this approach for many years. However, code synchronization seems either not be conveniently/efficiently solved or considered as a less desirable methodology. This can be deduced by the popularity of other approaches like MDA/MDD, or the existing denial of UML usage on the implementation phase.