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 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)

DateTopicLab (odd)Lab (even)
02/27Introduction to Model-Driven Software DevelopmentUML Basics
03/06Executable UML. UML Basics
03/13Foundational UML (fUML). Action Language for fUML (ALF)UML Basics Due
03/20Meta-modeling. Model-to-Model Transformation. Query-View-Transformation UML Basics Due
03/27Developing Model-to-Text transformations xUML Lab
04/03Invited lecture - Implementing business strategy in architecture xUML Lab
04/10Introduction to DSM and Domain-Driven DesignxUML Lab Due
04/17Applications of MDD. Software Factories. Embedded software. Case studies xUML Lab Due
04/24Software testing. Model-based Testing overview. Test generation DSL Lab
05/01No class No class No class
05/08Testing from state-based and rule-based models. DSL Lab
05/15Course review DSL Lab Due
05/22Additional class - Labs DSL Lab Due
05/29Preparation for exam Assignments due Assignments due
06/03Final Exam

Individual assignments are given throughout the course. A list of available assignments to choose from is TBD (e.g. read a paper).

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 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.

Main books:

  1. Mellor S.J., Balcer M.J. Executable UML. A Foundation for Model-Driven Architecture
  2. M. Fowler. Domain-Specific Languages
  3. M. Utting, B. Legeard. Practical Model-Based Testing. A Tools Approach

Additional books:

  1. Greenfield J., Kent S. Software Factories Assembling Applications with Patterns, Models, Frameworks, and Tools.
  2. Evans E. Domain-Driven Design Tackling Complexity In The Heart Of Software
  3. L. Bettini. Implementing Domain Specific Languages with Xtext and Xtend