20810007 - ARCHITETTURA DEI SISTEMI SOFTWARE

The goal of the course is to present the discipline of software architecture, which is interested in studying the relationships between the structures of software systems and their quality attributes; this knowledge is fundamental for the analysis, design, evaluation and evolution of complex software systems. The course also presents the architecture of distributed software systems, the service-based architecture, and the software architecture for the Cloud, as well as some middleware services.

Curriculum

teacher profile | teaching materials

Programme

Fundamentals: Software architecture concepts; Architectural descriptions; Software qualities; The architecture definition process.
Software qualities and designing for software qualities: performance; modifiability; availability; verifiability; scalability; interoperability; monitoring.
Architectural patterns: Domain Model; Domain Object; Layers; Pipes & Filters; other POSA patterns; hexagonal architecture.
Architecture of distributed systems; client/server, peer-to-peer, remote invocation; broker; asynchronous communication; messaging; components; component-based architecture; container.
Service-based architecture; services; service-based-architecture; REST services; microservices; cloud native software.
DevOps and software delivery: environments and their management; cloud computing; virtual machines and system virtualization; containers and container-based virtualization; container orchestration; continuous delivery.
Middleware.

Prerequisiti

Knowledge of basic notions of software engineering is useful, and specifically object-oriented analysis and design.

Core Documentation

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Reference Bibliography

Course lecture notes (Prof. Luca Cabibbo), published on the course Moodle page and organized by syllabus block; for the middleware exercises the notes are sufficient. Code of the exercises in the course GitHub repository (github.com/aswroma3/asw). The material is the same for attending and non-attending students. Further reading: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Type of delivery of the course

Lectures. Exercises on middleware services.

Attendance

There are no lectures and attendance is not compulsory. Attending the classroom meetings on the project is optional but recommended for students who do the project; dates and rooms are announced on Moodle.

Type of evaluation

The exam consists of three parts: an optional but strongly recommended project, a quiz and an oral exam. The final mark is the sum of the scores of the three parts; a total of 31 points corresponds to 30 cum laude. - Project (up to 5 points): carried out in groups of 3 or 4 students on an assignment published on Moodle; it requires building and deploying with Docker a microservice application with asynchronous communication. It is submitted by the date given on Moodle and discussed in the classroom in the winter exam session, with a demonstration of the application and questions to each member; marks may differ between members of the same group. The score is valid for all exam sessions of the academic year. - Quiz (up to 3 points for students who did the project, up to 8 for those who did not): it takes place on the exam day, before the oral exam, and lasts about one hour. It has 30 closed-answer questions, with a single correct answer and no penalty for wrong answers, on the theoretical parts of the syllabus, excluding the middleware exercises, in proportion to their size. The score is proportional to the number of correct answers. - Oral exam (up to 23 points): it covers the whole syllabus. Students who did not do the project bring and present a small microservice application run with Docker Compose, modifying it on request. The assessment of the oral exam and of the project takes into account the level and quality of the knowledge of the topics, the ability to connect them and apply them to concrete cases, the ability to justify architectural choices and evaluate their trade-offs, the correctness and quality of the solution built, and the use of appropriate technical vocabulary. The detailed exam rules, the project assignment and a quiz simulation are available on the course Moodle page.

teacher profile | teaching materials

Programme

Fundamentals: Software architecture concepts; Architectural descriptions; Software qualities; The architecture definition process.
Software qualities and designing for software qualities: performance; modifiability; availability; verifiability; scalability; interoperability; monitoring.
Architectural patterns: Domain Model; Domain Object; Layers; Pipes & Filters; other POSA patterns; hexagonal architecture.
Architecture of distributed systems; client/server, peer-to-peer, remote invocation; broker; asynchronous communication; messaging; components; component-based architecture; container.
Service-based architecture; services; service-based-architecture; REST services; microservices; cloud native software.
DevOps and software delivery: environments and their management; cloud computing; virtual machines and system virtualization; containers and container-based virtualization; container orchestration; continuous delivery.
Middleware.

Prerequisiti

Knowledge of basic notions of software engineering is useful, and specifically object-oriented analysis and design.

Core Documentation

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Reference Bibliography

Course lecture notes (Prof. Luca Cabibbo), published on the course Moodle page and organized by syllabus block; for the middleware exercises the notes are sufficient. Code of the exercises in the course GitHub repository (github.com/aswroma3/asw). The material is the same for attending and non-attending students. Further reading: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Type of delivery of the course

Lectures. Exercises on middleware services.

Attendance

There are no lectures and attendance is not compulsory. Attending the classroom meetings on the project is optional but recommended for students who do the project; dates and rooms are announced on Moodle.

Type of evaluation

