You are on page 1of 22

Curs 3.

Instrumente CASE

Asistăm astăzi la o evoluţie de neimaginat a calculatoarelor electronice, limbajelor de


programare şi metodologiilor de modelare şi, odată cu acestea, a instrumentelor de lucru
adecvate. Trăim într-o eră a cererilor. Clienţii vor de la dezvoltatorii de software tot mai
mult: ei vor calitate înaltă pentru produsele oferite, modificări rapide ale acestora, servicii
personalizate şi uşor de întreţinut, sisteme integrate şi livrări la preţuri cât mai mici. Şi
toate acestea imediat.
Pentru a răspunde acestor cerinţe, dezvoltatorii de software solicită din ce în ce mai
mult instrumentele CASE în diferite etape de proiectare şi realizare a sistemelor
informatice. Termenul CASE (Computer Aided Software Engineering) a fost introdus
pentru prima dată în anul 1987 de John Manley şi a desemnat instrumentele informatice
concepute pentru a fi utilizate în etapele de analiză şi proiectare, oferind facilităţi de
reprezentare grafică specifice acestor etape.
Adoptarea UML ca limbaj standard de modelare a influenţat benefic evoluţia
instrumentelor CASE şi a determinat o creştere sensibilă a interesului proiectanţilor
pentru ele. Astăzi dezvoltarea unei aplicaţii de dimensiuni medii sau mari nu mai poate fi
realizată eficient fără instrumente CASE adecvate.

Prin instrumente CASE înţelegem aplicaţiile software care-i sprijină pe analişti,


proiectanţi, programatori, inclusiv personalul de testare şi întreţinere, să analizeze, să
proiecteze, să implementeze (cel puţin parţial), să modifice (extindă), respectiv să
construiască teste pentru sistemele informatice.

Un produs de tip CASE reprezintă, aşadar, o colecţie de metode, instrumente şi


procese utilizate în ingineria software asistată de calculator. Aceste produse oferă suport
pentru automatizarea metodelor şi tehnicilor folosite pe parcursul ciclului de dezvoltare
de sisteme informatice, de aplicaţii, de programe. Un astfel de produs poate asista
dezvoltatorii pe durata ciclului de viaţă al sistemului dezvoltat, începând cu
managementul de proiect şi terminând cu asigurarea calităţii.
Utilizarea instrumentelor CASE nu este astăzi o problema de modă, ci de eficienţă în
activitatea de proiectare, realizare şi/sau dezvoltare de software. Într-un domeniu dinamic
si inovator apare permanenta nevoie de adaptare a proceselor de desfăşurare a afacerilor
şi a soluţiilor care le implementează. Menţinerea sistemelor existente devine din ce în ce
mai costisitoare, mai riscantă şi mai ineficientă.
În aceste condiţii producătorii mediilor de dezvoltare conectează astăzi la mediile lor
instrumente de modelare (CASE), iar pe de altă parte realizatorii de instrumente
favorizează o legare mai strânsă a instrumentelor la mediile de dezvoltare. La toate
acestea se adaugă standardizarea limbajelor de modelare, cererea tot mai mare pentru
aplicaţii complexe şi sigure, evoluţia nivelului pregătirii profesionale a realizatorilor de

  1
sisteme informatice, care au contribuit şi continuă să contribuie la schimbarea rolului şi a
nivelului de utilizare a instrumentelor CASE în procesul dezvoltării produselor software.
Poate cea mai concludentă maniera de a prezenta rolul CASE în dezvoltarea
sistemelor informaţionale constă în prezentarea următoarei istorioare: “Povestea
industriei CASE este similară cu cea a cizmarilor. Toată suflarea urbei purta pantofi
frumoşi, exceptându-i pe cizmar şi familia sa, pentru că nu avea suficient timp să-i
confecţioneze. Similar, în domeniul informaticii, analiştii, proiectanţii, programatorii au
fost preocupaţi numai de ideea cum să obţină produse cât mai performante pentru alţii,
printre care s-au aflat şi utilizatorii finali, fără să se mai îngrijească şi de propriile
instrumente de lucru. Rezultatul este cunoscut. Utilizatorii au înregistrat progrese
considerabile, datorită calităţii software-ului pus la dispoziţie, dar productivitatea
creatorilor de software nu a înregistrat aceleaşi cote”1.
Instrumentele CASE nu sunt şi nici nu pot fi creative. Ele sunt şi trebuie să fie în cel
mai înalt grad degrevative. De aceea, automatizarea tuturor activităţilor potrivite
reprezintă sarcina de bază pentru orice instrument CASE. În acest fel, instrumentele
sprijină utilizatorii să se concentreze asupra activităţilor cu adevărat creative.
Instrumentele CASE oferă în prezent un sprijin de necontestat realizatorilor de
produse software, produse a căror complexitate şi dimensiuni considerabile depăşesc cu
mult capacitatea de control a unei singure persoane sau chiar a unei echipe de specialişti.
Pentru a putea stăpânii multitudinea de informaţii ce trebuie prelucrate şi corelate, s-a
impus utilizarea unor metode de dezvoltare, care să stabilească reguli stricte de realizare a
software-ului. Aceste metode, mai întâi cele structurate bazate pe funcţii/date, iar apoi
cele orientate obiect au devenit coloana vertebrală a instrumentelor CASE. Aplicarea
riguroasă a acestor metode nu se poate face decât cu ajutorul calculatorului, dar şi
evoluţia CASE-urilor este strâns legată de modul în care au evoluta metodele pe care le
implementează. Evoluţia CASE-urilor şi a elementelor conjuncturale şi de mediu în care
s-au dezvoltat acestea, este următoarea:
- metode structurate de analiză şi proiectare – 1965
- tehnici de modelare a datelor – 1970
- limbaje de generaţia a patra pentru gestiunea de date – 1975
- instrumente de proiectare a specificaţiilor software – 1980
- instrumente pentru prototipizarea interfeţei utilizator – 1985
- instrumente pentru generarea automată a codului – 1990
- CASE-uri integrate, CASE-uri orientate obiect – 1995

