Title: Roles in Software Development using Domain Specific Modelling Languages
1Roles in Software Development using Domain
Specific Modelling Languages
Holger Krahn, Bernhard Rumpe, Steven
Völkel Software Systems Engineering Technische
Universität Braunschweig http//www.sse.cs.tu-bs.
de/
2Roles in Software Development usingDomain
Specific Modelling Languages
3Problem settingUsing off-the-shelf generators
- Off-the-shelf generators
- DSMLs cannot be changed on demand
- ? Notations are not domain-specific as possible
- Generator using templates can be changed
- ? But General structure of generation isnot
changeable - Modification of generated codeis often needed
- ? Round-Trip is often not possible
- Desired modification of codecannot be expressed
in DSML
DSML instance
product developer
Handwrittencode
generated code
developer
4Tool development inside the projectRoles in
Process using DSMLs
- Language developer
- defines or enhances an existing DSML
- Tool developer
- writes code generators for DSML
- comprises tools
- Product developer
- uses tools developed inthe project to
influenceoutcome - Library developer
- develops software libraries
- Thereby simplifies the codegenerator
DSML instance
product developer
DSML
languagedeveloper
codegenerator
tooldeveloper
generated code
SW-Library
library developer
5PrincipleThe generated code is never changed
- Generated code
- is never changed manually
- not part of the source code shared between
developers(Only DSMLs and hand-written code are
shared) - Pros
- round-trip engineering is not needed
- no inconsistencies between generated code and
DSML - build process is clear to understand and can be
automated - DSMLs and hand-written source code are the
primary artifacts that determine the behavior of
the resulting system - Cons/Additional requirements this approach
- Generated code needs interfaces to interact with
manual code - DSMLs need gaps where exceptions of the standard
generation can be specified
6Human-Machine-Interfaces
- Human-Machine-Interfaces (HMIs) in cars
- provide user interface
- have different functionality depending on the
configurationof the car - Main reasons for using DSMLs and code generation
- Separate menu structure (which might change
rapidly during development) from lookfeel (that
is fixed for a manufacturer) - Ensure by design that the HMI software can
handlemultiple configurationscorrectly
buttons
central panel
status bar
7Roles in the HMI example
defines
defines
languagedeveloper
designs
DSML Feature Diagrams
DSML Menu Diagrams
Feature Diagram
input
MontiCore code generator
MontiCore code generator
input
productdeveloper
Menu Structure Diagram
designs
MenuDSL processor
Manually definedgenerator
FeatureDSL processor
programs
tooldeveloper
assembles
generates
programs
HMI Software
Manually written HMI-Library
uses
librarydeveloper
8Agile Values Methods
- Communication
- DSMLs allow to communicate in domain specific
notations - Simplicity
- As generated code is strictly not
modifiedmodels and handwritten code are used at
same level of abstraction (they are the primary
development artifacts) - Language-based approachFor domain experts
possibly easier to understand than
(meta)metamodels - Feedback
- On-site customerMight be a product
developer(who directly influences the resulting
software)
9Agile Values Methods
- Courage
- Courage is needed to change DSML or generator
- Humility
- Different stakeholders have different
expertiseDirectly reflected in the different
roles - Continuous Integration
- text-based approach allows to use standard
versioning systems - no release plan for internal tool in project is
needed, because it can be automatically build on
demand - Refactoring
- Refactoring should work on interacting source
code and models - Testing
- models can be used for production code and testing
10Features of MontiCore supportingan agile
development process
- Generation of reusable language components for
different tools and use inside other languages - Generation of Java source code that can be easily
integrated in other applications - Standardized solution for implementing a
generator - model traversal
- file and error handling
- processing of DSML separated in transform and
workflow layer - template engine partially supporting generator
refactoring - Reusable ant scripts to compile a project
whenever an artifact is changed - DSML definition
- DSML instance
- code generator
- hand-written source code
11Conclusion
- Transfered agile values methods for code-based
development to a process where DSML are used - Explained the different roles developers play in
such an process - Agility is improved by
- Making the on-site customer a first class
developer - DSMLs support the communication
- Principle of not modifying generated code ensures
that models and code are used at the same level
of abstraction - MontiCore simplifies the development of tools
inside an agile project - Open issues
- How do Refactorings look like that are applied to
interacting DSMLs and source code? - Which predefined DSMLs are frequently required?