6 ECTS credits
160 u studietijd

Aanbieding 1 met studiegidsnummer 4013771FNR voor alle studenten in het 1e semester met een gespecialiseerd master niveau.

Semester
1e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Coen De Roover (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
Inhoud
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
Studiemateriaal
Handboek (Aanbevolen) : Software Architecture in Practice, Len Bass, Paul Clements, Rick Kazman, 3de, Addison Wesley, 9780321815736, 2013
Handboek (Aanbevolen) : Reactive Design Patterns, Roland Kuhn, Brian Hanafee, Jamie Allen, Manning, 9781617291807, 2017
Digitaal cursusmateriaal (Aanbevolen) : Cursusmateriaal beschikbaar op leerplatform, Canvas
Bijkomende info

  

 

Leerresultaten

General competences

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:

w.r.t. knowledge:
  • 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 
w.r.t. analysing:
  • 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
w.r.t. evaluating:
  • 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
w.r.t. creating:
  • 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 
 

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Schriftelijk bepaalt 50% van het eindcijfer

WPO Praktijkopdracht bepaalt 50% van het eindcijfer

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Schriftelijk examen met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: Schriftelijk theorie-examen (50%)

Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:

  • Programmeertaken met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: Drie verplichte programmeertaken (50%)

Aanvullende info mbt evaluatie
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.
Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master of Applied Sciences and Engineering: Applied Computer Science: Standaard traject (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia for Northwestern Polytechnical University (NPU) (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)
Master of Applied Informatics: Profiel profiel Big Data Technology (enkel aangeboden in het Engels)