Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Prefazione
Premessa
Ringraziamenti
L'autore
Parte I - Introduzione
Capitolo 1 - Che cosa si intende per struttura e architettura?
L’obiettivo?
Un caso di studio
Cronaca di un disastro annunciato
Il punto di vista della dirigenza
Che cosa è andato storto?
Conclusioni
Capitolo 2 - Due diversi oggetti di valore
Comportamento
Architettura
Che cosa conta di più
La matrice di Eisenhower
Difendete l’architettura
Parte II - Partiamo dalle basi: i paradigmi di programmazione
Capitolo 3 - Panoramica sui paradigmi
La programmazione strutturata
La programmazione a oggetti
La programmazione funzionale
Spunti di riflessione
Conclusioni
Capitolo 4 - La programmazione strutturata
La dimostrazione
Un proclama infuocato
La decomposizione funzionale
Nessuna dimostrazione formale
Il soccorso della scienza
I test
Conclusioni
Capitolo 5 - La programmazione a oggetti
L’incapsulazione
L’ereditarietà
Il polimorfismo
La potenza del polimorfismo
L’inversione della dipendenza
Conclusioni
Capitolo 6 - La programmazione funzionale
Quadrati di interi
Immutabilità e architettura
La segregazione della mutabilità
L’origine degli eventi
Conclusioni
Parte III - Principi di progettazione
Capitolo 7 - Il principio SRP (Single Responsibility Principle)
Sintomo 1: duplicazione accidentale
Sintomo 2: fusioni
Soluzioni
Conclusioni
Capitolo 8 - Il principio OCP (Open-Closed Principle)
Un esperimento
Controllo della direzione
Celare le informazioni
Conclusioni
Capitolo 9 - Il principio LSP (Liskov Substitution Principle)
Guidare l’uso dell’ereditarietà
Il problema del quadrato e del rettangolo
Il principio LSP e l’architettura
Un esempio di violazione del principio LSP
Conclusioni
Capitolo 10 - Il principio ISP (Interface Segregation Principle)
Il principio ISP e il linguaggio
Il principio ISP e l’architettura
Conclusioni
Capitolo 11 - Il principio DIP (Dependency Inversion Principle)
Astrazioni stabili
Factory
Componenti concreti
Conclusioni
Parte IV - Principi relativi ai componenti
Capitolo 12 - I componenti
Una breve storia dei componenti
La rilocabilità
I linker
Conclusioni
Capitolo 13 - Coesione dei componenti
Il principio REP (Reuse/Release Equivalence Principle)
Il principio CCP (Common Closure Principle)
Analogie con il principio SRP
Il principio CRP (Common Reuse Principle)
Relazioni con il principio ISP
Il diagramma di tensione per la coesione dei componenti
Conclusioni
Capitolo 14 - Accoppiamento dei componenti
Il principio ADP (Acyclic Dependencies Principle)
La build settimanale
Eliminare i cicli nelle dipendenze
L’effetto di un ciclo nel grafico delle dipendenze fra i componenti
Spezzare il ciclo
Le variazioni
Progettazione top-down
Il principio SDP (Stable Dependencies Principle)
Stabilità
Metriche sulla stabilità
Non tutti i componenti dovrebbero essere stabili
Componenti astratti
Il principio SAP (Stable Abstractions Principle)
Dove applichiamo le politiche di alto livello?
Introduzione al principio SAP
Misurare l’astrazione
La sequenza principale
Zona di dolore (zone of pain)
Zona di inutilità (zone of uselessness)
Evitare le zone di esclusione
Distanza dalla sequenza principale
Conclusioni
Parte V - Architettura
Capitolo 15 - Che cos’è l’architettura?
Sviluppo
Deployment
Operatività
Manutenzione
Lasciare aperte le opzioni
Indipendenza dai device
Posta indesiderata
Indirizzamento fisico
Conclusioni
Capitolo 16 - Indipendenza
Casi d’uso
Operatività
Sviluppo
Deployment
Lasciare aperte le opzioni
Disaccoppiamento dei livelli
Disaccoppiamento dei casi d’uso
Modalità di disaccoppiamento
Sviluppabilità indipendente
Deployment indipendente
Duplicazione
Modalità di disaccoppiamento (di nuovo)
Conclusioni
Capitolo 17 - Delimitazioni: tracciare una linea
Un paio di storie tristi
FitNesse
Quali linee tracciare e quando tracciarle?
E cosa dire dell’input e dell’output?
Architettura a plugin
Il concetto di “plugin”
Conclusioni
Capitolo 18 - Anatomia di una delimitazione
Attraversamento della delimitazione
Il tanto temuto monolito
Componenti di deployment
Thread
Processi locali
Servizi
Conclusioni
Capitolo 19 - Politiche e livelli
Livello
Conclusioni
Capitolo 20 - Regole operative
Entità
Casi d’uso
Modelli a richiesta e risposta
Conclusioni
Capitolo 21 - Architettura “da urlo”
Il tema di un’architettura
Lo scopo di un’architettura
E il Web?
I framework sono strumenti, non stili di vita
Architetture e test
Conclusioni
Capitolo 22 - Architettura clean
La regola della dipendenza
Entità
Casi d’uso
Adattatori di interfacciamento
Framework e driver
Solo quattro cerchi?
Attraversamento delle delimitazioni
Quali dati attraversano le delimitazioni
Uno scenario tipico
Conclusioni
Capitolo 23 - Presenter e Humble Objects
Lo schema Humble Objects
Presenter e View
Collaudo e architettura
I gateway per il database
Data Mapper
Service Listener
Conclusioni
Capitolo 24 - Delimitazioni parziali
Saltare l’ultimo passo
Delimitazioni monodimensionali
Facade
Conclusioni
Capitolo 25 - Livelli e delimitazioni
Hunt the Wumpus
Architettura clean?
Attraversare i flussi
Suddividere i flussi
Conclusioni
Capitolo 26 - Componente Main
Il massimo livello di dettaglio
Conclusioni
Capitolo 27 - Servizi: grandi e piccoli
Architettura orientata ai servizi?
Vantaggi dei servizi?
L’illusione nel disaccoppiamento
L’illusione dello sviluppo e del deployment indipendenti
Il problema dei gattini
Il soccorso degli oggetti
Servizi a componenti
Ambiti trasversali
Conclusioni
Capitolo 28 - Delimitazione di test
I test come componenti del sistema
Progettare per la collaudabilità
L’API di test
Accoppiamento strutturale
Sicurezza
Conclusioni
Capitolo 29 - Architettura clean embedded
Il test app-titudinale
Il collo di bottiglia della dipendenza dall’hardware
Un’architettura embedded pulita è anche collaudabile
I livelli
L’hardware è un dettaglio
Non rivelate i dettagli hardware all’utilizzatore del livello HAL
Il processore è un dettaglio
Il sistema operativo è un dettaglio
Programmare per l’interfacciamento e la sostituibilità
Direttive DRY per la compilazione condizionale
Conclusioni
Parte VI - Dettagli
Capitolo 30 - Il database è un dettaglio
Database relazionali
Perché i database sono così diffusi?
E se i dischi non esistessero?
Dettagli
E le prestazioni?
Un aneddoto
Conclusioni
Capitolo 31 - Il Web è un dettaglio
Un pendolo senza fine
La morale
Conclusioni
Capitolo 32 - I framework sono un dettaglio
Gli autori di framework
Un matrimonio su basi non paritarie
I rischi
La soluzione
E ora vi dichiaro...
Conclusioni
Capitolo 33 - Caso di studio: vendita di video
Il prodotto
Analisi dei casi d’uso
Architettura a componenti
Gestione delle dipendenze
Conclusioni
Capitolo 34 - Manca ancora qualcosa…
Suddivisione a livelli
Suddivisione a funzionalità
Porte e adattatori
Suddivisione a componenti
Il diavolo si nasconde nei dettagli implementativi
Organizzazione vs incapsulazione
Altre modalità di disaccoppiamento
Conclusioni... e manca ancora un suggerimento
Parte VII - Appendice
Appendice A - Archeologia delle architetture
Un grosso sistema di contabilità
Taglio laser
Monitoraggio degli stampi per alluminio
4-TEL
Service Area Computer
La tecnica di dispatch
L’architettura
La grande riprogettazione cosmica
Intanto, in Europa…
Conclusioni sul SAC
Il linguaggio C
Il C
Il BOSS
pCCU
La trappola dello scheduling
DLU/DRU
L’architettura
VRS
Il nome
L’architettura
Conclusioni sul VRS
Electronic Receptionist
Dismissione dell’ER
Craft Dispatch System
Comunicazioni in chiaro
La configurazione
Uncle Bob
La telefonata
ROSE
Le discussioni continuano
... con qualsiasi altro nome
Esami per aspiranti architetti
Conclusioni
Postfazione
← Prev
Back
Next →
← Prev
Back
Next →