Sunteți pe pagina 1din 11

Instrumente şi medii de dezvoltare

Noţiuni generale
Dezvoltarea software-ului pe criterii de eficienţă impune îmbunătăţirea productivităţii muncii prin
folosirea - în toate fazele ciclului de elaborare a programelor - a unor instrumente software care să asiste
dezvoltatorul în activitatea de elaborare a software-ului de bună calitate, într-un termen cât mai scurt şi
la un cost redus.
Iniţial, preocupările au fost îndreptate spre folosirea instrumentelor cu precădere în cadrul activităţilor de
codificare, testare si depanare a programelor. Ulterior, aceste preocupări s-au extins şi asupra celorlalte
faze. Astfel a avut loc un proces de agregare a instrumentelor disparate, specializate în instrumente
complexe (medii integrate, produse de tip CASE) care să asiste cât mai adecvat procesul de realizare a
produselor software. În fig. 7.1 este reflectată corespondenţa între fazele ciclului de dezvoltare şi
categoriile de instrumente care oferă facilităţi pentru aceste faze.

Fază Instrument
Analiză CASE
Proiectare CASE
Implementare Medii de dezvoltare, CASE (parţial),
instrumente pentru gestiunea versiunilor şi
configuraţiilor.
Testare şi depanare Medii de dezvoltare, instrumente de testare

Fig. 7.1. Asistarea ciclului de dezvoltare cu instrumente software

Această creştere graduală a gradului de integrare a instrumentelor este urmărită şi în desfăşurarea acestui
capitol.
Un instrument software, în general, este o entitate software care prelucrează sau acţionează asupra unei
alte entităţi software.
Instrumentele de programare sunt entităţi software care acţionează asupra elementelor de construcţie a
programelor (modele, cod-sursă, cod-obiect, cod executabil), realizând transformări ale acestora şi/sau
analizarea lor din punct de vedere sintactic, funcţional sau calitativ.
Un mediu integrat de dezvoltare constituie un ansamblu integrat de instrumente de programare, care
asistă dezvoltatorul pe parcursul activităţilor de codificare, obţinere a programului executabil, testare şi
depanare. Integrarea instrumentelor se manifestă prin utilizarea lor într-o manieră consistentă, adesea în
mod transparent pentru programator.
Un mediu de dezvoltare vizuală vizează în plus asistarea programatorului în realizarea interfeţelor
grafice ale aplicaţiilor.
Mediile de programare oferă facilităţi sporite de reutilizare a programelor, sub forma bibliotecilor de
subprograme şi cadrelor de dezvoltare a aplicaţiilor (application framework).
Un produs de tip CASE (Computer Aided Software Engineering) reprezintă un ansamblu de metode,
instrumente şi procese destinate ingineriei software asistate de calculator. Acest tip de instrumente
acoperă şi etapele de analiză-proiectare, oferind facilităţi de reprezentare grafică a modelelor şi
diagramelor folosite de metodele / limbajele de analiză şi proiectare.

Instrumente software disparate


În această categorie sunt incluse instrumentele software puternic specializate pentru anumite sub-
activităţi ale realizării produselor program. Ele sunt concepute şi difuzate în mod independent de alte
instrumente software şi constituiau norma înainte de apariţia mediilor integrate de dezvoltare. Şi astăzi
sunt folosite în mod curent instrumente izolate care acoperă necesităţi specifice, neincluse ca facilităţi
standard în medii integrate şi produse CASE.
Putem diferenţia trei categorii de astfel de instrumente:
• Instrumente de programare
• Instrumente de testare
• Instrumente pentru gestiunea versiunilor şi configuraţiilor

