SOFTWARE ARCHITECTURES

Academic year
2023/2024 Syllabus of previous years
Official course title
SOFTWARE ARCHITECTURES
Course code
CM0633 (AF:451591 AR:245312)
Modality
Blended (on campus and online classes)
ECTS credits
6
Degree level
Master's Degree Programme (DM270)
Educational sector code
INF/01
Period
1st Semester
Course year
1
Where
VENEZIA
Moodle
Go to Moodle page
The main goal of this course is to teach the fundamentals of software architectures (and in particular what aspects should be taken into account when evaluating what architecture to choose to develop a software system), and the most important architectural patterns that are nowadays adopted in modern software systems.
- Understanding what are the main characteristics of a software architecture to take into account when designing a software system
- Discerning the different types of existing software architectures with respect to their characteristics
- Choosing an appropriate software architecture (or a combination of several architectures) when designing a software system
Deep knowledge of imperative and object-oriented programming languages. High-level understanding of the main object-oriented patterns, and Web and/or cloud applications.
Software architecture characteristics:
- Modularity and coupling
- Operational characteristics: availability, performance, scalability, recoverability
- Structural characteristics: deployability, configurability, extensibility, upgradeability
- Measurement of characteristics
Architectural patterns:
- Monolithic vs. distributed architectures
- Layered
- Pipeline
- Microkernel
- Event-driven
- Space based
- Microservice
Development of software architectures using a modern technology (such as Spring) and several of its technologies (such as Spring Boot, Spring REST, Spring for Apache Kafka, Spring Web). This part of the course will be blended.
Mark Richards, Neal Ford: “Fundamentals of Software Architecture”,O'Reilly Media, January 2020
Written exam (one-third of the grade) that will evaluate the understanding of software architecture characteristics, and a group project and/or weekly tasks (two-thirds of the grade, to be submitted before the written exam) that will evaluate the ability to choose and design a correct software architecture.
Lectures with slides and demos of software developments. Programming exercises, also performed in the classroom. Online material about the various technologies adopted to implement different architectural patterns.
English
written
Definitive programme.
Last update of the programme: 17/01/2024