Software Architecture (B-KUL-H07Z9B)
Aims
The architecture of a software-intensive system is central to its development and the entire life-cycle of a software application or system. This course starts from the reality that such systems are developed from an evolving context: starting from existing and related systems, with attention to reuse within different applications, and based on components that are supplied by independent, third-party providers and vendors.
Students will acquire understanding, experience with and skills that are important to develop, realize, evaluate and extend the architecture of a software-intensive system. The course starts with functional and especially non-functional requirements that have a strong impact on the software architecture, and includes techniques and notations to document such requirements.
Previous knowledge
This course assumes good knowledge of the principles and practice of object-oriented programming (OOP) and object-oriented design (OOD), and basic knowledge on distributed systems. The course aligns closely to courses in which the design of software is a central focus, such as “Ontwerp van softwaresystemen”, “Software-ontwerp” en “Objectgericht programmeren”. The student is expected to be familiar with the Unified Modeling Language (UML), design and GRASP patterns, key concepts such as coupling and cohesion, and software abstraction mechanism such as (component) interfaces.
Identical courses
This course is identical to the following courses:
H09B5B : Softwarearchitectuur
Is included in these courses of study
Activities
1.5 ects. Software Architecture: Lecture (B-KUL-H07Z9a)
Content
1. Analysis and modeling of architecturally-significant requirements (ASRs) (4h)
This part of the course is focused on the analysis, identification, the elaboration and description of non –functional requirements that have significant impact on the software architecture, the so-called “architecturally significant requirements (ASRs)”. These requirements are documented in the form of “quality attribute scenarios”.
2. Software architecture (12h)
Interpreting, analyzing and extending the architecture of a software-intensive system involves a number of concrete methods and techniques, and requires knowledge of, for example, Attribute-driven Design (ADD), the interaction between architectural design and requirements analysis, trade-off analysis, the application of specific architectural patterns, tactics and strategies that are aimed at solving specific categories of non-functional requirements (such as performance, availability, modifiability, security), etc.
2a. Core concepts: software architecture, architectural styles and patterns, reference architectures, etc.
2b. Software development processes that are centered around the notion of a software architecture.
2c. Architectural patterns and tactics.
2d. Methodology to address non-functional requirements, applied to architectural extension.
2e. Case study of a complex application
3. Evaluating software architecture (4h)
The third part of the course involves architectural evaluation. This involves the study of metrics, widely accepted quality-related principles, methods and techniques (such as the ATAM, “Architecture Trade-off Analysis Method”) to perform an in-depth evaluation.
Course material
- Course slides of all lectures
- A number of chapters from the book "Software Architecture in Practice"
- A well-documented case study
2.5 ects. Software Architecture: Project (B-KUL-H0S00a)
Content
The learning process of this course is based upon the execution of a non-trivial course project. Lab session (in the software engineering labs) support the execution of the course project. Support and feedback is continuously provided to the students.
The execution of the course project is done in two steps:
The first phase is of an introductory nature and only counts for a small part of the final score/results of the student. The second phase represents the largest part of the evaluation for this course.
Both parts are executed in teams of three students. The result is presented and defended orally, a few weeks after the project deadline.
Evaluation
Evaluation: Software Architecture (B-KUL-H27Z9b)
Explanation
The evaluation of this course is linked entirely to the course project. The project work is done in multiple steps and in teams of three students. The second part is presented orally and as a team; both parts are defended in the weeks after the project deadline.
Information about retaking exams
Students that score less than a 10 in the June examination period are asked to extend and improve the project delivered in June. This may be done in the context of the existing team, or individually. This extension and improvement will be scored for the September examination period, again after an oral presentation and defense (as a team, or individually).