Sunteți pe pagina 1din 15

INGINERIE SOFTWARE CURS 1

1. INTRODUCERE

1968 – prima utilizare a termenului „INGINERIE SOFTWARE” la o


conferinţă NATO.
von Neumann aprecia în 1946 că 1000 de instrucţiuni reprezintă o
limită superioară rezonabilă pentru complexitatea problemelor ce
pot fi concepute ca rezolvabile cu ajutorul calculatorului.
după ce a prevăzut în 1981 că nici un program pentru calculatoare
personale nu va necesita vreodată mai mult de 640 KB de memorie
RAM, Bill Gates admite în 1995 că lucrurile s-au schimbat în ultimele
două decenii.
creşterea programelor în dimensiune şi complexitate a depăşit cu
mult progresele făcute în domeniul tehnicilor de programare;
programarea devenind mai mult o artă. 1
INGINERIE SOFTWARE CURS 1

1. INTRODUCERE

Exemple ale gradului de complexitate la care au ajuns programele


în zilele noastre:
 sistemul de rezervare a biletelor pentru compania aeriană KLM
conţinea, în anul 1992, două milioane de linii de cod în limbaj de
asamblare;
 sistemul de operare System V versiunea 4.0 (UNIX) a fost obţinut prin
compilarea a 3700000 linii de cod;
 programele scrise pentru naveta spaţială NASA au circa 40 de milioane
de linii de cod;
 pentru realizarea sistemului de operare IBM OS360 au fost necesari
5000 de ani - om.
Pentru evitarea unei crize a programării, a fost propus în anul 1968
termenul de “inginerie software” (software engineering).
Scopul era ca arta programării să împrumute din rigoarea stiinţelor 2
inginereşti pentru a putea livra programe la timp şi în mod
economic.
INGINERIE SOFTWARE CURS 1

1. INTRODUCERE
DEFINIŢII

IEEE Standard Glossary of Software Engineering Terminology (1990, 1991)


Aplicarea unei abordări sistematice, disciplinate, cuantificabile la realizarea,
operarea şi întreţinerea software-ului.

Morven Gentlemen (1990)


Utilizarea metodologiilor, instrumentelor şi tehnicilor de rezolvare a
problemelor practice care apar în construcţia, instalarea, întreţinerea şi evoluţia
produselor software.

Stephen Schach (1990)


O disciplină având drept obiectiv producţia unui software de calitate, livrat la
termen, cu respectarea bugetului şi care satisface cerinţele stabilite.

Fairley (1985)
Ingineria software este disciplina tehnică şi managerială având ca obiect
producţia sistematică şi întreţinerea produselor informatice care sunt realizate 3
şi modificate în timp în condiţii economice.
INGINERIE SOFTWARE CURS 1

1. INTRODUCERE
DEFINIŢII
Boehm (1979)
Aplicarea practică a cunoştinţelor ştiinţifice în proiectarea şi
construcţia programelor şi a documentaţiei asociate necesare pentru
dezvoltarea, operarea şi întreţinerii acestora.

Dennis (1975)
Ingineria software este aplicarea principiilor, aptitudinilor şi arta
proiectării si construcţiei programelor şi sistemelor de programe.

Fritz Bauer (1968)


Stabilirea şi utilizarea unor principii inginereşti în scopul realizării în 4
mod economic produse software fiabile care funcţionează eficient pe
maşini reale.
INGINERIE SOFTWARE CURS 1

1. INTRODUCERE

O definiţie cuprinzătoare a fost prezentată de Bruegge şi Dutoit în


Object-Oriented Software Engineering [2000] conform căreia
Ingineria software este:
 activitate de modelare - probleme complexe sunt tratate prin
modelare, atenţia fiind concentrată asupra detaliilor semnificative si
ignorând restul:
 modelul - o abstractizare a realităţii;
 analiza - construcţia unui model al domeniului problemei;
 proiectarea - construirea unui model pentru domeniul soluţiei.
 activitate de rezolvare a problemelor:
 efectuarea de experimente;
 reutilizarea unor soluţii model;
5
 evoluţia incrementală a sistemului spre o variantă acceptată de client;
 revizuirea răspunsului la schimbări.