The exam consists of three parts: an optional but strongly recommended project, a quiz and an oral exam. The final mark is the sum of the scores of the three parts; a total of 31 points corresponds to 30 cum laude. - Project (up to 5 points): carried out in groups of 3 or 4 students on an assignment published on Moodle; it requires building and deploying with Docker a microservice application with asynchronous communication. It is submitted by the date given on Moodle and discussed in the classroom in the winter exam session, with a demonstration of the application and questions to each member; marks may differ between members of the same group. The score is valid for all exam sessions of the academic year. - Quiz (up to 3 points for students who did the project, up to 8 for those who did not): it takes place on the exam day, before the oral exam, and lasts about one hour. It has 30 closed-answer questions, with a single correct answer and no penalty for wrong answers, on the theoretical parts of the syllabus, excluding the middleware exercises, in proportion to their size. The score is proportional to the number of correct answers. - Oral exam (up to 23 points): it covers the whole syllabus. Students who did not do the project bring and present a small microservice application run with Docker Compose, modifying it on request. The assessment of the oral exam and of the project takes into account the level and quality of the knowledge of the topics, the ability to connect them and apply them to concrete cases, the ability to justify architectural choices and evaluate their trade-offs, the correctness and quality of the solution built, and the use of appropriate technical vocabulary. The detailed exam rules, the project assignment and a quiz simulation are available on the course Moodle page.

teacher profile | teaching materials

Programme

Fundamentals: Software architecture concepts; Architectural descriptions; Software qualities; The architecture definition process.
Software qualities and designing for software qualities: performance; modifiability; availability; verifiability; scalability; interoperability; monitoring.
Architectural patterns: Domain Model; Domain Object; Layers; Pipes & Filters; other POSA patterns; hexagonal architecture.
Architecture of distributed systems; client/server, peer-to-peer, remote invocation; broker; asynchronous communication; messaging; components; component-based architecture; container.
Service-based architecture; services; service-based-architecture; REST services; microservices; cloud native software.
DevOps and software delivery: environments and their management; cloud computing; virtual machines and system virtualization; containers and container-based virtualization; container orchestration; continuous delivery.
Middleware.

Prerequisiti

Knowledge of basic notions of software engineering is useful, and specifically object-oriented analysis and design.

Core Documentation

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Reference Bibliography

Course lecture notes (Prof. Luca Cabibbo), published on the course Moodle page and organized by syllabus block; for the middleware exercises the notes are sufficient. Code of the exercises in the course GitHub repository (github.com/aswroma3/asw). The material is the same for attending and non-attending students. Further reading: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Type of delivery of the course

Lectures. Exercises on middleware services.

Attendance

There are no lectures and attendance is not compulsory. Attending the classroom meetings on the project is optional but recommended for students who do the project; dates and rooms are announced on Moodle.

Type of evaluation

The exam consists of three parts: an optional but strongly recommended project, a quiz and an oral exam. The final mark is the sum of the scores of the three parts; a total of 31 points corresponds to 30 cum laude. - Project (up to 5 points): carried out in groups of 3 or 4 students on an assignment published on Moodle; it requires building and deploying with Docker a microservice application with asynchronous communication. It is submitted by the date given on Moodle and discussed in the classroom in the winter exam session, with a demonstration of the application and questions to each member; marks may differ between members of the same group. The score is valid for all exam sessions of the academic year. - Quiz (up to 3 points for students who did the project, up to 8 for those who did not): it takes place on the exam day, before the oral exam, and lasts about one hour. It has 30 closed-answer questions, with a single correct answer and no penalty for wrong answers, on the theoretical parts of the syllabus, excluding the middleware exercises, in proportion to their size. The score is proportional to the number of correct answers. - Oral exam (up to 23 points): it covers the whole syllabus. Students who did not do the project bring and present a small microservice application run with Docker Compose, modifying it on request. The assessment of the oral exam and of the project takes into account the level and quality of the knowledge of the topics, the ability to connect them and apply them to concrete cases, the ability to justify architectural choices and evaluate their trade-offs, the correctness and quality of the solution built, and the use of appropriate technical vocabulary. The detailed exam rules, the project assignment and a quiz simulation are available on the course Moodle page.

teacher profile | teaching materials

Programme

Fundamentals: Software architecture concepts; Architectural descriptions; Software qualities; The architecture definition process.
Software qualities and designing for software qualities: performance; modifiability; availability; verifiability; scalability; interoperability; monitoring.
Architectural patterns: Domain Model; Domain Object; Layers; Pipes & Filters; other POSA patterns; hexagonal architecture.
Architecture of distributed systems; client/server, peer-to-peer, remote invocation; broker; asynchronous communication; messaging; components; component-based architecture; container.
Service-based architecture; services; service-based-architecture; REST services; microservices; cloud native software.
DevOps and software delivery: environments and their management; cloud computing; virtual machines and system virtualization; containers and container-based virtualization; container orchestration; continuous delivery.
Middleware.

Prerequisiti

Knowledge of basic notions of software engineering is useful, and specifically object-oriented analysis and design.

Core Documentation

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Reference Bibliography