În ultima perioadă (începând aproximativ din 1995), o serie de instrumente CASE au


fost construite sau extinse pe baza diferitelor metodologii orientate obiect care s-au impus
                                                            
1
Oprea, D. - Rolul sistemelor CASE în informatica de gestiune în File din cronica permanentelor
învăţământului şi culturii economice la Iaşi, Ed. Policromia, Piatra Neamţ, 1995, p. 260

  2
în ingineria software. Orientarea obiect nu este numai o tehnică de programare ci este, în
primul rând, o nouă modalitate de a gândi dezvoltarea de software.
Abordarea orientată obiect a elaborării aplicaţiilor a dus la transformări majore,
inclusiv în modelul de evoluţie. Astfel, de al modelul de ciclu de viaţă “în cascadă”, deja
perimat, s-a ajuns la modelul “în spirală” şi la “ingineria software bazată pe modele” care
au avantajul că reduc timpul de livrare al versiunilor, iar posibilităţile de dezvoltare de
noi versiuni şi de testare de către analişti şi utilizatori sunt mai mari. Pe de altă parte, fără
o arhitectură orientată obiect, software-ul nu este capabil să exploateze la maxim
facilităţile şi avantajele oferite de dezvoltări noi ale tehnologiei (GUI Builders,
multimedia, OLE-Object Linking and Embedding, etc.).

La ora actuală se vorbeşte deja despre generaţii de produse CASE.


O primă generaţie de CASE include facilităţi pentru diverse etape ale ciclului de
viaţă tradiţional sub forma de instrumente (de obicei disparate) pentru:
- planificarea strategică (la nivelul sistemelor complexe)
- etapa de analiză
- etapa de proiectare
- generare de cod
Această primă generaţie de produse CASE se caracterizează în primul rând prin aceea că:
- instrumentele vehiculează un număr mare de date
- oferă interfaţă grafică pentru utilizator
- sunt utilizate în general pe PC
- partea de generare de cod se referă la definirea datelor (ecrane, rapoarte, definiţii,
fragmente de cod).
Caracteristic acestei generaţii este faptul că instrumentele pot schimba între ele
informaţii şi pot coopera în realizarea diferitelor activităţi în cadrul ciclului de viaţă,
deoarece memorarea şi gestionarea informaţiilor se face utilizând o bază de date
relaţională şi sistemul de gestiune aferent.
O a doua generaţie de produse CASE cuprinde aceleaşi facilităţi şi în general
aceleaşi tipuri de instrumente cu deosebirea că s-a încercat ca generarea de cod să se
realizeze pe main-frame-uri pe care să existe un generator central de cod şi care să
stocheze codul generat într-un depozit.
Caracteristic acestei generaţii este faptul că permit lucrul în echipă pentru elaborarea
de proiecte de obicei complexe, asigurând în acelaşi timp facilităţi de management de
proiect. În general acestei generaţii îi aparţin CASE-uri care oferă suport pentru întreg
ciclul de viaţă, numite şi integrated-CASE sau I-CASE şi care oferă suport pentru
realizarea proiectelor folosind mai multe metode de analiză şi proiectare.
Generaţia a treia de CASE cuprinde CASE-urile ultimei perioade, numite şi medii
sau Workbench (banc de lucru), înţelegând prin aceasta o colecţie de instrumente CASE

  3
şi de alte componente integrate care asigură suportul pentru majoritatea tipurilor de
interacţiuni între componentele mediului şi între utilizator şi mediu.
Generaţia a treia de CASE presupune utilizarea acestora în organizaţii elaboratoare de
software şi este generaţia actuală care oferă:
- facilităţi individuale pe PC
- facilităţi la nivel de proiect pe LAN
- facilităţi la nivel de organizaţie pe mainframe.

În literatura de specialitate se recurge la clasificarea instrumentelor CASE în două


categorii:
- instrumente CASE de nivel superior, utilizate în fazele de analiză şi de proiectare ale
procesului de dezvoltare a sistemelor (acestea asigură realizarea diagramelor,
generarea formularelor şi a rapoartelor etc.);
- instrumente CASE de nivel inferior, care permit proiectarea şi realizarea sistemului
vizat (CASE pentru implementare, verificare, stabilire a configuraţiei etc.).

O alternativă la această clasificare a instrumentelor CASE este propusă în


(Sommerville, 2007). Clasificarea aceasta ajută la diferenţierea instrumentelor CASE şi a
rolurilor acestora în suportarea diverselor activităţi aferente procesului software şi se
bazează pe diferenţierea între trei perspective de înţelegere a rolului instrumentelor
CASE:
- Perspectiva funcţională – instrumentele CASE se clasifică pe baza funcţiilor specifice
furnizate.
- Perspectiva orientată proces – instrumentele se clasifică în funcţie de activităţile de
proces pe care le suportă.
- Perspectiva integraţională – instrumentele CASE se clasifică în funcţie de modul în
care sunt organizate în unităţi integrate ce furnizează suport pentru unul sau mai
multe activităţi ale procesului software.

Din punct de vedere al perspectivei funcţionale instrumentele CASE se clasifică


astfel:

Tip de instrument CASE Exemple

Instrumente de planificare Instrumente PERT, instrumente de estimare, spreadsheets

Instrumente de editare Editoare text, editoare de diagrame, procesoare word

Instrumente de gestiune a Instrumente de gestiune a cerinţelor, sisteme de control a


modificărilor modificărilor

  4
Instrumente de management Sisteme de management a versiunilor, instrumente de
a configurărilor construcţie a sistemelor

Instrumente de prototipare Limbaje de nivel foarte înalt, generatoare de interfeţe


utilizator

Instrumente de suport a Editoare de proiect, dicţionare de date, generatoare de cod


metodelor

Instrumente de procesare a Compilatoare, interpretoare


limbajului

Instrumente de analiză a Generatoare de referinţe încrucişate, analizoare statice,


