Sunteți pe pagina 1din 8

Curs 5

MEDII DE DEZVOLTARE SI GENERATII DE INSTRUMENTE CASE

1. Notiuni generale
Dezvoltarea software-lui pe criterii de eficienta impune imbunatatirea productivitatii muncii prin
folosirea, in toate fazele ciclului de elaborare a programelor, a unor instrumente software care sa asiste
dezvoltatorul in activitatea de elaborare a software-ului de buna calitate, intr-un termen cat mai scurt si
la un cost redus. Initial, preocuparile au fost indreptate spre folosirea instrumentelor cu precadere in
cadrul activitatilor de scriere de cod, testare si depanare a programelor. Ulterior, aceste preocupari s-au
extins si asupra celorlalte faze. Astfel, a avut loc un proces de agregare a instrumentelor disparate,
specializate in instrumente complexe (medii integrate, produse de tip CASE) care sa asiste cat mai
adecvat procesul de realizare a produselor software. In tabelul de mai jos este reflectata corespondenta
intre fazele ciclului de dezvoltare si categoriile de instrumente care ofera facilitati pentru aceste faze.

Faza Instrument

Analiza CASE
Proiectare CASE
Implementare CASE , medii de dezvoltare, instrumente
pentru gestiunea versiunilor si a configuratiilor.
Testare si depanare CASE, medii de dezvoltare, instrumente de
testare.

Un instrument software, in general, este o entitate software care prelucreaza sau actioneaza asupra
unei alte entitati software. Instrumentele de programare sunt entitati software care actioneaza asupra
elementelor de constructie a programelor (modele, cod-sursa, cod-obiect, cod executabil), realizand
transformari ale acestora si/sau analizarea lor din punct de vedere sintactic, functional sau calitativ.
Un mediu integrat de dezvoltare constituie un ansamblu integrat de instrumente de programare, care
asista dezvoltatorul pe parcursul activitatilor de codificare, obtinere a programului executabil, testare si
depanare. Integrarea instrumentelor se manifesta prin utilizarea lor intr-o maniera consistenta, adesea
in mod transparent pentru programator.
Un mediu de dezvoltare vizuala faciliteaza, in plus, asistarea programatorului in realizarea interfetelor
grafice ale aplicatiilor. Mediile de programare ofera facilitati sporite de reutilizare a programelor, sub
forma bibliotecilor de subprograme si cadrelor de dezvoltare a aplicatiilor (application framework).
Un produs de tip CASE reprezinta un ansamblu de metode, instrumente si procese destinate ingineriei
software asistate de calculator. Acest tip de instrumente acopera si etapele de analiza-proiectare,
oferind facilitati de reprezentare grafica a modelelor si diagramelor folosite de metodele / limbajele de
analiza si proiectare.

2. Instrumente software disparate


In aceasta categorie sunt incluse instrumentele software puternic specializate pentru anumite
subactivitati ale realizarii produselor program. Ele sunt concepute si difuzate in mod independent de
alte instrumente software si au fost mult folosite inainte de aparitia mediilor integrate de dezvoltare. Si
astazi sunt folosite in mod curent instrumente izolate care acopera necesitati specifice, neincluse ca
facilitati standard in medii integrate si produse CASE. Putem diferentia trei categorii de astfel de
instrumente:
o Instrumente de programare
o Instrumente de testare
o Instrumente pentru gestiunea versiunilor si configuratiilor

1
2.1 Instrumente de programare
Conform definitiei de mai sus, acestea realizeaza de regula transformari ale elementelor de constructie
a programelor. Instrumentele de programare includ:

