The system and software process described here is based upon two key principles:
1. Only say something once;
2. Keep separate concerns separate throughout. These principles, both absent from many other mainstream approaches, help to overcome the problems of the classic analysis / design / code development process, in particular:
• The manually maintained deliverables of the process embody significant overlap. Every fact in the analysis model appears again in the design model and every fact in the design model appears again in the code. With constantly changing requirements, this level of redundancy is untenable.
• Each component of the design is subjected to its own, personal, design phase. This often results in a plethora of different design and coding strategies, which renders the components a source of enduring intrigue and frustration for the maintainers.
MDA overcomes these issues using a combination of abstraction and automation. Abstraction means that systems engineers construct a set of simple but precise views of the system requirements and architecture, without prejudice to the implementation technologies. The resulting black box component specifications form the starting point for software design, in which the software engineers identify the classes, states and actions encapsulated within each component, again in an abstract, platform independent way. Use of automation eliminates the need to maintain derived artefacts, such as code and documentation. The overall system and software development process is illustrated in Figure 1.
Modeling in this style is effectively knowledge formalization. The models generated capture and formalize the considerable application expertise within the team in a way that is uncontaminated by specific implementation technologies. This has the dual benefits of:
• Ensuring the models become long-life assets, immune to technological fashion changes, and
• Making the models much simpler, as each model confines itself to as single subject matter, or domain.
Figure 1: A lightweight system and software process