programului analizoare dinamice

Instrumente de testare Generatoare de date de test, comparatoare de fişiere

Instrumente de depanare Sisteme de depanare interactivă

Instrumente de documentare Programe de formatare a paginilor, editoare de imagini

Instrumente de re- Sisteme de referinţe încrucişate, sisteme de restructurare a


engineering programelor

Figura următoare prezintă o clasificare a instrumentelor CASE din perspectiva fazelor


de proces suportate de acestea. În această clasificare întâlnim instrumente ce asistă
diversele etape, dar şi instrumente de planificare şi estimare, editare de text, pregătirea
documentelor şi managementul configuraţiei care pot fi folosite pe parcursul întregului
ciclu de dezvoltare al procesului software.

  5
Suportul oferit procesului software reprezintă o altă dimensiune posibilă de clasificare
a instrumentelor CASE. Conform acestei dimensiuni, instrumentele CASE se pot
clasifica în trei categorii:
1. Instrumente (eng. Tools) – suportă activităţi de proces individuale precum verificarea
consistenţei proiectului, compilarea unui program sau compararea rezultatelor testelor
de verificare. Instrumentele pot avea un scop general, pot fi instrumente de sine
stătătoare (de ex. un procesor word) sau pot fi grupate în medii de lucru.
2. Medii de lucru (eng. Workbenches) – suportă faze sau activităţi ale procesului
software, precum specificaţia, proiectarea, etc. Acestea sunt compus adesea din seturi
de instrumente având diverse grade de integrare.
3. Medii de dezvoltare (eng. Environments) – suportă toate sau cel puţin un set
substanţial al activităţilor procesului software. De obicei sunt compuse din mai multe
medii de lucru integrate.

Figura următoare ilustrează această clasificare şi arată câteva exemple ale diverselor
clase de instrumente CASE. Figura prezintă doar un exemplu ilustrativ; în realitate pot
exista diverse alte instrumente şi medii de lucru.

  6
În practică graniţele între aceste clase sunt adesea greu de stabilit. Instrumentele pot fi
vândute ca un singur produs, dar pot oferi suport pentru o serie de alte activităţi. De
exemplu, majoritatea procesoarelor word furnizează astăzi un editor de diagrame sau de
imagini încorporat. Mediile de lucru CASE pentru proiectare suportă adesea şi
programarea şi testarea, putând fi considerate medii de dezvoltare mai degrabă decât
medii de lucru specializate. Din acest motiv e dificil câteodată de specificat poziţia exactă
a unui produs în această clasificare. Cu toate acestea clasificarea poate ajuta la înţelegerea
diferenţelor de suport furnizate de diversele instrumente CASE.

Aşadar, câteva dintre componentele de bază ale unui instrument CASE sunt
următoarele:
- depozitul de date (data repository) – o componentă obligatorie, care acumulează şi
stochează, în mod organizat, toate informaţiile introduse de diferite persoane, la
momente diferite de timp, care vor servi în etapele de analiză, proiectare şi creare a
codului; în structura depozitului de date se pot delimita depozitul de informaţii
(Information Repository) – conţinând informaţiile despre afacerea organizaţiei şi
despre portofoliul său de aplicaţii - şi dicţionarul de date (Data Dictionary), care
specifică numele (identificatorii) şi descrierea datelor, gestionează controlul accesului
la depozitul de informaţii, conţine descrierile resurselor necesare prelucrărilor datelor;
- editorul de diagrame – componentă obligatorie facilitând realizarea şi modificarea
diagramelor specifice metodologiei pentru a fost creat instrumentul CASE respectiv;
- analizorul de structură – găseşte şi elimină erorile dificil de localizat după culegerea
informaţiilor, efectuând comparaţii între datele nou introduse şi cele deja existente în
baza de informaţii;
- instrumente pentru aşa – numitul proces de reverse engineering – inginerie inversă –
care asigură actualizarea diagramelor conform schimbărilor realizate în codul sursă;
- generatorul de cod, componentă care poate converti în cod diagramele realizate în
faza de proiectare;

  7
- navigatorul specializat, instrument pentru vizualizarea informaţiilor unui ansamblu de
entităţi care au o structură complexă, între care există un mare număr de relaţii;
- generatorul de documentaţie, care include modele de documente, oferind utilizatorilor
posibilitatea de a-şi concepe propriile documente într-o manieră flexibilă;
- generatorul de formulare şi de rapoarte, menit să conceapă interfeţele
(interactivitatea) produsului cu utilizatorii;
- componentele de transformare, care permit trecerea de la un model sau o diagramă la
alt model, respectiv la altă diagramă;
- instrumentele pentru managementul de proiect, ce oferă facilităţi destinate gestiunii
configuraţiei fiecărui proiect (proiectul de aplicaţie, codul şi documentaţia unui
sistem dezvoltat);
- instrumentele de verificare automată a aplicaţiei.

Avantajele instrumentelor CASE sunt desprinse din funcţiile de bază pe care le


sprijină, funcţii grupate în patru mari categorii2:
1. realizarea automată a documentaţiei sistemelor. Se ştie, din observarea modului
practic de realizare a sistemelor informaţionale, că documentaţia şi specificaţiile de
proiectare reprezintă piesele de bază ale unui proiect de dezvoltare. Dar, din lipsă de
timp sau din neglijenţă, documentaţia este ultimul lucru la care se gândesc cei din
echipa de realizare, ceea ce determină ca după implementarea sistemului şi mai ales
în timpul exploatării şi întreţinerii lui să se consume un timp foarte mare din lipsa
informaţiilor privind detaliile de proiectare a sistemului. Prin instrumentele CASE,
documentaţia şi specificaţiile sistemului se pot obţine automat pe baza depozitului
datelor, oferind astfel posibilitatea ca echipa de specialişti să nu mai fie “sufocaţi” şi
de această responsabilitate;
2. automatizarea parţială sau totală a fazelor de analiză şi proiectare a sistemelor, ceea
ce determină scurtarea ciclului de viaţă al sistemelor, creşterea calităţii lor şi
eliminarea erorilor de proiectare, prin faptul că instrumentele CASE dispun de
module de verificare şi validare, de tehnici de normalizare a datelor şi chiar de proto-
tipizare a sistemelor;
3. coordonarea/managementul proiectelor de dezvoltare a sistemelor, în sensul că sunt
puse la dispoziţia membrilor echipei de proiectare informaţii cu privire la activităţile
desfăşurate şi rezultatele obţinute, astfel încât există posibilitatea ca în orice moment
să se cunoască cu exactitate stadiul de dezvoltare al sistemului, timpul şi resursele
consumate;
4. generarea automată a codului-sursă al aplicaţiilor. Una din promisiunile CASE-ului
o constituie susţinerea eforturilor din faza de formulare a cerinţelor şi până în faza de
                                                            