Instrumente de programare
Conform definiţiei de mai sus, acestea realizează de regulă transformări ale elementelor de construcţie
a programelor. Instrumentele de programare includ:
• Editoare pentru codul sursă, care facilitează scrierea unităţilor compilabile. Editoarele cuprind în
mod standard funcţii de creare / salvare / deschidere de fişiere, copiere / inserare de text, căutare;
pot avea facilităţi suplimentare de evidenţiere a elementelor sintactice (syntax highlighting) şi
verificare a corectitudinii construcţiilor de limbaj.
• Compilatoare, care realizează transformarea codului sursă în cod-obiect, semnalând erorile de
sintaxă. Este integrat cu editorul, facilitând corectarea erorilor depistate prin poziţionarea în codul
sursă pe liniile implicate. Programatorul are la dispoziţie opţiuni privind compilarea optimizată
după diferite criterii sau platforme hardware, utilizarea unor versiuni standard ale limbajului de
programare, ş.a.m.d.
• Editoare de legături pentru obţinerea codului executabil prin legarea subprogramelor referite în
codul sursă. Adesea este apelat în mod transparent pentru utilizator, după rularea compilatorului,
dacă acesta nu a semnalat erori.
• Interpretoare, care efectuează prelucrarea şi execuţia directă a instrucţiunilor sursă ale
programelor.
• Asambloare – permit accesul la orice funcţie hardware sau a sistemului de operare prin
instrucţiuni de nivel scăzut (limbaj maşină, funcţii ale sistemului de operare).
• Preprocesoare şi precompilatoare care măresc portabilitatea limbajelor de programare, respectiv
a compilatoarelor.
• Emulatoare care permit rularea unor instrucţiuni specifice altor platforme hardware.

Instrumente de testare
Instrumentele de testare au rolul de a automatiza parţial procesul de testare a programelor. Dintre categoriile de
instrumente pentru asistarea testării fac parte:
• Instrumente de capturare/redare: pot înregistra o sesiune de testare într-un fişier script, permiţând
redarea (repetarea) acesteia. Pot fi efectuate teste multiple în manieră automată şi se pot efectua
comparaţii asupra rezultatelor. Aceste instrumente sunt eficiente în testarea regresivă.
• Instrumente de execuţie automată a testelor: asemănătoare cu cele de mai sus, dar cazurile de test
sunt specificate de utilizator în fişiere script.
• Analizor de acoperire: evaluează gradul în care structura codului testat a fost acoperită prin
cazurile de test. Astfel de instrumente sunt utile pentru identificarea porţiunilor de cod netestate.
• Generator de cazuri de test: este un instrument care, pe baza unor informaţii precum cerinţe,
modele ale datelor, modele obiectuale ş.a. poate genera cazuri de test semnificative. Avantajul este
eliminarea redundanţei în testare, prin determinarea cazurilor de test care asigură acoperirea cât
mai mare a codului; această activitate, executată manual, poate fi foarte dificilă.
• Generator de date de test: sunt instrumente care servesc la popularea fişierelor şi bazelor de date
în vederea testării; popularea se face în general cu date aleatoare, dar unele instrumente prevăd şi
posibilitatea specificării unor condiţii. Instrumentele sunt utilizate în general pentru popularea cu
volume mari de date, necesare testărilor operaţionale şi la capacitate maximă.
• Analizor logic / de complexitate: serveşte la cuantificarea complexităţii unor porţiuni de cod.
Multe astfel de instrumente oferă şi reprezentări grafice ale căilor posibile în structura codului.
Sunt utile pentru determinarea cazurilor de test necesare pentru atingerea anumitor puncte din cod
din rutine complexe.
• Instrumente de trasare a erorilor: permit gestiunea informaţiilor privitoare la erorile detectate şi
stadiul corectării lor şi centralizarea acestor informaţii pentru urmărirea tendinţelor acestor defecte;
pe baza acestor tendinţe se pot efectua îmbunătăţiri în procesele de dezvoltare şi/sau mentenanţă
ale organizaţiei.
• Instrumente de gestionare a testării: au rolul de a asista planificarea şi organizarea elementelor
implicate în testare precum fişiere script, cazuri de testare, rezultate.

Instrumente pentru gestiunea versiunilor şi configuraţiilor


