This presentation outlines key points of some aspects of model-driven development and the benefits it can bring to software development in large distributed organizations.
It is a companion presentation for https://cv.pavel.vlasov.us/model-driven-development/.
2. Model-Driven Development
Software development is a process of binding decisions
to make them executable.
Deep knowledge -> good decisions.
Domain model is an abstract representation of the
knowledge and activities which govern a particular
application or problem domain.
Map is a model of a territory – different maps for
different purposes – all models are wrong, some are
useful.
3. Eclipse Modeling Framework
Create a model
Tree editor
Diagram editor
EMF Forms editor
Generate code
Implement EOperations
Repeat – the generator merges manual changes with
the generated code.
9. Nasdanika CDO Web Bundle
Web UI rendered from a model:
Left panel – the tree of objects readable by the current user.
Breadcrumbs – object path.
Object details view.
Context menu – left panel, breadcrumbs, object links.
Context help.
10. Nasdanika CDO Web Bundle
Tooltips – the first sentence from the model documentation.
11. Nasdanika CDO Web BundleClick on the question mark – full element documentation in a dialog.
19. Nasdanika Codegen Ecore
Generates a Bounded Context
Model element
documentation
Generation target
configuration
(EMF Forms)
Select model
elements for
generation
20. Web UI Generation Target
Configuration model. The generator model is two slides above.
From the previous slide:
Generation target
configuration
(EMF Forms)
21. Web UI Generation TargetGenerator controller example
Iterates over EClasses
in an EPackage.
Creates a sub-context
for each class.
The compilation unit generator is invoked for
each context returned by iterate().
23. Call for Action
Think in terms of decisions binding and knowledge flow and transformation.
Capture domain knowledge in documented models and host model
documentation on the intranet.
Use your best talent to capture repetitive coding patterns in generation model
and create wizards for materializing those patterns.
Improve knowledge gathering. Many a micle makes a muckle.
Incorporate code generation into the build process.
Improve internal processes with model-driven intranet web applications.