2
Powers, M. J., Cheney, P. H., Crow, G. – Structured Systems Development. Analysis, Design,
Implementation, 2nd Edition, Boyd & Fraser Publishing company, Boston, 1990, pp. 239-243

  8
implementare şi întreţinere. Se pare că această promisiune se regăseşte în cea mai
mare parte în activitatea de generare a codului sursă al aplicaţiilor prin intermediul
generatoarelor de coduri şi a limbajelor de generaţia a patra.
Prin aceste funcţii nu se urmăreşte numai creşterea calităţii sistemelor, ci şi a
eficacităţii procesului de dezvoltare a lor, adică a modului în care răspund cerinţelor şi
obiectivelor utilizatorilor sau cât de bine concordă sistemul cu obiectivele pe termen lung
şi scurt ale organizaţiei. Eficacitatea realizării sistemelor, spre deosebire de eficienţă, este
mai dificil de determinat. Totuşi, există câteva căi prin care aceasta poate fi evaluată, şi
anume: gradul de standardizare, nivelul de comunicare între membrii echipei de realizare
a sistemului, reducerea timpului de dezvoltare a sistemului.

Ca un studiu de caz, menţionăm modul în care instrumentele CASE pot susţine


activităţile de modelare a sistemului. Cerinţele utilizatorilor sunt adesea scrise în limbaj
natural deoarece ele trebuie înţelese de persoane ce nu au o pregătire tehnică. Totuşi
unele cerinţe ale sistemului pot fi adesea exprimate folosind o abordare mai tehnică. O
metodă folosită adesea este reprezentată de documentarea specificaţiilor sistemului ca un
set de modele de sistem. Aceste metode reprezintă reprezentări grafice ce descriu
procesele de business, problema ce trebuie rezolvată şi sistemul ce se doreşte a fi
dezvoltat. Datorită folosirii reprezentărilor grafice modelele sunt adesea mai bine înţelese
decât descrierile făcute în limbaj natural a cerinţelor sistemului. Ele reprezintă, de
asemenea, o punte importantă de legătură între procesele de analiză şi proiectare a
sistemului.
Modelele pot fi folosite în procesul de analiză pentru înţelegerea şi dezvoltarea
sistemului extins ce trebuie îmbunătăţit sau înlocuit sau pentru specificarea unui sistem
nou cerut. Pot fi dezvoltate diverse modele pentru reprezentarea sistemului din diverse
perspective. De exemplu:
- O perspectivă externă prin care este modelat contextul sau mediul sistemului;
- O perspectivă comportamentală prin care este modelat comportamentul sistemului;
- O perspectivă structurală prin care este modelată arhitectura sistemului sau structura
datelor ce sunt procesate în cadrul sistemului.
Cel mai important aspect al modelării sistemului este reprezentat de faptul că acesta
omite o serie de detalii. Un model al sistemului reprezintă o abstractizare a sistemului
studiat şi nu o reprezentare alternativă a sistemului. Ideal, o reprezentare a sistemului ar
trebui să menţină toate informaţiile referitoare la o entitate reprezentată. O abstractizare
simplifică voit şi include doar cele mai importante caracteristici ale sistemului.
Diverse tipuri de modele de sistem folosite sunt, de altfel, bazate pe diverse abordări
ale abstractizării. Un model orientat spre date, de exemplu, se concentrează pe fluxul de
date şi pe transformările funcţionale suferite de acestea. Pentru un astfel de model nu sunt
de interes structurile de date folosite. Prin constrast, un model al entităţilor de date şi a
relaţiilor ajută la documentarea structurilor de date folosite în sistem.
Exemple de tipuri de modele de sistem posibil create de-a lungul fazei de analiză
includ:

  9
1. Modelul flux de date. Modele fluxurilor de date arată modul în care sunt procesate
datele în diversele etape ale funcţionării sistemului.
2. Modelul compozit. O compoziţie sau un model agregare arată modul în care entităţile
sistemului sunt compuse din alte entităţi.
3. Modelul arhitectural. Modelele arhitecturale prezintă principalele subsisteme ce
compun sistemul.
4. Modelul clasificare. Clasele de obiecte/diagramele de moştenire prezintă modul în
care entităţile sistemului prezintă caracteristici comune.
5. Modelul stimul-răspuns. Un model stimul-răspuns, sau o diagramă stare tranziţie,
arată modul în care sistemul reacţionează la evenimente interne şi externe.

La ora actuală există trei mari categorii de instrumente CASE, în funcţie de metodele
pe care le au la dispoziţie: instrumente care pun la dispoziţie metode specifice
metodologiei structurate, cele ce conţin metodele specifice metodologiei orientate obiect
şi o categorie hibrida, obţinută din combinarea celorlalte două. O metodă structurată
reprezintă o modalitate sistematică de a produce diverse modele ale unui sistem construit
sau care urmează a fi construit. Din categoria instrumentelor CASE specifice
metodologiei orientate obiect există unele bazate pe diagrame UML. Instrumentele
CASE pentru analiză şi proiectare cel mai adesea folosite astăzi suportă crearea, editarea
şi analiza notaţiilor grafice folosite în cazul metodele structurate. Figura următoare
prezintă diverse componente ce pot fi incluse ca suport al mediului.