În faza de implementare se pot utiliza instrumente care facilitează gestionarea elementelor de construcţie
a programelor în condiţiile lucrului în echipă, respectiv gestiunea versiunilor şi gestiunea configuraţiilor.
Procesul de gestiune a versiunilor are rolul de a asigura lucrul consistent şi coerent cu elementele de
construcţie a programelor (fişiere sursă, fişiere binare, executabile, documente). Necesitatea unei atare
gestiuni este evidentă pentru proiectele de dimensiuni medii şi mari, unde un număr mare de artefacte
software este continuu supus modificărilor de către mai mulţi dezvoltatori.
La nivelul dezvoltatorului individual, gestiunea versiunilor implică evidenţa şi arhivarea versiunilor
succesive ale fişierelor, cu posibilitatea de a accesa versiunile anterioare. Dezvoltatorul are astfel
posibilitatea de a identifica modificările care au cauzat apariţia unor erori.
La nivelul echipei, gestiunea versiunilor cuprinde, în plus:
– gestiunea centralizată a fişierelor; astfel ca membrii echipei să utilizeze cele mai noi versiuni validate
– gestiunea lucrului concurent, care are rolul de a asigura consistenţa fişierelor atunci când accestea
sunt modificate concomitent de mai mulţi membri ai echipei. Aceasta se realizează fie prin asigurarea
accesului exclusiv la un anumit fişier, fie prin proceduri de integrare a modificărilor cu semnalarea
zonelor de conflict (zone din fişier modificate de mai mulţi programatori)
Instrumentele de gestiune a versiunilor sunt construite în general în jurul unui depozit (repository) care
conţine versiunile succesive ale fişierelor unuia sau mai multor proiecte. Operaţiile uzuale într-un astfel de
instrument sunt:
• check-out – extragerea unui fişier din depozit în vederea modificării
• check-in – actualizarea fişierului modificat, însoţită eventual de analiza diferenţelor (diff) şi
integrarea modificărilor concurente (merge), cu semnalarea conflictelor.
Dintre instrumentele de gestiune a versiunilor amintim: Rational ClearCase, Microsoft Visual
SourceSafe, CVS (Concurrent Versions System).
Gestiunea configuraţiilor se aplică în cazul dezvoltării unui produs software în mai multe configuraţii (de
exemplu pentru mai multe platforme hardware sau sisteme de operare, sau pentru limbi diferite) în mod
simultan. Se urmăreşte, pe de o parte, gestionarea unitară a elementelor comune tuturor configuraţiilor, iar pe
de altă parte gestionarea elementelor specifice fiecărei configuraţii.
Cele mai multe instrumente de gestiune a versiunilor includ şi gestiunea configuraţiilor. Asemenea facilităţi
sunt prezente şi în cadrul unor instrumente de tip CASE, o altă posibilitate fiind integrarea produselor
CASE cu instrumente specializate de gestiune a versiunilor şi configuraţiilor.
7-4 Instrumente şi medii de dezvoltare a programelor

Medii integrate de dezvoltare clasice


Mediile integrate de dezvoltare, (IDE - Integrated Development Environment) cuprind ansamblul de
instrumente necesare implementării într-un anumit limbaj de programare. Ca exemple se pot aminti Turbo
Pascal, Borland C.
În componenţa unui mediu integrat de dezvoltare intră, în mod obligatoriu, următoarele instrumente:
• Editor
• Compilator
• Editor de legături
Pe lângă acestea sunt prezente şi facilităţi de testare şi depanare, care asistă programatorul în
activitatea de depistare şi corectare a erorilor. Programul creat este rulat sub controlul mediului de
dezvoltare şi poate fi întrerupt şi reluat după necesităţi.
Depistarea erorilor este facilitată prin:
– întreruperea execuţiei programului în anumite puncte, stabilite de utilizator (breakpoints)
– execuţia pas-cu-pas a programului (trace), cu posibilitatea parcurgerii subprogramelor apelate
(trace into) sau nu (step over).
– inspectarea conţinutului variabilelor (watch) la un moment dat în cursul rulării.

Medii integrate de dezvoltare vizuală


