6 ECTS credits
160 h study time
Offer 1 with catalog number 4013771FNR for all students in the 1st semester
a (F) Master - specialised level.
- 1st semester
- Enrollment based on exam contract
- Grading method
- Grading (scale from 0 to 20)
- Can retake in second session
- Taught in
- Faculty of Sciences and Bioengineering Sciences
- Computer Science
- Educational team
- Coen De Roover
- Activities and contact hours
- 26 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
- Course Content
This course discusses techniques to design, document, implement, and evaluate the architecture of large-scale software systems and integrations thereof. We start with the role of architecture in the software engineering process, and the different perspectives from which and the stakeholders for which it needs to be defined.
For each perspective, we discuss architectural patterns that have proven themselves in successful software systems. We illustrate these patterns using architectural frameworks in the programming language Scala where possible, of which the relevant features are reviewed at the beginning of the course.
Next we shift our attention from architectural patterns in general, to design patterns for micro-service architectures in particular. These help realise important quality attributes such as fault tolerance and scalability.
Table of contents:
1. Architecture Definition
- Software Architecture: Stakeholders, Lifecycle, Types of Architectural Structures
- Architectural Views: Views for Module Structures, Views for Component-and-Connector Structures, Views for Allocation Structures
- Modular Programming in Object-Oriented Languages: Self Types, Abstract Type Members, Family Polymorphism Problem, Expression Problem
2. Architectural Patterns
- Module Patterns: Layered, Dependency Injection, Hexagonal, Aspect-Oriented
- Component-and-Connector Patterns: Pipe-and-Filter, Publish-Subscribe, Model-View-Controller, Client-Server, Shared-Data, Peer-to-Peer, Broker, Service-Oriented
- Allocation Patterns: Multi-tier
3. Design Patterns for Micro-Service Architectures
- Message Flow Patterns: Request-Response, Ask, Forward Flow, Aggregator, Business Handshake
- State and Persistence Patterns: Domain Object, Event-Sourcing, Event Stream
- Scalability Patterns: Pull-based Workers, Managed Queue, Drop
- Fault Tolerance and Recovery Patterns: Error Kernel, Heartbeat, Circuit Breaker
- Course material
- Handbook (Recommended) : Software Architecture in Practice, Len Bass, Paul Clements, Rick Kazman, 3de, Addison Wesley, 9780321815736, 2013
Handbook (Recommended) : Reactive Design Patterns, Roland Kuhn, Brian Hanafee, Jamie Allen, Manning, 9781617291807, 2017
Digital course material (Recommended) : Cursusmateriaal beschikbaar op leerplatform, Canvas
- Additional info
- Learning Outcomes
The goals of this course are:
- Students obtain knowledge about designing, documenting, implementing, and evaluating the architecture of large-scale software systems and integrations thereof
- Students become skilled at recognising and applying architectural patterns in the design of the architecture for software systems
The corresponding learning results are:
- The student can describe the role of software architecture and its stakeholders in the software engineering process
- The student can illustrate, using example diagrams, the views used to document software architectures
- The student can describe and discuss the strengths and weaknesses of the major architectural patterns
- The student can illustrate, using example code snippets, design patterns for realising quality attributes in micro-service architectures
w.r.t. applying knowledge:
- The student can independently instantiate the discussed architectural frameworks
- The student can independently implement any of the discussed design patterns for micro-service architectures
- The student can recognise variations on and combinations of existing views in a given software architecture documentation
- The student can recognise variations on and combinations of existing patterns in a given architecture documentation and implementation
- The student can connect the discussed architectural and design patterns to software quality attributes
- The student can evaluate the applicability of a given architectural pattern for the architecture of a large-scale software system
- The student can evaluate the applicability of a given design pattern in the implementation of a micro-service architecture
- The student can evaluate software systems and frameworks from an architectural perspective
- The student can generate reasonable architectural alternatives for a software system and choose among them
- The student is able to report in writing about architectural decisions
The final grade is composed based on the following categories:
Written Exam determines 50% of the final mark.
PRAC Practical Assignment determines 50% of the final mark.
Within the Written Exam category, the following assignments need to be completed:
- Schriftelijk examen
with a relative weight of 1
which comprises 50% of the final mark.
Note: Schriftelijk theorie-examen (50%)
Within the PRAC Practical Assignment category, the following assignments need to be completed:
with a relative weight of 1
which comprises 50% of the final mark.
Note: Drie verplichte programmeertaken (50%)
- Additional info regarding evaluation
Students are evaluated on three programming assignments, and on a written exam about the theory.
The assignments are mandatory and the deadlines are strict.
Failing to hand in an assignment implies an absent mark for the course.
Students need to obtain a minimal score of 7/20 in total for the assignments, and of 7/20 on the written exam.
Otherwise, they will receive their lowest score as the end result for this course.
- Allowed unsatisfactory mark
- The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.
This offer is part of the following study plans:
Master in Applied Sciences and Engineering: Applied Computer Science: Standaard traject
Master of Applied Sciences and Engineering: Computer Science: Artificial Intelligence
Master of Applied Sciences and Engineering: Computer Science: Multimedia
Master of Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering
Master of Applied Sciences and Engineering: Computer Science: Multimedia for Northwestern Polytechnical University (NPU)
Master of Applied Sciences and Engineering: Computer Science: Data Management and Analytics
Master of Applied Informatics: Profile Profile Big Data Technology