Instrumentele suport pentru activităţile de proiectare şi analiză pot include:


1. Editoarele de diagrame sunt folosite pentru crearea de modele ale obiectelor, modele
ale datelor, modele comportamentale, etc. Aceste editoare sunt mai mult decât
instrumente de desenare grafică şi includ diverse tipuri de entităţi în diagrame. Ele

  10
captează diverse informaţii legate de entităţi şi pot salva informaţii în repository-ul
central.
2. Instrumentele de analiză şi verificare a proiectului ajută la procesarea proiectului şi
raportează erori şi anomalii. Acestea pot fi integrate cu sistemul de editare astfel încât
erorile utilizatorului să fie regăsite într-un stagiu timpuriu al procesului software
(multe IDE-uri includ verificatoare just-in-time ale corectitudinii sintaxei limbajului
de programare suportat).
3. Limbaje de interogare a repository-ului permit proiectantului regăsirea erorirlor şi a
informaţiilor asociate de proiectare în repository-ul central.
4. Dicţionarul de date menţine informaţii relative la entităţile folosite într-un proiect al
sistemului.
5. Instrumentele de definire şi generare a rapoartelor preiau informaţia din repository şi
generează, în mod automat, documentaţie privind sistemul.
6. Instrumente de definire a formularelor permit specificarea de formate pentru ecrane
şi documente.
7. Facilităţile de import/export permit schimbul de informaţii din repository-ul central
cu diverse ale instrumente de dezvoltare.
8. Generatoarele de cod pot genera cod sau schelete de cod automat pornind de la
proiectul sistemului definit şi păstrat în repository-ul central.

Multe instrumente CASE permit generarea unui program sau a unui fragment de
program pornind de la informaţiile furnizate de modelul sistemului. Instrumentele CASE
suportă adesea diverse limbaje de programare astfel încât utilizatorul poate genera un
program în C, C++ sau Java pornind de la acelaşi model al proiectului. Deoarece
modelele exclud detalii de nivel scăzut generatorul de cod adesea nu va putea genera în
întregime întreg sistemul. Din această cauză este adesea necesară intervenţia directă a
dezvoltatorului pentru adăugarea detaliilor în codul generat.

Exemple de produse CASE

Utilizarea instrumentelor CASE îmbunătăţeşte considerabil calitatea procesului de


realizare a sistemelor informatice prin metode bine fundamentate, asigurând: diminuarea
complexităţii logicii de descriere a sistemului, definirea riguroasă a obiectivelor, uşurinţa
efectuării schimbărilor, identificarea variantei optime de proiectare, creşterea vitezei de
realizare a sistemelor, a disciplinei de proiectare şi a integrării, posibilitatea folosirii
depozitelor modularizate, constituirea bibliotecilor de module de documente, realizarea
interfeţei pentru generarea de coduri, realizarea unei documentaţii flexibile şi dinamice,
realizarea succesivă a componentelor unui sistem.
Ca urmare, creşte viteza de proiectare şi realizare a acestora, se îmbunătăţeşte
calitatea testării lor, a documentaţiei elaborate, se promovează ideea de reutilizare a unor

  11
componente şi se simplifică întreţinerea programelor, se îmbunătăţeşte managementul
proiectelor şi conduce spre standardizarea procesului de dezvoltare a sistemelor.
La ora actuală există o gamă variată de instrumente CASE ce pot fi folosite pentru
automatizarea procesului de producţie software (a se vedea de exemplu http://
www.objectfaq.com/oofaq2/body/case.htm sau http://www.unl.csi.cuny.edu/faqs/softwar
e-enginering/tools.html). În cele ce urmează prezentăm unele dintre cele mai cunoscute
instrumente.

Microsoft Visio Professional (2007)

Microsoft Visio Professional (2007) furnizează soluţii de tip diagrame pentru


documentarea şi comunicarea unei palete largi de idei, informaţii şi sisteme. Diagramele
create în Microsoft Visio Professional aduc plusul de valoare necesar în sistemele
existente şi ajută profesioniştii la crearea altora noi. Când se folosesc pentru însoţirea
textelor şi a cifrelor, diagramele Visio fac ca mesajul să fie mai concis, ajută la reţinerea
cu uşurinţă a acestuia şi permit depăşirea obstacolelor tehnice şi culturale.
Microsoft Visio introduce, de asemenea, un set de diagrame şi scheme care fac din
acest program un adevărat „erudit” dedicat dezvoltării unei documentaţii vizuale
specifice celor mai diverse domenii. De asemenea, dezvoltatorii de software, site-uri Web
şi baze de date, precum şi administratorii de reţea au la dispoziţie, prin intermediul
diagramelor specializate oferite de Visio, un inteligent asistent dedicat automatizării
activităţilor specifice. Se poate spune că diagramele realizate prin Visio aduc o nouă
dimensiune informaţiei din documentele Office, oferind utilizatorului posibilitatea de a
transmite rapid idei şi concepte într-un limbaj vizual.

  12
Folosind Office Visio 2007 se pot crea diagrame profesioniste ce comunică o mare varietate de 
informaţii şi care pot fi împărţite cu o audienţă largă. 
 

Folosind marea diversitate de tipuri de diagrame puse la dispoziţie de Office Visio 2007 se pot înţelege 
mai bine procese, resurse şi sisteme complexe.  
 

Folosind Office Visio Professional 2007 se pot vizualiza date prin folosirea de diagrame pentru 
identificarea unor probleme şi excepţii posibile ce pot apărea.

  13
IBM Rational Unified Process

