Noţiuni de program şi produs program. Clasificarea PP.
1.1 Produse program, componente ale software-ului
În vederea îndeplinirii unor funcţiuni de prelucrare a informaţiilor,
informatica pune la dispoziţia utilizatorilor, un ansamblu de echipamente,
programe si proceduri de operare, implementare si întreţinere; acest ansamblu
constituie un sistem de prelucrare automata a datelor sau un sistem informatic,
dacă colectarea, stocarea, prelucrarea şi distribuirea informaţiilor se face în special
cu mijloace automate.
Sistemul informatic are deci în componenţa sa ansamblul de echipamente
(hardware), ansamblul de programe (software) şi ansamblul de personal.
Prin noţiunea de software se înţelege produsul intelectual ce consta din
programe, proceduri, reguli si documentatia asociata pentru funcţionarea unui
sistem de prelucrare a datelor. Software-ul nu trebuie redus numai la sistemul de
programe propriu-zis ci cuprinde procedurile de operare, implementare, utilizare,
întreţinere, documentaţia asociată acestora, precum si interacţiunea cu utilizatorii.
Componentele software-ului sunt produsele program. Orice produs
program este constituit din :
- programul propriu-zis (codul sau instrucţiunile);
- datele asociate prelucrărilor prevăzute în program;
- documentaţia asociată produsului.
Produsele program (produse software) sunt asemănătoare produselor
rezultate dintr-o activitate de producţie tradiţională, ele trecând prin etapele de
analiză, proiectare, realizare, testare, experimentare si utilizare. Deosebirea constă
în faptul că produsele program rezultă dintr-o activitate intelectuala şi sunt
destinate punerii în valoare a produselor de tip calculator sau echipament, care
funcţioneaza pe baza de instrucţiuni (program). Considerând că esenţial raportul
dintre utilizator şi maşina, produsele program se pot stratifica în urmatoarele
categorii (figura 1.1).
Figura 1.1 Stratificarea produselor program
1. Sisteme de operare - programe de bază, cu caracter universal; un sistem de
operare este o colecţie de elemente software care controlează execuţia
programelor şi furnizează servicii altor componente ale software-ului.
2. Extensii ale sistemelor de operare - sunt sisteme de operare cu caracter
dedicat, care asigură, la nivelul echipamentelor, facilităţi speciale cerute
numai de anumite aplicaţii; ca exemplu, amintim sistemele de operare pentru
reţele de calculatoare, mesagerie electronică, teleconferinţe, sisteme de
operare pentru conducere de procese tehnologice etc.
3. Sistemele de gestiune a bazelor de date (SGBD) - sunt sisteme de
programare pentru gestiunea datelor dintr-o bază de date, care asigură
independenţa programelor faţa de modul de structurare a datelor, o
redundanţă minimă în memorarea acestora precum şi timp minim de răspuns
la solicitarile utilizatorilor.
4. Produse program orientate pe metodă sau model matematic - sunt
produse program de tipul bibliotecilor de (sub)programe matematice,
pachete şi sisteme de programe pentru rezolvarea unor clase de aplicatii ce
au la baza acelaşi model sau metodă matematică etc.
5. Produse program orientate pe domenii sau pe specificul domeniului de
aplicaţie – sunt produse destinate rezolvării aplicaţiilor din diferite domenii
de activitate umană (industrie, agricultură, transporturi, medicină etc.)
6. Instrumente pentru realizarea produselor program - sunt entităţi
software care prelucrează/acţionează asupra altor entităţi software, fie ca
instrumente de programare, fie ca o componentă transparentă a sistemului de
programare sau a sistemului de operare. Ele pot fi simple instrumente
dispersate sau integrate în medii de programare, sisteme de dezvoltare
complexe, produse de tip CASE (Computer Aided Software Engineering).
După cum se observă din figura 1.1, instrumentele pot opera asupra tuturor
componentelor clasificării date şi se regăsesc la orice nivel al piramidei. De
asemenea unele dintre ele constituie calea prin care componentele de nivel superior
(de exemplu cele de nivel 4 si 5) folosesc facilităţile oferite de cele de nivel
inferior. Produsele program orientate pe metodă/domeniu (categoriile 4 si 5)
formeaza softwareul de aplicatie. Ele sunt uşor de utilizat, au o structură
modulară (care le conferă un grad înalt de flexibilitate în implementare precum şi
facilităţi de extindere şi modificare) şi dispun de documentaţie adecvată sub formă
de manuale de prezentare, utilizare şi operare.
Precizăm faptul că acelaşi produs program poate fi clasificat atât după
domeniul de aplicaţie în care este utilizat cât şi după metoda/modelul pe care se
bazează.
Caracteristicile generale întrunite de produsele program orientate sunt:
1. generalitate - produsul program rezolvă toate problemele din clasa
respectivă;
2. eficienţa algoritmului - durata execuţiei să fie mică iar memoria internă
utilizată să fie redusă;
3. parametrizare completă - parametrii algoritmului sa fie sub controlul
utilizatorului;
4. independenţa între intrari şi iesiri;
5. portabilitate - produsul să poată fi implementat pe diferite tipuri de
calculatoare fără modificări prea mari;
6. robusteţe, siguranta în execuţie - dispun de o bază matematică solidă,
convergenţa algoritmului să fie demonstrată etc.;
7. fiabilitate ridicată - numarul de erori în faza de execuţie să fie foarte mic.
Utilizarea produselor program orientate prezintă următoarele avantaje:
reducerea efortului si costului realizarii programelor/sistemelor informatice;
reducerea timpului total de implementare a aplicaţiilor/sistemelor; reducerea
erorilor în fazele de implementare şi execuţie; asigură o legatură directă om-
maşina; asigură performanţe de timp de calcul şi precizie.
Dintre dezavantaje amintim: numărul mare de instrucţiuni, slabă eficienţă
sub aspectul utilizării echipamentelor de calcul, documentaţie deficitară.
Elementele constitutive ale software-ului de aplicaţie sau ale produselor
program orientate pot fi de următoarele tipuri: programe, module, pachete sau
sisteme de programe, biblioteci de programe, biblioteci de subprograme etc.
Programul este o combinaţie de instrucţiuni de calcul şi definiţii de date
care permit calculatorului să execute calcule şi funcţii de control, reprezentând deci
codificarea într-un limbaj accesibil maşinii sau într-un limbaj de nivel înalt a unor
algoritmi sau a unor funcţii de prelucrare a informaţiei. Programul constituie o
unitate de sine stătătoare care interacţioneaza doar cu sistemul de operare şi
lucreaza cu date de intrare /ieşire proprii.
Modulul (la nivel de program) este un element de structura al programului,
rezultat din divizarea acestuia în parti disjuncte, astfel încât fiecare parte sa aiba
independenta functionala, iar interactiunea dintre parti sa fie minima. Modulul este
caracterizat de urmatoarele elemente: functia, logica, interfata si ponderea sau taria
modulului. Mentionam ca termenul de modul este utilizat la orice nivel în ierarhia
sistem informatic, subsistem, aplicatie, program, modulele unui sistem fiind
subsistemele, ale unui subsistem fiind aplicatiile, ale unei aplicatii fiind
programele. Modularitatea la nivel de programe se numeste micromodularitate.
Pachetul/sistemul de programe reprezintă o mulţime de programe/module,
constituită într-o structură de tip liniar, arborescent sau reţea, care rezolvă izolat
sau împreună probleme de un anumit tip, aparţinând unei aceleaşi clase de
probleme.
Bibliotecile de (sub)programe sunt colecţii de (sub)programe care rezolvă
probleme dintr-o anumita clasă şi sunt folosite de programatori ca instrumente de
dezvoltare a aplicaţiilor, obţinând astfel un înalt grad de standardizare si
modularizare. Subprogramele nu efectuează operaţii de intrare/iesire, datele şi
rezultatele fiind transmise prin listă de parametrii sau zona comună.
Orice program (figura 1.2.) este compus din trei părţi principale: date,
algoritm şi structură. Interacţiunea acestora este prezentată în figura 1.3.
Algoritmul specifică un set de operaţii ce se aplică asupra mulţimii datelor,
rezultând la intersecţia acestor două părţi, operaţii de intrare/iesire, operaţii logice,
atribuiri, etc.
Structura programului defineşte pe mulţimea datelor diferite tipuri de
structuri de date necesare prelucrarilor cuprinse în algoritm.
Figura 1.2 Părţile componente ale unui program
De asemenea structura programelor induce asupra algoritmului diferite tipuri de structuri fundamentale de control.
Figura 1.3 Interacţiuni între părţile unui program
Se mai poate spune că structura unui produs program este echivalentă cu modul de organizare folosind secvenţa, selecţia, iteraţia şi ierarhia.
Secvenţa este un grup de enunţuri care se execută liniar. Selecţia este o structură care alege între executarea secvenţei s1 sau
secventei s2 în funcţie de realizarea sau nerealizarea unei condiţii c. Repetiţia este structura care constă în executarea, de un anumit număr de
ori, a unui grup de enunţuri. Ierarhia este un mod de organizare după un anumit criteriu dominant.
Când aceste structuri sunt aplicate asupra datelor, rezultă structuri de date iar când se aplica asupra algoritmilor se obţin structuri de control ale produsului program ce corespund în diferite limbaje de programare unor construcţii specifice.
Folosind aceste considerente, în capitolele următoare se vor trata distinct fiecare dintre părţile componente ale produsului program precum si interactiunile dintre acestea.
1.2. Generaţii de produse program
Daca în domeniul echipamentelor se vorbeşte de generaţii de calculatoare,
determinate mai ales de inovari tehnologice radicale (de la tub electronic,
tranzistor, circuit integrat, la microelectronica), pentru celelalte domenii - produse
program, personal de specialitate, utilizatori finali şi conducătorii acestora - nu se
pot identifica jaloane la fel de precise şi marcate.
Cu toate acestea, prin analogie şi în strânsa legatura cu generaţiile de
calculatoare, se poate vorbi şi de generaţii de produse program, evoluţia si
performanţele echipamentelor de calcul fiind determinante pentru evolutia
produselor program.
Referindu-ne la cele patru domenii ale prelucrarii automate a datelor,
amintite anterior, în anumite perioade si în functie de locul si de gradul de
raspândire a informaticii, au existat si exista înca decalaje între nivelele de
dezvoltare sau generatii. Faţă de situaţia limita ideala, când nivelul de dezvoltare a
echipamentelor, programelor, personalului de specialitate si utilizatorilor ar trebui
sa fie cât mai apropiat, se opune situaţia în care între acestea există decalaje, există
o "discrepantă a generaţiilor". O astfel de situaţie se apreciază că a existat atunci
când echipamentele erau de generaţia a treia, programele de generaţia a doua,
personalul de specialitate de generatia întâi, iar conducatorii/utilizatorii de
generaţia zero.
Generaţia a treia de calculatoare a însemnat, printre altele, si un nou mod de
lucru, acela în regim de teleprelucrare. Sistemele de operare care însoţeau aceste
echipamente nu erau orientate spre un astfel de regim de lucru sau în versiuni
ulterioare rezolvau numai parţial aceste probleme; de asemenea, maniera de
proiectare şi realizare a programelor aplicative (maniera "artizanala") nu era la
nivelul hardware-ului folosit, acest lucru având urmări atât asupra calităţii
produselor program, cât si sub raportul utilizării echipamentelor.
Formarea personalului de specialitate necesar, atât ca pregatire cât si ca
specialităţi si numar, a reprezentat un proces continuu, marcat de faptul că, aşa
cum s-a mai amintit, se desfăşura o dată cu dezvoltarea echipamentelor si
programelor. În acelasi timp utilizatorii, mai ales conducatorii acestora, nu erau
pregătiţi pentru introducerea şi utilizarea tehnicii de calcul.
Pentru atenuarea diferentelor de nivel (generaţii) între cele patru domenii, s-
a evidenţiat necesitatea unor masuri ca:
1. Introducerea unor metodologii, tehnici, metode de lucru standardizate pentru
realizarea produselor program.
2. Realizarea cu ajutorul mijloacelor amintite a unor subprograme/pachete de
programe, într-un cuvânt produse program aplicative generalizabile,
corespunzatoare din punct de vedere calitativ si cantitativ.
3. Automatizarea procesului de realizare a produselor program.
4. Îmbunătăţirea programelor de formare si perfecţionare în mod unitar a
specialiştilor şi utilizatorilor (inclusiv conducatori).
Având în vedere gradul crescut de interconectare între calculatoare, în prezent
iau o amploare tot mai mare aplicaţiile distribuite bazate pe arhitecturi client-
server. La ora actuală dezvoltările în domeniul tehnologiei informaţiei si deci şi în
realizarea de software, sunt legate de Internet şi Intranet. Între evoluţia produselor
program, a limbajelor de programare şi a generaţiilor de calculatoare există o
legătură absolut explicabilă. Astfel privită în timp evoluţia principalelor limbaje de
programare şi raspândirea lor în utilizare poate fi reprezentată ca în figura 1.4.
Dacă la începuturile informaticii, programarea se facea numai în limbaj maşină
(aportul omului era de peste 90%), apariţia următoarelor generaţii este însoţită de
câteva dezvoltări semnificative ale limbajelor. Între evoluţia limbajelor si
generaţiile de calculatoare este o oarecare concordanţă, în sensul că în generaţia a
doua predomina limbajul de asamblare, generaţia a treia înseamna mai ales
folosirea limbajelor procedurale de nivel înalt, generaţia a patra - raspândirea
sistemelor pentru gestiunea bazelor de date, a limbajelor de interogare,
generatoarelor de rapoarte şi a limbajelor specializate pentru diverse domenii.
Generaţia a cincea se pare că va fi însoţită de proliferarea limbajelor neprocedurale
apropiate de limbajul uman şi în care aportul programatorului în scrierea
programului va fi sub 5%. Caracteristic deci generaţiilor de produse program
delimitate dupa tipul limbajului de programare utilizat este şi raportul dintre munca
efectuată de om si cea efectuată de calculator pentru realizarea produselor program
(figura 1.5.).
Figura 1.4. Evoluţia limbajelor de programare
Figura 1.5. Evoluţia efortului uman în raport cu generatiile de limbaje
O data cu această evoluţie se constată o scadere permanentă a raportului
dintre munca efectuata de om si cea realizată de sistemul de calcul.
Facând o extensie, de la tip de limbaj la produs program, se poate vedea
foarte clar modul de evoluţie al acestora din urma. Nu ne putem limita însa la
această stratificare a generaţiilor de produse program numai dupa limbajele în care
au fost scrise. Trebuie să ţinem seama şi de evoluţia mijloacelor tehnice, evoluţie
care trebuie privită din punctul de vedere al harware-ului (de la calculatoarele mari
la calculatoarele personale) şi al software-ului (de la limbaje suport, sisteme de
operare, la SGBD-uri).
Astfel, produsele program au avut urmatoarea evoluţie:
a. Produse program care prelucreaza date/informatii:
produse program monolit (închise);
produse program modular-structurate;
produse program conversaţionale (evoluţia programului este
liniară, determinată de dialogul de tip întrebare-răspuns dintre
produsul program şi utilizator);
produse program interactive;
b. Produse program care prelucreaza cunostinţe:
sisteme de asistare a deciziei;
sisteme expert.
Între aceste ultime două categorii există unele deosebiri atât de natură
arhitecturală cât si funcţionala. În ultimul timp, tot mai mulţi autori consideră că
sistemele de asistare a deciziei fac parte din clasa sistemelor expert, care
incorporează o bază de date, o bază de cunostinţe, un mecanism inferenţial şi o
interfaţă de I/E care facilitează interacţiunea decidenţilor cu sistemul.
1.3. Clasificarea produselor program orientate pe metodă şi pe domeniu
Regăsirea produselor program în cataloage si biblioteci de programe este
facilitată de stabilirea apartenenţei lor la o anumită mulţime de programe. Aceasta
apartenenţă este stabilită printr-o multitudine de criterii dintre care numai unele vor
fi enumerate în continuare.
Produsele program orientate pe metodă / model se pot clasifica astfel:
1. dupa complexitatea lor, produsele program pot fi :
independente - programe distincte care realizează câte o funcţie precisă si
pot fi utilizate independent sau în cadrul unor colecţii de programe;
biblioteci de programe/subprograme - colecţii create pentru a fi folosite
independent sau în cadrul acţiunii de dezvoltare a altor produse program;
pachete/sisteme de programe;
2. după funcţia îndeplinită în cadrul sistemelor de prelucrare automată a
datelor:
programe de exploatare a datelor - sisteme de gestiune a fisierelor, sisteme
de obţinere automată a unor anumite tipuri de rapoarte;
sisteme de gestiune a bazelor de date;
programe de aplicaţie - programe care asigura informatizarea unor funcţii la
nivelul unuia sau mai multor utilizatori finali;
programe utilitare - faciliteaza programarea/ realizarea unor operaţii de
rutină ca editare texte, introducere - extragere de date, sortare, interclasare
etc.;
programe auxiliare - realizează unele operaţii auxiliare în exploatarea
echipamentelor.
3. după natura modelului matematic rezolvat - produse program orientate pe
programare matematică, alocare - nivelare resurse, teoria deciziei, simulare,
planificare optimă a producţiei, gestiunea ştiinţifică a stocului, econometrie etc.
Produsele program orientate pe domeniul sau specificul aplicaţiei se pot
clasifica dupa urmatoarele criterii:
1. dupa gradul de generalitate produsele program pot fi:
de uz general - realizeaza funcţii de uz general;
generalizabile - informatizeaza funcţii specifice la nivel de
grupă tipologică de unităţi sau activităţi;
refolosibile - elaborate pentru o aplicaţie sau pentru un anumit
utilizator, pot fi preluate şi de alţi utilizatori;
unicat - elaborate numai pentru un anumit tip de utilizator sau
aplicaţie.
2. dupa natura funcţiilor utilizator informatizate, produsele program pot
fi pentru:
informatizarea proceselor de conducere;
informatizarea principalelor funcţii ale întreprinderii;
automatizarea activităţilor de birou - administrative (birotica);
informatizarea cercetării ştiinţifice, documentării, proiectării;
robotica industriala;
automatizarea activităţilor de programare;
inteligenţa artificială etc.
3. după tipul de domeniu (ramura, subramura) caruia îi aparţine
utilizatorul final produsele program pot fi pentru unităţi industriale, agricole,
silvicultura, construcţii, transporturi, telecomunicaţii, învatamânt, cultură şi artă,
ocrotirea sănătăţii, aprovizionarea tehnico - materială etc.
Există şi alte criterii de clasificare a produselor program dintre care mai
importante sunt: natura problemei ce o rezolvă, modul de descriere a problemei sau
datelor, forma de prezentare etc.
Precizam că aceleaşi produse program pot fi cuprinse în mai multe clase,
conform criteriului luat în considerare. De aceea, prezentarea lor se poate face
numai într-o singură clasă, iar enumerarea lor poate fi semnalată în toate clasele în
cauză.
1.4. Criterii de alegere a produselor program şi
evaluarea performanţelor acestora
La alegerea unui produs program se iau în considerare cerinte ca:
Dimensiunea maxima a problemei ce trebuie rezolvata în raport
cu dimensiunea maxima planificata de produsul program.
Resursele configuratiei sistemului de calcul necesare
implementarii produsului program în raport cu resursele
configuratiei sistemului la care are acces utilizatorul.
Flexibilitate, usurinta în vehicularea datelor de intrare/iesire,
modul de întelegere (învatare) a utilizarii produsului program si
de interpretare care sa conduca la un anumit numar redus de
rulari cu erori.
Costurile implicate de utilizarea curenta si de mentinere în
exploatare sa se situeze la nivele care sa nu afecteze negativ
eficienta economica a unitatii beneficiare.
Produsul program sa poata incorpora noi componente pentru
functii de prelucrare identificate ulterior si/sau sa poata fi
adaptat tehnicilor de prelucrare ce corespund dezvoltarii
ulterioare a configuratiei sistemului de calcul.
Nivelul de tratare a erorilor sa conduca la reducerea numarului
de rulari incomplete ale produsului program; produsul poate
pune în evidenta totalitatea erorilor existente în date, poate
realiza corectarea sau ignorarea unora din acestea, iar mesajele
de eroare trebuie sa stabileasca cât mai exact locul, cauza si
modalitatile de eliminare a erorilor.
Nivelele de fiabilitate si metenabilitate trebuie sa fie astfel
dimensionate încât ponderea erorilor ce necesita modificarea de
secvente în program sa fie cât mai redusa.
Implicatiile algoritmului utilizat în realizarea produsului
program asupra preciziei, vitezei, consumului de resurse.
Criteriile de alegere sunt dupa cum rezulta din cele semnalate anterior, strâns
legate de caracteristicile de calitate, asigurate în toate etapele de elaborare a
produsului program. Vom aminti ca putem vorbi, ca în cazul oricarui produs, de
calitatea la elaborator si calitatea la beneficiar sau de calitatea procesului de
realizare si calitatea produsului final.
Din punct de vedere al beneficiarului evaluarea performantelor si limitelor
unui produs program presupune examinarea unor elemente cum sunt: configuratia
minima (maxima) necesara implementarii; necesarul de memorie interna pentru
program sau corelatia dintre elementele care definesc dimensiunile problemei în
raport cu disponibilul de memorie interna; precizia pe care o pot avea rezultatele în
raport cu durata rezolvarii problemei; optiuni pentru obtinerea rezultatelor
intermediare; modul de tratare al erorilor; nivelul fiabilitatii produsului program
etc.
Evaluarea performantelor produsului program mai poate fi înteleasa ca o
comparare a nivelelor caracteristicilor sale de calitate si cele planificate. În acest
sens evaluarea se realizeaza de catre echipa de realizatori luând în considerare
exemple de control proprii sau unele probleme de rezolvat de catre beneficiarii
potentiali ai produsului program. Valorile atribuite nivelelor caracteristicilor de
calitate au în acest caz caracter orientativ. Evaluarea performantelor se efectueaza
si de fiecare utilizator în parte, incluzând particularitatile specifice ale fiecarui tip
de problema pe care o rezolva. Valorile obtinute în acest caz au menirea de a
corecta sau de a confirma nivelele existente în documentatia care însoteste
produsul program. Pentru evaluarea performantelor se întocmeste un plan de
observatii statistice si se înregistreaza informatii cu privire la:
descrierea problemei (dimensiuni, volum de date semnificative, elemente de
structura a problemei);
numarul de rulari, tipul si numarul erorilor înregistrate pentru fiecare rulare;
consumurile de resurse (ore programare, asistenta, timp calculator);
momentele de timp în care se efectueaza masuratorile.
Constituirea seriilor de date se realizeaza în timp si la evaluarea performantelor
sunt utilizate metode statistice (calculul mediei, dispersiei, corelatiei, testarea
ipotezelor privind egalitatea mediilor/dispersiilor, analiza dispersionala etc.).
Pe masura completarii seriilor de date cu noi înregistrari se procedeaza la
recalcularea nivelelor pentru caracteristicile ce definesc performantele produsului
program. Studierea caracteristicilor cu nivele mai scazute creeaza premizele
modificarii produsului program sau proiectarii de noi versiuni care conduc la
îmbunatatirea nivelelor si pentru aceste caracteristici.
Gestionarea unica a produselor program are menirea de a selecta dupa criteriul
performantei si de a generaliza implementarea lor. În acelasi timp cererile
formulate de beneficiar au ca efect perfectionarea produselor program existente si
influenteaza lansarea în realizare de noi produse program.
1.5. Stocarea si difuzarea produselor program
Progresul în domeniul programării, până la ceea ce se numeste industrializarea
programării calculatoarelor s-a realizat în momentul în care s-a constatat
paralelismul existent între produsele industriale în general şi produsul program,
deosebit de precedentele prin faptul că este un produs abstract. Dupa cum produsul
industrial este obţinut prin prelucrarea unor materii prime si semifabricate pe fluxul
tehnologic, stările intermediare fiind stocate în depozite de flux, iar produsul finit
în magazia de produse finite, tot astfel şi produsul program pleaca de la problema
concretă, de la o serie de programe de sistem (compilatoare, programe utilitare
etc.), care fac obiectul unei elaborări, stările şi componentele intermediare fiind
stocate în biblioteci ce pot fi numite biblioteci tehnologice, iar produsul finit este
depus în biblioteca unitaţii de informatică si eventual este înaintat spre difuzare
unei biblioteci de distribuţie.
Din punct de vedere al rolului lor în fluxul tehnologic şi de utilizare a
produselor program, bibiotecile de programe pot fi: tehnologice si de distribuţie.
Bibliotecile tehnologice constituie premize de crestere a productivităţii si
calităţii producţiei de produse program si conţin: bibiotecile de sistem, bibliotecile
proiectelor si bibliotecile personale ale programatorilor.
Bibliotecile tehnologice pot fi de patru tipuri:
biblioteci centrale ale unităţilor de informatică în care sunt cuprinse toate
programele aflate în exploatare în unitatea respectivă;
biblioteci de proiect - sunt specifice unui anumit proiect de produs
program, de aplicaţie sau de sistem informatic şi conţin programe sau
module, componente finite ale unui produs program complex, ale unei
aplicaţii sau ale unui sistem, deja testate si acceptate;
biblioteci individuale - sunt organizate si întreţinute de programator pentru
nevoi ce apar pe parcursul activităţii curente de programare si conţin module
si programe în curs de elaborare sau programe finite;
biblioteca de sistem conţine instrumentele cu ajutorul cărora se realizează
produsele program aplicative, adica programele utilitare, compilatoarele,
translatoarele, interpretoarele etc.;
În unitaţile de informatică pot apare ierarhii de biblioteci de programe, la
nivelul cel mai înalt fiind biblioteca centrală care conţine toate produsele program
finite elaborate în cadrul unităţii sau în alte unităţi de informatică şi exploatate în
unitatea în cauza. Pe nivelul următor pot fi considerate bibliotecile de proiect care
conţin toate modulele şi programele elaborate de catre toţi programatorii care
lucrează la proiectul respectiv. La rândul lor, programatorii au biblioteci
individuale, organizate pe proiecte, care conţin programe elaborate de catre aceştia
şi în curs de finisare şi programe/module preluate din biblioteca sistem.
Bibliotecile de distribuţie sunt destinate pentru difuzarea la utilizator a
produselor program de uz general şi generalizabile, ceea ce permite scurtarea
duratei de elaborare a sistemelor informatice şi elimina posibilitatea elaborării de
produse program cu funcţii identice.
În unele cazuri, bibliotecile de programe ale unităţilor de informatică
departamentale au rolul de biblioteci de distribuţie pentru produse program
specifice prelucrării informaţiei din ramura respectivă. Bibliotecile de distribuţie
au urmatoarele funcţii:
colectarea de produse program de uz general şi generalizabile de la
elaboratori si difuzarea acestora la utilizatorii interesaţi;
evidenţa produselor program elaborate şi în curs de elaborare aflate la autori;
selectarea de produse program de uz general şi generalizabile care prezintă
interes pentru mai mulţi utilizatori;
colectarea produselor program selectate şi repartizarea lor pe clase;
testarea produselor colectate, validare, omologare;
informarea utilizatorilor cu privire la produsele program aflate in fondul
bibliotecii;
difuzarea la utilizator a produselor program;
urmărirea în exploatare a produselor program;
colectarea de la utilizator de informaţii cu privire la comportarea în
exploatare a produselor, precum şi de cerinţe pentru noi produse program.
Existenţa bibliotecilor de programe si organizarea lor conform anumitor
principii poate constitui un mijloc important de ordonare si disciplinare a
procesului de realizare a produselor program. Ele contribuie la îmbunataţirea
productivităţii activităţii de programare prin furnizarea de module si programe gata
elaborate, prin înlăturarea paralelismelor şi constituie un spaţiu de depozitare
pentru produsele program şi componentele acestora în curs de elaborare sau
produse finite. În concluzie, bibliotecile de programe contribuie la cresterea
indicilor cantitativi si calitativi ai activităţii de elaborare a produselor program.
În prezent, datorită accesului rapid la o mare cantitate de informaţie şi a
facilităţilor crescute de comunicare oferite de Internet, utilizatorii au posibilitatea
de a cunoaşte, evalua, compara, selecta şi achiziţiona produse program oferite de
diverse firme producatoare de software. Comunicarea directă dintre producatori şi
utilizatori, asigură cresterea calităţii produselor program prin realizarea de
îmbunătăţiri si dezvoltări de noi versiuni în concordanţă cu cererile utilizatorilor.
1.6. Aspecte legislative privind protecţia produselor program
Protecţia produselor program a fost reglementata prin “Legea privind dreptul de
autor şi drepturile conexe”, aprobata în februarie 1996 de către guvernul Republicii
Moldova.
Această lege defineşte obiectul şi conţinutul dreptului de autor, având o serie de
dispoziţii speciale referitoare la produsele software.
Astfel, obiectul dreptului de autor îl reprezinta operele originale de creaţie
intelectuală, indiferent de modalitatea de creaţie, modul şi forma concreta de
exprimare şi independent de valoarea si destinaţia lor.
Conţinutul dreptului de autor: autorul are dreptul exclusiv de a autoriza
reproducerea integrala sau parţiala, difuzarea, transmiterea prin fir, cablu, fibra
optica, accesul public la bazele de date, daca ele sunt protejate, utilizarea,
închirierea, împrumutul originalului sau a copiilor.
Prin contractul de închiriere autorul permite folosirea pe un timp determinat a
originalului sau a copiilor.
Durata dreptului de autor - tot timpul vieţii autorului şi se transmite prin
moştenire pe o durata de 50 ani.
Dispoziţii speciale referitoare la protecţia produselor program:
Protecţia programelor pentru calculator include orice expresie a unui
program, programele de aplicaţie şi sistemele de operare, exprimate în orice
limbaj (cod sursa sau cod obiect), materialul de concepţie pregătitor şi
manualele
Nu sunt protejate ideile, procedeele, metodele de funcţionare, conceptele
matematice si principiile care stau la baza oricarui element dintr-un
program, inclusiv cele care stau la baza interfeţelor
Autorul are dreptul exclusiv de a realiza si de a autoriza:
o reproducerea permanentă sau temporală, integrală sau parţială a unui
program, prin orice mijloc sau formă
o traducerea, adaptarea, rearanjarea şi alte transformări ale unui
program precum şi reproducerea acestor transformări, fară a
prejudicia drepturile persoanei care face transformările
o difuzarea originalului sau a copiilor, sub orice forma, inclusiv prin
închiriere
Drepturile asupra programelor create de unul sau mai mulţi angajaţi, ca atribuţii de servicii sau dupa instrucţiunile celui care angajează, aparţin acestuia din urmă.
Prin contractul de utilizare al unui program
o Utilizatorul are dreptul neexclusiv de utilizare a programuluio Utilizatorul nu poate transmite dreptul de utilizare unei alte
persoaneo Cesiunea dreptului de utilizare al unui program nu implică
transferul dreptului de autor asupra acestuiao Utilizatorul autorizat are dreptul de a realiza copii de arhivă
sau de siguranţă fară acceptul autorului
Reproducerea sau traducerea codului program pentru
interoperabilitate cu alte programe trebuie autorizată de titularul dreptului
de autor dacă
o Actele de reproducere sau traducere sunt realizate de o persoană
care deţine dreptul de utilizare a unei copii a programului
o Informaţiile necesare interoperabilităţii nu sunt uşor si rapid
accesibile
o Actele se limitează la părţi din program
o Informaţiile necesare interoperabilităţii nu pot fi utilizate în alte
scopuri decât pentru realizarea acesteia
o Nu pot fi comunicate altei persoane
o Nu pot fi utilizate pentru definitivarea, producerea sau
centralizarea unui program a carui expresie este fundamental
similara
Se sancţioneaza cu amendă sau închisoare urmatoarele fapte:
Accesul public la bazele de date care conţin sau constituie opere
protejate, fara autorizarea titularului dreptului de autor
Însuşirea fără drept a calităţii de autor
Fără autorizarea titularului dreptului de autor se:
o Reproduc, difuzeaza, comercializeaza programe
o Pune la dispozitia publicului, prin vânzare, a mijloacelor tehnice
destinate neutralizarii dispozitivelor de protectie a programelor
Beneficiază de protecţie prin lege si programele create anterior intrării în
vigoare a acestei legi.