UNA
PANORAMICA SUGLI STRUMENTI CASE
Cosa sono,
a che servono e quali sono i prodotti migliori
Tutti
conoscono il proverbio dei figli del ciabattino: il ciabattino era tanto
impegnato nel fare scarpe per gli altri che i suoi figlioli vanno a piedi
scalzi. Negli ultimi vent'anni, molti ingegneri del
software hanno vestito i panni del ciabattino: pur avendo costruito sistemi
complessi destinati ad automatizzare il lavoro altrui, essi hanno solo in limitata misura automatizzato il proprio. Di fatto, fino
a poco tempo fa, 1'ingegneria del software a stata sostanzialmente un'attività
manuale, nella quale il ricorso a strumenti specializzati avveniva solo nelle
ultime fasi del processo attraverso l’uso di ambienti
integrati di compilazione, linkaggio e debugging.
Oggi,
finalmente, gli ingegneri del software possono sfoggiare il loro “primo paio di
scarpe”: il CASE, sigla che sta per Computer‑Aided Software Engineering (ingegneria del software assistita
dall'elaboratore).
Certamente
questo strumento non è ancora molto sviluppato e di facile utilizzo come lo
sono le applicazioni CAD/CAM, ma è uno strumento necessario nella dotazione di
uno sviluppatore di software e diventerà col tempo più comodo, più agevole a più
adattabile alle esigenze specifiche. Questo sia perché lo sviluppo di strumenti
CASE è cominciato solo negli ultimi 25 anni, ma soprattutto perché i programmi
CAD / CIM implementano pratiche ingegneristiche che
sono state utilizzate manualmente per oltre 100 anni, mentre gli strumenti CASE
forniscono un insieme di tool automatici e semiautomatici che implementano una
cultura ingegneristica che è nuova a molte aziende.
Il CASE
dà la possibilità di automatizzare compiti prima svolti manualmente e di
controllare con più precisione 1o sviluppo. In modo simile agli strumenti
dell'ingegneria assistita dall'elaboratore e agli strumenti di progettazione
utilizzati in altri settori, gli strumenti CASE contribuiscono a incorporare 1a qualità nella progettazione.
L’obiettivo
a cui si vuole arrivare con l’uso degli strumenti CASE
è quello di avere uno sviluppo automatico del software partendo dalla
definizione delle specifiche tramite schemi a blocchi o altro.
I mattoni del CASE
L'ingegneria
del software assistita dall'elaboratore va dal semplice strumento che supporta
un'attività specifica all'ambiente completo, formato da strumenti, basi di
dati, persone, macchine, rete, diversi sistemi operativi, standard e una
costellazione di altri componenti. I mattoni del CASE sono rappresentati nella figura sottostante:
L'architettura
dell'ambiente, composta dalla piattaforma hardware e dal supporto del sistema
operativo (che
comprende i collegamenti in rete e la gestione di una base di dati) sta alla
base del CASE, ma l'ambiente richiede ulteriori
elementi. Una serie di servizi di portabilità fa da ponte fra gli
strumenti CASE e la loro struttura di integrazione
da una parte, e l'architettura dall'altra.
La
struttura d'integrazione è una collezione di programmi specializzati che consentono ai vari
strumenti CASE di comunicare fra loro, di creare una base di dati di progetto e
di unificare la veste esteriore, visibile all'utente (cioè
all'ingegnere del software).
I
servizi di portabilità consentono la migrazione degli strumenti CASE e della struttura
d'integrazione fra piattaforme hardware e sistemi operativi diversi senza
interventi significativi.
Gli
elementi illustrati in figura formano una base completa per l'integrazione
degli strumenti CASE; tuttavia, la maggior parte degli strumenti sul mercato
non comprende tutti gli elementi citati, ma sono in realtà "soluzioni
circoscritte", cioè servono una specifica
attività (ad esempio la modellazione concettuale), ma non comunicano
direttamente con altri strumenti, non sono legati a una base di dati di
progetto e non fanno quindi parte di un ambiente CASE integrato (I‑CASE).
I singoli strumenti nella maggior parte dei casi sono dotati della capacità di scambio dei dati; questi strumenti producono output in un
formato standard, leggibile da altri strumenti. Talvolta, i produttori
collaborano a costruire un ponte fra strumenti diversi (ad esempio uno
strumento di analisi e progettazione abbinato a un
generatore di codice); la sinergia che si produce consente di ottenere
risultati difficilmente raggiungibili con i due strumenti separati. Un altro
tipo di integrazione si ottiene quando un singolo
produttore combina diversi strumenti e li distribuisce come pacchetto. Per
quanto efficace, questa soluzione ha in genere il difetto di creare
un'architettura chiusa, che preclude l'impiego di strumenti di
altri produttori.
Caratteristiche e
proprietà funzionali di uno strumento CASE
Le 11
funzionalità di base di un ambiente CASE sono:
v La presenza di un Repository.
v La capacità di mantenere
l’integrità dei dati durante tutte le fasi del progetto del
SW
v La presenza di un insieme di tool che guidano l’utente ( softwarista ) durante tutte o quasi le fasi dello sviluppo
di un progetto SW
v La capacità di rendere
disponibili all’utente in modo semplice e immediato tutte le informazioni
riguardo lo sviluppo e lo stato di avanzamento del
progetto
v Facilità di editare
e aggiornare informazioni sul progetto. Esistono vari tipi di
editor per questi scopi come editor matriciali
per matrici, tabelle e fogli di calcolo, editor di diagrammi di flusso, editor di diagrammi ad albero strutturati e
editor di PDL ( Process Definition
Language )
v Un interfaccia “Uses-friendly”
v Capacità nel trasformare dati per
trasferire informazioni da una forma all’altra
v Capacità di eseguire analisi
sulle informazioni raccolte per aiutare lo sviluppatore nell’organizzare uno
sviluppo incrementale del SW, nel trovare
inconsistenze e errori in tutto il ciclo di sviluppo
v Possibilità di personalizzazione e espansione
v La presenza di tool di
progetto e organizzazione che aiutano il capo progetto nella gestione del
progetto relativamente alle priorità di sviluppo e
alle risorse di sviluppo disponibili.
v Capacità di “bridge” cioè di tradurre file prodotti in output da altri strumenti
CASE per rielaborarli.
Una tassonomia degli
strumenti CASE
Gli
strumenti CASE si possono classificare secondo la funzione, secondo il ruolo
che svolgono come "attrezzi" per i manager o per i tecnici, secondo
il loro impiego nelle varie fasi del processo software, secondo l'architettura
(hardware e software) dell'ambiente che li supporta oppure secondo la loro
origine oppure secondo altri criteri.
Diamo una classificazione degli strumenti CASE secondo le funzioni
che questi svolgono:
Gli strumenti per le stime calcolano, applicando varie
tecniche, lo sforzo e la durata previsti
di un progetto, oltre al numero suggerito di risorse umane necessarie alla realizzazione del progetto nei tempi stabiliti.
Gli strumenti per la pianificazione temporale danno modo al capo progetto di definire i compiti (la
struttura di suddivisione del lavoro), di creare il reticolo dei compiti (in
genere con mezzi grafici), e di analizzare le loro dipendenze e i loro
parallelismi ( possibilità di mandare avanti contemporaneamente più compiti )
ü
acquisizione dei dati: strumenti che acquisiscono i dati da
utilizzare nei collaudi
ü
misurazione statica: strumenti che analizzano il codice sorgente
senza eseguire casi di prova ( Es: ATLAS )
ü
misurazione dinamica: strumenti che analizzano il codice sorgente
durante l'esecuzione. Questi strumenti possono essere intrusivi o non intrusivi
ü
simulazione: strumenti che simulano l'hardware o altri elementi
esterni
ü
strumenti misti: strumenti che rientrano in più categorie.
ü
Strumenti per il collaudo client/server in grado
di testare i meccanismi di comunicazione client / server
ü
Strumenti di reverse engineering
e specifica: ricevono codice sorgente e generano
modelli concettuali e progettuali
ü
Strumenti di ristrutturazione e analisi del codice: analizzano la sintassi
del programma, generano un diagramma di flusso del controllo e un programma
strutturato.
ü
Strumenti di reingegnerizzazione
di sistema in linea: utilizzati per modificare basi di dati in linea (ad
esempio per convertire file DB2 in un formato entità‑relazioni).
I futuri
strumenti di foward e riverse engineering
utilizzeranno gli strumenti dell’intelligenza artificiale, sfruttando anche il
fatto che progetti facenti parte della stessa area applicativa presentano tra
di loro punti in comune, dei quali si potrà avvalere il calcolatore per
avanzare lo sviluppo del progetto, anche se l’intervento del programmatore sarà
sempre indispensabile.
Ambienti CASE integrati
Anche se
si può trarre giovamento in una specifica attività anche dall’uso di un
singolo strumento CASE, il vero valore del CASE si
ottiene tramite l'integrazione dei vari strumenti.. Fra i vantaggi del CASE
integrato detto I-CASE , possiamo citare:
D'altra
parte, l'I‑CASE pone anche problemi non trascurabili. L'integrazione esige
rappresentazioni coerenti delle informazioni di progetto, interfacce standard
fra gli strumenti, un meccanismo omogeneo di comunicazione fra l'ingegnere e
gli strumenti e la possibilità di muoversi fra
piattaforme hardware e sistemi operativi diversi. Alcune soluzioni a questi
problemi sono già state proposte, ma gli ambienti I‑CASE completi
cominciano a emergere solo ora.
Per
definire l'integrazione nell'ambito del processo software, si devono stabilire
alcuni requisiti per 1'I‑CASE.
Si riportano qui di seguito i requisiti
a cui deve soddisfare un ambiente CASE integrato:
Ø fornire un meccanismo per condividere i
dati fra tutti gli strumenti che lo compongono;
Ø far sì che la modifica di un
elemento si rifletta negli elementi logicamente collegati;
Ø offrire il controllo delle versioni e la
gestione delle configurazioni per tutti i dati coinvolti nel processo;
Ø consentire l'accesso diretto a tutti gli
strumenti dell'ambiente;
Ø offrire degli strumenti di controllo
automatico dell’avanzamento del processo di sviluppo integrando sia i dati sia
gli strumenti in una base di dati
Ø offrire un'interfaccia utente costante
su tutti gli strumenti;
Ø supportare la comunicazione fra i tecnici;
Ø raccogliere metriche di gestione e tecniche
utili per migliorare il processo di sviluppo e il prodotto finale
Per
soddisfare questi requisiti, i mattoni dell'architettura CASE devono combinarsi
senza urti. Come illustrato nella figura seguente, i mattoni fondamentali ‑
architettura, piattaforma hardware e sistema operativo ‑ devono essere
"congiunti" tramite un insieme di servizi di portabilità a una struttura di integrazione che soddisfa i requisiti
sopra menzionati.
In ogni
caso, considerando i singoli strumenti CASE di cui si è parlato in
precedenza, si può dire che pochissimi tool operano in totale isolamento. Infatti
nella maggior parte dei tool possiamo trovare queste
funzioni di integrazione:
Ø Scambio di dati: i tools sono dotati di meccanismi che permettono lo
scambio di dati tra tools diversi, spesso fatto
tramite l’uso di un filtro. I traduttori di file da un formato all’altro sono
creati o da una cooperazione fra le aziende che commercializzano i vari tool, o creati direttamente dagli utenti stessi e poi messi
in vendita o scambiati come shareware
Ø Management comune dei dati: i dati provenienti
da differenti tool di Computer Aided
software engineering possono essere mantenuti in un
database comune che può essere centralizzato o distribuito e al quale tutti i tool accedono. Questo database è
utilissimo in quanto permette agli sviluppatori che
stanno lavorando su parti differenti di una applicazione ( moduli ) di
combinare il loro lavoro. Inoltre il database può anche contenere strumenti in
grado di rilevare inconsistenze tra le varie parti del progetto.
Ø Condivisione di dati: i tools che hanno una integrazione
al questo livello usano strutture datio e semantiche
compatibili e possono avere un accesso immediato ognuno ai dati dell’altro
senza bisogno di una traduzione dei dati. Sfortunatamente ci sono pochissimi
standard ufficiali e i pochi che ci sono standard de facto poiché sono standard
imposti dalle grandi case sviluppatrici di prodotti CASE come DEC, Hewlett-Packard, IBM o Sun.
Ø Interoperabilita: questo
rappresenta il livello più alto di integrazione tra
singoli tools. Sono detti interoperabili quei tools che hanno le caratteristiche di condivisione dei dati
e di accesso ad un database condiviso
Ø Integrazione completa: per arrivare a questo livello di integrazione e
formare un ambiente CASE (I-CASE) bisogna avere altre due caratteristiche: la
gestione dei “metadata” e degli strumenti di
facilitazione del controllo. I “metadata” sono
informazioni prodotte dai singoli strumenti CASE e includono:
·
La definizione degli oggetti
·
Le relazioni e le dipendenze tra gli oggetti
·
Le regole del software design
·
Informazioni sui processi di sviluppo e su eventi come revisioni,
aggiunte, segnalazione di problemi, etc.
Gli strumenti di facilitazione del
controllo abilitano i singoli tool a notificare
eventi significativi al resto dell’ambiente ( altri tool, metadata manager, etc ) e a richiedere agli altri tools
delle azioni o dei servizi in seguito
all’accadimento di questi eventi.
Un
ambiente CASE è organizzato a livello e la loro
architettura è così:
Il repository è spesso un DBMS relazionale o
orientato agli oggetti e svolge un ruolo essenziale in un ambiente CASE
integrato. Esso infatti garantisce l’integrità dei
dati condivisi da tutti gli strumenti, fornisce il meccanismo di condivisione
di dati fra i tools e fra i vari sviluppatori che
lavorano separatamente al progetto e istituisce un modello dei dati al quale
accedono tutti i tools dell’ambiente ( metamodello ).
Un repository CASE deve fornire tutte
le caratteristiche di un DBMS ( Memorizzazione dei dati senza ridondanze,
Accesso ai dati di alto livello, Indipendenza dei dati, controllo delle
transazioni, sicurezza, supporto alla multiutenza )
ed inoltre deve fornire meccanismi di gestione di strutture dati sofisticate,
meccanismi di controllo di versioni, meccanismi di controllo delle dipendenze
tra i vari moduli del progetto SW e un interfaccia semantica verso gli
strumenti.
I dati
contenuti in un repository CASE sono riportati in
dettaglio nella tabella seguente:
Attualmente l’importanza degli Strumenti CASE è ulteriormente aumentata grazie
all’introduzione dell UML ( Unified
Modeling Language ) che è
un linguaggio appositamente studiato per la creazione di modelli di varia
tipologia e creati per obiettivi diversi, proprio come un linguaggio di
programmazione o un linguaggio naturale possono essere usati in molti modi
diversi. Questo significa che l’UML ci permette di abbandonare i diagrammi di
flusso per la definizione di modelli essendo complessi da realizzare e talvolta
difficili da gestire.
PRODOTTI CASE
Negli
ultimi anni sono stati cerati vari tools di sviluppo
CASE da varie software house e fra questi i principali, raggruppati per
categorie, sono:
1)
Strumenti CASE: basati su metodologia OO:
1.1) Strumenti per l'analisi e la progettazione OO.
·
Object Tool di Object International
·
Objectory di Objective Systems
·
System Architect di Popkin Software
·
Rational Rose di Rational basato sulla tecnologia UML
·
SES Objectbench di SES
·
CodePainter della Zucchetti Software
1.2) Strumenti CASE OO.
·
Object Management Workbench (OMW) di
Intellicorp
·
StP/OMT di Interactive Development Environments
·
Ptech di Ptech Inc.
2)
Lower CASE
2.1) Strumenti OO per la costruzione
di GUI
·
Open Interface di Neuron
Data
·
Object Builder di Parc Place
·
MacDialog Editor di Quintus
3)
Strumenti Object Oriented
ad altissimo livello di Object
Tecnology (supportano C++,C#
e/o Smartalk)
·
Parts Workbench di Digitalk
·
Enfin di Easel Corporation
·
Visual Age di IBM
·
Visual Work di Parc Place
·
Sniff+ di Take Five
·
dBsee++ for C++/MFC della ISA
Uno dei
più importanti strumenti CASE attualmente presenti sul
mercato è il Rational Rose. Tra le caratteristiche più salienti
abbiamo:
Rational Rose è incluso nel pacchetto Rational Suite che integra tutti gli strumenti per analista
di sistema, lo sviluppatore di software, il collaudatore del sistema e il
direttore dello sviluppo del progetto. Ad esempio:
Rational PurifyPlus
questo prodotto permette di generare
software con la robustezza, le prestazioni e la qualità che l’utente finale si
aspetta. E’ composto da vari tools
che operano a livello di codice e che si occupano di trovare e definire con
precisione gli eventuali errori di run-time che si
possono avere durante l’uso dell’applicazione,
di trovare i punti in cui il software potrebbe essere più efficiente e
di testare quei componenti e quelle librerie che sono state prodotte da terze
parti e delle quali non si possiede il codice sorgente.
Rational QualityArchitect è una delle
estensioni più potenti di rational Rose. Esso permette di testare e validare i componenti software
direttamente dai modelli visuali creati sotto Rational
Rose. Permette quindi di trovare e risolvere i problemi quando ancora i componenti sono separati permettendo quindi un risparmio di
tempo durante la fase di test e una maggiore stabilità del sistema
Rational Test RealTime programma di test dinamnico che osserva il sistema durante il funzionamento e crea un report di tutte le situazioni pericolose che possono portare a un blocco di sistema
Rational ClearCase strumento che aiuta nel controllo delle
versioni del SW curando anche l’esattezza delle varie release di SW e tenendo traccia delle versioni e delle patch rilasciate. Aiuta quindi nella manutenzione del
pacchetto SW
Sull’interfaccia di Rational Rose ( e soprattutto sulla sua capacità di implementare UML ) si appoggiano anche molti altri CASE come ad esempio VisulAge di IBM.
Un CASE integrato molto importante è invece il CODEPAINTER della Zucchetti sviluppato principalmente per la realizzazione di applicazioni gestionali che devono lavorare in rete.
CODEPAINTER è capace di gestire,
organizzare ed automatizzare l’intero ciclo di vita del software, supportando
tutte le fasi: Analisi, Pianificazione, Prototipazione,
Codifica, Documentazione e Manutenzione.
CODEPAINTER combina, all’interno
di un unico sistema di sviluppo integrato, funzionalità di progettazione di applicazioni e di database con strumenti RAD consentendo
veloci prototipazioni e generazione di codice
sorgente. Inoltre utilizzando gli strumenti visuali,
tutti i prototipi possono essere completati e rifiniti per poi passare alla
generazione automatica del codice.
CODEPAINTER introduce in tutte le
applicazioni un Application Framework che contiene vari tools
per la gestione dei DB, la gestione della sicurezza, etc.
Inoltre CODEPAINTER possiede un
potente strumento di documentazione che crea automaticamente e mantiene sempre
aggiornata tutta la documentazione tecnica, la guida dell’utente e l’help in
linea.
La linea CODEPAINTER incorpora anche al suo interno il prodotto SITEPAINTER appositamente sviluppato per la creazione di sistemi Informativi (interi o parziali ) che devono essere acceduti tramite browser web. Le applicazioni Web generate da SITEPAINTER sono implementate con Java-Servlet dalla parte del server e con pagine HTML più Javascript dalla parte del client. Le Java-Servlet consentono la connessione ai più comuni database server e gestiscono la “Business Logic” del software applicativo; inoltre implementano ed utilizzano il protocollo di comunicazione tra il Client ed il Server. Per il resto l’applicazione SITEPAINTER comprende tutte le funzioni del CODEPAINTER.
SITEPAINTER usa java, javascript e HTML per lo sviluppo delle sue applicazioni e oltre ai S.O. e ai DB supportati da CODEPAINTER, supporta tutti i WEB Server che implementano java e in particolare APACHE, Microsoft Internet Information Server e IBM WebSphere.
Un altro ambiente CASE creato appositamente per lo sviluppo di applicazioni WEB di tipo data-intensive è il W3I3, i cui moduli sono stati sviluppati nell’ambito di alcune tesi di laurea presso il politecnico di Milano. Esso è nato sia dall’analisi dei requisiti principali che un’applicazione del genere deve possedere, sia dalle considerazioni critiche verso applicazioni dello stesso genere. L’architteturra W3I3 è incentrata sulle prestazioni dei componenti run-time (in modo da poter gestire anche elevatissimi volumi di traffico ) sulla interoperabilità ( bisogna consentire il supporto di piattaforme Web eterogenee come MS IIS, ASP, JSP, Java Servlet ), sulla modularità ( in modo da poter aggiungere o modificare rapidamente componenti per adattarsi al rapido sviluppo del Web ) sulla gestione di utenti e gruppi e sulla generazione di codice in molteplici linguaggi come HTML 3.2, HTML 4, HTML per palmtop, Java, WML per telefoni cellulari e BHTML per la TV digitale. L’architettura inoltre garantisce la massima portabilità delle applicazioni create supportando la scrittura del codice in java e la gestione dei dati di input e output in standard XML. Sempre in forza al principio di interoperabilità, si possono inserire nell’architettura molti moduli per la gestione dell’autenticazione di accesso, per il commercio elettronico, per procedure di recupero da errore, etc. Concettualmente l’ambiente CASE W3I3 può essere diviso in tre livelli principali:
· il livello di progettazione che contiene gli strumenti ( Site Designer e Presentation Manager ) per modellare le applicazioni Web e all’interno delle quali vengono prodotti gli schemi concettuali, i fogli di stile e i modelli di presentazione
· il livello di pre-esecuzione: contiene gli strumenti che si occupano di processare i fogli di stile e di trasformare la specifica di presentazione astratta in una rappresentazione dipendente dal linguaggio di rete scelto ( es HTML. WML ) e dal linguaggio di script scelto ( es. JSP, ASP ) .
· il livello di esecuzione che contiene tutti gli strumenti che curano la pubblicazione del sito Web, la gestione delle autorizzazioni di accesso e il collegamento dinamico tra i template e il contenuto informativo delle pagine sono solamente a run-time.