Oggetto:
Oggetto:

Tecniche e architetture avanzate per lo sviluppo del software

Oggetto:

Software Engineering: Advanced Architectures and Techniques

Oggetto:

Anno accademico 2025/2026

Codice attività didattica
INF0100
Docente
Claudia Picardi (Titolare)
Corso di studio
[008515] Laurea magistrale in informatica
Anno
1° anno
Periodo
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
9 CFU - Numero di ore - Number of hours: 48 (in aula) + 24 (in laboratorio)
SSD attività didattica
INFO-01/A - Informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Orale
Tipologia unità didattica
corso
Prerequisiti
  • Buon livello di competenza di programmazione in Java
  • Competenze di progettazione e programmazione di applicazioni Web (client-side e server-side, comunicazione basata su protocollo HTTP + JSON, basic authentication e gestione della sessione)
  • Capacità di progettare un database e realizzarlo tramite un DBMS Sql o NoSql
  • Conoscenza di base della metodologia Agile e di UML per i requisiti e la progettazione

  • Proficiency in Java programming
  • Good knowledge of tools and methods for developing Web application (client-side and server-side, HTTP and JSON for communication, basic authentication and session management)
  • Capability to design a database and implement it in a DBMS (either Sql or NoSql)
  • Basic knowledge of the principles of the Agile methodology and UML as a requirement and design specification language
Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

Regole di comportamento durante gli esami Informazioni per studenti con DSA o Disabilità: servizi di Ateneo e supporto per sostenere gli esami
Oggetto:

Obiettivi formativi

 

Questo insegnamento concorre agli obiettivi formativi dell'ambito dello sviluppo del software del Corso di Laurea Magistrale in Informatica 

Il corso ha come obiettivo di fornire a studentesse e studenti conosenze e competenze relative alle metodologie, alle tecnologie e agli strumenti di sviluppo di sistemi mission critical, con particolare riferimento all'insieme di metodi e soluzioni che va sotto il nome di DevOps, e alle applicazioni Cloud Native basate su architetture a microservizi, containerization e orchestration.

Il corso si propone di offrire una panoramica dell'ambito in oggetto, e di approfondire metdologie, approcci, pattern e soluzioni architetturali che permettano di comprendere le problematiche più significative e di possedere gli strumenti per mettere in campo soluzioni adeguate.

Il corso fornità altresì competenze pratiche nel suddetto ambito. Studentesse e studenti potranno familiarizzarsi e sperimentare, tramite lo sviluppo di un progetto d'esame, l'approccio DevOps (in particolare, la metodologia XP e il Domain Driven Design), e l'implementazione e deployment di un prototipo verticale basato su architettura a microservizi. Lo scopo della realizzazione del progetto, oltre che fornire competenze pratiche, è di collegare le conoscenze teoriche alla prassi di progettazione e sviluppo, e di comunicare efficacemente le problematiche riscontrate e le soluzioni adottate nell'ambito del proprio lavoro.

This teaching contributes to the educational objectives of the software development area of ​​the Master's Degree in Computer Science.

The main objective of the course is to provide students with knowledge and skills concerning methodologies, technologies and tools for mission critical applications, with particular reference to the DevOps approach, and with a focus on Cloud Native applications, that is, application based on microservice architectures and deployed by means of containerizations and orchestration.

The course will offer an overview of the field and will discuss in greater depth those methodologies, approaches, patterns and architectural solutions that allow to understand and discuss the most significant challenges of Cloud Native applications, as well as achieve the competencies required to design adequate solutions. 

The course will also provide students with practical skills. Students will become familiar with and experience, through the development of an exam project, the DevOps approach (in particular, XP methodology and Domain Driven Design), and the implementation and deployment of a vertical prototype based on microservices architecture. The purpose of the project implementation, in addition to providing practical skills, is to link theoretical knowledge to design and development practice, and to effectively communicate problems encountered and solutions adopted as part of one's work.

Oggetto:

Risultati dell'apprendimento attesi

 

CONOSCENZA E CAPACITÀ DI COMPRENSIONE

  • conoscenza e comprensione dei principi fondamentali dell'approccio DevOps
  • conoscenza e comprensione degli strumenti di progettazione Agile per applicazioni Cloud-Native / a microservizi
  • conoscenza e comprensione dell'evoluzione degli strumenti e delle architetture per Enterprise Applications e applicazioni mission critical
  • conoscenza e comprensione delle caratteristiche delle architetture a microservizi, delle modalità di comunicazione fra microservizi, delle principali sfide e problematiche che si incontrano in questo ambito e dei design pattern utilizzati per affrontarle
  • conoscenza e comprensione di base del Domain Driven Design per la progettazione di applicazioni con architettura a microservizi
  • conoscenza e comprensione dei meccanismi di deployment di applicazioni Cloud-Native con particolare riferimento alla containerizzazione e all'orchestrazione di microservizi

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE

  • capacità di implementare microservizi utilizzando il linguaggio Java e il framework Spring Boot
  • capacità di realizzare una comunicazione sincrona fra microservizi usando HTTP/REST 
  • capacità di realizzare una comunicazione asincrona fra microservizi usando RabbitMQ
  • capacità di comporre e dispiegare un'applicazione a microservizi usando Docker e Kubernetes

