Model Driven Architecture evaluation using the Meta-Programming System from JetBrains. Some reflections and suggestions. Presented as a lightning talk at Code Generation 2014, Cambridge.
2. Software Architecture
“The software architecture of a
program or computing system is the
structure or structures of the
system, which comprise software
components, the externally visible
properties of those components, and
the relationships among them.”
Software architecture in practice,
Len Bass, Paul Clements, Rick Kazman
4. • “The reviewers brainstorm
scenarios for using the design to
solve problems they expect to
face.”
• “The resulting set of scenarios
operationally defines what it
means for the design to be
usable.”
• “If it performs well under the
adopted scenarios, then the design
has passed the review.”
ARID: Active Reviews for
Intermediate Design
uc Component Model
User
Foobar
6. Completeness &
consistency evaluation
cmp Component Model
Foo
Bar
Baz
• Consistency:
scenarios exercise only
the relations in the
model
• Completeness:
scenarios exhaust all
the relationships in
the model
7. Scenarios as Unit Tests*
“Architecture evaluation is a form of
artifact validation, just as software
testing is a form of code validation.”
1. Initially, <n1,v1> bar.data
2. foo receives v1 following baz.get(n1)
3. Following, baz.put(n1,v1), <n1,v1> baz.data
4. Scenario goal: <n1,v1> baz.data
* On my wish list
We’re interested in software architectures defined in terms of the interfaces between components.
MPS lets us define software components, their data resources and capabilities (methods)
Use Cases modelled in Enterprise Architect. The aim is to develop corresponding scenarios (realizing specific use-cases) that fully exercise the architecture under review.
MPS captures these scenarios which may be used to generate diagrams for the architecture documentation.
Dothe scenarios use only the relationships in the model? MPS only allows us to use valid relationshipsDo the scenarios use all the relationships in the model? MPS doesn’t check this – we’d have to write a new plugin.If we _did_ have a relationship between Bar & Baz (we don’t) then this would show up as absent from out completeness check.
Scenarios are unit tests for architectures before they get anywhere near code.