UML e ingegneria del software
Dalla teoria alla pratica

Descrizione libro
Struttura
Scaricare
Comprare
MokaByte

 

Struttura del libro

Capitolo 0 - Presentazione
Nel capitolo di presentazione viene introdotto il libro. In particolare sono presenti la descrizione di una breve genesi dello stesso, l'illustrazione del variegato pubblico dei potenziali fruitori, alcuni consigli per la lettura, l'illustrazione dettagliata della struttura del libro con una breve sintesi dei contenuti dei capitoli, gli immancabili ringraziamenti nonché le scuse dell'autore e le convenzioni grafiche adottate.

Capitolo 1 - UML: che cosa è, che cosa non è
Il primo capitolo si apre con una breve panoramica storica dello Unified Modeling Language e delle motivazioni che hanno spinto i Tres Amigos ad affrontare lo straordinario progetto di un linguaggio di modellazione unificato.
Si prosegue con una descrizione di cosa sia e cosa non sia lo Unified Modeling Language, della relativa architettura e di quali siano i suoi obiettivi.
Successivamente viene affrontato il tema dei più diffusi processi di sviluppo del software e, in particolare, "The Unified Software Development Process", "Use case Driven Object Modeling with UML", l'eXtreme Programming (XP) ed l'"Agile Modeling" (AM).
Il capitolo termina con l'immancabile paragrafo dedicato ai tool disponibili in commercio, corredati da una concisa riflessione, quanto più oggettiva possibile, dei relativi pregi e difetti.
Obiettivo del primo capitolo è presentare lo UML inquadrandolo nel relativo contesto, chiarendo fin da subito il rapporto con le altre tecniche/metodologie che lo circondano.

Capitolo 2 - UML: struttura, organizzazione, utilizzo
Il secondo capitolo è interamente dedicato a una panoramica dello UML: vengono presentate le viste, i diagrammi e i meccanismi di estensione utilizzati dallo UML per aumentarne semantica e sintassi. Sono inoltre introdotti i profili, ossia collezioni standard di meccanismi di estensione predefiniti da utilizzarsi durante la modellazione di sistemi che utilizzano architetture standard quali ad esempio CORBA e EJB o per compiti specifici come la modellazione dell'area business.
Attraverso il presente capitolo, l'autore si pone l'obiettivo di fornire un'idea, quanto più esauriente possibile, di cosa sia il linguaggio senza aver la pretesa che il lettore comprenda fin da subito tutti i concetti introdotti, per i quali sono presenti appositi capitoli di dettaglio. Importante è iniziare a comprendere che lo UML fornisce tutta una serie di "utensili", ciascuno dei quali risulta appropriato a scopi ben precisi e del tutto inadeguato ad altri: una vera e propria cassetta degli attrezzi.
La descrizione dei vari manufatti che si prestano a essere realizzati per mezzo dello UML avviene nel contesto di un generico processo di riferimento.

Capitolo 3 - Introduzione agli Use Case
Nel terzo capitolo, dopo una breve disquisizione su cosa si intenda con i termini "requisiti utente", si procede con l'introduzione della use case view (vista dei casi d'uso). Si entra finalmente nel vivo dello UML!
In questo capitolo si focalizza l'attenzione sulla teoria degli use case e sul relativo impiego rispettando rigorosamente le direttive dello UML. Nel capitolo seguente invece, ci si discosterà sensibilmente dalle direttive standard, al fine di illustrare un utilizzo avanzato e maggiormente operativo dei casi d'uso.
Della vista dei casi d'uso sono descritte le due componenti: statica e dinamica. Per ciò che riguarda la proiezione statica, vengono descritti in dettaglio i diagrammi dei casi d'uso ed i relativi elementi.
Per ciò che concerne la proiezione dinamica (ossia gli scenari), ne viene illustrata la versione standard basata sui flussi degli eventi e sui diagrammi dello UML atti a modellare comportamenti dinamici (diagrammi di sequenza, collaborazione, attività, ecc.).