• Editoare pentru codul sursa, care faciliteaza scrierea unitatilor compilabile. Editoarele cuprind in
mod standard functii de creare / salvare / deschidere de fisiere, copiere / inserare de text, cautare; pot
avea facilitati suplimentare de evidentiere a elementelor sintactice (syntax highlighting) si verificare a
corectitudinii constructiilor de limbaj.
• Compilatoare, care realizeaza transformarea codului sursa in cod-obiect, semnaland erorile de
sintaxa. Este integrat cu editorul, facilitand corectarea erorilor depistate prin pozitionarea in codul
sursa pe liniile implicate. Programatorul are la dispozitie optiuni privind compilarea optimizata dupa
diferite criterii sau platforme hardware, utilizarea unor versiuni standard ale limbajului de programare,
s.a.m.d.
• Editoare de legaturi pentru obtinerea codului executabil prin legarea subprogramelor referite in
codul sursa. Adesea este apelat in mod transparent pentru utilizator, dupa rularea compilatorului, daca
acesta nu a semnalat erori.
• Interpretoare, care efectueaza prelucrarea si executia directa a instructiunilor sursa ale programelor.
• Asambloare – permit accesul la orice functie hardware sau a sistemului de operare prin instructiuni
de nivel scazut (limbaj masina, functii ale sistemului de operare).
• Preprocesoare si precompilatoare care maresc portabilitatea limbajelor de programare, respectiv
a compilatoarelor.
• Emulatoare care permit rularea unor instructiuni specifice altor platforme hardware.

2.2 Instrumente de testare


Instrumentele de testare au rolul de a automatiza partial procesul de testare a programelor. Dintre
categoriile de instrumente pentru asistarea testarii fac parte:
• Instrumente de capturare/redare - pot inregistra o sesiune de testare intr-un fisier script, permitand
redarea (repetarea) acesteia. Pot fi efectuate teste multiple in maniera automata si se pot efectua
comparatii asupra rezultatelor. Aceste instrumente sunt eficiente in testarea regresiva.
• Instrumente de executie automata a testelor - asemanatoare cu cele de mai sus, dar cazurile de
test sunt specificate de catre utilizator in fisiere script.
• Analizor de acoperire - evalueaza gradul in care structura codului testat a fost acoperita prin
cazurile de test. Astfel de instrumente sunt utile pentru identificarea portiunilor de cod netestate.
• Generator de scenarii de test - este un instrument care, pe baza unor informatii precum cerinte,
modele ale datelor, modele obiectuale s.a. poate genera scenarii de test semnificative. Avantajul este
eliminarea redundantei in testare, prin determinarea cazurilor de test care asigura acoperirea cat mai
mare a codului; aceasta activitate, executata manual, poate fi foarte dificila.
• Generator de date de test - sunt instrumente care servesc la popularea fisierelor si bazelor de date
in vederea testarii; popularea se face cu date aleatoare, in general, dar unele instrumente prevad si
posibilitatea specificarii unor conditii. Instrumentele sunt utilizate in general pentru popularea cu
volume mari de date, necesare testarilor operationale si la capacitate maxima.
• Analizor logic / de complexitate - serveste la cuantificarea complexitatii unor portiuni de cod.
Multe astfel de instrumente ofera si reprezentari grafice ale cailor posibile in structura codului. Sunt
utile pentru determinarea scenariilor de test necesare pentru atingerea anumitor puncte din cod din
rutine complexe.
• Instrumente de trasare a erorilor - permit gestiunea informatiilor privitoare la erorile detectate si
stadiul corectarii lor si centralizarea acestor informatii pentru urmarirea tendintelor acestor erori iar
pe baza acestor tendinte se pot efectua imbunatatiri in procesele de dezvoltare si/sau mentenanta
ale organizatiei.
• Instrumente de gestionare a testarii - au rolul de a asista planificarea si organizarea elementelor
implicate in testare precum fisiere script, scenarii de testare, analiza rezultatelor, etc.
2
2.3 Instrumente pentru gestiunea versiunilor si configuratiilor
In faza de implementare se pot utiliza instrumente care faciliteaza gestionarea elementelor de
constructie a programelor in conditiile lucrului in echipa, respectiv gestiunea versiunilor si gestiunea
configuratiilor. Procesul de gestiune a versiunilor are rolul de a asigura lucrul consistent si coerent cu
elementele de constructie a programelor (fisiere sursa, fisiere binare, executabile, documente).
Necesitatea unei atare gestiuni este evidenta pentru proiectele de dimensiuni medii si mari, unde un
numar mare de componente software este continuu supus modificarilor de catre mai multi dezvoltatori.
La nivelul dezvoltatorului individual, gestiunea versiunilor implica evidenta si arhivarea versiunilor
succesive ale fisierelor, cu posibilitatea de a accesa versiunile anterioare. Dezvoltatorul are astfel
posibilitatea de a identifica modificarile care au cauzat aparitia unor erori.
La nivelul echipei, gestiunea versiunilor cuprinde, in plus:
o Gestiunea centralizata a fisierelor - astfel ca membrii echipei sa utilizeze cele mai noi
versiuni validate;
o Gestiunea lucrului concurent - care are rolul de a asigura consistenta fisierelor atunci cand
accestea sunt modificate concomitent de mai multi membri ai echipei. Aceasta se realizeaza fie
prin asigurarea accesului exclusiv la un anumit fisier, fie prin proceduri de integrare a
modificarilor cu semnalarea zonelor de conflict (zone din fisier modificate de mai multi
programatori).
Instrumentele de gestiune a versiunilor sunt construite in general in jurul unui depozit (repository) care
contine versiunile succesive ale fisierelor unuia sau mai multor proiecte. Operatiile uzuale intr-un
astfel de instrument sunt:
o Check-out – extragerea unui fisier din depozit in vederea modificarii;
o Check-in – actualizarea fisierului modificat, insotita eventual de analiza diferentelor (diff) si
integrarea modificarilor concurente (merge), cu semnalarea conflictelor.
Dintre instrumentele de gestiune a versiunilor se pot mentiona: Rational ClearCase, Microsoft Visual
SourceSafe, CVS (Concurrent Versions System).
Gestiunea configuratiilor se aplica in cazul dezvoltarii unui produs software in mai multe configuratii
(de exemplu pentru mai multe platforme hardware sau sisteme de operare, sau pentru limbi diferite) in
mod simultan. Se urmareste, pe de o parte, gestionarea unitara a elementelor comune tuturor
configuratiilor, iar pe de alta parte gestionarea elementelor specifice fiecarei configuratii.
Cele mai multe instrumente de gestiune a versiunilor includ si gestiunea configuratiilor. Asemenea
facilitati sunt prezente si in cadrul unor instrumente de tip CASE, o alta posibilitate fiind integrarea
produselor CASE cu instrumente specializate de gestiune a versiunilor si configuratiilor.