Mediile integrate de dezvoltare vizuală (sau medii vizuale de dezvoltare) reprezintă o evoluţie a
mediilor integrate, vizând asistarea programatorului în realizarea interfeţelor grafice ale aplicaţiilor.
Este de remarcat că toate componentele uzuale ale mediilor de dezvoltare de tip clasic se regăsesc şi în
cadrul mediilor vizuale.
Termenul de "programare vizuală" se referă la codificarea aplicaţiilor pornind de la interfaţa cu
utilizatorul, definită în manieră intuitivă, prin plasarea unor componente de interfaţă pe suprafaţa
ferestrei aplicaţiei. Această operaţie are ca efect scrierea automată a codului aferent creării
componentelor de interfaţă în fişierele sursă.
Obiectivul acestor medii de programare este de a scuti programatorul de scrierea codului specific
lucrului cu interfaţa grafică, acesta concentrându-se pe funcţionalitatea aplicaţiei.
Mediile de programare vizuală includ şi gestiunea unitară a fişierelor corespunzătoare unei anumite
aplicaţii sub forma unui proiect. Fişierele unui proiect pot fi: fişiere sursă, fişiere de definire a
ferestrelor aplicaţiei, fişiere de resurse etc.
Programele realizate cu aceste medii de programare sunt construite în manieră orientată pe
evenimente. Spre deosebire de programele "clasice", în care se defineşte succesiunea de prelucrări de
la intrarea în program până la terminarea sa, orientarea pe evenimente presupune scrierea de cod
pentru tratarea evenimentelor generate de utilizator prin interacţiunea cu elementele de interfaţă (ex.
clic pe buton, modificarea unui câmp text etc.) În acest sens programatorul scrie proceduri specifice,
care vor fi apelate automat la apariţia evenimentelor tratate.
Mediile de dezvoltare vizuală existente pe piaţă sunt orientate spre un anumit limbaj de programare.
Câteva exemple:
• C/C++: Visual C++ (Microsoft), C++Builder (Borland-Inprise)
• Java: Visual J# (Microsoft), JBuilder (Borland-Inprise), JDeveloper (Oracle)
• Pascal/Object Pascal: Delphi (Borland-Inprise)
• Basic: Visual Basic (Microsoft)
Produse de tip CASE
Concepte şi caracteristici
Termenul de CASE - acronimul pentru Computer Aided Software Engineering - reprezintă colecţii de
metode, instrumente şi procese destinate ingineriei software asistată de calculator. Această denumire a
fost introdusă în 1987 de John Manley pentru a desemna dezvoltarea de software utilizând instrumente
care să acopere şi etapele de analiză-proiectare şi să ofere facilităţi pentru reprezentările grafice
folosite cu precădere de metodele de analiză şi proiectare.
În accepţiunea actuală, un produs de tip CASE sau un mediu CASE sprijină una sau mai multe metode
de analiză şi proiectare automatizând într-o măsură cât mai mare activităţile desfăşurate în cadrul
acestor metode şi asistând parţial sau în totalitate activităţile ciclului de viaţă al software-ului inclusiv
managementul şi asigurarea calităţii.
Termenul de inginerie software asistată de calculator presupune utilizarea de instrumente software care
să ajute în toate etapele ciclului de dezvoltare începând de la analiza cerinţelor, proiectarea
specificaţiilor şi până la o posibilă generare automată de cod pe baza specificaţiilor de proiectare. Se
poate vorbi, practic, de o extindere a instrumentelor ce serveau iniţial etapa de codificare şi asupra
fazelor precedente ale dezvoltării de software. În mod evident, atât tehnologiile CASE, cât şi
metodologiile de realizare a software-ului pe care le sprijină sunt utile în dezvoltarea sistemelor,
aplicaţiilor şi programelor mari, complexe, a pachetelor şi sistemelor de programe.
Având în vedere varietatea şi multitudinea de colecţii de instrumente existente, vom enumera câteva
din caracteristicile suplimentare, necesare ca o colecţie de instrumente să fie calificată drept un produs
de tip CASE sau un mediu CASE:
 să ofere facilităţi grafice puternice pentru a descrie şi documenta software-ul
 să fie integrat, astfel încât să permită transmiterea uşoară a datelor între componente
 să stocheze informaţiile referitoare la software într-un depozit computerizat, permiţând accesarea
acestor informaţii de către toţi membrii echipei de elaboratori
 să poată fi utilizat ca bază pentru automatizarea procesului de producere a software-ului utilizând una
sau mai multe metode de analiză proiectare
 să fie reutilizabil pentru dezvoltarea de noi sisteme, aplicaţii şi programe
 să poată fi utilizat pe orice platformă hardware începând cu calculatoare personale până la main-
frame-uri
 să permită realizarea uşoară a interfeţei cu utilizatorul final şi expandarea interacţiunii cu acesta
 să asigure dezvoltarea de aplicaţii în limbaje de programare evoluate
 să asigure din punct de vedere calitativ software-ul realizat.