Capitolo 4 - Modellazione avanzata degli Use Case
Nel quarto capitolo viene illustrata una serie di tecniche di utilizzo decisamente operativo anche se, a volte, sensibilmente distante dalle direttive standard, per la cattura e documentazione dei requisiti utente. Modellare sistemi reali mette in luce tutta una serie di problemi e lacune raramente trattati nei libri e nelle specifiche ufficiali dello UML.
Si tratta di un capitolo di stampo decisamente pratico corredato da un notevole numero di esempi di casi d'uso pseudoreali. Sebbene non sia indispensabile esaminare attentamente tutti gli esempi, ognuno di essi è stato selezionato in quanto fornisce una serie di spunti molto interessanti.

Capitolo 5 - Completamento dell'analisi dei requisiti
Il quinto capitolo è imperniato sue due tematiche portanti: la presentazione di una tecnica dimostratasi particolarmente valida nell'arduo compito dell'analisi dei requisiti utente e l'illustrazione dei manufatti (artifact) che completano il modello dell'analisi dei requisiti.
Il problema che tenta di risolvere la tecnica di analisi dei requisiti esposta è trovare una piattaforma di dialogo comune e costruttiva tra personale tecnico e clienti, in altre parole trovare un efficace raccordo tra i due diversi linguaggi tecnici: quello dell'area business e quello informatico. A tal fine viene sfruttato il formalismo degli activity diagram (diagramma delle attività).
Il modello dei casi d'uso, pur essendo un artifact molto importante, da solo non è assolutamente in grado di fornire sufficienti informazioni per il pieno svolgimento delle restanti fasi del ciclo di vita del sistema. La completa realizzazione della vista dei requisiti del sistema prevede la produzione di ulteriori manufatti complementari. In particolare, nel quinto capitolo sono presentati artifact di notevole importanza, come il dettaglio delle interfacce, i test case, il documento dei requisiti non funzionali e le famosissime business rules.

Capitolo 6
Il sesto capitolo è dedicato alla presentazione dei principi fondamentali dell'Object Oriented. L'obiettivo è introdurre le nozioni utilizzate nei capitoli successivi, senza aver la presunzione di trattare in maniera approfondita un argomento così importante e vasto.
Il capitolo non poteva che iniziare con la definizione formale di oggetto e classe e delle relative relazioni, prosegue poi con l'illustrazione degli elementi essenziali di cui è composto un oggetto (identità, stato e interfaccia) e vengono presentate le tre leggi fondamentali dell'Object Oriented (ereditarietà, incapsulamento e polimorfismo). In questa sede si coglie l'occasione per riportare alcuni errori tipicamente commessi da tecnici alle prime armi. Questa prima sezione termina con l'introduzione di due principi fondamentale del disegno dei sistemi, note con i nomi di massima coesione e minimo accoppiamento. La parte conclusiva del capitolo è dedicata al formalismo dell'Abstract Data Type (tipo di dato astratto) e al Design By Contract (disegno per contratto).

Capitolo 7
Il settimo capitolo è focalizzato sull'illustrazione del formalismo dei diagrammi delle classi, probabilmente uno dei più noti e affascinanti tra quelli definiti dallo UML.
Nei processi di sviluppo del software, questo formalismo si presta a rappresentare formalmente molteplici artifact presenti in diversi stadi del processo. Nelle primissime fasi lo si adotta per rappresentare i modelli del dominio e di business, nello stadio di analisi è utilizzato per dar luogo all'omonimo modello (rappresentazione formale dei requisiti funzionali sanciti nel modello dei casi d'uso), nella fase di disegno è impiegato per progettare e documentare l'organizzazione in codice del sistema e così via.
Dopo aver illustrato come rappresentare in UML i concetti basilari di classi, interfacce, ecc., si passa all'illustrazione delle diverse tipologie di relazioni.
La modellazione di un sistema non richiede esclusivamente l'identificazione delle classi di cui è composto, ma anche dei legami che le interconnettono. Si prosegue pertanto passando in rassegna le relazioni con cui è possibile collegare le classi tra loro.
La sezione successiva del capitolo è dedicata all'illustrazione del formalismo dei diagrammi degli oggetti (object diagram). Questi rappresentano una variante dei diagrammi delle classi, o meglio ne sono istanze e ne condividono gran parte della notazione. Rappresentano la famosa istantanea del sistema eseguita in un preciso istante di tempo di un'ipotetica esecuzione.