IBM Rational Unified Process (RUP) este o concepţie de dezvoltare software, gândită,
dezvoltată, livrată şi întreţinută ca un framework. RUP este creat şi documentat folosind
UML şi este livrat on-line de către Rational Software Corporation, o divizie a IBM. Se
fac upgrade-uri în mod regulat de către Rational Software la aproximativ 2 ani. Fiind
modular şi în format electronic, el poate fi configurat şi personalizat pentru a răspunde
cerinţelor specifice fiecărei organizaţii. Este integrat cu foarte multe unelte de dezvoltare
software în suitele Rational, astfel încât dezvoltatorii pot să acceseze fie asistenţa
proceselor în cadrul uneltei pe care o folosesc, fie să acorde o asistenţă a proceselor,
consistentă şi personalizată pentru echipa de realizare.
După cum se poate observa din figura următoare, ciclul de dezvoltare RUP este
alcătuit din patru faze secvenţiale (partea de sus a diagramei) ce modelează aspecte din
derularea proiectului software financiare, strategice, comerciale şi umane. Nouă activităţi
(partea stângă a diagramei) modelează aspectele tehnice ale dezvoltării proiectului,
incluzând modelarea proceselor de business, implementare, testare şi altele.
Fiecare fază a unui proiect RUP este împărţită în iteraţii (partea de jos a diagramei).
Acestea cuprind activităţi de dezvoltare ce produc variante (releases) a software-ului final
executabil.

Fiecare persoană are un rol în arhitectura RUP (după cum se poate observa din figura
următoare) şi este responsabil de un set de activităţi şi de un set asociat de produse
obţinute (numite artifacts). Producerea fiecărui artifact este susţinută de un set de linii de
ghidare (guidelines), ce arată cum sunt dezvoltare, evaluate şi folosite artifact-urile.
Fiecare activitate este susţinută de un guideline ce explică cum trebuie ea implementată.
Componenta „tool mentor” descrie cum pot ajuta instrumentele software fiecare dintre
activităţi.

  14
Elemente cheie ale IBM Rational Unified Process

Toate instrumentele automatizate din suita IBM Rational sunt proiectate pentru a
suporta conceptul RUP. Figura următoare prezintă o selecţie de instrumente pentru
planificare, configurare, managementul cerinţelor şi modelare vizuală ce furnizează
suport automatizat pentru dezvoltarea artifactelor de program, permiţând echipei de
dezvoltare salvarea timpului, reducerea efortului şi îmbunătăţirea comunicării.

  15
Instrumentele din suita IBM Rational care susţin conceptul RUP sunt următoarele:
IBM Rational® Requisite Pro®
Furnizează o bază de date centralizată a tuturor cerinţelor programelor dezvoltate. Este
integrat cu Microsoft Word, aspect ce permite importarea tuturor cerinţelor descrise în
documentul cerinţelor direct în baza de date. Dintre beneficiile produsului amintim:
- Repository central al cerinţelor ce ajută comunicarea între membrii echipei de
dezvoltare.
- Ajută la gestionarea schimbărilor şi la evaluarea impactului schimbărilor asupra
produsului software dezvoltat.
- Permite echipei o gestiune a scopului programului.
- Ajută la verificarea ca toate cerinţele produsului software să fie îndeplinite la livrare.
Familia de produse IBM Rational Rose®
Permite analiştilor de business modelarea proceselor de business, folosind Unified
Modelling Language (UML). Dintre beneficii amintim:
- Ajută la vizualizarea de către echipă a proceselor de business.
- Îmbunătăţesc comunicarea între acţionari şi clarificarea cerinţelor de business.
- Ajută la gestionarea complexităţii.
- Ajută la capturarea fenomenelor de business vitale pentru produsul final şi înţelegerea
lor de către echipele de dezvoltare.
IBM Rational Soda®

  16
Automatizează generarea şi mentenanţa documentaţiilor şi rapoartelor generate în
diversele activităţi de dezvoltare. Beneficii:
- Reducerea timpului şi efortului necesar în producerea documentaţiei aferente
dezvoltării programului.
- Producerea de rapoarte la termen, actualizate şi consistente privind datele activităţilor
implicate de procesul de dezvoltare.
- Oferă capabilităţi de publicare online (Web) a documentelor şi rapoartelor.
IBM Rational ClearCase®
Gestionează modificările apărute în cadrul produselor dezvoltare şi furnizează un control
automatizat al diverselor versiuni software. Beneficii:
- Gestiunea automată a modificărilor.
- Protejarea integrităţii produselor dezvoltate.
IBM Rational ClearQuest®
Automatizează procesele aferente managementului problemelor, riscurilor şi
modificărilor. Beneficii:
- Salvarea timpului şi efortului şi îmbunătăţirea preciziei managementului prin
automatizarea proceselor de modificare manuală a diverselor documente aferente
activităţilor de dezvoltare a produsului software.
- Furnizează rapoarte asupra managementului problemelor, riscurilor şi modificărilor
apărute.
IBM Rational Project Console®
Automatizează procesul de cercetare şi raportare a stării curente a dezvoltării produsului
software. Include metrici asupra progresului în format Web şi poate fi adaptat pentru a
captura diverse metrici privind beneficiile curente ale dezvoltării. Beneficii:
- Salvarea timpului necesar creării, construirii şi menţinerii unui site Web privind
progresul curent al procesului de dezvoltare software.
- Salvarea timpului şi efortului presupus de colectarea manuală a stării diverselor
activităţi de dezvoltare.
- Furnizează un punct unic de depozit a informaţiilor actualizate privind starea
proiectului ce poate fi folosit de către toţi membrii echipei de dezvoltare.

Pe lângă aceste instrumente, pentru dezvoltare RUP se foloseşte de următoarele


componente:

Pentru configurarea procesului:


Constructor RUP (RUP Builder). Un proces simplu, în patru etape, care ajută la
selectarea unei configuraţii de bază, folosirea plug-in-urilor în alte componente

  17
