Presentazione/prefazione - McGraw

Transcript

Presentazione/prefazione - McGraw
00Prefazione Seconda Edizione
19-07-2006
15:23
Pagina XV
Prefazione
alla seconda edizione italiana
Nel vasto mare dei testi di Ingegneria del software la navigazione è resa difficile
dalla rapida evoluzione della disciplina, dall’ampiezza dei temi trattati, dai gusti
(spesso stravaganti) degli autori e da una tendenza a ripetere e riprendere vecchi
schemi. In questa “confusione” sta affermandosi una visione condivisa da molti: i
testi generalisti servono per dare un’idea complessiva dell’Ingegneria del software,
i testi specialisti approfondiscono un sottoinsieme delle attività del processo di sviluppo. Questa visione si riflette nelle scelte curriculari, in cui si tende ad avere un
corso di Ingegneria del software e tanti corsi più mirati (analisi, progettazione, test,
gestione e così via).
La seconda edizione del testo di Arlow e Neustadt appartiene alla categoria dei testi specialistici in quanto affronta i problemi relativi all’analisi e alla progettazione
dei sistemi software, utilizzando UML 2 (Unified Modeling Language) come linguaggio di modellazione e UP (Unified Process) come processo di sviluppo. La revisione
del testo si è resa necessaria per l’evoluzione di UML, evoluzione fortemente voluta
e promossa dall’OMG. Non è invece cambiata l’impostazione dei capitoli rispetto alla struttura di UP.
Lo studio di UML rappresenta per molti un percorso a ostacoli: alcuni sono facili da superare (ad esempio, il concetto di classe e di caso d’uso), altri richiedono un
pò di concentrazione (ad esempio, il concetto di attività e di stato), altri sono invece
proprio ostici (ad esempio, il concetto di componente e di dislocazione o deployment).
Inoltre, essendo UML un linguaggio vero e proprio (anche se espresso con una notazione grafica), con una precisa sintassi e una (ahimé, ancora controversa) semantica,
non sempre è chiaro il confine tra comprensione dei concetti linguistici e acquisizione degli aspetti più pragmatici. Il testo di Arlow e Neustadt risolve questa annosa questione presentando UML da una prospettiva concreta, basata su esempi chiari e ben
motivati, spesso confrontando una soluzione ad altre a prima vista equivalenti ma sostanzialmente diverse. Il lettore è aiutato e motivato alla scoperta dei tanti dettagli di
UML, non per puro senso del dovere (conoscere tutto UML richiederebbe un impegno molto maggiore) ma per curiosità e, diciamolo pure, convenienza.
00Prefazione Seconda Edizione
XVI
19-07-2006
15:23
Pagina XVI
Prefazione alla seconda edizione
L’uso di UP è un’altra idea geniale degli autori. Molti conoscono UP in termini generici, pochi l’hanno veramente usato per descrivere il loro processo di sviluppo del
software. Il testo di Arlow e Neustadt usa UP per contestualizzare le attività del processo di sviluppo del software, al cui interno è raccomandabile usare i diagrammi
UML. Spinti dal desiderio di uniformità, gli autori descrivono anche il contenuto dei
capitoli mediante diagrammi di attività, un’idea già ripresa da altri autori. Non si deve sottovalutare il valore di UP e il suo uso nel testo, perché i concetti che stanno dietro ai diagrammi UML sono profondamente radicati nelle attività previste da UP. Senza questa chiave interpretativa, UML sarebbe declassato a semplice linguaggio di modellazione e non allo standard che di fatto si sta affermando sempre più.
Abbiamo già detto che lo studio di UML richiederebbe un impegno molto grande,
incompatibile con i curricula universitari e con le dimensioni che un testo deve avere
per essere agevolmente consultato e portato in borsa. I lettori interessati ai dettagli di
UML che non sono trattati nel testo di Arlow e Neustadt devono armarsi di coraggio
e consultare direttamente lo standard disponibile sul sito dell’OMG. Si tratta di documenti molto corposi, scritti in un linguaggio tecnico, preciso ma spesso molto ostico,
pensato per chi deve realizzare strumenti e ambienti di sviluppo basati su UML. La
curva di apprendimento è molto ripida, ma la consapevolezza di aver capito e di conoscere in maniera profonda e completa UML è qualcosa che premia ampiamente lo
sforzo effettuato.
Vincenzo Ambriola
Università degli Studi di Pisa
Pisa, 30 giugno 2006
00PrefazioneI
19-07-2006
15:23
Pagina XVII
Introduzione
Scopo del libro
Lo scopo di questo libro è studiare il processo di analisi e progettazione orientata agli
oggetti (Object-Oriented, OO) utilizzando il Linguaggio di Modellazione Unificato
(Unified Modeling Language, UML) e il Processo Unificato (Unified Process, UP).
L’UML fornisce una sintassi di modellazione visuale per la modellazione OO mentre l’UP fornisce il framework di processo di ingegneria del software che indica come effettuare l’analisi e la progettazione OO.
C’è molto da dire sull’UP e in questo libro vengono presentati solo quegli aspetti
direttamente pertinenti al lavoro dell’analista/progettista OO. Per ulteriori dettagli su
altri elementi dell’UP si può fare riferimento a [Rumbaugh 1] e ad altri libri sull’UP
citati nella bibliografia.
In questo libro l’UML e le tecniche di progettazione e di analisi associate vengono presentati in modo sufficientemente approfondito da poter applicare in modo efficace la modellazione a un progetto reale. Secondo Stephen J. Mellor [Mellor 1] esistono tre approcci alla modellazione UML.
• L’UML come bozza: questo è un approccio informale all’UML in cui i diagrammi vengono abbozzati per facilitare a visualizzare un sistema software. È un po’
come prendere nota della bozza di un’idea su un tovagliolino di carta. Le bozze
non hanno molto valore oltre al loro impiego iniziale e vengono spesso scartate dopo l’uso, senza memorizzarle. Per creare bozze informali si utilizzano tipicamente
lavagne o strumenti di disegno come Visio e PowerPoint (www.microsoft.com).
• L’UML come progetto: questo è un approccio più formale e preciso in cui l’UML
viene usato per specificare i dettagli di un sistema software. È come il progetto
di una macchina o di un’opera edilizia. Il modello UML viene memorizzato e diventa una parte importante e consegnabile del progetto. Questo approccio richiede l’utilizzo di uno strumento di modellazione come Rational Rose (www.rational.com) o MagicDraw UML (www.magicdraw.com).
00PrefazioneI
19-07-2006
XVIII
15:23
Pagina XVIII
Introduzione
• L’UML come eseguibile: usando l’Architettura Guidata dal Modello (Model Driven Architecture, MDA) i modelli UML possono essere utilizzati come un linguaggio di programmazione. In questo caso, ai modelli UML vengono aggiunti dettagli sufficienti perché il sistema possa essere compilato a partire dal modello. Questo è l’uso più preciso e formale dell’UML e dal nostro punto di vista, il futuro
dello sviluppo software. In questo approccio serve uno strumento UML in grado
di gestire MDA, per esempio ArcStyler (www.arcstyler.com). MDA va al di là dello scopo di questo libro, tuttavia viene esaminato brevemente nel Paragrafo 1.4.
In questo libro, ci focalizziamo su UML come progetto. Le tecniche che si apprenderanno sono però applicabili anche all’utilizzo dell’UML come formato eseguibile.
Avendo imparato l’UML come linguaggio di progetto, naturalmente, se servisse, lo si
potrebbe usare anche per scrivere una bozza.
Abbiamo cercato di rendere la nostra presentazione dell’UML e dell’UP la più
semplice e accessibile possibile.
Convenzioni
Per facilitare la consultazione del libro, ogni capitolo contiene uno schema della propria struttura, sottoforma di diagramma di attività UML. Questi diagrammi specificano l’attività di lettura e l’ordine in cui si potrebbero leggere i diversi paragrafi che
compongono i capitoli. Il Capitolo 13 esamina in dettaglio i diagrammi di attività ma
la Figura 1 dovrebbe essere sufficiente per capire la struttura del capitolo.
La maggior parte dei diagrammi di questo libro sono diagrammi UML. Le annotazioni riportate in grigio non fanno parte della sintassi UML.
Nel libro abbiamo utilizzato diversi stili di carattere.
Questo stile è per gli elementi di modellazione.
Questo stile è per il codice.
Eventuali utenti di questo libro
I possibili lettori di questo libro appartengono a varie categorie.
• Progettisti o analisti che devono imparare a svolgere la progettazione e l’analisi OO.
• Progettisti o analisti che devono imparare a svolgere la progettazione e l’analisi
OO all’interno del framework dell’UP.
• Studenti universitari che stanno seguendo un corso su UML.
• Ingegneri del software che hanno bisogno di un riferimento su UML.
• Ingegneri del software che stanno seguendo un corso di formazione su UML.
Questo può essere il libro di testo scelto dai formatori.
Clear View Training offre un corso di formazione UML di quattro giorni basato su
questo libro. Questo corso è fornito in tutta l’Europa dai nostri collaboratori, Zühlke
00PrefazioneI
19-07-2006
15:23
Pagina XIX
Introduzione
XIX
iniziare qui
questa è un’attività: qualcosa che si esegue
una diramazione:
si può seguire
un ramo
o quello opposto
una condizione: passare alla lettura del paragrafo
indicato se la condizione è vera
20.2 Stati compositi
[a proposito dei tipi di stati compositi]
20.2.1 Stati compositi semplici
altrimenti
20.2.2 Stati compositi ortogonali
altrimenti
[a proposito degli stati
delle sotto-macchine]
20.3 Stati della sotto-macchina
una biforcazione:
la sequenza
si divide in flussi
paralleli di attività
[a proposito della comunicazione
tra sotto-macchine]
20.4 Comunicazione tra sotto-macchine
[a proposito degli stati
con memoria]
20.5 Storia
20.5.1 Stati con memoria semplice
si possono eseguire
queste attività in parallelo
una ricongiunzione:
ritornare a un flusso singolo
20.5.2 Stati con memoria multilivello
20.6 Riepilogo
finire qui
Figura 1
Engineering (www.zuhlke.com) ed è disponibile con licenza. Le università che adottano questo libro per i loro corsi possono usare gratuitamente il nostro corso di formazione. Per ulteriori informazioni sulla cessione della licenza a università e aziende
si può consultare il sito www.clearviewtraining.com.
Come leggere questo libro
Ci sono tanti libri e così poco tempo per leggerli tutti! Tenendo presente ciò, abbiamo
progettato questo libro in modo che possa essere letto in molti modi diversi (oltre che
sequenzialmente dalla prima all’ultima pagina) a seconda delle esigenze del lettore.
Lettura veloce
La lettura veloce è adatta a chi vuole avere solo una panoramica dell’intero libro o
anche solo di un particolare capitolo. È anche appropriata per chi vuole avere una “sinossi per il management”.
00PrefazioneI
19-07-2006
XX
15:23
Pagina XX
Introduzione
• Scegliere un capitolo.
• Leggere il paragrafo “contenuto nel capitolo” e consultare il relativo diagramma
della struttura del capitolo, giusto per orientarsi.
• Sfogliare il capitolo esaminando le figure e le tabelle.
• Leggere il paragrafo “Cosa abbiamo imparato”.
• Se un paragrafo ha suscitato interesse, tornare indietro a leggerlo.
La lettura veloce è un metodo rapido ed efficace per leggere questo libro. Anche se
non sembra, la quantità di concetti che si può riuscire ad assimilare con questa tecnica è sorprendente! Si osservi comunque che questa tecnica funziona meglio se si inizia avendo un’idea chiara delle informazioni che si desidera ottenere. Ad esempio,
“vorrei capire come usare la modellazione dei casi d’uso”.
Consultazione
Per chi avesse bisogno di trovare informazioni su una parte specifica dell’UML o su
una particolare tecnica di modellazione abbiamo fornito un indice analitico e un sommario molto dettagliati che dovrebbero consentire una consultazione rapida ed efficace. Nel testo ci sono molti riferimenti incrociati che possono facilitare il lettore.
Ripasso
Per eseguire il ripasso con questo testo ci sono due strategie.
• Chi ha bisogno di ripassare le proprie conoscenze di UML nel modo più veloce ed
efficiente possibile, può leggere i riepiloghi schematici contenuti nel paragrafo finale di ciascun capitolo (“Cosa abbiamo imparato”). Per risolvere eventuali dubbi,
si può sempre tornare indietro e rileggere il relativo paragrafo di approfondimento.
• Chi ha più tempo a disposizione può anche consultare ogni capitolo e studiare i
relativi diagrammi.
Immersione rapida
Chi ha qualche minuto di tempo libero può prendere il libro e aprirlo a una pagina a
caso. Abbiamo cercato di garantire che ci sia qualcosa di interessante in ogni pagina.
Con questa tecnica, anche chi conosce l’UML molto bene può scoprire ancora qualche nuovo dettaglio da apprendere.
Struttura del libro
La Figura 2 mostra la struttura di questo libro. Abbiamo indicato l’ordine di lettura
dei capitoli e le tecniche avanzate che inizialmente si possono tralasciare.
00PrefazioneI
19-07-2006
15:23
Pagina XXI
Introduzione
Parte 1:
Introduzione
all’UML
a all’UP
[per una panoramica su UML]
[per una panoramica su UP]
Capitolo 1: UML
Capitolo 2: UP
XXI
Capitolo 3: Il flusso di lavoro dei requisiti
Parte 2:
Requisiti
Capitolo 4: Modellazione dei casi d’uso
[a proposito di tecniche avanzate]
Capitolo 5: Modellazione
dei casi d’uso: tecniche avanzate
Capitolo 6 : Il flusso di lavoro dell’analisi
Parte 3:
Analisi
Capitolo 7: Oggetti e classi
[come trovare classi di analisi]
[a proposito delle relazioni]
Capitolo 8: Individuare le classi di analisi
[a proposito dei package]
Capitolo 11: Package di analisi
Capitolo 9: Relazioni
Capitolo 10: Eredità e polimorfismo
Capitolo 12: Realizzazione dei casi d’uso
Capitolo 13: Diagrammi di attività
Capitolo 14: Il flusso di lavoro della progettazione
Parte 4:
Progettazione
Capitolo 15: Classi di progettazione
Capitolo 16: Raffinare le relazioni di analisi
Capitolo 18: Progettazione
della realizzazione dei casi d’uso
Capitolo 17: Interfacce e componenti
Capitolo 19: Macchine a stati
Capitolo 20: Macchine a stati avanzate
Capitolo 21: Il flusso di lavoro dell’implementazione
Parte 5:
Implementazione
Capitolo 22: Deployment
[studiare un modello di esempio]
Appendice 1: Esempio di modello dei casi d’uso
Parte 6:
Materiale
supplementare
[a proposito dell’applicazione
di XML ai casi d’uso]
Figura 2
Appendice 2: L’XML e i casi d’uso