PROCESE DE AGREGARE SOFTWARE
(Rezumat)
Se prezinta conceptul de agregare software. Este stabilit raportul dintre agregarea software si reutilizarea software.
Se dezvolta aspecte teoretice si practice ale agregarii pe orizontala si, respectiv, pe verticala.
Se stabileste nivelul ortogonalitatii software rezultat in procesul de agregare.
Sunt enumerate modalitati de optimizare a procesului de agregare.
Componente software
Tehnicile moderne de programare sunt insotite de instrumente puternice care au menirea de a creste productivitatea programatorilor.
Elaborarea de programe, de componente, de secvente sau de proceduri necesita efort de programare direct proportional cu nivelul de complexitate cu care se doreste a fi inzestrate aceste constructii.
Activitatea de dezvoltare a aplicatiilor informatice presupune lucrul in echipa.
Respectarea cerintelor definite in specificatii genereaza consumuri de resurse care sunt atenuate prin:
- cresterea gradului de calificare a personalului;
- acumularea de experienta;
- utilizarea de instrumente pentru asistarea proceselor de analiza, proiectare, programare si testare;
- masurarea nivelului de calitate si efectuarea de corectii;
- asigurarea unui management adecvat pentru fiecare etapa a ciclului de dezvoltare.
Prezinta un interes special ca la dezvoltarea de aplicatii informatice noi sa fie identificate o serie de componente existente in aplicatii deja aflate in uz curent, remarcate ca fiind deosebit de performante, componente care sa fie reutilizate.
Reutilizarea este un proces care ia proceduri, baze de date, fluxuri si le integreaza in aplicatii informatice noi, fara a fi necesare modificari radicale.
Reutilizarea presupune ca elementele alese sa indeplineasca urmatoarele cerinte:
- sa fie corecte din punct de vedere a rezultatelor care trebuie obtinute, caracteristica obtinuta printr-un proces de testare deosebit de complex si mai ales complet;
- sa fie validate de practica si efortul de a scrie o alta componenta echivalenta sa nu se justifice;
- sa existe dreptul de proprietate sau de utilizare, astfel incat reutilizarea sa nu ridice probleme de ordin juridic;
- sa fie accesibile fie ca text sursa, fie intr-o forma integrabila, pentru a permite evaluarea si preluarea;
- sa contina parametri de acelasi tip cu cei din aplicatia care se construieste.
Agregarea software este un proces care:
- presupune existenta de componente software de foarte buna calitate;
- conduce la generarea de componente software prin reutilizare de componente existent prin dezvoltarea de procese de transformare a secventelor existente;
- asigura un nivel de complexitate mai redus decat suma complexitatilor componentelor initiale;
- realizeaza componente cu nivel de performanta mai mare sau egal cu nivelul de performanta a componentelor initiale ca parti ale unei structuri liniare.
Agregarea de software este obtinuta prin procedee mecanice care garanteaza calitatea produsului final, ca fiind strict dependenta de nivelul calitatii componentelor initiale, fara a deteriora acest nivel.
Procesele de elaborare componente software se caracterizeaza prin:
- durate de executie a operatiilor;
- resurse materiale;
- utilizare forta de munca de inalta calificare;
- aplicarea unor proceduri de executie a operatiilor;
- masurarea calitatii pentru fiecare componenta;
- estimarea riscurilor siu luarea de masuri pentru diminuarea efectelor;
- obtinerea unui produs precis definit ca output.
Pentru productia de componente software procesele includ: limbaje de programare, instrumente de asistare, resurse infinite sau fara uzura fizica.
Procesele de agregare au ca intrari:
- componente software validate de practica;
- instrumente de asistare;
- forta de munca de inalta calificare;
- un obiectiv foarte precis definit care spune clar ce rezultate trebuie sa ofere noua procedura rezultata din procesul de agregare.
Procesele de dezvoltare de componente si de agregare trebuie sa se bazeze pe planuri de realizare definite prin:
- nivel maxim de resurse de consumat;
- durata maxim acceptata de realizare;
- limita maxima de suportabilitate a costurilor.
Agregare pe orizontala
Se considera componentele software P1, P2, P3,..., PN.
Procesul de agregare pe orizontala pentru aceste componente consta in:
- realizarea unei liste de parametri prin reuniunea listelor de parametri, cel mult cu repozitionare in vederea obtinerii de subliste omogene;
- concatenarea de secvente de instructiuni S1 ||S2 || S3||...||Sn in vederea obtinerii secventei agregate SA.
Agregarea pe orizontala este o reutilizare de secvente din N proceduri, obtinand o singura procedura PA.
Daca exista procedurile care stabilesc:
- elementul minim dintr-un sir si pozitia acestuia;
- elementul maxim dintr-un sir si pozitia acestuia;
procedura agregata:
- preia ca parametri sirul X si numarul N de componente ale acestuia;
- concateneaza secventele de alegere a elementelor minim si maxim;
- concateneaza secventele de stabilire a pozitiilor minimului si maximului.
- initializeaza un vector de patru componente care returneaza cele patru valori gasite (minimul, maximul, pozitia minimului si pozitia maximului).
Reprezentarea grafica a procesului de concatenare include:
- cele doua proceduri initiale
- procedura rezultat
- sagetile care indica modul in care se efectueaza operatiune de reuniune
- sagetile care definesc procesul de concatenare.
Agregarea pe orizontala presupune numai operatii de intersectie, reuniune, concatenare.
Efortul de a dezvolta agregari pe orizontala este redus, iar riscurile de a obtine pierderi de ordin calitativ, sunt, de asemenea, reduse.
Agregare pe verticala
Este un proces mai complex, care presupune reutilizare de software pentru a obtine o componenta cu alte caracteristici.
Programatorul care dezvolta procese de agregare software pe verticala porneste de la doua sau mai multe proceduri, preia secvente dein acestea si le integreaza intr-o constructie proprie.
Noua constructie trebuie sa fie mai performanta decat daca la executia aplicatiei informatice sunt apelate procedurile asa cum sunt ele.
Prin agregarea pe verticala:
- se reduce numarul de linii sursa;
- se reduce numarul de instructiuni care se repeta;
- se introduc teste pentru selectia de secvente ce corespund anumitor prelucrari;
- conduce la obtinerea unei constructii cu grad de complexitate mai ridicat decat complexitatile procedurilor initiale.
Daca se agrega pe verticala procedurile de afolare a minimului si, respectiv a maximului, se va obtine o procedura in care:
- testele au in comun instructiunea de ciclare;
- se introduce un test pentru situatia in care trebuie ales numai minimul sau numai maximul.
Schema grafica de agregare pe verticala include:
- cele doua proceduri initiale;
- procedura rezultat;
- fluxurile de includere a secventelor erxistente, pentru alegere;
- fluxul corespunzator structurii repetitive.
Se considera procedurile pentru:
- adunarea matricelor A si B pentru a obtine matricea rezultat C;
- scaderea matricelor A si B pentru a obtine matricea rezultat C;
- transpunerea matricei A;
- inmultirea de matrice A si B pentru a obtine matricea rezultat C.
Construirea unei proceduri care sa permita evaluarea expresiilor:
C=A+B
C=A'+B
C=A+B'
C=A'+B'
C=A*B
C=A'*B
C=A*B'
C=A'*B'
presupune agregare pe verticala ce include:
- secventa de selectie;
- secventele de prelucrare;
- implementarea structurilor repetitive;
- includerea transpunerilor de matrice prin intermediul expresiilor indiciale.
Reprezentarea grafica a procesului de agregare este formata din:
- procedurile de calcul;
- fluxuri de includere;
- fluxuri de reluare pentru expresii indiciale in cazul operatiilor cu matrice transpuse.
Trebuie gasite modalitati foarte clare de a asigura echilibrul intre lungimea procedurii rezultate si volumul de prelucrari.
Ortogonalitatea software agregat
Ortogonalitatea este dependenta de complexitatea software.
Pentru complexitate se ia in considerare modelul HALSTEAD, CH() dat de relatia:
CH(Pr)=n1*log2(n1)+n2)log2(n2)
in care se definesc:
n1- numarul de operanzi definiti in procedura Pr;
n2- numarul de operatori definiti in procedura Pr;
log2 - logaritm in baza 2.
Pentru procedurile independente P1,P2,P3,...,PN se calculeaza complexitati individuale.
Pentru ansamblul de proceduri P1,P2,P3,...,PN notat si P1..N care sunt intrari in procesul de agregare, se calculeaza complexitatea globala CG, data de relatia:
CG=SUMA(C(Pi)), i=1,2,2..,N.
Ortogonalitatea a doua proceduri Pi si Pj este indicatorul prin care se evidentiaza cat de diferite sunt instructiunile care alcatuiesc cele doua proceduri.
Indicatorul de ortogonalitate H() pentru procedurile Pi si Pj este date de relatia:
H(Pi,Pj)=f(Ci,Cj)
unde:
Ci - complexitatea procedurii Pi
Cj - complexitatea procedurii Pj.
Daca H(Pi,Pj)=0 inseamna ca procedurile sunt identice.
Daca H(Pi,Pj)=1 inseamna ca procedurile sunt total diferite.
In cazul procedurilor rezultate in procesul de agregare se observa ca:
- ortogonalitatea presupune o procedura rezultat si o multime de proceduri initiale;
- indicatorul de ortogonalitate corectat este dat de relatia:
H(PA;P1,P2,...,PN)= f(Ca,C1,C2,...,CN).
H(PA,P1..N)=f(Ca,CG).
Trebuie demonstrat ca:
H(PA;P1,P2,...,PN)<=max{H(PA,Pi)}
Este de asteptat ca atunci cand se studiaza complexitatea procedurilor rezultate din procedul de agregare sa se studieze ortogonalitatea produsului final.
Inegalitatea proceselor de ortogonalitate:
ortogonalitatea procedurilor din agregare verticala
Trebuie evidentiata aceasta inegalitate prin calcule matematice si experimental.
Optimizare in procese de agregare
Optimizarea proceselor de agregare trebuie privita ca proces de imbunatatire.
Se definesc criteriile de optim:
- minimizarea complexitatii;
- minimizarea duratei de elaborare proceduri;
- maximizarea calitatii;
- minimizarea duratei de executie a programului;
- minimizarea volumului de prelucrari;
- maximizarea ortogonalitatii.
Avand in vedere ca agregarea este un proces de transformare, optimizarea presupune MENTINEWREA CARACTERISTICILOR DE CALITATE SI DE PERFORMANTA INTRE LIMITE STABILITE DEJA SI DEPLASAREA SPRE UNA DINTRE EXTREME, CAND ESTE DEFINIT UN ANUMIT OBIECTIV.
Daca se considera procedurile Pi si Pj avand nivelurile Nhi si Nhj pentru caracteristica de calitate CLh, procedura agregata PAij are nivelul de calitate care indeplineste conditia:
NAh
Pentru a dezvolta procese de optimizare in agregarea de proceduri Pi si Pj se iau in considerare:
- eliminare de subexpresii comune procedurilor Pi, Pj;
- eliminarea de invarianti rezultati din concatenare de secvente;
- regruparea de cicluri repetitive;
- lucrul cu variabile elementare;
- eliminarea codului mort;
- reconstruirea expresiilor relationale;
- restructurarea secventelor de salt conditional;
- alegerea tipurilor care evita conversiile;
- eliminarea operatiilor de citire/scriere.
Daca se considera procedurile pentru calcul de medii aritmetice, geometrice, armonice ponderate, agregarea pe orizontala conduce la o procedura prin care se calculeaza toate mediile.
Agregarea pe verticala cu cresterea generalitatii conduce la reducerea numarului de linii sursa si la reducerea volumului de prelucrari.
Daca se urmareste introducerea unor selectii, se obtine o procedura cu nivel de complexitate intermediar.
Rezultate experimentale
Se considera clasele de aplicatii informatice CL1, CL2,...,CLp.
Din fiecare clasa de aplicatii Ci se considera procedurile Pi1,Pi2,...Pih.
Se agrega aceste proceduri.
Rezulta proceduri agregate atat pe orizontala cat si pe verticala.
Se calculeaza complexitatile acestor proceduri.
Se calculeaza ortogonalitatile.
Se conchide ca efortul de ortogonalitate se justifica.
Rezultatele experimentale presupun:
- crearea de loturi omogene de proceduri;
- stabilirea grupelor de proceduri care intra in proces de agregare, construind un tabel pe linii cu procedurile initiale, independente, iar pe coloane cu procedurile agregate;
- realizarea de agregari pe verticala si pe orizontala, functie de necesitatile aplicatiilor informatice noi;
- calculul complexitatilor procedurilor initiale si a procedurilor agregate;
- calculul ortogonalitatilor;
- stabilirea de praguri care incadreaza procesul de agregare si-l diferentiaza de procesul de reinginerie a aplicatiilor informatice.
Organizarea prelucrarilor pentru a obtine rezultate experimentale semnificative presupune:
- stabilirea de proceduri de colectare a procedurilor destinate agregarii;
- efectuarea de masuratori pe masura ce se constituie baza de proceduri destinate agregarii;
- efectuarea de agregari dinamic pemasura ce apar cerinte in acest sens;
- efectuarea imediata a masuratorilor pentru procedurile agregate;
- preluarea de informatii si ctabilirea de decizii in vederea utilizarii de proceduri agregate;
- stabilirea limitelor procesului de agregare, in ceea ce priveste criteriile de performanta ale aplicatiei informatice in anasamblul ei.
Studierea stabilitatii procesului de agregare se realizeaza prin:
- constituirea de loturi de proceduri cu grade diferite de omogenitate;
- calcul ortogonalitatii procedurilor agregate din fiecare lot;
- analiza ortogonalitatii intre loturi;
- daca ortogonalitatea nu difera statistic, rezulta ca procesul este stabil.
Stabilitatea se studiaza pe clase de proceduri scrise in acelasi loimbaj de programare, chiar cu aceeasi tehnica.
Extensiile se efectueaza din aproape in aproape, spre generalizare atunci cand este cazul, daca ortogonalitatea nu difera semnificativ, pentru:
- proceduri cu grade diferite de omogenitate, scrise in acelasi limbaj;
- proceduri omogene scrise in limbaje diferite;
- pentru proceduri de complexitati foarte diferite, scrise in limbaje diferite.
Concluzii
Odata definirea completa a tipologiilor de agregari se creaza premise pentru elaborarea de instrumente care sa automatieze procesele.
Schemele fluxurilor arata ca aceste instrumente sunt realizabile.
Agregarea se planifica, fapt care impune ca procedurile ce fac obiectul agregarii sa indeplineasca cerinte de calitate, verificate si mai ales validate in executiile curente ale produselor program la beneficiari.
Trebuie sa coexiste atat procedurile initiale cat si procedurile agregate.
Referirea unora sau a celorlalte se efectueaza strict depinzand de contextul definit de noile aplicatii informatice aflate in constructie.
Chiar daca se lucreaza cu proceduri testate si validate, este deosebit de important ca si procedura rezultata in procesul de agregare sa fie supusa testelor cu aceeasi rigurozitate cu care au fost testate procedurile initiale.
In cazul agregarii pe verticala se urmareste dezvoltarea de procese de optimizare, intrucat, procedura rezultata trebuie sa fie performanta chiar daca ii creste gradul de complexitate.
Agregarea software este o activitate complexa care presupune:
- reutilizare de software
- integrare de secvente
- transformari de liste de parametri
- transformari de expresii de referire
- transformari de expresii indiciale
- transformari de expresii relationale in sensul cresterii generalitatii acestora.
Bibliografie
Ion IVAN, Catalin BOJA - Practica optimizarii aplicatiilor informatice ,Editura ASE, Bucuresti, 2007, 479 pg, ISBN 978-973-594-932-7
Ion IVAN, Daniel MILODIN, Sorin Nicolae DUMITRU - Ortogonalitatea programelor C++ software miningRevista Romana de Informatica si Automatica, vol.17, nr. 2, 2007, 39-54, ISSN 1220-1758
Ion IVAN, Daniel MILODIN, Marius POPA - Operation on Text Entities
revista INFORMATICA ECONOMICA, vol 11, nr. 1, 2007,pg.14-20,ISSN 1453-1305
Ion IVAN, Luckacs BREDA - Informatics Security Metrics Comparative Analysis, Proceedings of 8th International Conference on Informatics in Economy, INFORMATICS IN KNOWLEDGE SOCIETY, 17-18 May, 2007, Bucharest, ASE Publishing House, pp. 944-950, ISBN 978-973-594-921-1
Ion IVAN, Daniel MILODIN, Sorin-Nicolae DUMITRU - C++ Progams'Orthogonality in Software Mining,Information Systems & Operations Management, Workshop ISOM, March 28-29, 2007, pp.28-39, ISBN 978-973-129-057-7
Ion IVAN, Catalin BOJA - Software Optimization throughout Simulation,
Proceedings of International Conference on Business Information Systems InfoBUSINESS 2006, Al. I. CUZA University Publishing House, Iasi 2006, pp 365-377, ISBN 978-973-703-207-2
Ion IVAN, Eugen DUMITRASCU, Marius POPA - Evaluating the Effect of the Optimization on the Quality of the Distributed Applications,
Economic Computation and Economic Cybernetics Studies and Research, vol. 40, n3. 3-4, 2006,pp 73-87, ISSN-0424-267X
Ion IVAN, Catalin BOJA, Cristian TOMA - Correlation between Optimization of Software Structures and Optimization of IT&C Project Quality,
Proceedings of International Conference KNOWLEDGE MANAGEMENT PROJECTS, SYSTEMS AND TECHNOLOGIES, The 2nd supplement of the review INFORMATICA ECONOMICA,
vol.1 Current Approaches in Intellectual Capital Evaluation, ISSN 1453-1305, pp 35-40
Ion IVAN, Cristian AMANCEI - Stabilitatea coeficientilor modelului global de calitate software, teorie, practica, experimente,
Editura ASE, Bucuresti 2006, 172 pg, ISBN10 973-594-807-9, ISBN 13 978-973-594-807-8
Ion IVAN, Catalin BOJA - Software Optimization throughout Simulation,
Proceedings of International Conference on Business Information Systems InfoBUSINESS 2006, Al. I. CUZA University Publishing House, Iasi 2006, pp 365-377, ISBN 978-973-703-207-2
Ion IVAN, Eugen DUMITRASCU, Marius POPA - Evaluating the Effect of the Optimization on the Quality of the Distributed Applications,
Economic Computation and Economic Cybernetics Studies and Research, vol. 40, n3. 3-4, 2006,pp 73-87, ISSN-0424-267X
Ion IVAN, Catalin BOJA, Cristian TOMA - Correlation between Optimization of Software Structures and Optimization of IT&C Project Quality,
Proceedings of International Conference KNOWLEDGE MANAGEMENT PROJECTS, SYSTEMS AND TECHNOLOGIES, The 2nd supplement of the review INFORMATICA ECONOMICA,
vol.1 Current Approaches in Intellectual Capital Evaluation, ISSN 1453-1305, pp 35-40
Ion IVAN, Cristian AMANCEI - Stabilitatea coeficientilor modelului global de calitate software, teorie, practica, experimente,
Editura ASE, Bucuresti 2006, 172 pg, ISBN10 973-594-807-9, ISBN 13 978-973-594-807-8