3. Medii integrate de dezvoltare clasice


Mediile integrate de dezvoltare, (IDE -Integrated Development Environment) cuprind ansamblul de
instrumente necesare implementarii intr-un anumit limbaj de programare. In componenta unui mediu
integrat de dezvoltare intra, in mod obligatoriu, urmatoarele instrumente:
o Editor
o Compilator
o Editor de legaturi
Pe langa acestea sunt prezente si facilitati de testare si depanare, care asista programatorul in
activitatea de depistare si corectare a erorilor. Programul creat este rulat sub controlul mediului de
dezvoltare si poate fi intrerupt si reluat dupa necesitati.
Depistarea erorilor este facilitata prin:
o Intreruperea executiei programului in anumite puncte, stabilite de utilizator (breakpoints) ;
o Executia pas-cu-pas a programului (trace), cu posibilitatea parcurgerii subprogramelor apelate
(trace into) sau nu (step over);
o Inspectarea continutului variabilelor (watch) la un moment dat in cursul rularii.

3
4. Medii integrate de dezvoltare vizuala

Mediile integrate de dezvoltare vizuala (sau medii vizuale de dezvoltare) reprezinta o evolutie a
mediilor integrate, vizand asistarea programatorului in realizarea interfetelor video ale aplicatiilor.
Este de remarcat ca toate componentele uzuale ale mediilor de dezvoltare de tip clasic se regasesc si in
cadrul mediilor vizuale. Termenul de “programare vizuala” se refera la scrierea codului sursa al
aplicatiilor, pornind de la interfata cu utilizatorul, definita in maniera intuitiva prin plasarea unor
componente de interfata pe suprafata ferestrei aplicatiei. Aceasta operatie are ca efect scrierea
automata a codului aferent crearii componentelor de interfata in fisierele sursa. Obiectivul acestor
medii de programare este de a scuti programatorul de scrierea codului specific lucrului cu interfata
grafica, acesta concentrandu-se pe functionalitatea aplicatiei.
Mediile de programare vizuala includ si gestiunea unitara a fisierelor corespunzatoare unei anumite
aplicatii sub forma unui proiect. Fisierele unui proiect pot fi: fisiere sursa, fisiere de definire a
ferestrelor aplicatiei, fisiere de resurse etc. Programele realizate cu aceste medii de programare sunt
construite in maniera orientata pe evenimente. Spre deosebire de programele “clasice”, in care se
defineste succesiunea de prelucrari de la intrarea in program pana la terminarea sa, orientarea pe
evenimente presupune scrierea de cod pentru tratarea evenimentelor generate de utilizator prin
interactiunea cu elementele de interfata (ex. click pe buton, modificarea unui camp text etc.) In acest
sens programatorul scrie proceduri specifice, care vor fi apelate automat la aparitia evenimentelor
tratate.
Mediile de dezvoltare vizuala existente pe piata sunt orientate spre un anumit limbaj de programare.
Cateva exemple:

o C/C++: Visual C++ (Microsoft), C++Builder (Borland-Inprise)


o Java: Visual J# (Microsoft), JBuilder (Borland-Inprise), JDeveloper (Oracle)
o Pascal/Object Pascal: Delphi (Borland-Inprise)
o Basic: Visual Basic (Microsoft)

5. Generatii de instrumente CASE

Prima generatie de CASE include instrumente pentru:

o planificarea strategica (la nivelul sistemelor complexe);


o etapa de analiza;
o etapa de proiectare;
o generare de cod .

Produsele CASE din prima generatie se caracterizeaza prin aceea ca:


• instrumentele vehiculeaza un numar mare de date ;
• ofera interfata grafica pentru utilizator;
• sunt utilizate in general pe PC;
• partea de generare de cod se refera la definirea datelor (formulare, rapoarte, definitii, fragmente de
cod).

Structura primei generatii de produse CASE este prezentata mai jos:

Management proiect ➔
Analiza ➔
Proiectare ➔ A n a l iz o r d e p r o i e c t e ➔ D e p o z i t p r o i e c t e
Generare de cod ➔

4
A doua generatie de produse CASE a adus in plus fata de prima generatie faptul ca generarea de cod
se face pe un mainframe pe care exista un generator central de cod si care stocheaza codul generat
intr-un depozit, permitand lucrul in echipa pentru elaborarea de proiecte de complexe, asigurand in
acelasi timp facilitati de management a proiectelor. In general, acestei generatii ii apartin CASE-uri
care ofera suport pentru intreg ciclul de viata, numite si Integrated-CASE ( I-CASE ) si care ofera
suport pentru realizarea proiectelor folosind mai multe metode de analiza si proiectare.
Structura generatiei a doua de produse CASE este prezentata mai jos:

Management proiect ➔
Analiza ➔
Proiectare ➔ Analizor de proiecte ➔ Depozit proiecte
Generare de cod ➔ Generator central de cod ➔ Depozit cod generat

Generatia a treia de CASE cuprinde medii CASE sau banc de lucru( workbench), intelegand prin
aceasta o colectie de produse de tip CASE si de alte componente integrate care asigura suportul pentru
majoritatea tipurilor de interactiuni intre componentele mediului si intre utilizator si mediu. Sub un
astfel de mediu CASE sunt asigurate atat monitorizarea realizarii proiectelor cat si realizarea propriu-
zisa asigurand pana la generarea de cod integral si generarea automata a documentelor cu posibilitati
de inginerie inversata (reverse engineering).
Generatia a treia de CASE presupune utilizarea acestora in organizatii dezvoltatoare de software si este
generatia actuala care ofera:
o facilitati individuale pe PC;
o facilitati la nivel de proiect pe LAN ;
o facilitati la nivel de organizatie pe un server central;
o facilitati la nivel de cloud.
Structura generatiei a treia de instrumente CASE este prezentata in Figura 1:

Facilitati la nivel
Facilitati locale Facilitati de retea de organizatie

Consolidare
Consolidare, si
Planning analiza si management
Analizor management la nivel de
de proiecte de proiecte organizatie
Analiza

Depozit de Depozit la
Proiectare
Depozit nod de proiect nivel de
local organizatie
Generare cod
Server

Figura 1. Structura generatiei a treia de instrumente CASE

5
6. Componente de baza ale unui instrument CASE

Pentru realizarea tuturor functiilor amintite anterior indiferent de metoda de analiza si proiectare
pentru care devine suport, dar cu precizarea ca produsul CASE nu va putea depasi posibilitatile
metodei, un astfel de produs trebuie sa contina urmatoarele categorii de componente:
➢ editor de diagrame
➢ analizor de structura
➢ depozit central (repository)
➢ generator de cod
➢ instrumente pentru inginerie inversata
➢ generator de documentatie
➢ suport pentru ciclul de viata
➢ instrument pentru gestiunea proiectului (management proiect)
➢ interfata utilizator cu browser specializat

In general, putem reprezenta structura unui mediu CASE ca in Figura 2:

INTERFATA UTILIZATOR

EDITOR DE DIAGRAME ANALIZOR DE STRUCTURA

INSTRUMENTE PENTRU INGINERIE INVERSATA

DEPOZIT CENTRAL
( REPOSITORY )

SUPORT PENTRU CICLUL INSTRUMENTE PENTRU


DE VIATA GESTIUNEA PROIECTULUI

GENERATOR GENERATOR DE
DE COD DOCUMENTATIE
Figura 2. Componentele unui mediu CASE

Majoritatea componentelor sunt proiectate sa asigure suport pentru anumite metodologii functii/date
sau orientate obiect.
In continuare este prezentata o descriere succinta a unora dintre componentele unui produs de tip
CASE:
➢ Editorul de diagrame -este componenta obligatorie a oricarui produs de tip CASE si permite
construirea si modificarea tuturor tipurilor de diagrame utilizate de metodologia/metodologiile
implementate prin CASE. Introducerea informatiilor in editor poate fi facuta in doua moduri:
o de catre utilizator, prin intermediul unei interfete;
o din repository, atunci cand acesta este actualizat prin reverse engineering.
Deoarece editorul de diagrame este prima componenta cu care interactioneaza utilizatorul si in acelasi
timp cea mai utilizata de acesta, el trebuie sa satisfaca anumite conditii:
o sa permita introducerea si modificarea usoara a tuturor entitatilor grafice descrise de metoda de
proiectare;

6
o suprafata grafica sa fie de calitate, sa permita operatii de zoom, de grupare si aliniere a
elementelor diagramei;
o sa permita tiparirea eficienta a documentelor si paginarea lor precum si selectarea informatiilor
ce vor fi tiparite;
o sa dea posibilitatea de a decide entitatile ce vor fi cuprinse intr-o pagina fara a trunchia
informatiile;
o sa permita construirea automata a unor tipuri echivalente de diagrame.
Pentru realizarea acestor facilitati si deoarece optiunile si comenzile de editare a diferitelor diagrame
sunt foarte numeroase editorul de diagrame foloseste in general bare de comenzi, cutii de dialog sau
meniuri senzitive de context.

