Guida UML
In questa guida tratteremo gli aspetti dell'analisi e della progettazione orientata agli oggetti. Per fare ciò utilizzeremo un linguaggio di modellazione chiamato UML (Unified Modelling Language), il quale ci aiuterà a rappresentare, soprattutto graficamente, cosa il nostro programma dovrà fare. Inoltre l'UML fornisce una rappresentazione molto chiara e compatta dell'intera struttura dell'applicazione che andremo ad analizzare.
Un po' di storia
Per quanto riguarda l'età dell'UML possiamo dire che è abbastanza recente in quanto la prima versione dell'UML è stata redatta dall'OMG (Object Management Group) nel 1997. Possiamo dire che le prime tecniche per la modellazione della struttura di un'applicazione risalgono a circa una decina di anni prima rispetto al rilascio del linguaggio UML vero e proprio. Queste metodologie, presentate da enti diversi, avevano i loro pregi e i loro difetti, ma il grande problema, in quel periodo, era che le varie metodologie proposte non presentavano un set di simboli universali, ma ogni metodologia ne adottava uno diverso dalle altre. Questa mancanza di simboli universali portava a conseguenti problemi di interpretazione, infatti un simbolo che per una metodologia di modellazione rappresentava l'associazione, magari per un'altra metodologia rappresentava una specializzazione di una classe. Questo causava frequenti incomprensioni nella lettura degli schemi prodotti e quindi si sentì l'esigenza di dover stabilire un set di simboli universali e creare una metodologia unica. Da questa volontà di standardizzare questo linguaggio, nacque appunto l'UML che racchiude i principali punti di forza delle metodologie che precedentemente erano state proposte.
A cosa serve UML?
Adesso il lettore potrebbe chiedersi: ma quale è la vera utilità dell'UML? Iniziamo con il fare un'analogia pratica applicata alla vita reale: UML è il linguaggio che consente di realizzare il progetto che un costruttore segue per realizzare la sua opera. E' impensabile costruire un palazzo senza un solido progetto iniziale da seguire fedelmente. Capito quindi, nella pratica cosa è l'UML, vediamo i principali punti di forza del linguaggio:
L'UML è un linguaggio molto semplice da imparare e molto intuitivo e ciò consente un rapido apprendimento di tutte le metodologie più importanti. Inoltre è estramente più semplice leggere uno schema di un'applicazione fatto in UML piuttosto che leggere il codice sorgente dell'applicazione stessa. Infatti la lettura dello schema UML permette una rapida comprensione delle varie funzionalità e tutte le relazioni tra i vari oggetti che la compongono, tutto ciò anche senza una conoscenza approfondita dell'UML. Situazione opposta è la lettura di codice sorgente di un'applicazione con un gran numero di classi: ciò richiede sicuramente molto più tempo rispetto alla lettura di uno schema UML e richiede un elevatissima conoscenza del linguaggio in cui l'applicazione è stata scritta.
La modifica di uno schema UML è estremamente più semplice rispetto ad una modifica da apportare ad un codice sorgente già scritto. Infatti molti dei bug che i software presentano sono dovuti ad un'errata fase di progettazione, che ha portato i programmatori a modificare la struttura del programma in fase di scrittura del codice. Immaginate infatti di programmare in C++ e avere una classe che possiede un certo numero di attributi e diversi metodi che compiono delle operazioni su questi attributi. Ad un certo punto della stesura del codice vi accorgete che un attributo dichiarato come string debba essere modificato in char *. Dovremo rimettere le mani in tutta la classe in quanto dovranno essere modificati tutti i file header con i prototipi dei vari metodi e anche tutte le varie implementazioni dei metodi. Capite bene che se si ha a che fare con progetti di grosse dimensioni ciò può portare ad uno spreco di tempo molto consistente ed un'alta probabilità di introdurre bug nel software.
In sostanza possiamo dire che se si crea un modello UML robusto e ben strutturato non avremo nessun problema a convertirlo in righe di codice e poi in un programma realmente funzionante. La raccomandazione che posso farvi è che conviene sempre spendere qualche ora in più nella revisione e nel miglioramento del vostro modello UML piuttosto che modificare successivamente il codice sorgente dell'applicazione.
Sviluppo del software: le fasi da seguire – Guida UML
Nel capitolo precedente abbiamo introdotto le caratteristiche principali del linguaggio UML. Possiamo dire che la vera utilità dell'UML può essere apprezzato solo ed esclusivamente quando si ha a che fare con la produzione di software di dimensioni considerevoli, con un numero di classi elevate e le relazioni tra le stesse abbastanza articolate. In progetti piccoli, come per esempio la...
Editor per UML – Guida UML
Come esistono gli IDE di sviluppo per i linguaggi di programmazione esitono anche svariati editor che aiutano e velocizzano notevolmente la modellazzione nel linguaggio UML. Esistono svariati editor, sia quelli a pagamento sia quelli gratuiti. In questa guida viene, volutamente, tralasciata la trattazione per quanto riguarda gli editor a pagamento in quanto, essendo questa una guida indirizzata a chi...
Tipi di Diagramma – Guida UML
Spiegato che cosa si intende per sviluppo software e forniti al lettore gli strumenti necessari per produrre diagrammi UML, possiamo iniziare la trattazione del linguaggio definendo i possibili diagrammi che possono essere realizzati. In questo elenco verranno citati solo i diagrammi più utilizzati, tralasciando volutamente gli altri. Al fine di comprendere molto rapidamente la guida si consiglia di avere...
Diagramma delle classi: rappresentazione di una classe – Guida UML
Nel capitolo precedente abbiamo definito, in maniera molto rigorosa, che cosa è una classe. Data la rigorosità della definiszione, è possibile rimanere ancora distanti dal concetto di classe e per questo motivo è opportuno fornire alcuni esempi chiarificatori. Per quanto riguarda le entità fisiche una classe può rappresentare il concetto di casa, mentre per quanto riguarda entità applicative si...
Diagramma dele classi: le associazioni – Guida UML
Nel capitolo precedente abbiamo definito il concetto di classe. Adesso andremo a vedere come è possibile legare varie classi presenti nel nostro progetto con una relazione di associazione. Iniziamo con il dire che l'associazione, in UML, viene rappresentata da una linea che collega due classi. Solitamente agli estremi di questa linea si indicano le molteplicità della relazione , ovvero...
Diagramma delle classi: aggregazione e composizione – Guida UML
Nel capitolo precedente abbiamo definito in maniera chiara ed esaustiva che cosa si intende per associazione. In questo capitolo analizziamo altri tipi di associazione, per certi versi un po' più complessi, dette aggregazione e composizione. Spesso questo tipo di relazioni tra classi tendono ad essere confuse oppure ad essere utilizzate in maniera errata dato che la differenza che intercorre...
Diagramma delle classi: ereditarietà ed interfacce – Guida UML
Fino a questo momento abbiamo parlato di classi, associazioni con le relative molteplicità, aggregazioni e composizioni. Solo con la conoscenza di questi strumenti è possibile realizzare diagrammi delle classi per progetti abbastanza articolati, ma per poter progettare software complessi è necessario introdurre alcuni concetti di programmazione ad oggetti come la derivazione e le interfacce .
Derivazione
Richiamiamo adesso il concetto di...
Diagramma delle classi: esempio di modellazione (1a parte) – Guida UML
Arrivato a questo punto della trattazione il lettore ha tutti gli strumenti necessari per la realizzazione di qualsiasi diagramma delle classi, dal più banale al più complesso. Quello che però manca al lettore è una linea guida di come passare da una descrizione di un progetto, in maniera testuale, alla costruzione di un diagramma delle classi corretto e robusto....
Diagramma delle classi: esempio di modellazione (2a parte) – Guida UML
Continuando nella lettura troveremo inoltre la classe custode. In questo caso non possiamo più utilizzare un attributo per identificare il custode dei recinti di terra e il sub che si occupa dell'area degli animali acquatici in quanto per i sub è richiesto un ulteriore attributo che sono le ore di immersioni totali (rappresentano l'esperienza di un sub). In questo...
Diagramma dei casi d’uso: introduzione e casi d’uso testuali – Guida UML
Nei capitoli precedenti abbiamo analizzato il diagramma delle classi fornendo tutti gli strumenti necessari per la realizzazione di diagrammi di grosse dimensioni e di elevata complessità. Adesso analizzeremo un altro tipo di diagrammi anche questi molto utilizzati e importanti per la realizzazione di un progetto realmente funzionante: questi diagrammi sono i diagrammi dei casi d'uso. Ma cosa sono i...
Diagramma dei casi d’uso: relazioni – Guida UML
Le relazioni nei diagrammi dei casi d'uso sono in numero nettamente inferiore rispetto ai diagrammi delle classi. Per quanto riguarda le relazioni esistenti tra gli attori, l'unica ammessa è la generalizzazione/specializzazione. Il concetto di questa relazione è identico a quello espresso nei diagrammi delle classi infatti la specializzazione di un attore è una sorta di qualificazione più specifica dell'attore...
Casi d’uso: esempio pratico (1a parte) – Guida UML
Mostriamo adesso un esempio pratico e ragionato per la modellazzione di diagrammi dei casi d'uso in uno scenario un po' più ampio utilizzando tutte e tre le relazioni che abbiamo presentato nel capitolo precedente. Facendo un paragone con i diagrammi delle classi: questi diagrammi rispettano la struttura del nostro progetto e perciò la modellazzione non presenta molte libertà e...
Casi d’uso: esempio pratico (2a parte) – Guida UML
Continuiamo adesso la realizzazione del nostro progetto. Abbiamo gestito il caso in cui l'utente acquisti il prodotto e non sia registrato, adesso bisogna gestire il caso in cui l'utente, già registrato, effettua il login e il nostro sistema verifica username e password inserite. Potremo inserire il controllo delle credenziali direttamente all'interno del caso d'uso acquisto prodotto, ma la verifica...
Diagrammi di sequenza: introduzione – Guida UML
Andiamo adesso ad analizzare un altro tipo di diagramma: i diagrammi di sequenza. Nei capitoli precedenti abbiamo visto che i diagrammi dei casi d'uso forniscono informazioni sulle interazioni tra gli uteti e il nostro sistema, ma il caso d'uso in se non ci dava informazioni su cosa avvenisse realmente all'interno del nostro sistema. I diagrammi di sequenza servono per...
Diagrammi di sequenza: esempi – Guida UML
Continuiamo adesso il nostro esempio sul prestito dei libri. Come nel caso precedente mostriamo il diagramma UML ultimato per poi commentarlo in maniera dettagliata:
Premettiamo che nel diagramma sopra mostrato sono stati inseriti dei blocchettini che non sono necessari, ma ciò è stato fatto per rendere il diagramma più chiaro e leggibile dato che l'editor non permette molta personalizzazione. Dunque...
Diagrammi di stato: introduzione e transizioni – Guida UML
In questo capitolo ci occumeremo dei diagrammi di stato. Anche questi diagrammi, come i diagrammi di sequenza, descrivano un comportamento dinamico del sistema, ma a differnza di quelli di sequenza che rappresentano le interazioni presenti tra gli oggetti i diagrammi di stato modellano dinamicamento ciò che accade in un determinato oggetto. In sostanza si rappresenta il comportamento di un...
Diagramma degli stati: rappresentazione di uno stato – Guida UML
Andiamo adesso a definire la sintassi con cui rappresentare un generico stato in UML. Anche in questo caso forniamo un esempio grafico della sintassi per poi commentarla abbondantemente:
Come possiamo vedere la sintassi della modellazione di uno stato consta di tre parti principali: la prima rappresenta il nome che vogliamo dare allo stato (anche in questo caso cerchiamo di dare...
Diagramma di attività – Guida UML
Fino a questo momento abbiamo mostrato vari tipi di diagrammi che danno una modellazione statica e dinamica del sistema. Analizziamo adesso i diagrammi di attività che servono per eseguire una modellazione del flusso di lavoro per un determinato caso d'suo. I diagramma dei casi d'uso, corredato di un diagramma di attività per ogni caso, fornisce una visione completa del...
Considerazioni finali sui diagrammi – Guida UML
A questo punto abbiamo terminato la nostra panoramica sull'UML. Al termine di questa guida il lettore avrà compreso l'enorme potenzialità che questo linguaggio di modellazione offre, infatti, con tutti i possibili diagrammi che è possibile realizzare possiamo rappresentare la struttura del nostro progetto, aspetti statici e dinamici di funzionamento, relazioni tra i vari componenti costituenti il progetto stesso e...