AUTONOMIA DI GIUDIZIO

  • capacità di valutare le scelte architetturali e progettuali nell'ambito di un'architettura a microservizi
  • capacità di valutare l'utilizzo di strumenti e servizi esterni nell'ambito della propria applicazione attraverso la realizzazione di attività esplorative (spike)

ABILITÀ COMUNICATIVE

Capacità di comunicare, in forma scritta e orale:

  • le conoscenze acquisite
  • le caratteristiche tecniche, progettuali e architetturali di un’applicazione enterprise a microservizi
  • le scelte e le valutazioni effettuate nella progettazione e implementazione di un’applicazione enterprise a microservizi

CAPACITÀ DI APPRENDIMENTO

  • Capacità di apprendere attraverso l'esperienza pratica l'utilizzo appropriato delle architetture, dei pattern e degli strumenti presentati
  • Capacità di inquadrare strumenti non precedentemente conosciuti per valutarne l’efficacia nell’ambito della progettazione di un’applicazione a microservizi.
  • Capacità di autovalutare il livello di competenza raggiunto con ciascuno degli strumenti proposti.

KNOWLEDGE AND UNDERSTANDING

  • knowledge and understanding of the fundamental principles of the DevOps approach
  • knowledge and understanding of Agile design principles for Cloud-Native/microservice apps
  • knowledge and understanfing of the evolution of tools and architectures for Enterprise & mission critical Applications 
  • knowledge and understanding of microservice architecture, of microservice communication styles, of the key challenges and problems presented by microservice architectures and of the design patterns that can be applied
  • knowledge and understanding of the basics of Domain Driven Design for the design of microservice apps
  • knowledge and understanding of deployment mechanisms for Cloud-Native apps, in particular of microservice containerization and orchestration.

APPLYING KNOWLEDGE AND UNDERSTANDING

  • implementing microservices with Java and the Spring Boot framework
  • implementing synchronous communication between microservices with HTTP/REST 
  • implementing asynchronous communication between microservices with RabbitMQ
  • composing and deploying a microservice app using Docker and Kubernetes

MAKING JUDGEMENTS

  • evaluating architectural and design choices in a microservice app
  • evaluating the use of external/third-party tools and services in the composition of a microservice app, through the implementation of spikes

COMMUNICATION SKILLS

Ability to communicate, in written and oral form:

  • acquired knowledge
  • the technical features, as well as the architecture and design, of an Enterprise microservice app
  • choices made and lessons learned in the design and implementation of an Enterprise microservice app.

LEARNING

  • Learning through practice how to use the methods, patterns and tools introduced in the classes 
  • Learning how to contextualize previously unknown tools in order to evaluate their adequacy for the development of a microservice app
  • Self-evaluating the competencies achieved with each of the taught methods and tools
 
Oggetto:

Programma

TEORIA:

  • Cenni a strumenti Agile utilizzati in ambito DevOps / Cloud Native per gestire il processo di sviluppo e l'analisi dei requisiti
  • Breve storia evolutiva delle architetture distribuite per Enterprise Application
  • Architetture a microservizi: principi e applicazioni
  • Comunicazione fra microservizi: comunicazione asincrona e sincrona, principali problematiche, design pattern e soluzioni
  • Il deployment delle applicazioni a microservizi: Container, Composizione e Orchestrazione.
  • Continuous Integration / Continuous Deployment

LABORATORIO:

  • Sviluppo di microservizi con Spring Boot
  • Comunicazione sincrona fra microservizi con REST/HTTP
  • Comunicazione asincrona fra microservizi con RabbitMQ
  • Containers con Docker
  • Composizione, esecuzione e monitoraggio di container con Docker Compose
  • Deployment ed orchestrazione di container con Kubernetes / Minikube

Verrà anche effettuato un ripasso sull'uso di frameork (React) per lo sviluppo di front-end, in quanto necessario per la realizzazione del progetto finale.

THEORY:

  • Overview of Agile tools used in DevOps / Cloud Native to manage the development process and requirements analysis
  • Brief evolutionary history of distributed architectures for Enterprise Application
  • Microservice architectures: principles and applications
  • Communication between microservices: asynchronous and synchronous communication, major issues, design patterns and solutions
  • The deployment of microservice applications: Containers, Composition and Orchestration.
    Continuous Integration / Continuous Deployment