Capitolo 8
Il capitolo ottavo è dedicato a illustrare l'utilizzo del formalismo dei diagrammi delle classi nel contesto di un processo di sviluppo del software. In particolare si presentano le diverse versioni di modelli a "oggetti", le relative proprietà, un nutrito insieme di esempi e consigli, eventuali "tranelli" in cui è possibile cadere, il rapporto di ciascuno di essi con i restanti, ecc. Si tratta di uno di quei capitoli che dovrebbe fornire le risposte esaurienti agli interrogativi più ricorrenti richiesti all'autore del libro.
Il primo modello ad oggetti presentato è quello relativo al dominio del problema (Domain Object Model). In particolare si presenta un processo pratico atto a semplificare l'individuazione delle classi appartenenti al modello e a inserirle in un contesto strutturato. Del processo viene fornito un esempio di applicazione, nel quale sono evidenziati errori ricorrenti e vengono dati utili consigli.
Poiché è sempre meno frequente realizzare sistemi partendo dal nulla, mentre è prassi reingegnerizzare sistemi esistenti, si presenta una tecnica atta a realizzare prime versioni del modello a oggetti del dominio partendo dall'analisi di una base di dati del sistema.
Il modello ad oggetti presentato successivamente è quello relativo all'area business (Business Object Model). Si tratta di una versione molto simile a quello del dominio, in cui compaiono elementi aggiuntivi (work unit, unità di lavoro e worker, lavoratori). Pertanto si evidenziano le similitudini e differenze con quello del dominio e si dà quindi una serie di consigli relativi a quale usare, quando, e così via. Teoricamente in un processo di sviluppo andrebbero realizzati entrambi, nella pratica, per via di una serie di problemi relativi al tempo, budget, personale, ecc. è normale trascurarne uno dei due per concentrasi sull'altro.
Il passo successivo consiste nel presentare il modello a oggetti di analisi (analysis model). Anche per questo modello viene presentata una tecnica utile per la relativa realizzazione, una serie di consigli, nonché i vari tranelli in cui si può correre il rischio di imbattersi. Nei progetti reali non è sempre possibile realizzare il modello di analisi, per via dei soliti problemi (mancanza di tempo, personale, ecc.), pertanto si fornisce una serie di consigli su come ridurre il rischio generato dalla mancata realizzazione, quando sia possibile trascurarlo, quando invece è opportuno realizzarlo, ecc. Prima di proseguire nella presentazione del modello successivo, viene presentato un formalismo di importanza storica per il processo di realizzazione dei vari modelli a oggetti che tuttora conserva delle aree di applicazioni, ossia il metodo delle CRC cards.
L'ultimo modello a oggetti presentato, probabilmente il più noto, è quello di disegno (Design Object Model). Di questo dovrebbero esistere due versioni: quello di specifica e quello di implementazione. Il primo dovrebbe essere realizzato prima dell'inizio della codifica, mentre il secondo è il risultato dell'evoluzione che il disegno subisce durante l'implementazione (variazioni in corso d'opera). Come al solito si riportano immancabili esempi, consigli su come realizzarlo ecc. Il capitolo si conclude cercando di rispondere alla fatidica domanda: "Quando un modello a oggetti di disegno si può considerare ben costruito?".

capitolo 0

capitolo 1

capitolo 2

capitolo 3

capitolo 4

capitolo 5

capitolo 6

capitolo 7

capitolo 8

MokaByteŽ č un marchio registrato da MokaByte s.r.l.
JavaŽ, JiniŽ e tutti i nomi derivati sono marchi registrati da Sun Microsystems.
Tutti i diritti riservati. E' vietata la riproduzione anche parziale.
Per comunicazioni inviare una mail a info@mokabyte.it