Advanced Software Construction Techniques
Keywords |
Classification |
Keyword |
OFICIAL |
Software Engineering |
Instance: 2021/2022 - 1S
Cycles of Study/Courses
Acronym |
No. of Students |
Study Plan |
Curricular Years |
Credits UCN |
Credits ECTS |
Contact hours |
Total Time |
M.EIC |
24 |
Syllabus |
2 |
- |
6 |
39 |
162 |
Teaching language
English
Objectives
Students are expected to be able to identify and apply advanced techniques for specifying, synthesizing, and manipulating executable artifacts (code) at different stages of the software development lifecycle, in order to enhance certain quality attributes, such as reliability, flexibility, testability and performance. In particular, it is of interest to teach how to minimize the time spent in "programming", by automating the various facets of this activity.
Learning outcomes and competences
- Identify problems that are adequate to be solved using metaprogramming and automatic programming techniques;
- Design domain-specific models / meta-models
- Process instances of textual specifications with parsing combinators, alongside with execution mechanisms;
- Apply code/behavior generation/derivation techniques from high level specifications
- Apply Machine Learning Techniques to code generation
- Debug complex programs by incrementally specifying properties
- Employ techniques for automatic program repair;
- Other advanced development techniques.
Working method
À distância
Program
- Metaprogramming and Model-Driven Engineering
- Models, Metamodels and Meta-metamodels
- Domain Specific Languages
- Internal
- External
- Visual vs Text-Based
- Parser Combinators
- Interpreters and Self-Interpreters
- Source-code generation and Transpilers
- Reflection and Runtime Metaprogramming
- Automatic Programming
- High-Level Specifications
- Program Synthesis and Program Derivation
- Program Search Techniques
- Formal Derivation
- Mutation
- ML-supported
- Advanced Debugging Techniques
- Property Based Testing and Fuzzing
- Automatic Program Repair
- Fault Localization
Mandatory literature
Volter, M. ; Model-Driven Software Development: Technology, Engineering, Management, Wiley Software Patterns Series, 2006
Fowler, M. ; Domain Specific Languages, Addison-Wesley Signature Series, 2010
Teaching methods and learning activities
Theoretical-practical classes of exposition and discussion of the program topics. Firstly, students will develop a guided project that will incrementally result in a metamodel-based system with a domain-specific executable language, initially with simple interpretation techniques and finally via code transpilation. They will subsequently develop an integrated project to apply the remaining set of exposed techniques.
Evaluation Type
Distributed evaluation without final exam
Assessment Components
Designation |
Weight (%) |
Participação presencial |
5,00 |
Teste |
15,00 |
Trabalho prático ou de projeto |
80,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
Designation |
Time (hours) |
Elaboração de projeto |
162,00 |
Frequência das aulas |
39,00 |
Total: |
201,00 |
Eligibility for exams
All components have a minimum rating of 40%. Calculation formula of final grade
N = 0.05 * P + 0.15 * T + 0.80 * P
Special assessment (TE, DA, ...)
Equal to normal evaluation, minus the participation component.
Classification improvement
Through specific improvements in the project, as long as it doesn't surpass 4 points (out of 20) the theoretical test.