Performanţele instrumentelor şi mediilor de tip CASE actuale s-au constituit pe baza elementelor prezentate
anterior într-o evoluţie care reprezintă un proces continuu. Importanţa şi avantajele utilizării CASE-urilor în
realizarea pachetelor, sistemelor de programe de aplicaţie poate fi rezumată la câteva aspecte:
– scurtează durata de realizare a proiectelor şi de implementare a aplicaţiilor
– asigură din punct de vedere calitativ produsul software şi cresc încrederea utilizatorului în
calitatea acestuia
– asistă realizarea fiecărei etape şi deci îmbunătăţesc calitatea procesului de realizare
– dezvoltarea software-ului se face conform unor metodologii care specifică pe lângă etapele de
dezvoltare, conţinutul şi ieşirile fiecărei etape, în mod diferenţiat după natura produsului sau
după domeniul său de aplicaţie
– obţinerea de specificaţii de definiţie complete
– acurateţea specificaţiilor de realizare (de proiectare)
– obţinerea unei căi uşor de întreţinut şi dezvoltat (în ideea că un produs software nu este
niciodată în mod real terminat, dezvoltarea sa fiind prelungită de operaţiile de mentenanţă).
7-6 Instrumente şi medii de dezvoltare a programelor

Cu toate aceste avantaje şi altele care mai pot fi enumerate, produsele CASE sunt în general produse
de dimensiuni mari care necesită resurse hard puternice şi au un cost relativ ridicat. De asemenea, se
poate spune că metodologiile de analiză şi proiectare (orientate pe funcţii/date sau orientate obiect)
sunt popularizate prin produsele de tip CASE care le implementează (ele au renăscut sub formă de
software), dar acestea tind aparent să micşoreze creativitatea. Cum firmele de software urmăresc
productivitatea şi mai apoi elementele de originalitate şi eleganţă este sigur că produsele de tip CASE
vor fi în continuă ascensiune în domeniul dezvoltării de software.

Generaţii de produse CASE

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


O primă generaţie de CASE include facilităţi pentru diverse etape ale ciclului de viaţă tradiţional sub
formă 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).
Această structură este reprezentată în figura 7.2.

M anagem ent
p ro ie c t

A n a liz a A n a liz o r d e
p ro ie c te

P ro ie c ta re

G e n e ra re d e
cod
D e p o z it
p ro ie c te

Fig. 7.2 Generaţia I de CASE

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.
De asemenea, această generaţie oferă o interfaţă utilizator unitară, comună pentru toate instrumentele.
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 de CASE-uri este faptul că permit lucrul în echipă pentru elaborarea de
proiecte de obicei complexe, de dimensiuni mari, asigurând în acelaşi timp facilităţi de management al
acestor proiecte atât pentru activităţile specifice etapelor ciclului de viaţă la nivel de proiect cât şi la
nivelul întregii organizaţii elaboratoare de software. Î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 (figura 7.3).
M anagem ent
p ro iect

G enerato r
A naliza A nalizo r d e central
p ro iecte d e co d

P ro iectare

G enerare d e
co d
D ep o zit D epo zit co d
p ro iecte generat

Fig. 7.3 Generaţia a II-a de CASE


Generaţia a treia de CASE cuprinde CASE-urile ultimei perioade, numite şi medii CASE sau
Workbench (banc de lucru), înţelegând prin aceasta o colecţie de produse de tip CASE şi de alte
componente integrate care asigură suportul pentru majoritatea tipurilor de interacţiuni între
componentele mediului şi între utilizator şi mediu. Sub un astfel de mediu CASE sunt asigurate atât
monitorizarea realizării proiectelor cât şi realizarea propriu-zisă asigurând până la generarea de cod
integral şi generarea automată a documentelor cu posibilităţi de inginerie inversă (reverse engineering).
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
Aceste facilităţi se bazează pe o structură reprezentată în figura 7.4.
Facilităţi la nivel Facilităţi la
de proiect pe LAN nivel de
Facilităţi organizare pe
individuale LAN main-frame
Alte PC
Planning
Consolidare Consolidare
Analiza Analizor de analiza, analiza la
proiecte management la nivel de
Proiectare nivel de proiecte organizaţie

Generator de Depozit local


cod Depozit de nod Depozit la nivel
de proiect de organizaţie

LAN
Alte PC

Fig. 7.4 Generaţia a III-a de CASE

Clasificarea şi evaluarea produselor CASE


