2. 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!
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 BUONA ARCHITETTURA 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)
7. 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
8.
9. ARCHITECTURAL PATTERNS
• UN PATTERN ARCHITETTURALE È UNA SOLUZIONE GENERALE E RIUTILIZZABILE A UN
PROBLEMA RICORRENTE NELL’ARCHITETTURA DEL SOFTWARE IN UN DETERMINATO
CONTESTO
10. 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
11. 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)
13. 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.
14. 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
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
• 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
18. 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.
20. 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.
22. 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
24. 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
26. 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.
28. 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