REUTILIZAREA PRODUSELOR SOFTWARE -...
Transcript of REUTILIZAREA PRODUSELOR SOFTWARE -...
REUTILIZAREA PRODUSELOR SOFTWARE
1
Universitatea Politehnica Bucuresti
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei
INGINERIE SOFTWARE
REUTILIZAREA PRODUSELOR
SOFTWARE
PROFESOR COORDONATOR:
STEFAN STANCESCU
STUDENTI:
SERIAN BIANCA
JICA ANDREEA
GRUPA:
442A
REUTILIZAREA PRODUSELOR SOFTWARE
2
CUPRINS
Serian Bianca 1. Introducere 3
Serian Bianca 2. Reutilizarea
2.1 Avantaje
2.2 Clasificare
4
4
4
Serian Bianca 3. Tipuri de reutilizare
3.1 Reutilizarea proiectării
3.2 Reutilizarea conceptelor
3.3 Reutilizarea bazată pe generare
3.4 Reutilizarea sistemelor de aplicaţii
3.5 Reutilizarea produselor comerciale
5
5
5
5
5
6
Serian Bianca 4. Domeniul
4.1 Formalizarea unui domeniu
4.2 Reutilizarea domeniului
4.3Evoluţia unui domeniu
7
7
7
8
Jica Andreea
Jica Andreea
Jica Andreea
Jica Andreea
5. Mecanisme pentru reutilizare
5.1. Gestionarea configuratiei software pentru
reutilizare
9
9
6. Mecanisme ce asigura varietatea software 10
7. Generarea codului 11
8. Software open source 12
Serian Bianca 10. Concluzii 14
11. Bibliografie 15
REUTILIZAREA PRODUSELOR SOFTWARE
3
1. INTRODUCERE (Serian Bianca)
În informatică și inginerie software, reutilizarea este probabilitatea ca un segment de cod sursă sa poata fi
utilizat din nou pentru a adăuga noi funcționalități cu o ușoară sau nici o modificare. Module reutilizabile și
clasele reduc timpul de implementare, cresc probabilitatea ca testarea anterioara și utilizarea sa fi eliminat
bug-uri și localizează modificări de cod atunci când este necesară o schimbare în implementare.
Subrutinele sau funcțiile sunt cea mai simplă formă de reutilizare. O bucată de cod este organizata în mod
regulat, folosind module, în straturi. Susținătorii metodei susțin că obiectele și componente software oferă o
formă mai avansată de reutilizare, deși a fost greu de măsurat în mod obiectiv și de definit un nivel de
reutilizare.
Abilitatea de a reutiliza se bazează în mod esențial pe abilitatea de a construi lucruri mari de la piese mai
mici, și de a identifica puncte comune între aceste părți. Reutilizarea este de multe ori o caracteristică cerută
de platforme software. Ea aduce mai multe aspecte de dezvoltare de software, care nu trebuie să fie luate în
considerare atunci când nu este nevoie de reutilizare.
Reutilizarea implică unele probleme de a construi, de ambalare, distribuție, instalare, configurare,
implementare, mentenanță și upgrade. În cazul în care nu sunt luate în considerare aceste aspecte, software-
ul poate parea a fi reutilizabil din punct de vedere al designului, dar nu va fi reutilizat în practică.
Reutilizarea software-ul se referă mai precis la proiectarea caracteristicilor unui element de software (sau o
colecție de elemente software), care sporesc capacitatea sa de reutilizare.
Multe dintre principiile de proiectare de reutilizare au fost dezvoltate în cadrul atelierelor WISR.
Caracteristicile de design pentru reutilizarea software includ:
Adaptabilitatea
Scurt: de dimensiuni mici
Coerența
Corectitudinea
Extensibilitatea
Rapiditatea
Flexibilitatea
Generic
Modularitatea
Ortogonalitatea
Parametrizarea
Simplu: complexitate redusa
Stabilitate în conformitate cu cerințele în schimbare
Inca nu s-a ajuns la un consens pe această listă, pe importanța relativă a intrărilor și nici cu privire la
aspectele care fac fiecare element unul important pentru o anumită clasă de aplicații.
REUTILIZAREA PRODUSELOR SOFTWARE
4
2. REUTILIZAREA (Serian Bianca)
2.1 Avantajele reutilizării
Creşterea încrederii sistemului şi scăderea riscului
Componentele reutilizate au funcţionat în condiţii reale
Riscul reutilizării unei componente existente este mai mic decât riscul dezvoltării uneia noi
Utilizarea cunoştinţelor specialiştilor
Decât să lucreze repetat la proiecte similare, specialiştii pot dezvolta componente reutilizabile care să
le încapsuleze cunoştinţele
Standardele organizaţionale pot fi integrate în componente reutilizabile
De exemplu: standardele privind interfaţa cu utilizatorul
Reducerea timpului de dezvoltare
2.2 Clasificarea tehnologiilor de reutilizare
Tehnologii bazate pe compunere
Reutilizarea se face parţial prin compunerea unui nou sistem din componentele existente
Elementele constitutive (engl. “building blocks”) sunt fragmente pasive ce sunt copiate dintr-o bază
de componente existentă
De exemplu: bibliotecile de funcţii
Tehnologii bazate pe generare
Cunoştinţele reutilizate se regăsesc într-un program care generează un alt program
Tiparele reutilizabile reprezintă un element activ folosit pentru a genera sistemul ţintă
De exemplu: generatoarele de aplicaţii
REUTILIZAREA PRODUSELOR SOFTWARE
5
3. TIPURI DE REUTILIZARE (Serian Bianca)
3.1 Reutilizarea proiectării
Reutilizarea proiectării (arhitecturii) se referă la modalitatea în care se îmbină diverse părţi ale unui system.
Ea se dovedeşte profitabilă într-un mediu în care este dezvoltat mereu şi mereu acelaşi tip de program.
Exemple:
Construcţia compilatoarelor: Parser, analizor lexical, analizor sintactic, tabelă de simboluri,
generator de cod, etc.
Mediile de dezvoltare software
3.2 Reutilizarea conceptelor
Când se reutilizează programele sau componentele de proiectare, trebuie respectate deciziile de proiectare ale
dezvoltatorului originar. Acest fapt poate limita ocaziile de reutilizare.
O formă mai abstractă de reutilizare este reutilizarea conceptelor: o anumită abordare este descrisă într-o
manieră independentă de implementare.
Două mari tipuri de reutilizare a conceptelor sunt:
Şabloanele de proiectare
Programarea generică (clase generice, template-uri, aspecte)
3.3 Reutilizarea bazată pe generare
Generatoarele de programe implică reutilizarea şabloanelor şi algoritmilor standard.
Aceştia sunt integraţi în generator şi parametrizaţi prin comenzile utilizatorului, apoi se generează automat
programele.
Reutilizarea bazată pe generare este posibilă când pot fi identificate abstracţiunile domeniului şi acestea pot
fi transformate în cod executabil.
Pentru a controla şi compune aceste abstracţiuni se utilizează un limbaj specific domeniului.
3.4 Reutilizarea sistemelor de aplicaţii
Presupune reutilizarea unor aplicaţii întregi prin configurarea sistemului pentru un anumit mediu sau prin
integrarea a două sau mai multe sisteme pentru a crea un nou produs.
REUTILIZAREA PRODUSELOR SOFTWARE
6
3.5 Reutilizarea produselor comerciale
(Commercial Off-The-Shelf)
Sistemele comerciale sunt de obicei aplicaţii complete care oferă o interfaţă de programare a aplicaţiilor
(API)
Construirea de sisteme de mari dimensiuni prin integrarea produselor comerciale este în prezent o strategie
viabilă de dezvoltare. Exemple:
Sisteme de gestiune a bazelor de date
Sisteme de comerţ electronic (client/server, module de programare web pentru trimiterea şi preluarea
comenzilor)
Avantaje
Rapiditatea dezvoltării aplicaţiilor
Costuri (de obicei) mai mici
REUTILIZAREA PRODUSELOR SOFTWARE
7
4. DOMENIUL (Serian Bianca)
Un domeniu este caracterizat printr-o colecţie de noţiuni comune care au coerenţă, în timp ce în afara
domeniului, aceleaşi noţiuni nu există sau nu prezintă aceeaşi coerenţă.
Domeniile pot fi mai largi sau mai restrânse.
Pentru majoritatea domeniilor, nu este evident imediat care sunt primitivele corecte.
Este în ultimă instanţă o problemă de încercare şi eroare.
4.1 Evoluţia unui domeniu
La început, nu există încă un set clar de noţiuni şi tot programul este scris de la început.
Experienţa se câştigă încet, pe măsură ce se învaţă din greşelile anterioare
În etapa a doua, probleme similare sunt depistate şi rezolvate în moduri similare.
Sunt recunoscute primele primitive semantice
După ce se încearcă şi se dă greş, se decide care sunt primitivele utile şi care sunt cele inutile
În a treia etapă, domeniul este gata de reutilizare.
S-au implementat un număr rezonabil de programe, s-a stabilit o mulţime de concepte, s-au găsit
soluţii standard pentru o serie de probleme standard
În sfârşit, domeniul a fost explorat în totalitate.
Implementarea programelor pentru domeniu poate fi automatizată
Nu se mai programează efectiv, ci se foloseşte o interfaţă standard formată din primitivele semantice
ale domeniului
4.2 Reutilizarea domeniului
În prima etapă nu există reutilizare.
În a doua etapă reutilizarea este „ad hoc”.
În a treia etapă reutilizarea este structurată, componentele existente sunt refolosite într-un mod organizat
atunci când se implementează un nou program.
În etapa a patra, reutilizarea este instituţionalizată şi automatizată, efortul uman este concentrat la nivelurile
superioare de abstractizare.
REUTILIZAREA PRODUSELOR SOFTWARE
8
4.3 Formalizarea unui domeniu
A formaliza un domeniu înseamnă a construi un limbaj formal (pe domeniu) care mimează un limbaj
informal existent.
Trebuie apoi să se aleagă dintre diversele primitivele semantice care există informal.
Uneori se adaugă noi primitive, care se potrivesc bine domeniului formalizat.
Formalizarea este un proces iterative.
Persoanele care lucrează în domeniu încep să folosească primitivele limbajului construit.
REUTILIZAREA PRODUSELOR SOFTWARE
9
5. MECANISME PENTRU REUTILIZARE (Jica Andreea)
Reutilizarea componentelor software presupune ca dezvoltatorii sa gaseasca sis a inteleaga componentele, sa
incorporeze componentele in propriul proiect sis a le foloseasca in functie de functionalitatea acestora.
Inginerii software se bazeaza pe documentatia API si manuale pentru a le permite reutilizarea anumitor
librarii software. Pentru o dezvoltare bazata pe SPL se va folosi documentatia din procedurile de utilizare si
creeare a instantelor, care reprezinta nucleul SPL-ului.
Pentru a introduce o component software in programul dezvoltat, dup ace aceasta este gasita, programatorul
trebuie sa o faca disponibila pentru utilizare. Modalitatile prin care se poate face acest lucru se impart in
functie de momentul de timp cand se realizeaza legatura cu componentele reutilizabile:
In timpul programarii, utilizand controlul versiunii pentru codul sursa.
In timpul compilarii, utilizand controlul versiunii pentru librarii statice.
In timpul linkeditarii, pentru librariile dinamice, se realizeaza de sistemul de operare sau masina
virtuala.
In timpul rularii, realizata de tehnologii middleware sau prin mecanisme specific aplicatiei.
Reutilizarea legaturii in primele momente de timp (programare sau compilare)ajuta la utilizarea variatiei ad-
hoc. Daca legatura se face la ultimele momente de timp(linkeditare sau in timpul rularii) va intarzia legarea
de o solutie si va ajuta la obtinerea avantajelor variatiei sistematice.
Limbajele de programare asigura apelarea componentelor software prin procedure, functii si metode. Pentru
sistemele bazate pe COBRA sau SOAP exista mecanisme care apeleaza componentele software ce ruleaza pe
alte masini. Mecanismele de pe SPL sunt cele ce se gasesc si in cadrul dezvoltarii clasice a unui sistem
software.
5.1Gestionarea configuratiei software pentru reutilizare
Gestiunea configuratiei software se refera la monitorizarea si controlul schimbarilor software. Aceasta se
imparte in trei mari activitati:
Controlul versiunii: Componentele software reutilizabile, ca orice produs software, vor avea diferite
versiuni din cauza remedierii erorilor și aducerii unor imbunatatiri. Pentru a construi un sistem care
utilizează aceste componente, cineva trebuie să știe ce versiune să o folosească. Versiunile vechi trebuie
să fie pastrate drept referință, astfel încât să poată fi folosite pentru a se face corecții și îmbunătățiri. Cat
timp componentele software se schimba, ele formează versiunile succesive. Controlul versiunii este
activitatea de urmărire a acestor versiuni.
Controlul schimbarii:Este procedura de a solicita modificări, a decide ce
modificări se fac, a face modificările, și a înregistra și verifica modificările. Modificările la componentele
reutilizabile dintr-o bibliotecă nu se pot face la intamplare, ci în conformitate cu un proces controlat.
Controlul build-ului: Urmărirea versiunilor produselor de lucru care pot forma un produs finit, și
generarea de corect a a sistemelor si componentelor derivate, este numit controlul build-ului. Controlul
build-ului pentru reutilizare are două aspecte. Primul este specificarea generala a caror componente pot fi
folosite intr-un anumit build de sistem iar al doilea aspect este faptul că unele componente reutilizabile
pot fi la randul lor alcatuite din alte elemente, astfel încât sa poata fi nevoie de specificații suplimentare.
REUTILIZAREA PRODUSELOR SOFTWARE
10
6. MECANISME CE ASIGURA VARIETATEA SOFTWARE (Jica Andreea)
Componentele de baza ofera un support pentru functionare variabila. Suportul pentru varietate
este specificat de la nivelul arhitecturii.
Exista si mecanisme de variatie non-arhitecturale cum ar fi cele la nivelul proiectului sau la
nivelul codului sursa. Aceste tipuri de variatii pot de asemenea sa fie folosite simultan pentru o
singura componenta.
Mecanismele de variatie la nivelul arhitecturii au scopul de a permite sistemului sa suporte un
anumit tip de functionalitati. Nu au legatura cu un anumit limbaj de programare, ele fiind proiectate
la nivel superior, spre exemplu arhitecturile de platform si plug-in-uri. Acestea trebuie create prin
programare insa nu sunt suportate direct de limbajul de programare folosit.
Mecanismele de variatie la nivelul proiectului sunt cele suportate direct prin limbajul de
programare folosit. De exemplu definirea de interfete implementate in diverse moduri sau suportul
pentru mostenire.
Mecanismele de variatie la nivelul fisierelor sunt oferite de mediile de dezvoltare si limbajele
de programare. De asemenea unele limbaje ofera suport pentru compilare conditionata. Pentru a
varia functionalitatea, scripturile de compilare pot realiza o variatie logica sau fizica a fisierelor.
Managementul configuratiei software are principalul rol de a oferi support pentru refolosirea
componentelor prin identificarea si gestionarea versiunii produsului si componentelor ce il
formeaza. Noile versiuni de produse nu este obligatoriu sa foloseasca cea mai noua versiune a
componentelor de baza. De aceea putem considera ca si istoricul versiunilor dintr-un sistem care
gestioneaza configuratia poate fi folosit pentru variatia software.
REUTILIZAREA PRODUSELOR SOFTWARE
11
7. GENERAREA CODULUI (Jica Andreea)
Componentele software sunt proiectate cu scopul de a fi utilizate in alte programe fara a fi necesara
recompilarea codului sursa. Pentru ca aceasta component sa poata fi folosita pe scara cat mai larga, definirea
claselor si implementarea obiectelor trebuie sa respecte anumite reguli care sunt diferite in functie de fiecare
sistem de operare.
Pentru a genera un cod software trebuie sa transformam intarile de nivel inalt in iesiri de nivel jos, acestea
necesitand o prelucrare suplimentara. Se poate genera cod si automat, cu ajutorul programarii generative.
Aceasta se concentreaza pe sutomatizarea dezvoltarii aplicatiei. Scopurile acestui tip de generare pot fi
multiple, de la reducerea gaurii conceptuale dintre codul programului si conceptele de domeniu la atingerea
unei reutilizabilitati si adaptabilitati inalte sau marirea eficientei si productivitatii.
Compilatorii limbajelor de programare Fortran, C , C++ si Java sunt cei mai bun generatori de cod actuali.
Acestia au rolul de a genera fisierele executabile insa pot si evalua parti mari ale codului sursa si pot sa
incerce s ail reduca la o implementare mai eficienta cu ajutorul contextului.
Generatoarele de cod faciliteaza reutilizarea software iar atunci cand sunt adaptate la domeniul aplicatiei
acestea pot sa preia automat sis a adapteze atat codul cat si documentatia.
Pentru a dezvolta acest tip de generatoare era nevoie de cunostiinte si experienta atat in limbajul respectuv
cat si in dezvoltarea compilatorului. Insa in momentul de fata datorita tehnologiilor bazate pe XML
programarea generativa a devenit mai accesibila.
REUTILIZAREA PRODUSELOR SOFTWARE
12
8. SOFTWARE OPEN SOURCE (Jica Andreea)
Programele (software-ul) cu sursă deschisă (engleză open source software)
sunt programe (software) dezvoltate de către o comunitate, de către o companie sau de către o
persoană și oferite spre folosire sub o licență liberă, care garantează accesul tuturor utilizatorilor
la codul-sursă.
- Exemple de programe open source: Vuze (client bittorrent), Blender (grafică
3D), Pidgin (client pentru mesagerie instantanee), o mulțime de distribuții GNU/Linux, Mozilla
Firefox (browser),OpenOffice.org (suită office) etc.
- Sistemul de operare GNU/Linux este alcătuit integral din programe libere (open source),
unele distribuții GNU/Linux fiind gratuite, altele contra cost (comerciale). De asemenea, există și
programe (software) contra cost (comerciale) pentru platforma Linux.
Software-ul liber e caracterizat de libertatea acordată utilizatorilor săi de a-l utiliza, copia,
redistribui, studia, modifica și îmbunătăți. Mai exact, este vorba de următoarele patru forme de
libertate pentru utilizatorii săi:
Libertatea de a utiliza programul, în orice scop (se mai numește "libertatea 0").
Libertatea de a studia modul de funcționare a programului, și de a-l adapta nevoilor proprii
("libertatea 1"). "Open source" asigură accesul la tot codul-sursă.
Libertatea de a redistribui copii, în scopul ajutorării aproapelui tău ("libertatea 2").
Libertatea de a îmbunătăți programul, și de a pune îmbunătățirile la dispoziția publicului, în
folosul întregii societăți ("libertatea 3"). Necesită accesul la codul-sursă.
Un program (o aplicație) este Software liber dacă întrunește toate aceste libertăți. Astfel,
oricine oriunde ar trebui să fie liber să redistribuie copii, modificate sau nu, în mod gratuit sau
contra unei sume pentru costurile de desfacere. Aceste libertăți înseamnă (printre altele) că nu este
necesar a cere sau a plăti pentru a primi permisiune în acest scop.
Trebuie de asemenea să existe libertatea de a face modificări și de a le folosi atât pentru uz
personal cât și cu titlu profesional sau în scop recreativ, fără a fi obligat de a menționa cuiva anume
că aceste modificări există, situație care se aplică și atunci când modificările se fac publice.
Libertatea de a utiliza un program presupune că acesta să poată fi folosit de orice persoană sau
organizație, pe orice tip de sistem de calcul, pentru orice formă de activitate, și fără a trebui să se
comunice aceasta autorului programului sau altor entități juridice.
Libertatea de a redistribui copii trebuie să includă forme binare sau executabile ale
programului, ca și codul sursă, atât în versiunile originale cât și în cele modificate. Distribuirea
programelor în formă executabilă ușurează instalarea lor. Dacă nu există concret posibilitatea de a
produce forma binară sau executabilă pentru un anumit program (anumite limbaje de programare nu
suportă acest mod de lucru), aceasta se poate trece cu vederea, cu condiția să se acordă dreptul de a
le distribui sub aceste forme în viitor.
Pentru a avea libertatea de a implementa modificări și de a publica versiuni îmbunătățite, este
nevoie de accesul la codul-sursă al programului, o condiție necesară pentru a putea califica un
program drept „liber”.
REUTILIZAREA PRODUSELOR SOFTWARE
13
Pentru ca aceste libertăți să fie reale, ele trebuie să fie irevocabile atât timp cât utilizatorii nu
comit vreo faptă ilegală; dacă autorul programului își rezervă prerogativa de a revoca licența fără a-
și întemeia această decizie pe comiterea unei anumite fapte de către utilizator, atunci software-ul nu
este liber.
Totuși, există și anumite reguli acceptabile privind distribuirea de Software liber, atunci când
aceste reguli nu afectează libertățile centrale. Spre exemplu, copyleft este, pe scurt, regula potrivit
căreia prin redistribuirea software-ului nu se permite adăugarea de limitări libertăților fundamentale
ale altor utilizatori. Această regulă nu contravine libertăților fundamentale, ci le protejează.
Indiferent de modul în care se obțin programele conform GNU, deci atât cu, cât și fără plată,
oricine are dreptul de a le copia, modifica, și chiar de a vinde copii ale acestora la alții.
Software liber nu înseamnă neapărat că este și necomercial (gratis). Un program liber trebuie
să fie utilizabil și în scop comercial, și să fie disponibil pentru dezvoltare și distribuție comercială.
Dezvoltarea comercială a software-ului liber nu mai este ceva neobișnuit, devenind chiar foarte
importantă.
Eventualele condiții sub care se pune pe piață o versiune modificată sunt acceptabile, dacă
acestea nu anulează libertatea de a lansa versiuni modificate. Clauzele conform cărora "dacă
publicați un program în forma X, trebuie să îl publicați și în forma Y" sunt de asemenea acceptabile,
sub aceeași condiție. (O asemenea clauză nu împiedică opțiunea de a publica sau nu programul.)
Este de asemenea acceptabil ca o licență să stipuleze obligativitatea ca în cazul lansării unei
versiuni modificate, la cererea unui autor anterior al programului să i se trimită și acestuia o copie.
În cadrul proiectului GNU se utilizează conceptul de „copyleft” pentru a proteja juridic aceste
libertăți pentru public. Există însă și software liber în afara copyleft-ului. Există motive puternice de
a utiliza copyleft-ul, dar chiar dacă un program nu face uz de copyleft, el poate fi utilizat în
continuare.
Uneori reglementările vamale și sancțiunile comerciale internaționale pot limita libertatea de a
distribui în lume copii ale programelor. De obicei autorii de software nu au puterea de a ocoli sau
depăși aceste restricții, dar pot, și trebuie să refuze impunerea de restricții utilizatorilor programelor
create de ei. În acest mod, restricțiile nu vor afecta activitățile utilizatorilor aflați în afara jurisdicției
statelor care le impun.
Discutând despre software-ul liber este indicat să se evite termeni ca „gratuit” sau „pe gratis”,
întrucât acești termeni pot conduce la ideea că principala caracteristică a softului liber ar fi prețul, și
nu libertatea sa.
Condițiile enumerate în definiția software-ului liber necesită de obicei o analiză atentă pentru
a se constata întrunirea lor. Pentru a decide că un anumit program este într-adevăr Software liber, el
trebuie să respecte atât litera cât și spiritul definiției. Dacă o licență de utilizare a unui program
include restricții excesive ea ar trebui refuzată, chiar dacă acele restricții nu au fost anticipate în
enunțarea criteriilor de definire. Uneori prevederile incluse într-o licență conduc la situații ce
trebuie analizate minuțios, inclusiv prin discuții cu avocați de specialitate, înainte de a decide dacă
acele prevederi sunt acceptabile sau nu.
Prin cod open source, se are intotdeauna accesul asupra codului sursa. Interfetele versiunilor
de varf 16 ale softului open source se pot schimba dar prin faptul ca se are acces asupra codului
sursa, faciliteaza modificarea si portarea aplicatiei.
REUTILIZAREA PRODUSELOR SOFTWARE
14
9. CONCLUZII (Serian Bianca)
Toate software-urile reutilizabile pot fi clasificate în douăsprezece scenarii distincte, folosind o matrice
bidimensionala în care o dimensiune este sfera de testare (de exemplu, infecțioase, în carantină, și imunitar),
iar cealaltă este timpul (de exemplu cerințele de timp, timpul de proiectare, timpul de implementare și
execuție).
Scenariile infectioase oferă cea mai mare flexibilitate în crearea de noi solutii, cu toate acestea ele sunt
predispuse la a produce o legătură strânsă între bază și soluții noi și crearea de software clonat. De aceea, nu
sunt recomandate aceste scenarii de personalizare, în special pentru inițiativele la scară largă, cum ar fi linii
de produse software. Scenarile infecțioase pot fi benefice pentru o soluție ciclul de viață scurt, unic, care nu
necesită întreținere.
Scenariile imunitare sunt dovada clona, cu toate acestea, ele sunt costisitoare pentru a construi și limiteaza o
mare parte din flexibilitate. Prin urmare, sunt recomandate doar pentru soluții care trebuie să fie
personalizate în cantități mari, cum ar fi produse COTS.
Scenariile de carantină reprezintă un compromis între flexibilitate și protecție de la clonare. Prin urmare, sunt
recomandate pentru cele mai multe cazuri de personalizare software non- COTS. În funcție de timpul de
legare cazul de utilizare extinde si relatii in carantina, metode și limbaje orientate pe aspect, de fatada,
modelele Inversiunii de Control și Serviciilor de Localizare sunt cele mai importante tehnici pentru a sprijini
scenarii de carantină.
REUTILIZAREA PRODUSELOR SOFTWARE
15
10. BIBLIOGRAFIE
http://fmi.unibuc.ro/ro/teme_cercetare
http://www.biglever.com/papers/Krueger_AcmReuseSurvey.pdf
http://www.epcc.ed.ac.uk/wp-content/uploads/2007/02/softwareefficiency.pdf
http://www.sqa.net/iso9126.html
http://www.c-
sharpcorner.com/UploadFile/nrsurapaneni/CodeReusability11082005001823AM/CodeReusability.a
spx
http://www.aut.upt.ro/staff/diercan/data/PSSC/curs-09.pdf
http://en.wikipedia.org/wiki/Open-source_software
http://en.wikipedia.org/wiki/Linux
McClure C. Software reuse: a standards based guide. IEEE Computer Society, Los Alamitos, 2001.
Ian Gorton. Essential Software Architecture . Editura Springer. 2006