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
The concept of using Abstraction and then Automation to simplify the development process is a common one, but the detailed examples given here were well worth the read. Thanx for the reminder of how powerful these concepts are and how they can be used together for even more savings.
David Patterson, known for his pioneering research that led to RAID, clusters and more, is part of a team at UC Berkeley that recently made its RISC-V processor architecture an open source hardware offering. We talk with Patterson and one of his colleagues behind the effort about the opportunities they see, what new kinds of designs they hope to enable and what it means for today’s commercial processor giants such as Intel, ARM and Imagination Technologies.