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