ale procesului, configurarea viziunilor procesului şi publicarea RUP-ului
personalizat. Avantaj: permite managerilor de proiect şi conducătorilor de echipă
să selecteze şi să foloseasca doar acele componente ale procesului care sunt
relevante pentru proiectul lor.
RUP Plug-ins. Elemente care pot fi downloadate şi care conţin o varietate de
componente de proces adaptate la instrumente , tehnologii sau domenii specifice.
Avantaj: elasticitate la schimbările de tehnologie şi posibilitatea combinării de
plug-in-uri multiple pentru crearea unei configuraţii a procesului potrivită pentru
mediul specific al oricărui proiect.
Pentru conceperea procesului:
IBM Rational Process Workbench. Organizatorul RUP permite integrarea facilă a
conţinutului şi asistenţei procesului din organizaţe în diverse configuraţii RUP.
Modelatorul RUP permite schimbări în modelul procesului prin adăugarea,
ştergerea sau modificarea componentelor sau activităţilor. Avantaj: un nivel
ridicat de integrare a procesului organizaţiei în asistenţa RUP.
Pentru livrarea procesului:
MyRUP şi Process Views. Permit accesarea de subseturi de informaţii de proiecte
de proces adaptate pentru diferiţi indivizi sau roluri. MyRUP permite fiecărui
individ să-şi contureze propria sa viziune asupra proiectului. Avantaj: permite
fiecărui utilizator să acceseze asistenţa cea mai relevantă pentru proiectul acestuia,
îmbunătăţind adoptarea procesului în cadrul echipei.
Asistenţi de instrument (Tools Mentors). Oferă asistenţă pentru utilizarea
instrumentelor Rational în scopul îndeplinirii sarcinilor RUP. Avantaj: face
procesul practic şi ajută membrii echipei să înţeleagă cum pot folosi mai bine
instrumentele Rational în maniera cea mai eficientă.
Ajutor extins (Extended Help). Oferă asistenţă RUP adaptată la context direct din
interiorul instrumentelor Rational. Avantaj: promovează folosirea mai eficientă a
instrumentelor, accelerând reîntoarcerea investiţiei.
Pentru comunitatea şi piaţă:
IBM Rational developer Network . Este un portal Web creat în mod specific
pentru echipele care folosesc instrumente Rational RUP conţinând articole şi
lucrări, specializări bazate pe Web şi forumuri de discutie; oferă o resursă
mondială şi o comunitate pentru utilizatorii de RUP.

RUP include multe din practicile cele mai bune ale dezvoltării de software modern,
într-o formă potrivită, pentru o varietate largă de proiecte şi organizaţii, cum sunt:
1. Dezvoltarea de software iterativ. Majoritatea echipelor de proiectare folosesc încă un
model în cascadă pentru dezvoltarea de proiecte, completând într-o ordine strictă: analiza
cerinţelor, modelarea, implementarea/integrarea şi testarea. Această abordare ineficientă
opreşte din muncă membri importanţi ai echipei, pe perioade îndelungate şi amână
testarea proiectului până la sfârşitul realizării lui, când problemele tind să fie dificil şi

  18
costisitor de rezolvat, reprezentând o ameninţare serioasă pentru realizarea termenului de
predare. În contrast, RUP reprezintă o abordare iterativă care este superioară cel puţin din
următoarele motive:
- Permite evaluarea schimbării cerinţelor. De regulă, cerinţele se schimbă şi au efecte
negative asupra termenului de predare, a satisfacerii clienţilor, etc.
- Integrarea nu este o mare explozie la sfârşit. În schimb, elementele sunt integrate
progresiv, aproape continuu.
- Riscurile sunt de regulă descoperite sau rezolvate în timpul integrării. Cu o abordare
iterativă, riscurile pot fi descoperite mai devreme. Pe măsura derulării iteraţiilor se
testează toate componentele de proces, tratând multe aspecte ale proiectului cum ar fi
uneltele software, versiune finala, talentele oamenilor, etc. Se poate vedea foarte
repede dacă riscurile estimate se dovedesc a fi reale şi se pot descoperi riscuri noi,
neprevăzute, atunci când ele sunt mai usor şi mai puţin costisitor de rezolvat.
- Dezvoltarea iterativă furnizează managementului un mijloc de a face schimbări
tactice produsului în diversele etape implicate de dezvoltarea produsului. Aceasta
permite realizarea şi livrarea unei variante iniţiale, având o funcţionalitate redusă,
pentru a contracara o mişcare a unui competitor.
- Iterarea facilitează refolosirea. E mai uşor identificarea părţilor comune pe măsura ce
sunt parţial create sau implementate decât să fie recunoscute în timpul planificării.
Prevederea descrierii în iteraţiile iniţiale permite proiectanţilor să remarce
oportunităţile potenţiale pentru refolosire şi apoi să dezvolte şi să aducă la maturitate
cod comun pentru aceste oportunităţi în iteraţiile următoare.
- Când se pot corecta erorile pe parcursul a câtorva iteraţii, rezultatul este o arhitectură
mai robustă. Pe măsură ce produsul avansează de la concepţie spre realizare erorile
sunt detectate chiar în iteraţiile intermediare. Testarea, din această cauză, este mai
sigură decât în cazul folosirii unei faze de testare unice, masivă, la sfârşit.
Ştrangulările de performanţă sunt şi ele descoperite într-un moment când pot fi încă
rezolvate.
- Dezvoltatorii pot să înveţe pe parcursul elaborării: testerii încep testarea mai repede,
programatorii încep scrierea programelor mai repede, etc. Într-o dezvoltare non-
iterativă aceiaşi oameni ar trebui sa aştepte sfârşitul unor etape anterioare până să
poată începe munca.
- Însuşi procesul de dezvoltare poate fi îmbunătăţit şi rafinat pe parcurs.
În RUP abordarea iterativă este foarte bine controlată: numărul, durata şi obiectivele
fiecărei iteraţii sunt planificate, sarcinile şi responsabilităţile participanţilor sunt bine
definite.
2. Administrarea cerinţelor. Aceasta presupune o abordare sistematică pentru solicitarea,
organizarea, comunicarea şi administrarea cerinţelor, în continuă adaptare şi modificare,
ale unui sistem sau aplicaţie software. Beneficiile unei administrări corecte ale cerinţelor
sunt multiple:
- Control mai bun al proiectelor complexe. Aceasta include înţelegerea mai bună a
comportării sistemului, precum şi prevenirea degradării cerinţelor.

  19
