Model-Driven Software Development
Last Updated (Wednesday, 16 June 2010 21:55) Written by Thomas Schütz Saturday, 03 April 2010 03:51
Model driven software development (MDSD) places formal models in the centre of the development process. This allows a higher degree of abstraction and automation.
Abstraction
By using abstraction essential principles and notions of the application domain, as well as the relations between them, can be extracted and formalized. This leads to a very compact and precise way to express facts and dependencies of the domain. The work of the domain expert can be much more productive as before, even by an order of magnitude. Also the comprehensibility by others is highly improved since good abstractions are documenting themselves to a great deal.
Automation
The above mentioned abstraction at the same time allows for automation of typical tasks and processes. For example by generation of code, documentation and tests from the formal models many routine work can be done without manual interaction. This not only yields a substantially reduced development time but also leads to significantly improved quality. Another advantage to be mentioned is the possibility of automatic validation on the model level.
Domain Specific Languages (DSL)
The result of the afore mentioned abstraction process can be cast into a domain specific language (DSL). We distinguish textual and graphical DLSs.
A concrete syntax defines the way the user can edit models.
Textual DSLs
The concrete textual syntax can be defined by a grammar, typically specified as an EBNF. The user can edit the model with specific text editors. This is often the fastest and most simple way to get a model editor.
Graphical DSLs
A concrete graphical syntax is created by associating graphical notations to each element of the meta model. Examples are finite state machines or workflow diagrams. Graphical editors are harder to implement but provide in some cases a better overview.
Metamodels
A metamodel describes the abstract syntax of a DSL. Notions of a DSL can be translated to classes and associations of a meta model. This way a "sentence" of the DSL can be transformed into an instance of the corresponding meta model. The metamodel can easily be transformed into textual languages (codegenerators) or other models (model to model transformation).
Code Generation
Besides useful things like generation of documentation from a model, code generation especially allows the generation of source code into a given programming language. This source code then is compiled and possibly linked with a runtime library. This way the model can be transformed directly into executable programs.




