This technique involves using the conceptual model on an ongoing basis to drive the development of an application and supports the notion of round-trip engineering. After an architect has created a detailed class-level model using UML, this model becomes the seed for a 3GL code model. The architect applies a transformation directly to the model to generate the structure, or in many cases the actual compiling code, for the application.
The developer is free to develop the code model while the architect continues to design the high-level UML model. This parallel workflow causes the UML model and the code model to diverge, making collaboration difficult, but the initial transformation configuration supports model reconciliation as well as forward and reverse transformations.
To minimize risk, which increases as the models diverge, the architect performs a reverse transformation on the code model, creating a temporary snapshot that the architect uses in a reconciliation operation to selectively merge changes into the conceptual model. After the models are merged, a transformation can then be applied to update the implementation-level code, thereby driving the architect's conceptual model changes back into the code model. This process can be repeated as often as necessary throughout the development process. Both models continue to evolve in parallel and are reconciled at predefined checkpoints.
The protocol in which Conceptual Models Drive Development is best utilized when in these circumstances:
This method can be used by the whole team, from architect to developer.
Conceptual Models Drive Development approach provides strict governance. The code implementation reflects at all times the architectural specification. The approach also results in less hand-coding, greater repeatability, higher quality, fewer defects, and the ability to make changes to the design at any phase of development, which makes this approach very agile.
Conceptual Models Drive Development approach provides strict governance and the ability to make a fix and have it corrected throughout the application; little changes can be hard to implement hard to avoid having the transformation process affect those small changes.