Tecniche di sviluppo orientate agli oggetti
di Pino Navato
 

I linguaggi di programmazione sono in continua evoluzione e in questi ultimi anni la programmazione orientata agli oggetti (OOP) è diventata un must; parallelamente anche le tecniche di analisi e progettazione del software si evolvono. Coad e Yourdon affermano:

Le idee sul modo di progettare sono influenzate dalle idee su come va scritto il codice; e le idee su come va scritto il codice sono fortemente influenzate dai linguaggi di programmazione disponibili. Era difficile parlare di programmazione strutturata (e quindi difficile parlare di progettazione strutturata e di analisi strutturata) quando i linguaggi tra cui scegliere erano l'assembler e il FORTRAN; le cose divennero più facili col Pascal, il PL/1 e l'Algol. Similmente era difficile parlare in modo orientato agli oggetti quando i linguaggi tra cui scegliere erano il COBOL o il semplice C; è diventato più facile col C++ e lo Smalltalk. [da OOD]
Poiché oggi si programma ad oggetti, Coad e Yourdon hanno proposto una nuova tecnica di analisi e una nuova tecnica di progettazione orientate agli oggetti. Il primo evidente vantaggio del metodo Coad-Yourdon sta nel fatto di eliminare la tradizionale spaccatura tra DFD (data-flow diagrams, i diagrammi "a bolle") e i diagrammi Entità-Relazioni (ERD), nonché la spaccatura tra analisi e progettazione. Questo risultato è ottenuto utilizzando un'unica rappresentazione grafica in grado di descrivere sia l'organizzazione dei dati (in sostituzione degli ERD) sia le elaborazioni effettuate su di essi (in sostituzione dei DFD) e mantenendo invariata questa notazione sia nella fase di analisi che in quella di progettazione (in modo da eliminare la "transizione verso il progetto"). Questa tecnica si propone inoltre di aumentare la produttività facilitando il riuso e la manutenzione del software.
Avendo una rappresentazione uniforme per l'analisi e la progettazione non occorre completare l'analisi prima che inizi la progettazione: l'OOA e l'OOD si possono applicare in sequenza o in modo alternato e quindi si adattano a diversi cicli di sviluppo del software (a cascata, a spirale, o incrementale).
La realizzazione di un software complesso richiede una intensa comunicazione interpersonale, non solo tra i membri del team di sviluppo ma anche tra questi e il committente. Si pensi ad esempio al caso dello sviluppo di un sistema per il controllo del traffico aereo: la piena comprensione del dominio del problema da parte degli analisti richiederà molto tempo e numerose interviste al personale addetto a tale controllo; questo personale esperto, poi, dovrà anche convalidare i risultati dell'analisi effettuata. Per questo motivo gli autori affermano:
Il termine "ingegneria del software" è in fondo ironico: mentre il mondo si immagina formule, algoritmi e approcci scientifici seri, l'ingegneria del software è in effetti un'attività molto orientata agli uomini. [...] I metodi di sviluppo software sono efficaci solo nella misura in cui aiutano la gente a comunicare. Se l'applicazione di un "metodo" di ingegneria del software produce un monumento di carta, allora c'è qualcosa di sbagliato. [da OOA]
Gli autori hanno collaborato in più occasioni alla realizzazione di sistemi di elevata complessità ma per mettere a punto il loro metodo hanno seguito da vicino anche il lavoro di altri progettisti orientati agli oggetti, alla ricerca di uno schema riscontrabile molto spesso nei buoni progetti e nelle buone implementazioni orientate agli oggetti. Il risultato è un modello che prevede, nella fase di analisi, la suddivisione del dominio del problema in cinque livelli e, nella fase di progettazione, la definizione di quattro componenti. I livelli sono "fette" orizzontali del modello complessivo e vanno immaginati come fogli trasparenti sovrapposti. Essi sono:
  • Livello dei Soggetti
  • Livello delle Classi-&-Oggetti
  • Livello delle Strutture
  • Livello degli Attributi
  • Livello dei Servizi
e corrispondono alle cinque attività principali dell'OOA che consiste proprio nell'identificazione di Soggetti, Classi-&-Oggetti, Strutture, Attributi e Servizi. I quattro componenti, invece, sono "fette" verticali del modello complessivo. Essi sono:
  • Componente del Dominio del Problema
  • Componente di Interazione Umana
  • Componente di Gestione Task
  • Componente di Gestione Dati
