WATERFALL
Analisi dei requisiti
Progettazione
Implementazione
Integrazione
Manutenzione
ARCHITETTURA
• È IL LIVELLO PIÙ ALTO DELLA PROGETTAZIONE
• GLI ARCHITETTI SONO IL COLLEGAMENTO TRA IDEA E REALTÀ
• L’ARCHITETTURA NON PUÒ ESSERE (RAGIONEVOLMENTE)
RIPARATA, UNA VOLTA IMPLEMENTATA
• NEL SOFTWARE: UNA ARCHITETTURA SBAGLIATA NON PUÒ
ESSERE CORRETTA CON UNA BUONA PROGRAMMAZIONE
• IN ALTRI CAMPI: IMMAGINATE DI DOVER INTERVENIRE PER UN
ERRORE SULLE FONDAMENTA DI UN GRATTACIELO, QUANDO
NE SONO STATI REALIZZATI GIÀ TRE PIANI!
PANORAMICA
• NEL SOFTWARE, L’ARCHITETTURA CONSISTE NEL
SEPARARE SISTEMI GRANDI IN SISTEMI PIÙ PICCOLI E
FOCALIZZATI
• PENSARE UNA BUONA ARCHITETTURA NON È FACILE
• UN SOFTWARE DEVE AVERE UNA BUONA ARCHITETTURA
PER ESSERE MANUTENIBILE
• ERRORI NELL’ARCHITETTURA SONO QUASI IMPOSSIBILI DA
RISOLVERE, UNA VOLTA INIZIATA LA PROGRAMMAZIONE
VANTAGGI
• UNA BUONA ARCHITETTURA PERMETTE
• UNA MIGLIORE ALLOCAZIONE DEI TASK
• DI VELOCIZZARE LO SVILUPPO
• DECIDERE SE COMPRARE O SVILUPPARE
ESEMPIO: SITO WEB
1. TUTTO IL CODICE IN UNA PAGINA (1.000 RIGHE)
2. CODICE DIVISO IN
• FRONT END (500 RIGHE)
• BACK END (500 RIGHE)
3. CODICE DIVISO IN
• FRONT END
• MAIN (400 RIGHE)
• LOGIN (90 RIGHE)
• FORM (10 RIGHE)
• BACK END (500 RIGHE)
ESEMPIO: GAME
• GRAFICA
• DATI UTENTE
• LOGICA
• PUNTEGGI
• …
Background game
Foreground game
Menus
Graphics controller
Input controller
Progression controller
Score controller
Graphics logic
Game control logic
Score logic
Database logic
Personal server
Cloud server
ARCHITECTURAL PATTERNS
• UN PATTERN ARCHITETTURALE È UNA SOLUZIONE GENERALE E RIUTILIZZABILE A UN
PROBLEMA RICORRENTE NELL’ARCHITETTURA DEL SOFTWARE IN UN DETERMINATO
CONTESTO
LAYERED PATTERN
• QUESTO MODELLO PUÒ ESSERE UTILIZZATO PER
STRUTTURARE PROGRAMMI CHE POSSONO ESSERE
SCOMPOSTI IN GRUPPI DI SOTTO-ATTIVITÀ
• CIASCUNA DI QUESTE RAPPRESENTA UN
PARTICOLARE LIVELLO DI ASTRAZIONE
• OGNI LIVELLO FORNISCE SERVIZI AL LIVELLO AD
ESSO SUPERIORE
LAYERED PATTERN
• LAYER PIÙ COMUNEMENTE UTILIZZATI
• LIVELLO DI PRESENTAZIONE (NOTO ANCHE COME LIVELLO UI)
• LIVELLO APPLICAZIONE (NOTO ANCHE COME LIVELLO DI SERVIZIO)
• LIVELLO DI LOGICA AZIENDALE (NOTO ANCHE COME LIVELLO DI DOMINIO)
• LIVELLO DI ACCESSO AI DATI (NOTO ANCHE COME LIVELLO DI PERSISTENZA)
UTILIZZO
Applicazioni
desktop
generiche
Applicazioni
web per il
commercio
elettronico
CLIENT-SERVER PATTERN
• QUESTO MODELLO È COMPOSTO DA DUE PARTI
• UN SERVER
• UNO O PIÙ CLIENT
• IL COMPONENTE SERVER FORNIRÀ SERVIZI A PIÙ
COMPONENTI CLIENT
• I CLIENT RICHIEDONO SERVIZI DAL SERVER E IL SERVER
FORNISCE SERVIZI PERTINENTI A TALI CLIENT
• IL SERVER CONTINUA AD ASCOLTARE LE RICHIESTE DEL
CLIENT
• APPLICAZIONI ONLINE COME E-MAIL, CONDIVISIONE DI
DOCUMENTI E OPERAZIONI BANCARIE.
MASTER-SLAVE PATTERN
• QUESTO MODELLO È COMPOSTO DA DUE PARTI
• MASTER
• SLAVES
• IL COMPONENTE MASTER DISTRIBUISCE IL LAVORO
TRA COMPONENTI SLAVE IDENTICI E CALCOLA UN
RISULTATO FINALE DAI RISULTATI RESTITUITI DAGLI
SLAVE
UTILIZZO
Nella replica di
database, il database
master è considerato
l'origine autorevole e i
database slave sono
sincronizzati con esso
Periferiche collegate a
un bus in un sistema
informatico (unità master
e slave)
MODEL-VIEW-CONTROLLER PATTERN
• DIVIDE UN'APPLICAZIONE IN 3 PARTI
• MODEL: CONTIENE LE FUNZIONALITÀ E I DATI PRINCIPALI
• VIEW: MOSTRA LE INFORMAZIONI ALL'UTENTE (È
POSSIBILE DEFINIRE PIÙ DI UNA VISTA)
• CONTROLLER: GESTISCE L'INPUT DELL'UTENTE
• VIENE FATTO PER SEPARARE LE RAPPRESENTAZIONI
INTERNE DELLE INFORMAZIONI DAI MODI IN CUI LE
INFORMAZIONI VENGONO PRESENTATE E ACCETTATE
DALL'UTENTE. DISACCOPPIA I COMPONENTI E
CONSENTE UN EFFICIENTE RIUTILIZZO DEL CODICE
UTILIZZO
Sviluppo Apple
Architettura per
applicazioni
World Wide
Web
Framework Web
come Django e
Rails
PIPE-FILTER
PATTERN
• QUESTO MODELLO PUÒ ESSERE UTILIZZATO PER
STRUTTURARE SISTEMI CHE PRODUCONO ED ELABORANO
UN FLUSSO DI DATI
• OGNI FASE DI ELABORAZIONE È RACCHIUSA ALL'INTERNO DI
UN COMPONENTE FILTRO
• I DATI DA ELABORARE VENGONO PASSATI ATTRAVERSO PIPE
• QUESTE PIPE POSSONO ESSERE UTILIZZATE PER IL BUFFERING
O PER SCOPI DI SINCRONIZZAZIONE.
UTILIZZO
Compilatori. I filtri
consecutivi eseguono
l'analisi lessicale,
l'analisi, l'analisi
semantica e la
generazione del codice
Flussi di lavoro in
bioinformatica
BROKER PATTERN
• SISTEMI DISTRIBUITI CON COMPONENTI DISACCOPPIATI
• QUESTI COMPONENTI POSSONO INTERAGIRE TRA
LORO MEDIANTE CHIAMATE DI SERVIZI REMOTI
• UN COMPONENTE BROKER È RESPONSABILE DEL
COORDINAMENTO DELLA COMUNICAZIONE TRA I
COMPONENTI
• I SERVER PUBBLICANO LE LORO CAPACITÀ (SERVIZI E
CARATTERISTICHE) A UN BROKER
• I CLIENT RICHIEDONO UN SERVIZIO DAL BROKER E IL
BROKER REINDIRIZZA QUINDI IL CLIENT A UN SERVIZIO
ADATTO DAL SUO REGISTRO.
UTILIZZO
Software
message
broker come
Apache
ActiveMQ
Apache
Kafka RabbitMQ JBoss
Messaging
PEER-TO-PEER PATTERN
• I SINGOLI COMPONENTI SONO NOTI COME PEER
• I PEER POSSONO FUNZIONARE SIA COME CLIENT,
RICHIEDENDO SERVIZI DA ALTRI PEER, SIA COME
SERVER, FORNENDO SERVIZI AD ALTRI PEER
• UN PEER PUÒ AGIRE COME CLIENT O COME SERVER
O COME ENTRAMBI E PUÒ CAMBIARE IL PROPRIO
RUOLO IN MODO DINAMICO NEL TEMPO
UTILIZZO
Reti di
condivisione file
come Gnutella e
G2
Protocolli
multimediali
come P2PTV e
PDTP
Prodotti basati
su criptovaluta
come Bitcoin e
Blockchain
EVENT-BUS PATTERN
• QUESTO MODELLO SI OCCUPA PRINCIPALMENTE DI EVENTI E HA 4
COMPONENTI PRINCIPALI
• SORGENTE DI EVENTI
• LISTENER DI EVENTI
• CANALE
• BUS DI EVENTI
• LE ORIGINI PUBBLICANO MESSAGGI SU CANALI PARTICOLARI SU UN
BUS DI EVENTI
• GLI ASCOLTATORI SI ISCRIVONO A DETERMINATI CANALI E RICEVONO
UNA NOTIFICA DEI MESSAGGI PUBBLICATI SUI CANALI A CUI SONO
ISCRITTI
UTILIZZO
Sviluppo
Android
Servizi di
notifica
BLACKBOARD PATTERN
• UTILE PER PROBLEMI PER I QUALI NON SONO NOTE STRATEGIE DI SOLUZIONE
DETERMINISTICHE. IL MODELLO DELLA LAVAGNA È COMPOSTO DA 3 COMPONENTI
PRINCIPALI
• LAVAGNA: UNA MEMORIA GLOBALE STRUTTURATA CONTENENTE OGGETTI
DALLO SPAZIO DELLE SOLUZIONI
• FONTE DI CONOSCENZA: MODULI SPECIALIZZATI CON LA PROPRIA
RAPPRESENTAZIONE
• COMPONENTE DI CONTROLLO: SELEZIONA, CONFIGURA ED ESEGUE I MODULI
• TUTTI I COMPONENTI HANNO ACCESSO ALLA LAVAGNA
• I COMPONENTI POSSONO PRODURRE NUOVI OGGETTI DATI CHE VENGONO
AGGIUNTI ALLA LAVAGNA
• I COMPONENTI CERCANO PARTICOLARI TIPI DI DATI SULLA LAVAGNA E POSSONO
TROVARLI CONFRONTANDO IL MODELLO CON LA FONTE DI CONOSCENZA ESISTENTE.
UTILIZZO
Riconoscimento
vocale
Identificazione
e tracciamento
di veicoli
Identificazione
di strutture
proteiche
Interpretazione
di segnali
sonar
INTERPRETER PATTERN
• PER PROGETTARE UN COMPONENTE CHE
INTERPRETA I PROGRAMMI SCRITTI IN UN
LINGUAGGIO DEDICATO
• SPECIFICA PRINCIPALMENTE COME VALUTARE RIGHE
DI PROGRAMMI, NOTE COME FRASI O ESPRESSIONI
SCRITTE IN UNA PARTICOLARE LINGUA
• L'IDEA DI BASE È DI AVERE UNA CLASSE PER OGNI
SIMBOLO DELLA LINGUA
UTILIZZO
Linguaggi di
query del
database come
SQL
Linguaggi usati
per descrivere i
protocolli di
comunicazione
ATTIVITÀ IN
CLASSE
PROPORRE UN’ARCHITETTURA
1. PER OGNI PROGETTO DEFINITO PRIMA, PROPORRE UN’ARCHITETTURA, SFRUTTANDO ANCHE GLI
ARCHITECTURAL PATTERNS ILLUSTRATI

