Code
IGFE CSC 7321
Level
MSc
Graduate
PostGraduate
Semester
Fall
Domain
Informatique
Program
Master of Science
Language
Anglais/English
ECTS Credits
5
Class hours
42
Workload
84
Program Manager(s)
Department
- Informatique
Educational team
Organisation
Cours/TD/TP/projet/examen :Learning objectives
After this teaching unit, you should be able to:
- Identify and use the main interaction patterns between distributed components (synchronous call, callbacks, orchestration, asynchronous calls, publish/subscribe) through the study and practise of several middleware (RestFul Services, Web Services, AMQP, JavaEE).
- Design and implement a distributed application made of several functional modules with computing components, persistent components, client components. The application will be realised in the context of a microproject lasting during all the teaching unit.
- Identify design patterns and architectural patterns used by middleware for distributed applications.
- Define the quality of a distributed architecture and discuss architecture choices to respond to the quality requirements a of software architecture (e.g. interoperability, security, scalability).
CDIO Skills
- 1.3 - Advanced engineering fundamental knowledge, methods and tools
- 4.3.2 - Defining Function, Concept and Architecture
- 4.4.1 - The Design Process
- 4.4.3 - Utilization of Knowledge in Design
- 4.8.5 - Designing products and services around new technologies
Prerequisites
Unix user commands, application modeling with UML, object oriented programming, Java language, database systems, fundamentals of distributed applications
Keywords
middleware, microservices, hexagonal architecture, ports and adapters, distributed applications
Content
- Fundamentals of middleware and software architectures
- Monolithic and microservice-based software architectures
- REST Architecture Style, REST with JAX-RS, XML serialisation and Basics of HTTP
- Synchronous and asynchronous interaction patterns, Server-Sent Events
- Hexagonal Architecture, Design Pattern Ports & Adapters
- Domain Driven Design of Microservices Applications
- Fundamentals of application servers, Persistence and Object Relational Mapping
- Distributed Event-Based Systems, AMQP with RabbitMQ
- Feature Flagging; Observability; Benchmarking
- Micro-project
- Conferences by external experts
Evaluation
Class attendance and participation will be taken into account in the evaluation.
The evaluation for this course is based on continuous control (CC) consisting of graded lab assignments and/or a micro-project and/or case studies with oral presentations, as well as a final written exam (FE) taken in class without reference materials.
The course is considered passed if and only if the final grade is 10 or higher.
Only one final exam is administered.
Assessment formula
Final grade = 0.3 * CC + 0.7 * FE
References
- Supports de cours
- Alistair Cockburn and Juan Manuel Garrido de Paz, "Hexagonal Architecture Explained: How the Ports & Adapters Architecture Simplifies Your Life, and How to Implement It", Ed. Humans and Technology Press, Series on Object-Oriented Design, EAN 9781737519799, 2024
- L. Bass, P. Clements, and R. Kazman. “Software Architecture in Practice, 3rd Edition”. Addison-Wesley, 2012.
- M. Richards. “Software Architecture Patterns”. O’Reilly, 2022.
- C. Richardson. “Microservices Patterns”. Manning, 2018.
- V. Khononov. “Learning Domain-Driven Design”. O'Reilly, 2022.
- R.T. Fielding. “Architectural Styles and the Design of Network-based Software Architectures”. PhD Dissertation, University of California, Irvine, 2000.
- OASIS AMQP Consortium. “AMQP: Advanced Message Queuing Protocol, Version 0-9-1”. Protocol specification, November 2008.
- OASIS MQTT Consortium. “MQTT specification Version 5.0”. Standard, March 2019.
Pedagogical methods
ASSIDUITE : CC
All the subjects of the module will be illustrated by research articles as well as practical labs. Through a micro-project students will design and implement a distributed application.