Official course description, subject to change:
AbstractThe design, development, and implementation of a software system requires the evaluation of several, often conflicting, aspects of the system and mastery of multiple tools and techniques. The aim of this course is to provide you with knowledge on how to design the architecture of software systems in a structured and systematic way that addresses the required functionality and supports the necessary system qualities. This requires a technical toolbox with concepts, methods, and principles to support the software design, implementation, and evaluation as much as a wider understanding of the context and domain of the system. Beyond the design of software architecture you will also learn about the tools and approaches that are used in recovering the architecture of a system by the analysis of its source code and version control information.
The design, development, and implementation of software system requires the evaluation of several, often conflicting, aspects of the system and mastery of multiple tools and techniques.
Successful students will acquire knowledge on how to design software systems from scratch in a structured and systematic way that addresses the required functionality and supports the necessary system qualities. Furthermore, they will be able to disseminate the architectural design as much as evaluate existing designs.
The students will also learn techniques and practices used for analyzing source code and related artifacts in order to recover the architecture of existing systems. In particular they will learn about data mining the meta-data present in version control repositories and programatically analyzing the source code of software systems.
Formal prerequisitesThe student should have attended and passed an introductory course in software development.
Intended learning outcomes
After the course, the student should be able to:
- Drive a software design process in a systematic and structured manner.
- Represent functionality and system qualities in an implementation by identifying how to make important decisions.
- Conduct architectural prototyping experiments.
- Recognize and apply architectural patterns and tactics.
- Evaluate an architectural design.
- Extract the architectural design of an existing system.
- Analyze and adapt the software design approach to support iterative and agile development
- Evaluate the appropriateness of a given architecture recovery techinque for a given scenario
Ordinary examExam type:
D: Submission of written work with following oral, External (7-point scale)
D2G: Submission for groups with following oral exam supplemented by the submission. Shared responsibility for the report.