Waterfall Software Development Life Cycle

  • 1.
  • 2.
    ARCHITETTURA • È ILLIVELLO PIÙ ALTO DELLA PROGETTAZIONE • GLI ARCHITETTI SONO IL COLLEGAMENTO TRA IDEA E REALTÀ • L’ARCHITETTURA NON PUÒ ESSERE (RAGIONEVOLMENTE) RIPARATA, UNA VOLTA IMPLEMENTATA • NEL SOFTWARE: UNA ARCHITETTURA SBAGLIATA NON PUÒ ESSERE CORRETTA CON UNA BUONA PROGRAMMAZIONE • IN ALTRI CAMPI: IMMAGINATE DI DOVER INTERVENIRE PER UN ERRORE SULLE FONDAMENTA DI UN GRATTACIELO, QUANDO NE SONO STATI REALIZZATI GIÀ TRE PIANI!
  • 3.
    PANORAMICA • NEL SOFTWARE,L’ARCHITETTURA CONSISTE NEL SEPARARE SISTEMI GRANDI IN SISTEMI PIÙ PICCOLI E FOCALIZZATI • PENSARE UNA BUONA ARCHITETTURA NON È FACILE • UN SOFTWARE DEVE AVERE UNA BUONA ARCHITETTURA PER ESSERE MANUTENIBILE • ERRORI NELL’ARCHITETTURA SONO QUASI IMPOSSIBILI DA RISOLVERE, UNA VOLTA INIZIATA LA PROGRAMMAZIONE
  • 4.
    VANTAGGI • UNA BUONAARCHITETTURA PERMETTE • UNA MIGLIORE ALLOCAZIONE DEI TASK • DI VELOCIZZARE LO SVILUPPO • DECIDERE SE COMPRARE O SVILUPPARE
  • 5.
    ESEMPIO: SITO WEB 1.TUTTO IL CODICE IN UNA PAGINA (1.000 RIGHE) 2. CODICE DIVISO IN • FRONT END (500 RIGHE) • BACK END (500 RIGHE) 3. CODICE DIVISO IN • FRONT END • MAIN (400 RIGHE) • LOGIN (90 RIGHE) • FORM (10 RIGHE) • BACK END (500 RIGHE)
  • 6.
    ESEMPIO: GAME • GRAFICA •DATI UTENTE • LOGICA • PUNTEGGI • …
  • 7.
    Background game Foreground game Menus Graphicscontroller Input controller Progression controller Score controller Graphics logic Game control logic Score logic Database logic Personal server Cloud server
  • 9.
    ARCHITECTURAL PATTERNS • UNPATTERN ARCHITETTURALE È UNA SOLUZIONE GENERALE E RIUTILIZZABILE A UN PROBLEMA RICORRENTE NELL’ARCHITETTURA DEL SOFTWARE IN UN DETERMINATO CONTESTO
  • 10.
    LAYERED PATTERN • QUESTOMODELLO PUÒ ESSERE UTILIZZATO PER STRUTTURARE PROGRAMMI CHE POSSONO ESSERE SCOMPOSTI IN GRUPPI DI SOTTO-ATTIVITÀ • CIASCUNA DI QUESTE RAPPRESENTA UN PARTICOLARE LIVELLO DI ASTRAZIONE • OGNI LIVELLO FORNISCE SERVIZI AL LIVELLO AD ESSO SUPERIORE
  • 11.
    LAYERED PATTERN • LAYERPIÙ COMUNEMENTE UTILIZZATI • LIVELLO DI PRESENTAZIONE (NOTO ANCHE COME LIVELLO UI) • LIVELLO APPLICAZIONE (NOTO ANCHE COME LIVELLO DI SERVIZIO) • LIVELLO DI LOGICA AZIENDALE (NOTO ANCHE COME LIVELLO DI DOMINIO) • LIVELLO DI ACCESSO AI DATI (NOTO ANCHE COME LIVELLO DI PERSISTENZA)
  • 12.
  • 13.
    CLIENT-SERVER PATTERN • QUESTOMODELLO È COMPOSTO DA DUE PARTI • UN SERVER • UNO O PIÙ CLIENT • IL COMPONENTE SERVER FORNIRÀ SERVIZI A PIÙ COMPONENTI CLIENT • I CLIENT RICHIEDONO SERVIZI DAL SERVER E IL SERVER FORNISCE SERVIZI PERTINENTI A TALI CLIENT • IL SERVER CONTINUA AD ASCOLTARE LE RICHIESTE DEL CLIENT • APPLICAZIONI ONLINE COME E-MAIL, CONDIVISIONE DI DOCUMENTI E OPERAZIONI BANCARIE.
  • 14.
    MASTER-SLAVE PATTERN • QUESTOMODELLO È COMPOSTO DA DUE PARTI • MASTER • SLAVES • IL COMPONENTE MASTER DISTRIBUISCE IL LAVORO TRA COMPONENTI SLAVE IDENTICI E CALCOLA UN RISULTATO FINALE DAI RISULTATI RESTITUITI DAGLI SLAVE
  • 15.
    UTILIZZO Nella replica di database,il database master è considerato l'origine autorevole e i database slave sono sincronizzati con esso Periferiche collegate a un bus in un sistema informatico (unità master e slave)
  • 16.
    MODEL-VIEW-CONTROLLER PATTERN • DIVIDEUN'APPLICAZIONE IN 3 PARTI • MODEL: CONTIENE LE FUNZIONALITÀ E I DATI PRINCIPALI • VIEW: MOSTRA LE INFORMAZIONI ALL'UTENTE (È POSSIBILE DEFINIRE PIÙ DI UNA VISTA) • CONTROLLER: GESTISCE L'INPUT DELL'UTENTE • VIENE FATTO PER SEPARARE LE RAPPRESENTAZIONI INTERNE DELLE INFORMAZIONI DAI MODI IN CUI LE INFORMAZIONI VENGONO PRESENTATE E ACCETTATE DALL'UTENTE. DISACCOPPIA I COMPONENTI E CONSENTE UN EFFICIENTE RIUTILIZZO DEL CODICE
  • 17.
    UTILIZZO Sviluppo Apple Architettura per applicazioni WorldWide Web Framework Web come Django e Rails
  • 18.
    PIPE-FILTER PATTERN • QUESTO MODELLOPUÒ ESSERE UTILIZZATO PER STRUTTURARE SISTEMI CHE PRODUCONO ED ELABORANO UN FLUSSO DI DATI • OGNI FASE DI ELABORAZIONE È RACCHIUSA ALL'INTERNO DI UN COMPONENTE FILTRO • I DATI DA ELABORARE VENGONO PASSATI ATTRAVERSO PIPE • QUESTE PIPE POSSONO ESSERE UTILIZZATE PER IL BUFFERING O PER SCOPI DI SINCRONIZZAZIONE.
  • 19.
    UTILIZZO Compilatori. I filtri consecutivieseguono l'analisi lessicale, l'analisi, l'analisi semantica e la generazione del codice Flussi di lavoro in bioinformatica
  • 20.
    BROKER PATTERN • SISTEMIDISTRIBUITI CON COMPONENTI DISACCOPPIATI • QUESTI COMPONENTI POSSONO INTERAGIRE TRA LORO MEDIANTE CHIAMATE DI SERVIZI REMOTI • UN COMPONENTE BROKER È RESPONSABILE DEL COORDINAMENTO DELLA COMUNICAZIONE TRA I COMPONENTI • I SERVER PUBBLICANO LE LORO CAPACITÀ (SERVIZI E CARATTERISTICHE) A UN BROKER • I CLIENT RICHIEDONO UN SERVIZIO DAL BROKER E IL BROKER REINDIRIZZA QUINDI IL CLIENT A UN SERVIZIO ADATTO DAL SUO REGISTRO.
  • 21.
  • 22.
    PEER-TO-PEER PATTERN • ISINGOLI COMPONENTI SONO NOTI COME PEER • I PEER POSSONO FUNZIONARE SIA COME CLIENT, RICHIEDENDO SERVIZI DA ALTRI PEER, SIA COME SERVER, FORNENDO SERVIZI AD ALTRI PEER • UN PEER PUÒ AGIRE COME CLIENT O COME SERVER O COME ENTRAMBI E PUÒ CAMBIARE IL PROPRIO RUOLO IN MODO DINAMICO NEL TEMPO
  • 23.
    UTILIZZO Reti di condivisione file comeGnutella e G2 Protocolli multimediali come P2PTV e PDTP Prodotti basati su criptovaluta come Bitcoin e Blockchain
  • 24.
    EVENT-BUS PATTERN • QUESTOMODELLO SI OCCUPA PRINCIPALMENTE DI EVENTI E HA 4 COMPONENTI PRINCIPALI • SORGENTE DI EVENTI • LISTENER DI EVENTI • CANALE • BUS DI EVENTI • LE ORIGINI PUBBLICANO MESSAGGI SU CANALI PARTICOLARI SU UN BUS DI EVENTI • GLI ASCOLTATORI SI ISCRIVONO A DETERMINATI CANALI E RICEVONO UNA NOTIFICA DEI MESSAGGI PUBBLICATI SUI CANALI A CUI SONO ISCRITTI
  • 25.
  • 26.
    BLACKBOARD PATTERN • UTILEPER PROBLEMI PER I QUALI NON SONO NOTE STRATEGIE DI SOLUZIONE DETERMINISTICHE. IL MODELLO DELLA LAVAGNA È COMPOSTO DA 3 COMPONENTI PRINCIPALI • LAVAGNA: UNA MEMORIA GLOBALE STRUTTURATA CONTENENTE OGGETTI DALLO SPAZIO DELLE SOLUZIONI • FONTE DI CONOSCENZA: MODULI SPECIALIZZATI CON LA PROPRIA RAPPRESENTAZIONE • COMPONENTE DI CONTROLLO: SELEZIONA, CONFIGURA ED ESEGUE I MODULI • TUTTI I COMPONENTI HANNO ACCESSO ALLA LAVAGNA • I COMPONENTI POSSONO PRODURRE NUOVI OGGETTI DATI CHE VENGONO AGGIUNTI ALLA LAVAGNA • I COMPONENTI CERCANO PARTICOLARI TIPI DI DATI SULLA LAVAGNA E POSSONO TROVARLI CONFRONTANDO IL MODELLO CON LA FONTE DI CONOSCENZA ESISTENTE.
  • 27.
  • 28.
    INTERPRETER PATTERN • PERPROGETTARE UN COMPONENTE CHE INTERPRETA I PROGRAMMI SCRITTI IN UN LINGUAGGIO DEDICATO • SPECIFICA PRINCIPALMENTE COME VALUTARE RIGHE DI PROGRAMMI, NOTE COME FRASI O ESPRESSIONI SCRITTE IN UNA PARTICOLARE LINGUA • L'IDEA DI BASE È DI AVERE UNA CLASSE PER OGNI SIMBOLO DELLA LINGUA
  • 29.
    UTILIZZO Linguaggi di query del databasecome SQL Linguaggi usati per descrivere i protocolli di comunicazione
  • 30.
  • 31.
    PROPORRE UN’ARCHITETTURA 1. PEROGNI PROGETTO DEFINITO PRIMA, PROPORRE UN’ARCHITETTURA, SFRUTTANDO ANCHE GLI ARCHITECTURAL PATTERNS ILLUSTRATI