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

Testare si depanare

pentru gestiunea versiunilor si a configuratiilor. 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

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).

medii CASE sau banc de lucru( workbench), intelegand prin

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 locale

Planning

Analiza

Planning Analiza Proiectare Generare cod

Proiectare

Planning Analiza Proiectare Generare cod

Generare cod

Analizor de proiecte Depozit local
Analizor
de proiecte
Depozit
local
Generare cod Analizor de proiecte Depozit local Facilitati de retea Consolidare, analiza si management de

Facilitati de retea

Consolidare, analiza si management de proiecte Depozit de nod de proiect
Consolidare,
analiza si
management
de proiecte
Depozit
de
nod de proiect

Facilitati la nivel de organizatie

Consolidare si management la nivel de organizatie

Depozit la nivel de organizatie Server
Depozit la
nivel de
organizatie
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 )
DEPOZIT CENTRAL
( REPOSITORY )

SUPORT PENTRU CICLUL DE VIATA

GENERATOR

DE COD

INSTRUMENTE PENTRU GESTIUNEA PROIECTULUI

GENERATOR DE 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.

8