Course "Programming automation" (PA)
The course is delivered to MIPT DIHT first year graduate students in Spring 2015 as an alternative course.
Professor: Anton Khritankov (contact: prog.autom (at) gmail.com)
TAs: None
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)
- industrializing model-driven development in software factories
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 32 lecture hours and 16 lab hours in the course (a 2-hour lab each two weeks).
Course starts February 12th, 2015.
Extended course syllabus can be downloaded here (in Russian).
Exam questions from year 2014 can be found here (in Russian)
Schedule
Date | Topic | Lab (odd) | Lab (even) |
---|---|---|---|
02/12 | Introduction to Model-Driven Software Development | No class | |
02/19 | UML 2. Classes. Review | UML Basics | |
02/26 | UML 2. Statecharts. Review | UML Basics | |
03/05 | Executable UML. | UML Basics Due | |
03/12 | Foundational UML (fUML). Action Language for fUML (ALF) | UML Basics Due | |
03/19 | Meta-modeling. Model-to-Model Transformation. Query-View-Transformation | xUML Lab | |
03/26 | Developing Model-to-Text transformations | xUML Lab | |
04/02 | Topic - TBA | xUML Lab Due | |
04/09 | Developing Domain-Specific Languages | xUML Lab Due | |
04/16 | Introduction to DSM and Domain-Driven Design | DSL Lab | |
04/23 | Software product lines | DSL Lab | |
04/30 | Applications of MDD. Software Factories. Embedded software. Case studies | DSL Lab Due | |
05/07 | Software testing. Model-based Testing overview. Test generation | DSL Lab Due | |
05/14 | Testing from state-based and rule-based models. | Extra time | |
05/21 | Automation in the small. Tools | Extra time | |
05/28 | Course review | Assignments Due | Assignments Due |
06/03 | Final Exam - TBA |
Individual assignments
Individual assignments are given throughout the course. A list of available assignments to choose from is TBD (e.g. read a paper). See also Model-Driven Software Development Library (in Russian)
Grading
There is a final exam for the course. Exam schedule will be announced later.
Unless a “fast win” the final grade (FG) includes:
- labs - 50%
- attendance - 25%
- exam - 25%
- individual assignments - 25%
(sum is 125%)
In particular, the following formula is applied FG = 0,5 * (Lab1 + Lab2 + Lab3) / 3 + 0,25*(attendance) + 0,25*(exam) + 0,25*(assignments) when Lab1 >= 3 && Lab2 >= 3 && Lab3 >= 3 && assignments >= 5.
Students with FG > 7 before exam may skip the exam.
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