REUTILIZAREA PRODUSELOR SOFTWARE -...

15
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

Transcript of REUTILIZAREA PRODUSELOR SOFTWARE -...

Page 1: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 2: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 3: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 4: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 5: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 6: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 7: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 8: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 9: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 10: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 11: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 12: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 13: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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.

Page 14: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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

Page 15: REUTILIZAREA PRODUSELOR SOFTWARE - stst.elia.pub.rostst.elia.pub.ro/news/IS/TEME_IS_2013_14/2_JicaAn_SerianBi_Reutilizare... · creeare a instantelor, care reprezinta nucleul SPL-ului.

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