Clasificarea produselor CASE poate fi făcută după o multitudine de criterii. Un prim criteriu, care
reflectă şi evoluţia metodelor de analiză şi proiectare, ar fi după cum oferă suport pentru metode
orientate obiect sau pentru metode funcţii / date:
a) după metodele de analiză şi proiectare implementate
 neorientate obiect, bazate pe metodologii de analiză şi proiectare structurată (sau metode
funcţii/date)
 pur orientate obiect
 mixte - care suportă ambele tipuri de metodologii.
b) după numărul metodelor de analiză şi proiectare implementate
 oferă suport pentru o singură metodă de analiză proiectare
 oferă suport pentru mai multe metode şi în acest caz dacă
- foloseşte independent mai multe metode
- permite trecerea automată a documentelor realizate pentru o anumită metodă în documente
echivalente ale altei metode.
c) după cum acoperă etapele ciclului de viaţă şi de realizare a aplicaţiilor
 acoperă una sau mai multe părţi ale ciclului de viaţă
 acoperă tot ciclul de viaţă (I-CASE)
d) după codul generat
 nu generează cod
 generează cod care conţine:
- numai şabloane şi cod parţial ce trebuie completat şi optimizat
- cod integral, executabil pe baza transformării directe a proiectului
e) după cum asigură modul de lucru:
 în echipă
 în reţea
f) după modul în care permite realizarea altor proiecte, sau şabloane de proiecte, integral sau parţial
g) permite reverse engineering - actualizarea diagramelor după modificări în cod
h) permite includerea sa într-un mediu integrat de dezvoltare IDE (Integrat Development Environment)
În continuare se vor prezenta câteva exemple de produse CASE din categoriile amintite cu specificarea
faptului că şi celelalte criterii amintite anterior mai pot servi la aprecierea acestor produse şi la o
viziune completă asupra capabilităţilor lor.
 din categoria CASE-urilor care implementează metodologii de ingineria informaţiei integrate
amintim produsele IEF - Information Engineering Facility şi IEW - Information Engineering
Workbench
 din categoria CASE-urilor care implementează metodologii integrate (MERISE, SASDM) amintim
produsele EXCELERATOR, TEAMWORK, AMC - DESIGNER
 din categoria CASE-urilor suport pentru ciclul de viaţă bazate pe metodologii structurate sau
orientate obiect amintim produsele SYSTEM-ARCHITECT, EASY-CASE, WESTMOUNT,
CAYENNE-ObjectTeam, Rational Rose.
 din categoria CASE-urilor neintegrate suport pentru tehnici şi proceduri din ingineria software la
nivel de activitate/sarcină amintim ER-Modeler, ABC.
Produsele CASE trebuie să satisfacă următoarele condiţii: a) să crească eficienţa elaborării produselor
program şi b) să nu scadă calitatea şi siguranţa în funcţionare a produselor program obţinute. Din punct
de vedere al utilizatorului se mai adaugă la condiţiile de mai sus aceea că preţul produsului CASE
trebuie să fie convenabil. În general cerinţa globală faţă de produsele de tip CASE este să producă
software (programe şi documentaţie) acceptabile.
Calitatea produselor de tip CASE se poate măsura prin calitatea produselor program rezultate, motiv
pentru care sunt suportate în general grupe de caracteristici, atribute şi metrici de calitate software.
Calitatea globală a produselor obţinute cu produse de tip CASE este mai ridicată decât a acelora
obţinute fără acestea. Figura 7.5 ilustrează acest fapt.
Calitatea
globală Cu CASE

Fără CASE

timpul

Fig. 7.5 Calitatea globală

Este mai indicată o diferenţiere a calităţii după complexitatea problemelor rezolvate şi tipul produselor
CASE. Asfel pentru o problemă simplă nu se recomandă utilizarea produselor CASE, la o problemă cu
complexitate redusă se recomandă utilizarea unui “lower CASE”, iar în cazul problemelor cu
complexitate ridicată sunt folosite produse “upper CASE”.
Calitatea se analizează pe fazele parcurse în realizarea produselor program. Asfel avem o calitate a
fazei de analiză, proiectare, implementare, integrare şi testare şi a fazei de întreţinere.
Pentru a trage concluzii justificate cu privire la calitate se recomandă experienţe suficiente,
semnificative privind realizarea produselor program cu ajutorul produselor CASE.
În evaluarea produselor CASE se poate face uz de primele doua legi ale termodinamicii:
 Prima lege (conservarea energiei) spune că nu se poate obţinute nimic fară efort. Eficienţa