Course lecture notes (Prof. Luca Cabibbo), published on the course Moodle page and organized by syllabus block; for the middleware exercises the notes are sufficient. Code of the exercises in the course GitHub repository (github.com/aswroma3/asw). The material is the same for attending and non-attending students. Further reading: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Type of delivery of the course

Lectures. Exercises on middleware services.

Attendance

There are no lectures and attendance is not compulsory. Attending the classroom meetings on the project is optional but recommended for students who do the project; dates and rooms are announced on Moodle.

Type of evaluation

The exam consists of three parts: an optional but strongly recommended project, a quiz and an oral exam. The final mark is the sum of the scores of the three parts; a total of 31 points corresponds to 30 cum laude. - Project (up to 5 points): carried out in groups of 3 or 4 students on an assignment published on Moodle; it requires building and deploying with Docker a microservice application with asynchronous communication. It is submitted by the date given on Moodle and discussed in the classroom in the winter exam session, with a demonstration of the application and questions to each member; marks may differ between members of the same group. The score is valid for all exam sessions of the academic year. - Quiz (up to 3 points for students who did the project, up to 8 for those who did not): it takes place on the exam day, before the oral exam, and lasts about one hour. It has 30 closed-answer questions, with a single correct answer and no penalty for wrong answers, on the theoretical parts of the syllabus, excluding the middleware exercises, in proportion to their size. The score is proportional to the number of correct answers. - Oral exam (up to 23 points): it covers the whole syllabus. Students who did not do the project bring and present a small microservice application run with Docker Compose, modifying it on request. The assessment of the oral exam and of the project takes into account the level and quality of the knowledge of the topics, the ability to connect them and apply them to concrete cases, the ability to justify architectural choices and evaluate their trade-offs, the correctness and quality of the solution built, and the use of appropriate technical vocabulary. The detailed exam rules, the project assignment and a quiz simulation are available on the course Moodle page.

teacher profile | teaching materials

Programme

Fundamentals: Software architecture concepts; Architectural descriptions; Software qualities; The architecture definition process.
Software qualities and designing for software qualities: performance; modifiability; availability; verifiability; scalability; interoperability; monitoring.
Architectural patterns: Domain Model; Domain Object; Layers; Pipes & Filters; other POSA patterns; hexagonal architecture.
Architecture of distributed systems; client/server, peer-to-peer, remote invocation; broker; asynchronous communication; messaging; components; component-based architecture; container.
Service-based architecture; services; service-based-architecture; REST services; microservices; cloud native software.
DevOps and software delivery: environments and their management; cloud computing; virtual machines and system virtualization; containers and container-based virtualization; container orchestration; continuous delivery.
Middleware.

Prerequisiti

Knowledge of basic notions of software engineering is useful, and specifically object-oriented analysis and design.

Core Documentation

Luca Cabibbo
Architettura del Software: Strutture e Qualità
Edizioni Efesto, 2021
ISBN: 9788833812458

Reference Bibliography

Course lecture notes (Prof. Luca Cabibbo), published on the course Moodle page and organized by syllabus block; for the middleware exercises the notes are sufficient. Code of the exercises in the course GitHub repository (github.com/aswroma3/asw). The material is the same for attending and non-attending students. Further reading: L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 4th ed., Addison-Wesley, 2021; N. Rozanski, E. Woods, Software Systems Architecture, 2nd ed., Addison-Wesley, 2011; C. Richardson, Microservices Patterns, Manning, 2018.

Type of delivery of the course

Lectures. Exercises on middleware services.

Attendance

There are no lectures and attendance is not compulsory. Attending the classroom meetings on the project is optional but recommended for students who do the project; dates and rooms are announced on Moodle.

Type of evaluation

The exam consists of three parts: an optional but strongly recommended project, a quiz and an oral exam. The final mark is the sum of the scores of the three parts; a total of 31 points corresponds to 30 cum laude. - Project (up to 5 points): carried out in groups of 3 or 4 students on an assignment published on Moodle; it requires building and deploying with Docker a microservice application with asynchronous communication. It is submitted by the date given on Moodle and discussed in the classroom in the winter exam session, with a demonstration of the application and questions to each member; marks may differ between members of the same group. The score is valid for all exam sessions of the academic year. - Quiz (up to 3 points for students who did the project, up to 8 for those who did not): it takes place on the exam day, before the oral exam, and lasts about one hour. It has 30 closed-answer questions, with a single correct answer and no penalty for wrong answers, on the theoretical parts of the syllabus, excluding the middleware exercises, in proportion to their size. The score is proportional to the number of correct answers. - Oral exam (up to 23 points): it covers the whole syllabus. Students who did not do the project bring and present a small microservice application run with Docker Compose, modifying it on request. The assessment of the oral exam and of the project takes into account the level and quality of the knowledge of the topics, the ability to connect them and apply them to concrete cases, the ability to justify architectural choices and evaluate their trade-offs, the correctness and quality of the solution built, and the use of appropriate technical vocabulary. The detailed exam rules, the project assignment and a quiz simulation are available on the course Moodle page.