e corrispondono alle quattro attività principale dell'OOD che consiste proprio nella progettazione di questi componenti come insiemi di classi. Il primo dei quattro, in particolare, è quello in cui si riversano i risultati dell'analisi e quindi deve essere solo rifinito nella fase di progettazione mentre gli altri tre devono essere creati ex novo (fatta salva la possibilità di riusare pezzi di progetti preesistenti).
Il metodo di Coad e Yourdon è descritto in due volumi separati, uno dedicato all'OOA e uno all'OOD; a questi se ne aggiunge un terzo, opera di Coad e Nicola, che propone 4 "casi di studio", vale a dire 4 dettagliati esempi d'uso della tecnica con relativa implementazione in C++ e Smalltalk.
I tre volumi sono organizzati in maniera da essere indipendenti l'uno dall'altro. Teoricamente un analista potrebbe leggere solo il primo, un progettista solo il secondo e un programmatore solo il terzo ma è ovvio che una lettura sequenziale dei tre volumi fornisce una migliore visione del metodo e dei problemi connessi con la sua implementazione e favorisce il dialogo tra le diverse figure professionali coinvolte in un progetto di medie o grandi dimensioni orientato agli oggetti.
Gli argomenti trattati nei primi due volumi, in particolare, sono caratterizzati da una forte coesione e quindi per rendere i due libri indipendenti è stato necessario ripetere pedissequamente alcuni concetti, tanto che alcuni paragrafi risultano identici o quasi. Anche l'organizzazione dei due volumi è molto simile.
La copertina del libro OOAIl primo libro, OOA - Analisi dei sistemi orientati agli oggetti, dopo due capitoli introduttivi, esamina le cinque attività fondamentali dell'OOA e per ognuna di queste spiega in cosa consiste, perché è importante, e come deve essere affrontata. Gli ultimi tre capitoli esaminano i requisiti che dovrebbe avere un buono strumento CASE per l'OOA, i principali problemi connessi all'introduzione dell'OOA in un'organizzazione, e i principali aspetti dell'OOD.
La copertina del libro OODIl secondo volume, OOD - Progettazione dei sistemi orientati agli oggetti, dopo aver presentato i principi generali dell'OOD, le sue finalità e la notazione grafica usata nei progetti (la stessa usata nell'OOA), esamina uno dopo l'altro i quattro componenti rispondendo alle domande "Che cos'è?", "Perché occorre?" e "Come si determina?" e proponendo degli esempi. In seguito vengono analizzate la sintassi e le caratteristiche di alcuni linguaggi per confrontare il loro supporto alla semantica dell'OOA e dell'OOD. Poi gli autori presentano i criteri per valutare la qualità di un progetto OO: accoppiamento, coesione, riusabilità, ecc. Si tratta di criteri già usati in passato per la progettazione strutturata e tuttora validi per cui vengono semplicemente adattati all'OOD. Infine gli ultimi due capitoli esaminano i requisiti che dovrebbe avere un buono strumento CASE per l'OOD e i principali problemi connessi all'introduzione dell'OOD in un'organizzazione.
La copertina del libro OOPIl terzo volume, OOP - Programmazione dei sistemi orientati agli oggetti, è molto più grosso degli altri due e può essere visto come un libro di esercizi con relativa soluzione. Qui gli esercizi sono 4 progetti di complessità crescente che vengono affrontati con le tecniche dell'OOA, dell'OOD e dell'OOP. Il processo di sviluppo utilizzato è di tipo concorrente: l'OOA, l'OOD e l'OOP vengono applicati quasi contemporaneamente, a più riprese. L'idea di usare il più tradizionale approccio a cascata viene scartata con vero e proprio disgusto:
Puah! Perché accollarsi questo rischio? Perché aspettare ad esplorare le modalità in cui realmente opera il sistema? Perché aspettare ad esaminare dettagliatamente le vostre classi chiave? Perché aspettare per verificare le ipotesi che avete fatto? Perché aspettare così a lungo prima di dimostrare un risultato pur modesto ma sempre tangibile (del software che gira! non pile di cartaccia). [da OOP]
I libri si rivolgono ai professionisti del settore, le persone che devono affrontare tutti i giorni lo sviluppo di sistemi reali. Di conseguenza si presuppone che il lettore conosca almeno un OOPL così da essere familiare con classi, ereditarietà e polimorfismo; inoltre in un paio di paragrafi vengono citati DFD ed ERD dando per scontato che il lettore sappia di cosa si tratta.
E' da notare, infine, che i tre libri hanno già qualche anno di vita e quindi non sono l'ultimo grido della moda; già altre tecniche si affacciano alla ribalta tuttavia il metodo Coad-Yourdon rimane l'opera di due grandi esperti in fatto di analisi e progettazione e i loro libri sono tuttora usati come riferimento in numerosi corsi universitari.

 

Scheda del prodotto n.1
 Titolo:
 
 Autore:
 Editore:
 Formato:
 Pagine:
 Prezzo:
 ISBN:
OOA - Analisi dei sistemi orientati agli oggetti, II ed.
Peter Coad, Edward Yourdon
Jackson Libri
17x24 cm
240
39000 lire  (20.14 euro)
88-7056-963-2
 
Scheda del prodotto n.2
 Titolo:
 
 Autore:
 Editore:
 Formato:
 Pagine:
 Prezzo:
 ISBN:
OOD - Progettazione dei sistemi orientati agli oggetti
Peter Coad, Edward Yourdon
Jackson Libri
17x24 cm
224
39000 lire  (20.14 euro)
88-256-0552-8
 
Scheda del prodotto n.3
 Titolo:
 
 Autore:
 Editore:
 Formato:
 Pagine:
 Prezzo:
 ISBN:
OOP - Programmazione dei sistemi orientati agli oggetti
Peter Coad, Jill Nicola
Jackson Libri
17x24 cm
600 + floppy disk
79000 lire  (40.80 euro)
88-256-0623-0