produselor CASE se calculează ca un raport între efortul depus de analist utilizând instrumentul CASE
faţă de efortul total pentru obţinerea produsului program. Se apreciează că eficienţa utilizării
produselor CASE este cuprinsă între 85% şi 97 %. Efortul necesar se poate înlocui cu costuri, dar
legătura între efort şi cost nu este prea puternică, lucru care creează probleme practice
 A doua lege (un proces izolat din sistem creează entropie cel puţin egală cu entropia sistemului)
afirmă că probabilitatea este mare ca entropia (nedeterminarea) să necesite eforturi suplimentare în
realizarea produselor program cu ajutorul produselor CASE.
Efortul necesar creşte exponenţial cu complexitatea problemelor şi cu entropia de asemenea crescută la
procese izolate din sisteme.

Componente de bază ale unui produs CASE

Pentru realizarea tuturor funcţiilor amintite anterior indiferent de metoda de analiză şi proiectare
pentru care devine suport, dar cu precizarea că produsul CASE nu va putea depăşi posibilităţile
metodei, un astfel de produs trebuie să conţină următoarele categorii de componente:
 editor de diagrame
 analizor de structură
 depozit central (repository)
 generator de cod
 instrumente pentru inginerie inversă
 generator de documentaţie
 suport pentru ciclul de viaţă
 instrument pentru gestiunea proiectului (management proiect)
 interfaţă utilizator cu browser specializat
7-10 Instrumente şi medii de dezvoltare a programelor

În general putem reprezenta structura unui mediu CASE având aceste componente ca în figura 7.6:

INTERFAŢA UTILIZATOR
EDITOR DE ANALIZOR DE
DIAGRAME STRUCTURĂ

INSTRUMENTE PENTRU INGINERIE INVERSĂ

DEPOZIT CENTRAL
(REPOSITORY)

SUPORT PENTRU INSTRUMENT PENTRU


CICLUL DE VIAŢĂ GESTIUNEA PROIECTULUI

GENERATOR DE GENERATOR DE
COD DOCUMENTAŢIE

Fig. 7.6 Componentele unui mediu CASE


Majoritatea componentelor sunt proiectate să asigure suport pentru anumite metodologii funcţii/date
sau orientate obiect.
În continuare este prezentată o descriere succintă a unora dintre componentele unui produs de tip
CASE:
• Editorul de diagrame - este componentă obligatorie a oricărui produs de tip CASE şi permite
construirea şi modificarea tuturor tipurilor de diagrame utilizate de metodologia/metodologiile
implementate prin CASE. Introducerea informaţiilor în editor poate fi făcută în două moduri:
 de către utilizator, prin intermediul unei interfeţe
 din repository, atunci când acesta este actualizat prin reverse engineering.
Deoarece editorul de diagrame este prima componentă cu care interacţionează utilizatorul şi în acelaşi
timp cea mai utilizată de acesta, el trebuie să satisfacă anumite condiţii:
 să permită introducerea şi modificarea uşoară a tuturor entităţilor grafice descrise de metoda de
proiectare;
 suprafaţa grafică să fie de calitate, să permită operaţii de zoom, de grupare şi aliniere a elementelor
diagramei;
 să permită tipărirea eficientă a documentelor şi paginarea lor precum şi selectarea informaţiilor ce
vor fi tipărite;
 să dea posibilitatea de a decide entităţile ce vor fi cuprinse într-o pagină fără a trunchia
informaţiile;
 să permită construirea automată a unor tipuri echivalente de diagrame.