➢ Depozitul de date (repository) -este, de asemenea, o componenta obligatorie care are drept
rol acumularea si stocarea in maniera organizata a tuturor informatiilor introduse de persoane diferite
la momente diferite, eventual in locuri diferite. Repository-ul este elementul central, inima unui
CASE, care trebuie sa memoreze toate informatiile despre proiecte sisa permita ca pornind de la
acestea sa se creeze informatie noua care sa fie la randul ei plasata in repository.
Pentru un proiect sunt verificate si corelate toate informatiile existente in repository cu scopul de a
asigura integritatea si consistenta lor. Mai exact diferitele tipuri de diagrame reprezinta aceeasi
informatie privita din diferite puncte de vedere, deci trebuie sa aiba o legatura logica intre ele. Datele
introduse in anumite diagrame pot fi utilizate si in alte tipuri de diagrame si depozitul de date este cel
care asigura consistenta informatiei intre diferitele diagrame. Modificarile efectuate asupra unei entitati
dintr-o diagrama sunt automat reflectate in reprezentarea ulterioara a aceleasi entitati in orice alta
diagrama.
Dintre caracteristicile si in acelasi timp avantajele oferite de acest instrument, sunt urmatoarele:
o documentatia de realizare a oricarui proiect, in totalitatea ei, se gaseste in repository, de unde
poate fi tiparita integral sau partial si la cerere;
o documentatia finala a produsului software este realizata pe baza informatiilor despre proiect,
continute in repository;
o cresterea preciziei si a acuratetei documentatiei fata de cazul in care aceasta este realizata pe
hartie, deoarece sunt detectate erorile, inconsistentele si omisiunile, stiut fiind ca mai cu seama
in cazul aplicatiilor si produselor software complexe elaborate in cadrul unei echipe aceste
aspecte sunt greu de controlat;
o asigura lucrul in echipa si in retea, pe de-o parte prin accesul controlat al membrilor echipei la
componente de diferite nivele ale proiectului, pe de alta parte prin gestionarea legaturilor dintre
componentele ce formeaza arhitectura unei aplicatii, a unui proiect.

➢ Analizorul de structura -este componenta care are drept rol depistarea si eliminarea unor erori
dificil de localizat si tratat in fazele ulterioare celei de introducere a informatiilor.
Analizorul este in stransa legatura cu editorul de diagrame si cu repository si functia lui este de a
compara ultimele date introduse cu cele existente pe repository, si de a semnala:
o introducerea in acelasi domeniu de vizibilitate (diagrama, dictionar de date, etc.) a doua entitati
de acelasi tip cu acelasi nume;
o verifica daca toate entitatile referite sunt definite;
o semnaleaza relatii de mostenire definite circular;
o verifica corectitudinea semanticasi sintactica a adnotarilor formale.

➢ Instrumente pentru reverse engineering - au drept rol revenirea din fazele de sfarsit ale
realizarii aplicatiei in fazele de inceput, adica actualizarea diagramelor in raport cu modificarile
efectuate in cod. Acest lucru permite dezvoltarea interactiva a unui produs software prin bascularea
intre proiectare si implementare.

7
➢ Generatorul de cod - permite transformarea in cod, intr-un anumit limbaj de programare, a
➢ .
diagramelor realizate in faza de proiectare.

➢ Browser specializat - este instrumentul pentru vizualizarea informatiilor unei multimi de


entitati cu structura complexa, entitati intre care exista o multitudine de relatii. Permite accesul direct
al utilizatorului la diagramele care descriu proiectele, continute in repository si pentru a facilita accesul
la informatii dispune de optiuni de filtrare si cautare. Aceste posibilitati fac posibila regasirea rapida a
resurselor unui proiect si reutilizarea unor module in cadrul diferitelor proiecte in curs de dezvoltare.

➢ Generator de documentatie -contine modele de documente si ofera utilizatorului posibilitatea


de a-si concepe propriile documente in mod flexibil. Fiind legat de repository, furnizeaza informatii la
zi referitoare la proiect. Orice modificare a unei diagrame dintr-un proiect induce modificarea
automata a documentului asociat. Pot fi generate rapoarte standard pentru monitorizarea unui proiect si
pentru evaluarea informatiilor de dezvoltare, dar pot fi realizate si rapoarte proprii ale utilizatorului.

➢ Gestiunea configuratiei -configuratia insemnand proiectul aplicatiei, codul si documentatia,


toate putand fi gestionate global. Acest lucru permite membrilor echipei de dezvoltare sa lucreze in
paralel si in acelasi timp sa folosesca informatia continuta in modelul global pentru a dezvolta orice
proiect nou.

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