- Calitate mai bună a produsului software. Măsura fundamentală a calităţii este aceea
că un sistem face ceea ce este gândit să facă.
- Costuri şi întârzieri reduse ale proiectului. Repararea erorilor provenind din cerinţe
incomplete sau greşit specificate este foarte costisitoare. Cu o administrare corectă a
cerinţelor poate scădea numărul erorilor în fazele iniţiale ale dezvoltării, scăzând
implicit şi costurile proiectului şi prevenind întârzierile pe parcurs.
- O comunicare mai bună în cadrul echipei. Administrarea cerinţelor facilitează
implicarea utilizatorilor încă din fazele iniţiale ale procesului, ducând la o asigurare
că, în final, aplicaţia satisface nevoile acestora.
- De regulă este dificilă analizarea unui model de sistem orientat obiect tradiţional şi
precizarea tuturor funcţionalităţilor acestuia (cum face sistemul ceea ce este gândit să
facă). Această dificultate apare datorită lipsei vizibilităţii unor legături consistente în
cadrul sistemului atunci când acesta realizează anumite sarcini. Prin RUP use cases
este furnizată această legatură prin definirea comportamentului realizat de sistem. Use
cases nu sunt necesare în gândirea orientată obiect tradiţională, dar nici nu reprezintă
un element obligatoriu în RUP. Când ele există totuşi, ele furnizează o legatură
importantă între cerinţele sistemului şi alte elemente de dezvoltare cum ar fi modelul
şi testele necesare verificării funcţionalităţii acestuia. Alte metode orientate obiect
furnizează reprezentări ca şi use cases, dar folosesc nume diferite pentru ele cum ar fi
scenario sau fire de prelucrare. RUP este deci o abordare condusă de use cases, ceea
ce înseamnă ca use cases definite pentru sistem pot servi ca bază pentru restul
procesului de dezvoltare.
3. Utilizarea arhitecturii bazate pe componente.
Use cases conduce RUP de-a lungul întregii perioade de viaţă a unui sistem informatic,
dar activităţile de design sunt concentrate pe arhitectură, fie de sistem, fie software,
pentru sistemele intensive. Obiectivul principal al iteraţiilor iniţiale îl constituie
producerea şi validarea unei arhitecturi software. În ciclul de dezvoltare iniţial aceasta ia
forma unui prototip arhitectural executabil care evoluează gradat, prin iteraţii succesive,
către sistemul final. RUP furnizează în acest sens o cale metodică şi sistematică de
concepere, dezvoltare şi validare a unei arhitecturi. El oferă template-uri pentru
descrierea unei arhitecturi bazate pe conceptul unor viziuni arhitecturale multiple.
4. Modelarea vizuală a software-ului.
Modelele sunt reprezentări simplificate ale realităţii. UML este un limbaj grafic pentru
vizualizarea, specificarea, construirea şi documentarea elementelor unui sistem intensiv
software. El furnizează un mijloc standard de descriere a structurii sistemului, acoperind
elemente conceptuale cum ar fi procese de afaceri şi functii sistem, precum şi elemente
concrete cum ar fi clase, schema bazei de date şi componente software reutilizabile.
În timp ce UML furnizează vocabularul pentru a exprima diferite modele, el nu
specifică cum este dezvoltat produsul software. Acesta este motivul pentru care firma
Rational a dezvoltat RUP, un ghid pentru folosirea efectivă a UML pentru modelare. El
descrie modelele de care avem nevoie, de ce este nevoie de ele şi cum sunt ele folosite în
procesul de construcţie a produsului software final. RUP 2000 foloseşte versiunea UML
1.4.

  20
5. Verificarea permanentă a calităţii software.
Potrivit concepţiei RUP calitatea proiectului este asigurată de fiecare membru al echipei
de dezvoltare. RUP se concentrează în ceea ce priveşte calitatea asupra a două concepte:
- calitatea produsului, care reprezintă calitatea produsului principal şi a tuturor
elementelor componente;
- calitatea procesului, care este gradul în care un proces acceptabil a fost implementat şi
acceptat în procesul de realizare; în plus, calitatea procesului este preocupată şi de
calitatea elementelor (planuri de testare, de iteraţii, realizarea de use cases, etc.)
produse în sprijinul echipei de realizare.

IBM RUP este deci o platformă configurabilă de dezvoltare a proceselor software


care oferă cele mai bune metode şi o arhitectură configurabilă care permite selectarea şi
utilizarea numai a acelor componente ale proceselor de care este nevoie pentru fiecare
etapă a proiectului.
IBM RUP include utilitare pentru configurarea necesităţilor specifice ale proiectului,
unelte pentru dezvoltarea experienţei în dezvoltarea componentelor proceselor, unelte de
livrare puternice şi adaptabile bazate pe Web şi o comunitate online pentru schimburi de
experienţă între utilizatori şi realizatori. În acest sens RUP este o infrastructură a
metodologiei de dezvoltare software şi o platformă practică flexibilă şi de success pentru
asistarea şi îndrumarea dezvoltatorilor de software.

Designer 2000

Designer 2000 (produs al firmei Oracle) este destinat analiştilor de sistem,


programatorilor şi managerilor de proiect. El conţine un set puternic şi integrat de
instrumente CASE, având ca obiectiv principal asistarea factorului uman în proiectarea şi
realizarea soft-ului cu ajutorul calculatorului. Designer 2000 marchează trecerea de la
tipul de analiză de sistem artizanal la standardizarea acestei activităţi, cu influenţă directă
chiar din faza de definire a cerinţelor, până la întreţinerea fizică a produsului informatic,
susţinând deci toate fazele proiectului: planificare, definire, proiectare, realizare.

  21
 

  22