Pentru realizarea acestor facilităţi şi deoarece opţiunile şi comenzile de editare a diferitelor diagrame
sunt foarte numeroase editorul de diagrame foloseşte în general bare de comenzi, cutii de dialog sau
meniuri senzitive de context.
• Baza de informaţii (repository) - este, de asemenea, o componentă obligatorie care are drept rol
acumularea şi stocarea în manieră organizată a tuturor informaţiilor introduse de persoane diferite la
momente diferite, eventual în locuri diferite. Repository -ul este elementul central, inima unui CASE,
care trebuie să memoreze toate informaţiile despre proiecte şi să permită ca pornind de la acestea să se
creeze informaţie nouă care să fie la rândul ei plasată în repository.
Pentru un proiect sunt verificate şi corelate toate informaţiile existente în repository cu scopul de a asigura
integritatea şi consistenţa lor. Mai exact diferitele tipuri de diagrame reprezintă aceeaşi informaţie privită
din diferite puncte de vedere, deci trebuie să aibă o legătură logică între ele. Datele introduse în anumite
diagrame pot fi utilizate şi în alte tipuri de diagrame şi depozitul de date este cel care asigură consistenţa
informaţiei între diferitele diagrame. Modificările efectuate asupra unei entităţi dintr-o diagramă sunt
automat reflectate în reprezentarea ulterioară a aceleaşi entităţi în orice altă diagramă.
Dintre caracteristicile şi în acelaşi timp avantajele oferite de acest instrument sunt următoarele:
 documentaţia de realizare a oricărui proiect, în totalitatea ei, se găseşte în repository, de unde
poate fi tipărită integral sau parţial şi la cerere
 documentaţia finală a produsului software este realizată pe baza informaţiilor despre proiect,
conţinute în repository
 creşterea preciziei şi a acurateţei documentaţiei faţă de cazul în care aceasta este realizată pe
hârtie, deoarece sunt detectate erorile, inconsistenţele şi omisiunile, ştiut fiind că mai cu seamă
în cazul aplicaţiilor şi produselor software complexe elaborate în cadrul unei echipe aceste
aspecte sunt greu de controlat
 asigură lucrul în echipă şi în reţea, pe de-o parte prin accesul controlat al membrilor echipei la
componente de diferite nivele ale proiectului, pe de altă parte prin gestionarea legăturilor dintre
componentele ce formează arhitectura unei aplicaţii, a unui proiect.
• Analizorul de structură - este componenta care are drept rol depistarea şi eliminarea unor erori
dificil de localizat şi tratat în fazele ulterioare celei de introducere a informaţiilor.
Analizorul este în strânsă legătură cu editorul de diagrame şi cu repository şi funcţia lui este de a
compara ultimele date introduse cu cele existente pe repository, şi de a semnala:
 introducerea în acelaşi domeniu de vizibilitate (diagramă, dicţionar de date, etc.) a două entităţi
de acelaşi tip cu acelaşi nume
 verifică dacă toate entităţile referite sunt definite
 semnalează relaţii de moştenire definite circular
 verifică corectitudinea semantică şi sintactică a adnotărilor formale.
• Instrumente pentru reverse engeneering (inginerie inversă) au drept rol revenirea din fazele de
sfârşit ale realizării aplicaţiei în fazele de început, adică actualizarea diagramelor în raport cu
modificările efectuate în cod. Acest lucru permite dezvoltarea interactivă a unui produs software prin
bascularea între proiectare şi implementare.
• Generatorul de cod - permite transformarea în cod, într-un anumit limbaj de programare, a
diagramelor realizate în faza de proiectare.
• Browser specializat - este instrumentul pentru vizualizarea informaţiilor unei mulţimi de entităţi
cu structură complexă, entităţi între care există o multitudine de relaţii.
El permite accesul direct al utilizatorului la diagramele care descriu proiectele, conţinute în repository
şi pentru a facilita accesul la informaţii dispune de opţiuni de filtrare şi căutare. Aceste posibilităţi fac
posibilă regăsirea rapidă a resurselor unui proiect şi reutilizarea unor module în cadrul diferitelor
proiecte în curs de dezvoltare
• Generator de documentaţie - conţine modele de documente şi oferă utilizatorului posibilitatea de
a-şi concepe propriile documente în mod flexibil. Fiind legat de repository, furnizează informaţii la zi
referitoare la proiect. Orice modificare a unei diagrame dintr-un proiect induce modificarea automată a
documentului asociat. Pot fi generate rapoarte standard pentru monitorizarea unui proiect şi pentru
evaluarea informaţiilor de dezvoltare, dar pot fi realizate şi rapoarte proprii ale utilizatorului.
• Gestiunea configuraţiei - configuraţia însemnând proiectul aplicaţiei, codul şi documentaţia, toate
putând fi gestionate global. Acest lucru permite membrilor echipei de dezvoltare să lucreze în paralel
şi în acelaşi timp să folosescă informaţia conţinută în modelul global pentru a dezvolta orice proiect
nou.

S-ar putea să vă placă și