PRACTICE:

  • Development of microservices with Spring Boot
  • Synchronous communication between microservices with REST/HTTP
  • Asynchronous communication between microservices with RabbitMQ
  • Containers with Docker
  • Container composition, execution, and monitoring with Docker Compose
  • Deployment and orchestration of containers with Kubernetes / Minikube

A review of the use of frameworks (React) for front-end development will also be conducted, as it is necessary for the implementation of the final project.

Oggetto:

Modalità di insegnamento

La parte di teoria e la parte di laboratorio sono strettamente connesse e non saranno nettamente divise, ma si alterneranno nel corso delle lezioni. Le lezioni, che si svolgeranno in aula, alterneranno dunque spiegazioni con ausilio di slide e dispense, ed esemplificazioni dal vivo di quanto spiegato. 

Gli strumenti previsti per lo svolgimento della prova d'esame verranno presentati attraverso esempi e spike realizzati passo a passo dalla docente in classe e successivamente distribuiti a studentesse e studenti attraverso Git e/o la piattaforma Moodle.

Alcune lezioni saranno dedicate alla presentazione dei progetti degli studenti e del loro stato di avanzamento (Project Review). 

Le lezioni saranno registrate e rese disponibili attraverso la piattaforma Moodle.

Theory and practice are closely linked and there won't be a clear cut separation between the two. The lectures, which will take place in the classroom, will therefore alternate between explanations with the help of slides and handouts, and live examples of what is explained.

The tools provided for the exam project will be presented through examples and spikes made step by step by the lecturer in class, and then distributed to students through Git and/or the Moodle platform.

Some lectures will be devoted to the presentation of students' projects and their progress (Project Review).

Lectures will be recorded and made available through the Moodle platform.

 

Oggetto:

Modalità di verifica dell'apprendimento

L'esame prevede la realizzazione di un progetto d'esame di gruppo, la discussione del progetto stesso da parte del gruppo che l'ha realizzato, e un orale di teoria individuale che può essere svolto con tempistiche indipendenti dal progetto. 

La valutazione si suddivide in tre parti:

  • valutazione al progetto in quanto tale: 1/3 del punteggio finale, conseguito nella discussione del progetto, uguale per tutto il gruppo (LABORATORIO)
  • competenza, autonomia di giudizio e capacità di comunicazione dimostrate nella discussione del progetto: 1/3 del punteggio finale, conseguito nella discussione del progetto, individuale (APPLICAZIONE DELLA TEORIA)
  • conoscenze e competenze relative alla parte di teoria: 1/3 del punteggio dinale, conseguito nell'orale di teoria, individuale (TEORIA)

Il progetto consiste nell'analisi di un applicativo di tipo enterprise (o assimilabile) di propria ideazione, con progettazione di un'architettura a microservizi, e nell'implementazione di un prototipo verticale dell'applicazione stessa, basato su Spring Boot / Docker / Kubernetes + front-end con un framework a propria scelta.

Per il superamento dell'esame sarà inoltre necessario affrontare in corso d'opera due project review in cui presentare l'andamento del progetto; le project review non costituiscono elemento di valutazione ma sono necessarie per mantenere il progetto "on track" e sperimentare l'approccio Agile alla pianificazione, alla progettazione e allo sviluppo. 

The examination involves the completion of a group project, of a project discussion by the whole group, and an individual theory oral that can be taken separately.

The assessment is divided into three parts:

  • evaluation to the project in itself: 1/3 of the final score, achieved in the discussion of the project, equal for the whole group (LABORATORY)
  • competences, judgment capabilities and communication skills demonstrated in the discussion of the project: 1/3 of the final score, achieved in the discussion of the project, individual (APPLICATION OF THEORY)
  • knowledge and skills related to the theory: 1/3 of the final score, achieved in the theory oral, individual (THEORY)

The project consists of the analysis of an enterprise (or enterprise-like) application of one's own devising, with design of a microservices architecture, and the implementation of a vertical prototype of the application, based on Spring Boot / Docker / Kubernetes + front-end with a framework of one's own choice.

In order to pass the exam, it will also be necessary to go through two project reviews, in which to present the project progress; the project reviews are not an element of assessment but are necessary to keep the project “on track” and experience the Agile approach to planning, design and development.

Testi consigliati e bibliografia

Oggetto:

For microservice architectures, communication and patterns: Microservices Patterns. Chris Richardson, 2018 Manning

For the evolution of distributed Enterprise applications: Web services - Concepts, architectures and applications. G. Alonso, F. Casati, H. Kuno and V. Machiraju, 2004 Springer

For other topics, web resources will be provided on the Moodle platform.



Oggetto:

Insegnamenti che mutuano questo insegnamento

Oggetto:
Ultimo aggiornamento: 15/05/2025 22:07
Location: https://magistrale.informatica.unito.it/robots.html
Non cliccare qui!