INGINERIE SOFTWARE CURS 1
1. INTRODUCERE
activitate de achiziţionare de informaţie - în modelarea aplicaţiei
şi a domeniului soluţiei, se colectează datele, se organizează în
informaţii şi se formalizează în cunoştinţe. Această activitate este
neliniară în sensul că achiziţia de noi informaţii poate invalida
cunoştinţele precedente şi se caracterizează prin:
 dezvoltare bazată pe risc - identificarea componentelor cu risc mare
pentru a evita surprizele ulterioare;
 dezvoltare pe probleme - execuţia în paralel a activităţilor de dezvoltare,
organizarea făcându-se ţinând cont de problemele care sunt încă
nerezolvate;
 dezvoltare iterativă - proiectarea şi implementarea la început a părţilor
cu risc ridicat (dificile).
 activitate raţională-logică - dezvoltatorii de software trebuie să
înţeleagă contextul în care au fost luate deciziile şi logica ce stă în
spatele lor pentru a înţelege implicaţiile unei schimbări propuse
atunci când decizia este reanalizată; 6
 utilă în cazul unor sisteme care să schimbă în mod frecvent precum şi
utilă in etapa de întreţinere.
INGINERIE SOFTWARE CURS 1
2. CICLUL DE VIATĂ AL UNUI PRODUS SOFTWARE

Produsul software este un produs similar oricărui alt produs.


El are atribute fizice ca orice alt produs fizic, şi deci, el are o "viaţă"
similară cu cea a altor produse.
De aceea, produsul software poate fi privit din punctul de vedere al
unui ciclu de viaţă, acesta reprezentând toate fazele din cursul
procesului de dezvoltare a unui sistem software, începând de la
conceperea sistemului şi până la retragerea sa din folosinţă.
Fazele clasice fundamentale în procesul de dezvoltare sunt:
 analiza (ce dorim să construim);
 proiectarea (cum vom construi);
 implementarea (construirea propriu-zisă);
 testarea (asigurarea calităţii).
7
Alte stadii de existenţă prin care trece un program de la „naştere”
până la „moarte”: lansare, întreţinere, ieşire din uz.
INGINERIE SOFTWARE CURS 1
3. PROBLEMELE INGINERIEI SOFTWARE

A. Satisfacerea cerinţelor clienţilor - Problema fundamentală a


ingineriei programării este îndeplinirea cerinţelor clientului.
Aceasta trebuie realizată într-un mod flexibil şi pe termen lung.
Ingineria programării se ocupă cu toate etapele dezvoltării
programelor, de la extragerea cerinţelor de la client până la
întreţinerea şi retragerea din folosinţă a produsului livrat.
Pe lângă cerinţele funcţionale, clientul doreşte ca produsul final să fie
realizat cu costuri de producţie cât mai mici.
De asemenea, este de dorit ca acesta să aibă:
 performanţe cât mai bune,
 un cost de întreţinere cât mai mic,
 să fie livrat la timp,
 să fie sigur (funcţionează şi continuă să funcţioneze fără întreruperi şi
8
fără a efectua operaţii nedorite; Un program are o greşeală (bug) dacă nu
se comportă corect).
INGINERIE SOFTWARE CURS 1
3. PROBLEMELE INGINERIEI SOFTWARE
A. Satisfacerea cerinţelor clienţilor
Statistică privind gradul de satisfacere a cerinţelor pentru proiecte
software mari.
Nerespectarea cerinţelor poate avea efecte serioase:
Un sistem de livrare a insulinei pentru diabetici poate provoca moartea
pacientului dacă nu funcţionează corect.
Funcţionarea incorectă a unui sistem de control al unui satelit poate
provoca pagube de milioane de dolari.

9
INGINERIE SOFTWARE CURS 1

3. PROBLEMELE INGINERIEI SOFTWARE

