Model-based Software Development
VIAUMA22 | Computer Engineering MSc | Semester: 1 | Credit: 5
Objectives, learning outcomes and obtained knowledge
The purpose of the course is for students to learn the basics of model-driven software development, including the concept of domain-specific languages (textual and graphic languages). Students learn how to create such languages and how to process them. By completing the subject, students can understand and apply the model processing to process software models and generate different software products (source code, configuration file, etc.)
Lecturers

Attila Ficsor
PhD student

Oszkár Semeráth
assistant professor
Synopsis
Lectures: 1. Model-driven development, domain-specific modeling. Characteristics of domain-specific languages, their use, examples.
2. Processing of textual languages/models, structure of compilers. Grouping of text languages. Operation and characteristics of interpreters. Projection editors.
3. Basic concepts and steps of lexical analysis, regular expressions, tokenization. Basics of syntactic analysis, derivation tree, concrete and abstract syntax tree. Context-independent grammars.
4. Syntactic analysis: left recursion, top-down parsing (BFS, DFS), LL(1) analysis.
5. Tasks of semantic analysis: design and management of symbol tables, type system, static and dynamic type analysis. Attribute grammars.
6. The task of optimization. Basic block, the levels of optimization. Transformation, Static Single Assignment (SSA), graph representation, fi-function, optimization techniques.
7. Code generation techniques. Interoperability between languages, the IL language. Code obfuscation.
8. Modeling based on a metamodel, the basics of metamodelling. Extension possibilities of UML, UML Profile. Modeling based on Blockly. MOF and Eclipse-Modeling Framework (EMF). Constraints in models, OCL.
9. Concept of concrete and abstract syntax. Concrete syntax of textual and graphical languages. Semantics of models.
10. Processing of models, grouping of processing methods. Model transformations.
11. Transformation of models, graph transformations.
12. Model-based development. Support for extensibility: characteristics of generative and generic programming, Support for product families: feature modeling. Multiplatform developments: MDA. Model simulation
13. Outlook: modeling/DSL development in the wider world/current challenges
Practice:
1. Introduction to the Unified Modeling Language
2. How to develop a textual language? Introduction to compilers in practice
3. Editing environment for text languages, translation program based on Xtext. 4. Semantic analysis, compiler architectures, LLVM, Roslyn
5. Metamodeling in practice using EMF.
6. Model processing, graph transformation in practice.
7. Reserve / consultation.
2. Processing of textual languages/models, structure of compilers. Grouping of text languages. Operation and characteristics of interpreters. Projection editors.
3. Basic concepts and steps of lexical analysis, regular expressions, tokenization. Basics of syntactic analysis, derivation tree, concrete and abstract syntax tree. Context-independent grammars.
4. Syntactic analysis: left recursion, top-down parsing (BFS, DFS), LL(1) analysis.
5. Tasks of semantic analysis: design and management of symbol tables, type system, static and dynamic type analysis. Attribute grammars.
6. The task of optimization. Basic block, the levels of optimization. Transformation, Static Single Assignment (SSA), graph representation, fi-function, optimization techniques.
7. Code generation techniques. Interoperability between languages, the IL language. Code obfuscation.
8. Modeling based on a metamodel, the basics of metamodelling. Extension possibilities of UML, UML Profile. Modeling based on Blockly. MOF and Eclipse-Modeling Framework (EMF). Constraints in models, OCL.
9. Concept of concrete and abstract syntax. Concrete syntax of textual and graphical languages. Semantics of models.
10. Processing of models, grouping of processing methods. Model transformations.
11. Transformation of models, graph transformations.
12. Model-based development. Support for extensibility: characteristics of generative and generic programming, Support for product families: feature modeling. Multiplatform developments: MDA. Model simulation
13. Outlook: modeling/DSL development in the wider world/current challenges
Practice:
1. Introduction to the Unified Modeling Language
2. How to develop a textual language? Introduction to compilers in practice
3. Editing environment for text languages, translation program based on Xtext. 4. Semantic analysis, compiler architectures, LLVM, Roslyn
5. Metamodeling in practice using EMF.
6. Model processing, graph transformation in practice.
7. Reserve / consultation.