110 likes | 192 Views
Roles 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/. 1. 2. 3. 4. An agile development process involving DSMLs. HMI example.
E N D
Roles 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/
1. 2. 3. 4. An agile development process involving DSMLs HMI example MontiCore Conclusion Roles in Software Development usingDomain Specific Modelling Languages
Problem setting:Using 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
Tool development inside the project:Roles 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
Principle:The 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
Human-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 look&feel (that is fixed for a manufacturer) • Ensure by design that the HMI software can handlemultiple configurationscorrectly buttons central panel status bar
DSLTool framework (Part of MontiCore) Roles 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 Manually written HMI-Library HMI Software uses librarydeveloper
Agile Values & Methods • Communication • DSMLs allow to communicate in domain specific notations • Simplicity • As generated code is strictly not modified:models and handwritten code are used at same level of abstraction (they are the primary development artifacts) • Language-based approach:For domain experts possibly easier to understand than (meta)metamodels • Feedback • On-site customer:Might be a product developer(who directly influences the resulting software)
Agile Values & Methods • Courage • Courage is needed to change DSML or generator • Humility • Different stakeholders have different expertise:Directly 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
Features 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
Conclusion • 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?