By the end of the course, students should be able:
-
to reason about advantages and disadvantages of classic as well as advanced programming methods, including preprocessors, version control systems, components, frameworks, aspect-oriented programming and feature-oriented programming
-
to evaluate, select and apply programming methods, particularly with regard to the development of software product lines
-
to develop a configurable system by using advanced programming methods with their available tool support, including specialized IDEs, configuration tools and modeling tools
-
to reflect on characteristics of configurable systems, the use of software product line methods, and the implications for the development process
|
|
Customization allows software companies to tailor their products to diverse application contexts and market segments. Software product lines are a key technology for the development of customized software at scale. When developing software product lines, the aim is to keep the code base maintainable, while at the same time reducing development costs. Maintaining a software product line can also give rise to unique challenges during software analysis and testing, especially when the number of customizable variation points is large, leading to an astronomically large space of possible products.
Topics. The following topics are taught in the course:
-
Introduction to the problem of developing complex, customized software systems using the example of embedded database management systems
-
Modeling and implementation of software product lines
-
Reiteration of basic concepts of software technology, including: cohesion, scattering and tangling, information hiding and modularization
-
Introduction to various classic and modern languages and tools for developing software product lines, including: preprocessors, frameworks, components, feature modules, aspects, collaborations and roles
-
Comparison of basic concepts, methods, techniques and tools supporting the considered approaches.
-
Critical discussion of advantages and disadvantages of the individual approaches as well as their relationship to each other.
-
Further topics: non-functional properties, analysis of product lines, feature interactions, modeling
Instructional Modes. This course consists of weekly lectures and tutorials.
|
|
|
Basic programming skills in Java (required) and C (optional).
|
|
Grades will be awarded on the basis of an exam (70%) and a four-week implementation project (30%). The exam will be oral if possible (depending on the number of course participants).
Admission to the exam will depend on successful completion of the weekly homework assignments (this will be administered separately in OSIRIS as TOETS-03).
In accordance with the Rules and Regulations, the grade for the exam should be a minimum of 5.0.
|
|
Please note: This course will be taught online, with possibly a few live meetings at the beginning of the semester.
|
|