Course "Automation of Programming"
The course is delivered to MIPT DIHT first year graduate students in Spring 2014 groups 993, 994.
Professor: Anton Khritankov (contact: prog.autom (at) gmail.com)
TAs: Sergey Tsarkov
Course Syllabus
Course includes three major topics that automate software development:
- model driven software development (MDSD) via generic modeling techniques (e.g. Executable UML, xtUML etc.)
- MDSD via domain-specific models (DSM)
- model-based testing (MBT)
Lectures are complemented with three labs:
- UML Basics lab introduces students to UML modeling
- in xUML Lab students develop a sample application using model-driven technology with UML
- in DSL Lab students build a metamodel and implement a custom domain-specific language
There are 30 lecture hours and 16 lab hours in the course (a 2-hour lab each two weeks).
Course starts February 27th, 2014.
Extended course syllabus can be downloaded here (in Russian).
Exam questions can be found here (in Russian)
Schedule
Date | Topic | Lab (odd) | Lab (even) |
---|---|---|---|
02/27 | Introduction to Model-Driven Software Development | UML Basics | |
03/06 | Executable UML. | UML Basics | |
03/13 | Foundational UML (fUML). Action Language for fUML (ALF) | UML Basics Due | |
03/20 | Meta-modeling. Model-to-Model Transformation. Query-View-Transformation | UML Basics Due | |
03/27 | Developing Model-to-Text transformations | xUML Lab | |
04/03 | Invited lecture - Implementing business strategy in architecture | xUML Lab | |
04/10 | Introduction to DSM and Domain-Driven Design | xUML Lab Due | |
04/17 | Applications of MDD. Software Factories. Embedded software. Case studies | xUML Lab Due | |
04/24 | Software testing. Model-based Testing overview. Test generation | DSL Lab | |
05/01 | No class | No class | No class |
05/08 | Testing from state-based and rule-based models. | DSL Lab | |
05/15 | Course review | DSL Lab Due | |
05/22 | Additional class - Labs | DSL Lab Due | |
05/29 | Preparation for exam | Assignments due | Assignments due |
06/03 | Final Exam |
Individual assignments
Individual assignments are given throughout the course. A list of available assignments to choose from is TBD (e.g. read a paper).
Grading
There is a final exam for the course. Exam schedule will be specified later.
Unless a “fast win” the final grade CG includes:
- labs - 50%
- attendance - 25%
- exam - 25%
- individual assignments - 25%
(sum is 125%)
Fast wins
Fast win is an assignment, completion of which is equivalent to getting the final grade.
Code generator
Implement an MDA tool chain for UML 2 using XMI, XML and Groovy as target platform. Follow the ideas of Executable UML.
Note: A proof-of-concept implementation (PoC) is sufficient
DDD framework
Implement a DDD framework that generates Web pages and DB schema from ECore data model.
State-transition test generator
Develop a test generator tool from state machines that uses SCXML and support all-states coverage criteria. Assume that conditions and triggers are written in Java.
Functional test generator
Develop a DSL for specifying use-cases and develop a functional test generator from models in this DSL
Statechart code generator
Implement a UML-like statechart execution engine using Java, SCXML, xText and xTend2.
Configuration generator
Implement a Spring XML configuration code generator from UML structure diagrams (via XMI) using M2M transformation or XML toolkit
Model mutator
Implement model-level mutations for Lab3 (entities + gherkin) models using Ecore and QVT.
ERD model editor and generator
Implement an ERD model editor with GMF and a code generator to SQL DDL using xText and xTend2.
Course books
Main books:
- Mellor S.J., Balcer M.J. Executable UML. A Foundation for Model-Driven Architecture
- M. Fowler. Domain-Specific Languages
- M. Utting, B. Legeard. Practical Model-Based Testing. A Tools Approach
Additional books:
- Greenfield J., Kent S. Software Factories Assembling Applications with Patterns, Models, Frameworks, and Tools.
- Evans E. Domain-Driven Design Tackling Complexity In The Heart Of Software
- L. Bettini. Implementing Domain Specific Languages with Xtext and Xtend