Development of Software Configuration Tools (Summer Term 2024 and Winter Term 2024/2025)
Context
Modern software systems are often highly configurable. Managing the variability resulting from numerous configuration options (also known as features) and their interactions requires elaborate tooling. For instance, developers must model features and their dependencies, implement corresponding software artifacts and realize a variability mechanic that can configure the system and derive correct variants. Furthermore, like any other software, configurable systems must be analysed, tested, and maintained.
Content
In this course students extend existing frameworks for feature-oriented software development, namely FeatureIDE and FeatJAR. While FeatureIDE is a large collection of interdependent Eclipse plug-ins written in Java, FeatJAR is a purely Java-based library consists of multiple Gradle projects.
The goal is to develop high quality source code and make meaningful contributions to these open-source projects, which are used in practice by academia and industry. Alongside, students can collect real programming experience and learn and apply agile software development techniques.
The course takes place over two semesters, consisting of weekly programming sessions, in which multiple teams of students work on smaller and larger tasks that improve and extend FeatJAR/FeatureIDE.
To create high quality source code, we employ agile development using common programming techniques, such as:
-
Scrum, test-driven development, and extreme/pair programming
-
Version control with git, including fork/branch-based development and continuous integration
-
Practical application of design patterns
Organisational Matters
The first meeting will take place on Wednesday, 17th of April at 2 pm in Room F 1 310.