Documente Academic
Documente Profesional
Documente Cultură
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
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 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.
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.
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
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
LAN
Alte PC
Fără CASE
timpul
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.
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Ă
DEPOZIT CENTRAL
(REPOSITORY)
GENERATOR DE GENERATOR DE
COD DOCUMENTAŢIE