7CCSMMDD Coursework 08/01/2020
7CCSMMDD – Model-Driven Development
Coursework Specification
7CCSMMDD is about technologies and methodologies for increasing the level of abstraction and au- tomation in software development and enabling non-programmer domain expert to contribute to the development of software. Domain-specific modelling languages (DSMLs) and the underpinning infra- structure of IDE support, model transformations, code generation, etc. are essential to this.
In class, you have learned about many of these technologies, and have applied them in a small way to a fairly small language. In this piece of coursework, I challenge you to go larger: pick a domain-specific language of your choice and build infrastructure for it. You can pick any existing domain-specific lan- guage—either a technical language like Docker or jHipster, or a language addressing concerns in a non-technical domain (e.g., SBML from biological modelling, or public space patterns from urban modelling). If you really want to impress me, you can pick a domain for which there isn’t yet a lan- guage.1 In any case, you need to develop the following pieces of the language’s infrastructure:
1. A working editor with syntax highlighting, code completion etc. for textual languages and ef- ficient edition support for graphical languages;
2. Validation support both for syntax, static semantics (well-formedness), and at least one ad- vanced semantic check (dynamic semantics or some form of type checking, static verification / validation);
3. Language semantics to enable some form of execution either through analysis (simulation based or other) or actual execution (interpreted or compiled) depending on the type of lan- guage.
Think carefully about what validation and semantics are most useful for your chosen language. This will be different for different languages. In fact, even when two students have chosen the same lan- guage you may still end up focusing on different validation and semantics, depending on the purpose you are considering most important. For example, for a jHipster implementation you may choose to focus on generating running application implementations (different from those already generated by the existing jHipster infrastructure) or, alternatively, may provide analysis of potential perfor- mance bottlenecks in the modelled application.
Remember, this is an official assessment. As such, the usual College rules about collusion and plagia- rism apply. You can choose to work on this coursework individually or in pairs. In the latter case, please ensure you clearly indicate in your submission who the members of the team are.
This coursework accounts for 30% of your overall mark for 7CCSMMDD. You are asked to submit the coursework in two parts:
1. A Git repository with the implementation of your language, including a README file indicating how to use the language infrastructure and an example project that can be used to demon- strate the capabilities of your language and infrastructure. It is your responsibility to ensure that the instructions in the README file can be used on a fresh machine (Windows or Linux) to explore the capabilities of your language at least in the context of the example project.
1 Though this is likely to make the coursework substantially more challenging, but will not give you extra marks, I will definitely be impressed and may even find a congratulatory chocolate bar.
© King’s College London 1/2
7CCSMMDD Coursework 08/01/2020
2. A PDF report (5 pages) explaining your language design in detail. While you may wish to in- clude select screenshots and source code materials, be very careful about selecting what you need to include and where you can reference the actual material in the Git repository directly. Include a title page with the name of your language, your name and student ID (or those of both members of your pair).
In your report, include answers to the following questions:
a. What is the language / domain you have chosen? Give a brief overview.
b. Why did you choose this language / domain? Why and how would an MDD approach
help in this domain? What is the purpose of your implemented MDD approach?
c. What is the syntax of your language? Is it a textual or a graphical language? Why?
d. What validations have you implemented? What techniques did you use for imple-
menting them? Why did you choose to implement these particular validations (why
are they the most important ones)? Which other validations could be implemented?
e. What execution have you implemented? What techniques did you use for implement- ing it? Why did you choose to implement this particular execution (why is it the most
fit for purpose)?
f. Where you are building on an existing language: what changes, if any, would you make
to the existing language’s syntax (abstract or concrete) and semantics and why? If you are not proposing any changes, how well is the language aligned to its purpose? Where you are not building on an existing language: How did you choose the pro- posed syntax and semantics and what did you do to ensure the language is fit for purpose?
You have most of the term to work on this, but you can already start your work in the first week. Do not underestimate this coursework project: it will take a good amount of your time and you need to carefully plan how to fit it around your other responsibilities. Make a careful plan of what you will do and when and ensure you know what you will not do. It is OK not to implement support for every feature of an existing feature, if you can argue in your report that you have covered the most im- portant features.
© King’s College London 2/2