Model Engineering
(originally published as [FR03b])
Debates on the Usability of Models in Engineering
The heightened awareness of the benefits that can be derived from model-driven software and system development approaches is evident in discussions that take place in academic conferences, workshops, and industry meetings. On the other hand, there is a significant number of developers and researchers who question the feasibility and benefits of model-driven approaches. Advocates of modeling approaches, for sure, can recount the discussions, debates, and outright arguments, they have had with their “code-centric” colleagues. These colleagues recall the dismal failure of CASE tools that promised orders-of-magnitude improvement in productivity and product quality, and the difficulty of maintaining consistency between models and code. The more sophisticated protagonists question the feasibility of developing general-purpose modeling languages and techniques that can provide useful abstractions and mechanisms for most application domains.
Two recent events highlight the gap between the two camps. A guest speaker at a recent workshop on Program Comprehension noted that in the COBOL-dominated financial sector “Graphs and UML diagrams may be full of meaning, but unless their meaning can be presented in source terms (i.e., in COBOL terms), they will not be understood by the financial programming community.” in “Comprehending Reality – Practical Barriers to Industrial Adoption of Software Maintenance Automation”, by James Cordy.
We also came across a review (on Amazon.com) of an introductory book on Java that included the following complaint: “However, it extensively uses UML, and I think it’s a safe assumption that most people who don’t know Java, also don’t know UML. Looking at UML diagrams can prove to be extremely frustrating for a beginner”.
Rather than throw our hand up in despair, or scoff at the limited scope of the codecentric view, we should use arguments against the use of models in software development as fuel for driving research on model-driven approaches and development of supporting tools. In this essay we will sketch our view on some of the research directions that may be worth pursuing.
Model-based Software Engineering Benefits
Model-based software description techniques use models, expressed in a formal language, to describe the architecture of a system, and the behavior of software artifacts. Models expressed in such a language can also be used to
- (1) clarify the structure of an enterprise
- (2) describe business workflows
- (3) describe development processes
- (4) describe the users of software systems in terms of their needs and motivations. These descriptions can be used as communication artifacts, as points of references against which subsequent implementations are verified, or as the basis for further development (e.g., through the use of refinement and realization techniques).
Stachowiak has characterized the Term “Model”
In his work published in the seventies, Stachowiak [Sta73] characterized a “model” as follows:
- (1) A model has a purpose.
- (2) A model describes some entity that exists or is intended to exist in the future.
- (3) A model is an abstraction, that is, it does not describe details of the entity that are not of interest to the audience of the model.
When building a model it is important to consider its purpose. Models can be created to help clarify requirements and designs of complex systems, to support analysis activities, to document systems at various levels of abstraction, and to support decision-making. In a model-driven software development approach, models can also be used to describe how descriptions of software are transformed during development. It is conceivable that a variety of models can be used during different stages of the development process; in general, it would be difficult to develop a model that can be used for all modeling purposes during a development project. To enable software and system developers to use models that best suit their development needs (model purposes), a powerful mechanism for translating between different kinds of models is critical to the successful use of models in practice.
Model-Based Transformations
Techniques that describe transformations on software and system artifacts are receiving much attention currently. Transformation models that can be stored, specialized, and reused pave the way for the development of techniques and tools that support systematic and controlled evolution of software and system artifacts. Successful transformation languages can be found in the areas of logic systems, for example, as found in theorem-provers, graph systems in the form of graph transformations, and the database are in the form of schema evolution techniques. Examining the transformation languages in these areas is an ongoing research activity and promises to yield insights that can lead to better approaches to modeling transformations to support evolution of software artifacts. Explicit and possibly standardized model transformation languages will also be key to the development of techniques and methods that support the separation of technology-dependent concerns from technology-independent concerns during development. This in turn can lead to stable investments in models and transformations.
Adaptation of Software Project Practices
Use of model-driven development techniques will require adaptation of current software project practices and processes. The use of tools supporting the creation of models and their transformation to efficient executable forms can have a downsizing effect on projects. Using models to generate test cases paves the way for the development of systematic testing processes that utilize software descriptions developed throughout the development phases.
Model Engineering as Discipline on its own
To better support the use of models during development it will become necessary to further understand models in terms of how they can be transformed and analyzed, as well as understand the impact of software size and complexity on model creation, management and evolution. We expect that “model engineering” will become a new and highly interesting sub-discipline in the software engineering discipline.
Summary
- Use of models built for specific purposes will become increasingly important for successful development projects.
- Explicit model transformation languages are key to reuse of transformation knowledge and independence of tools and technology.
- Model Engineering might be considered a new subdiscipline to Software Engineering
This essay is originally published as SoSyM editorial [FR03b] under the Creative Commons licence.
-
[FR03b]In: Journal Software and Systems Modeling (SoSyM), Volume 2(2), pp. 73-75, Springer Berlin / Heidelberg, 2003.
-
[Sta73]Springer Verlag, Wien, New York, 1973.