Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| apmdd:spring2015 [2026/08/29 07:53] – Bulk sync migration user | apmdd:spring2015 [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Course " | ||
| + | |||
| + | 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 {{: | ||
| + | |||
| + | Exam questions from year 2014 can be found {{: | ||
| + | |||
| + | ===== Schedule ===== | ||
| + | |||
| + | ^Date^Topic^Lab (odd)^Lab (even)^ | ||
| + | |02/ | ||
| + | |02/19|UML 2. Classes. Review| | UML Basics | | ||
| + | |02/26|UML 2. Statecharts. Review|UML Basics| | | ||
| + | |03/ | ||
| + | |03/ | ||
| + | |03/ | ||
| + | |03/ | ||
| + | |04/ | ||
| + | |04/ | ||
| + | |04/ | ||
| + | |04/ | ||
| + | |04/ | ||
| + | |05/ | ||
| + | |05/ | ||
| + | |05/ | ||
| + | |05/ | ||
| + | |06/ | ||
| + | |||
| + | ===== 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 [[mdd: | ||
| + | |||
| + | ===== 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, | ||
| + | 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 | ||
| + | |||