B. Costul produsului
Cheltuielile pentru producerea sistemelor software sunt imense.
Se apreciază că ele au depăşit suma de 140 bilioane $ la nivelul
anului 1985 şi urmau să crească de atunci cu 12% pe an.
Costul este influenţat de cerinţele impuse pentru funcţionarea
acestuia (exemplu: necesitatea de a se executa în timp real - timpul
tipic de răspuns este de ordinul microsecundelor).
De asemenea, timpul mare de viaţă şi frecventele modificări cerute
pentru menţinerea sistemului sau pentru adăugarea unor noi
facilităţi vor mări costurile generale.
Se estimează că cel mai mare volum al cheltuielilor (60%-80%) se
înregistrează în cazul întreţinerii softului.
Totodată, cu cât produsul soft este mai complex, mai mare, cu atât 10
costurile totale vor creşte.
INGINERIE SOFTWARE CURS 1
3. PROBLEMELE INGINERIEI SOFTWARE
B. Costul produsului
Distribuţia timpului Cerinţele, specificaţiile
consumat pentru crearea şi analiza produsului
unui sistem software: determină cele mai
multe erori în sistem
(64% faţă de 36%).
Aceste erori nu sunt
descoperite de către cei
care dezvoltă sistemul,
ci de către cei care le
 testează şi/sau de către
utilizatori.
Cu cât aceste erori sunt
evidenţiate mai târziu,
cu atât ele implică un 11
mai mare volum de
muncă şi cost.
INGINERIE SOFTWARE CURS 1
3. PROBLEMELE INGINERIEI SOFTWARE

C. Varietatea din practică se referă la faptul că există multe


tehnici pentru producerea sistemelor software. Ca rezultat, ele sunt dificil
de coordonat, variază mult în ceea ce priveşte:
 costul,
 flexibilitatea,
 întreţinerea.

D. Lipsa productivităţii
În domeniul ingineriei software, termenul de productivitate este încă
nebulos. Ea ar putea însemna:
 un volum mai mare de cod scris de către o persoană,
 micşorarea costului produsului soft,
 creşterea calităţii produsului. 12
INGINERIE SOFTWARE CURS 1
4. MEDII PENTRU DEZVOLTAREA SISTEMELOR SOFTWARE
(SOFTWARE DEVELOPMENT ENVIRONMENTS)

Un mediu pentru dezvoltarea sistemelor software este o colecţie


de utilitare software şi hardware pentru producţia de sisteme
software într-un domeniu specific.
Există trei tipuri de astfel de medii:
a) medii de programare - pentru programare, testare, depanarea
programelor;
Exemple:
 Turbo Pascal (primul mediu de programare creat), Delphi;
 Borland C++, Code Blocks, MinGW Developer Studio, C++ Builder;
 NetBeans, Eclipse;
 Microsoft Visual Studio ...
13
INGINERIE SOFTWARE CURS 1
4. MEDII PENTRU DEZVOLTAREA SISTEMELOR SOFTWARE

b) medii CASE (Computer-Aided Software Engineering)


sunt destinate diferitelor fazelor din dezvoltarea sistemelor;
sunt orientate spre un suport grafic care e folosit în diverse metode de
proiectare.
Oferă componente pentru:
Editarea diagramelor;
Generarea de cod pe baza informaţiilor de proiectare.
Exemple:
Open Source UML CASE:
 ArgoUML
 StarUML
 AndroMDA
 BOUML
 Umbrello
Commercial CASE:
 IBM Rational Rhapsody 14
 Microsoft Visio
INGINERIE SOFTWARE CURS 1

4. MEDII PENTRU DEZVOLTAREA SISTEMELOR SOFTWARE

c) medii de inginerie software - dedicate producţiei de sisteme software


complexe, cu un ciclu îndelungat de viaţă, a căror întreţinere costă mai mult
decât dezvoltarea lor şi care sunt produse de echipe şi nu de programatori
individuali.
Caracteristicile mediului de inginerie software:
Facilităţile mediului sunt integrate. Toate utilitarele sunt interfaţate cu
un sistem de management al obiectelor (OMS), astfel încât ieşirea unui
utilitar reprezintă intrarea în altul.
Posibilitatea coordonării mai multor versiuni ale aceluiaşi sistem
software. Toate produsele rezultate în cursul procesului de dezvoltare
pot face subiectul managementului de configuraţie (care asigură
asocierea corectă a tuturor documentelor-specificaţii, proiect, cod,
documentaţia utilizatorului, etc. - corespunzătoare unei versiuni,
completitudinea şi consistenţa lor).
Furnizează facilităţi pentru suportarea tuturor activităţilor de 15
dezvoltare software (specificarea, proiectarea, implementarea, testarea,
documentarea, depanarea, etc.).

S-ar putea să vă placă și