A Lightweight MDD Process Applied in Small Projects
A Lightweight MDD
Process Applied in
Gabor Guta, PhD
Introduction to MDD1
Generative approaches become popular like
model driven development (MDD),
domain specific languages (DSL), etc.
Several success stories about applying these
techniques in large
Process frameworks and methods for full scale
application of them
Lot of software developed by small teams using
There is no or little help of its application in small!
What is MDD?
Generating software from a model
– Advantage: saving time/effort on implementing
repetitive tasks by working on model level
The most well known approaches are the
Microsoft's Software Factories
What is MDD? (cont'd)
The artifacts generating transformations are often
Domain & intermediate models can be described
What is the domain model (real life /
How can the domain meta-model be
What kind of notation do we use to communicate
the domain model?
How are the transformations defined?
Do we allow to edit the intermediate models or
the generated artifacts?
How does MDD affect the development process?
Are we able to reverse the transformation
(propagate changes of the generated artifacts
back to the original model)?
How can intermediate models be merged if the
original generated model was modified and a
different one was generated after the domain
model was changed?
What are the quality implications of the MDD?
How does it modify the test and review procedures?
What kind of additional problem can be expected?
Important Issues of the Lightweight MDD
Most of the risks should be mitigated
No immature technology allowed
Fall back to the traditional development method
The approach should not delay the schedule in
It should have immediate business advantage
The approach should be cost sensitive
No high cost MDA tool set,
No extensive training
Important Issues of the Lightweight MDD (cont'd)
The domain-model should be kept as simple as
possible and the generated code should be
human-readable and modifiable.
The results should be reusable in other projects.
Our Minimalistic Approach
Creating the simplest solution
Using the simplest tool-set
Explicitly support the partial approach
We just model and generate parts where it pays off
Keeping track of which requirement applied in the
model is relatively cheap
An enterprise web application for a specific
Microsoft’s ASP.NET technology and an MS-SQL
back-end were used (conforming to architectural
guidelines of the multi-layer enterprise ASP.NET
Readable source code and complete developer
The project team experienced with traditional
iterative development method (containing
elements from current Agile methodologies)
The agile development team
Members were: developers, a software architect
Responsible for: hand crafted software
The business analyst team
Members were: managers
Responsible for: requirements and the domain models
The model driven development team
Members were: an MDD expert, developers
Responsible for: MDD environment, the templates
An MDD vision
A code generation tool
A domain test model
An MDD environment (domain metamodel, a
domain test model, and a code generation tool).
Hand crafted software
A software requirement specification (or
Domain model extraction
Out: initial domain model, MDD vision
The MDD environment setup
In: MDD vision, initial domain model
Out: code generation tool, initial version of the domain
meta-model, domain test model
Refine: domain model
The MDD environment development
Refine: MDD environment
the required functionality is implemented in a software
the implementation is extracted and to edited into the
finally, the they are tested with the help of the domain
In: templates and domain model
Out: generated artifacts
In: generated artifacts, hand-crafted software
Out: released software
The Template Development Activity
The most complex and critical activity of the
It becomes dominant activity of the MDD team
after the MDD environment is stabilized
During an iteration several features are
implemented iteratively in the frame of this activity
The Template Development Activity (cont'd)
A feature is implemented as an extension of the
generated artifacts (designed, coded and tested)
The implemented feature is extracted from the
source code and inserted into the templates
The artifacts re-generated with the new templates
Tested with the test-cases of original
The first iteration is sightly different, because no
prior generated artifacts available at that time.
Our model driven development method has been
Our "experiment" has two results
our process can be used successfully in an averages
small-mid sized project
project can be realized with standard data format (XML,
JSON, or YAML) and template engines (XSLT, Jinja2,
etc.), i.e. no need for special MDA/DSL tool chain
Our process can be also used as preparatory step
before the introduction of a heavyweight process