apmdd:spring2016

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
apmdd:spring2016 [2016/02/09 21:27] – created userapmdd:spring2016 [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Course "Programming automation" (PA) ======
  
 +The course is delivered to MIPT DIHT first year graduate students in Spring 2017 as an alternative course.
 +
 +Professor: Anton Khritankov (contact: prog.autom (at) gmail.com)
 +
 +===== Course Syllabus =====
 +
 +Course includes five 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)
 +  * machine learning in software engnieering
 +  * 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 **16.02.2017**.
 +
 +Extended course syllabus can be downloaded {{apmdd:apmdd:apmdd-spring2015.doc|here}} (in Russian).
 +
 +Exam questions from year 2014 can be found {{apmdd:apmdd:билеты.doc|here}} (in Russian)
 +
 +===== Schedule =====
 +
 +Schedule will be adapted to project needs.
 +
 +^ # ^ Topic ^ Project topics covered ^
 +| 1 | Introduction to Model-Driven Software Development | General |
 +| 2 | UML 2. Classes. Review | UML |
 +| 3 | UML 2. Statecharts. Review | UML |
 +| 4 | Executable UML. | Code generator |
 +| 5 | Foundational UML (fUML). Action Language for fUML (ALF) | UML |
 +| 6 | Meta-modeling. Model-to-Model Transformation. Query-View-Transformation | Code generator |
 +| 7 | Developing Model-to-Text transformations | Code generator |
 +| 8 | Developing Domain-Specific Languages | DSL |
 +| 9 | Introduction to DSM and Domain-Driven Design | DSL |
 +| 10 | Software product lines | Reuse |
 +| 11 | Applications of MDD. Software Factories. Embedded software. Case studies | Theory |
 +| 12 | Software testing. Model-based Testing overview. Test generation | Test generator |
 +| 13 | Testing from state-based and rule-based models. | Test generator |
 +| 14 | Automatic Software Defect Prediction / Detection | ML |
 +| 15 | Course review. | General |
 +
 +===== 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 [[apmdd:mdd:start|Model-Driven Software Development Library (in Russian)]]
 +
 +===== Grading =====
 +
 +There is a final exam for the course. Exam schedule will be announced later.
 +
 +Unless “fast win” the final grade (FG) includes:
 +
 +  * exam - 75%
 +  * individual assignments - 25%
 +
 +If you complete a Fast Win project:
 +
 +  * exam - 25%
 +  * individual assignments - 25%
 +  * fast win - 75%
 +
 +(sum is 125%)
 +
 +Students with Fast Win > 7 before exam may skip the exam.
 +
 +===== Fast wins =====
 +
 +Fast win is an assignment, completion of which allows for getting the final grade.
 +
 +**Code generator**
 +
 +Topics: UML, 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**
 +
 +Topics: DSL, Code generator
 +
 +Implement a DDD framework that generates Web pages and DB schema from ECore data model.
 +
 +**State-transition test generator**
 +
 +Topics: UML, 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**
 +
 +Topics: DSL, Test generator
 +
 +Develop a DSL for specifying use-cases and develop a functional test generator from models in this DSL
 +
 +**TODO: more projects will be added**
 +
 +===== Fast win evalutation =====
 +
 +Fast wins are graded on a 1..10 scale. 
 +
 +A solution is graded 3 if the following holds
 +
 +  * you can demonstrate the working program that solves the original task on a specific example you've prepared
 +  * source code of the program does not depend on the example
 +  * basic understanding of how program works
 +
 +A solution is graded 6 if the following holds
 +
 +  * the program solves the original task without you overseeing it on a couple of different examples, some of which prepared not by you
 +  * implementation uses knowledge from the course program
 +  * throughout understanding of program internals and ability to quickly solve any errors
 +
 +A solution is graded 9 if the following
 +
 +  * the program solves the original task on many valid examples including unknown and handles errors gracefully
 +  * implementation uses knowledge from the course
 +  * throughout understanding of program internals and ability to promptly introduce any feasible modifications to the program on demand
 +
 +Intermediate gradings are given if only some of the requirements stated above are fulfilled
 +
 +Use of any third-party libraries, applications or code in addition to the specified in the assignment is subject to approval from your TA or Professor.
 +
 +Personal contribution to the solution of the assignment shall be significant and demonstrate your skill and knowledge of the course material.
 +
 +===== 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
 +  - L. Starr, Executable UML How to Build Class Models, 2001
 +
 +Articles, Papers and Internet sources
 +
 +  - L. Starr, [[http://knol.google.com/k/how-to-build-articulate-uml-class-models|How to Build Articulate UML Class Models]]