Vinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.x

SOFTWARE ARCHITECTURE DESIGN

SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05

 

LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO: 2022-2023

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: ANNA RITA FASOLINO
TELEFONO: 081 7683906
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE): SOFTWARE ARCHITECTURE DESIGN
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): I
SEMESTRE (I, II): II
CFU: 9

 

INSEGNAMENTI PROPEDEUTICI

(se previsti dall'Ordinamento del CdS)

...................................................................................................................................................

 

EVENTUALI PREREQUISITI

Ingegneria del Software

Software Engineering

 

OBIETTIVI FORMATIVI

L’insegnamento si propone di introdurre il tema delle architetture software e di fornire agli studenti conoscenze e competenze specialistiche relative alla progettazione, modellazione, documentazione e sviluppo di tali architetture.

 

RISULTATI DI APPRENDIMENTO ATTESI

(Descrittori di Dublino)

Conoscenza e capacità di comprensione

Lo studente deve dimostrare di conoscere e comprendere le problematiche relative alla disciplina delle architetture software ed il loro ruolo nell’ambito dei moderni processi di sviluppo software; il percorso formativo intende fornire agli studenti le conoscenze necessarie per comprendere le caratteristiche dei diversi modelli e pattern architetturali e gli strumenti metodologici necessari per progettare, documentare, e sviluppare una architettura software. Tali conoscenze e strumenti consentiranno agli studenti di comprendere le principali relazioni che sussistono fra progetto architetturale e conseguenti caratteristiche di qualità del software e di cogliere le implicazioni delle diverse scelte di progetto sui requisiti posseduti dall’architettura risultante.

Capacità di applicare conoscenza e comprensione

Lo studente deve dimostrare di saper utilizzare le conoscenze e gli strumenti metodologici appresi per riuscire a progettare, documentare ed implementare architetture software in grado di realizzare tutti i requisiti funzionali e di qualità richiesti, implementando un processo di sviluppo ispirato ai moderni processi iterativi, evolutivi ed agili.

 

PROGRAMMA-SYLLABUS

Architetture Software: concetti fondamentali.
Definizioni di Architettura Software. Architettura come insieme di Viste: Vista dei Componenti e Connettori, Vista dei Moduli, Vista di Allocazione. Ruolo dell’architettura nei processi di sviluppo software.

Qualità delle Architetture Software.
Attributi di qualità osservabili a run-time (performance, security, availability, functionality, usability), Attributi non osservabili a run-time (modifiability, portability, reusability, integrability, e testability), attributi di qualità intrinseca dell’architettura (conceptual integrity, correctness, and completeness, buildability). Specificare gli attributi di qualità attraverso la tecnica degli Scenari di qualità.

Documentare le Architetture Software.
Documentare le diverse viste di una architettura software: stili di documentazione per la vista modulare, dei componenti e connettori, per la vista di distribuzione. Documentare il Contesto, il comportamento, le decisioni di progetto e le interfacce dei componenti di una architettura. Cenni allo Standard ISO/IEC 42010 (Systems and Software Engineering- Architecture Description).

Progettazione Architetturale.
Principi di progettazione architetturale, Progettazione basata sul riuso di esperienza, attraverso Stili, Pattern e Tattiche Architetturali.

Pattern Architetturali.
I Pattern Architetturali State-logic-Display, Sense-Compute-Control e Model-View-Controller (MVC). Esempi.

Stili Architetturali
Stile procedurale e object-oriented, Stile a Livelli (Macchine Virtuali e Client-Server), Data-Flow (Batch e Pipe-and-Filter), a Memoria Condivisa (Blackboard e Rule Based), basato su Interprete (Codice Mobile), ad Invocazione Implicita (Publish-Subscribe e Event-Based), Peer to Peer (P2P), C2 (Componenti e Connettori), Stile ad Oggetti Distribuiti, Stile Service Oriented (SOA), Stile a Microservizi. Ruoli fondamentali dei Connettori in una architettura software (comunicazione, coordinamento, conversione e facilitazione) e tipi di connettori fondamentali. Esempi.

Tattiche per realizzare gli attributi di qualità di una architettura
Tattiche per l’Availability, Deployability, Modifiability, Energy Efficiency, Performance, Security, Safety, Testability, Usability.

Analisi e Progettazione di architetture Object Oriented con Design Patterns.
Aspetti avanzati dell’Analisi e Progettazione O.O. I patterns della GoF: Singleton, Composite, Decorator, Proxy, Adapter, Facade, Observer, State e Strategy. Implementazioni in Java. I Pattern GRASP: Creator, Controller, Information Expert, Low Coupling,High Cohesion, Polymorphism, Repository.

Processi di Sviluppo Software Iterativi ed Incrementali.
Lo sviluppo iterativo ed Incrementale: differenze rispetto allo sviluppo waterfall. Unified Process (UP): le Fasi di Ideazione, Elaborazione, Costruzione e Transizione. Le discipline e le pratiche di UP.
Sviluppo Agile. I Principi dello Sviluppo Agile. Manifesto Agile e pratiche Agili. Il Test Driven Development (TDD) e il Refactoring. Continuous Integration (CI). Il framework SCRUM: i ruoli in Scrum, i Backlog, le pratiche di Scrum.

Processi di Gestione della Configurazione del Software
La gestione delle Versioni del software. Modello di Version Control Centralizzato e Distribuito. Il processo di Build e l’Agile Building, Continuous Integration, DevOps. I processi di gestione delle Richieste di cambiamento del Software. Gestione delle Release.

Sviluppo di architetture software mediante tecnologie open, uso di framework e librerie.

 

MATERIALE DIDATTICO

N. Taylor, N. Medvidovic, E. Dashofy. Software Architecture -foundations, theory and practice, Wiley 2010.
Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, Fourth Edition, Addison Wesley, 2022
P. Clements, F. Bachmann, Bass, etc. Documenting Software Architectures- Views and Beyond, Addison Wesley, Second Ed., 2010.
C. Larman: Applicare UML e i pattern. Analisi e progettazione orientata agli oggetti. 4a ed. Pearson, 2016

Copia delle Slide proiettate durante le lezioni
Articoli scientifici e materiale integrativo dal Web

 

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO

L’insegnamento verrà erogato prevalentemente attraverso lezioni frontali e sarà integrato da esercitazioni pratiche e da seminari di approfondimento. Lo sviluppo delle esercitazioni richiederà l’uso di ambienti integrati e software specialistico per la progettazione, la documentazione ed implementazione di architetture software.

Il docente utilizzerà a) lezioni frontali per circa 45 ore (pari al 62% delle ore totali), b) esercitazioni per approfondire praticamente aspetti teorici e applicare le conoscenze apprese per 15 ore (pari a circa il 21% delle ore totali) e c) seminari di approfondimento su tecnologie e metodologie da utilizzare per lo sviluppo degli elaborati per 12 ore (pari a circa il 17% delle ore totali).

 

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:

L'esame si articola in prova:
 Scritta e orale  
 Solo scritta   
 Solo orale
 Discussione di elaborato progettuale 
 Altro  

 

In caso di prova scritta i quesiti sono (*):
 A risposta multipla  
 A risposta libera   
 Esercizi numerici  

  

La prova orale finale tende ad accertare le conoscenze apprese nel campo delle architetture software e dei fondamentali modelli, stili e pattern architetturali. La discussione dell’elaborato progettuale finale intende verificare la capacità di applicare le metodologie di progettazione, documentazione e sviluppo architetturale atte a realizzare i requisiti richiesti ad una architettura, e di utilizzare le indicazioni dei più moderni processi di sviluppo software.

b) Modalità di valutazione:

 

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.