ingineria sistemelor de programe - profesori · pdf filetotodată să-i pun la dispoziţie un...
TRANSCRIPT
UNIVERSITATEA Vasile Alecsandri BACU
FACULTATEA DE INGINERIE
CORNELIA NOVAC UDUDEC
INGINERIA SISTEMELOR DE PROGRAME
Ingineria programrii
Ediie adugit i revizuit
EDITURA ALMA MATER BACU
2011
Ingineria sistemelor de programe
PREFA
Dac constructorii ar construi casele n felul n care programatorii concep
programe, atunci prima ciocnitoare care ar veni, ar distruge civilizaia.
Acest enun de altfel un murphysm, cunoscut i sub numele de legea lui
Weinberg ne poate induce o percepie de loc optimist asupra modul de
concepere i realizare a aplicaiilor software. Situaia real nu este nici pe
departe att de sumbr, dar nici nu putem manifesta un optimism exagerat.
Una dintre legile nencrederii din cunoscuta antologie a lui Murphy se
enun astfel:
Computerele nu sunt piese de ncredere, iar oamenii sunt i mai puin.
Mai mult, legea are i urmtorul corolar:
La originea oricrei erori care este atribuit calculatorului, vei gsi cel
puin dou greeli umane, incluznd-o pe aceea de a da vina pe calculator.
Ingineria software, prin argumentele pe care le aduce, ncearc s
prezinte i celelalte faete ale problemei. Tocmai pentru c se tie c un
program face ceea ce i spui tu s fac, iar nu ceea ce ai vrea s fac, este
absolut necesar ca exigenele utilizatorului s se regseasc n final n
funcionalitatea pachetului software oferit.
Cert este c, s-a renunat de mult la amatorism i la proiectarea ad-hoc a
sistemelor software fie i numai dac ne gndim la complexitatea acestora i a
faptului c realizarea lor scpa de sub control.
Mi-am propus n lucrarea de fa, intitulat Ingineria sistemelor de
programe, o denumire mai complet dect vechea, cea de Inginerie a
programrii, s mprtesc cititorului cte ceva din experiena acumulat i
totodat s-i pun la dispoziie un ghid de proiectare i realizare a sistemelor
informatice cu metodele i tehnicile actuale. Este motivul pentru care, urmrind
ciclul de via al produsului software, am fcut o trecere n revist a paradigmelor
Ingineria sistemelor de programe
din ingineria software, a metodologiei UML, a costului, a calitii i a metricilor de
evaluare a sistemelor software.
Capitolele 6 a fost dedicat abloanelor de proiectare, metodologie
cunoscut n literatura de specialitate ca Design Patterns.
Cartea se adreseaz n egal msur att specialitilor, ct i utilizatorilor
care doresc s cunoasc mai bine caracteristicile de realizare i implementare
ale sistemelor de programe.
De asemenea, lucrarea este destinat studenilor de la seciile inginereti
i de la Informatic, care au ca disciplin de studiu Ingineria software sau Ingineria programrii i pentru care sper s constituie un instrument de lucru util.
Autoarea
Martie 2011
Ingineria sistemelor de programe Cuprins
1
CUPRINS
Capitolul 1 Sistemeinformatice. Probleme i perspective Pag. 1.1. Introducere 5
1.2. Probleme ale software-ului 11
1.3. Satisfacerea cerinelor utilizatorului i costul software 13
1.4. Performana, portabilitatea i mentenana software 16
1.5. Fiabilitatea 18
1.6. Cerine pentru ingineria sistemelor de programe 18
1.7. Teorema pentru ingineria software 19
1.8. Clasificarea sistemelor de programe 25
1.9. Documentaia sistemelor de programe 30
1.10.Dreptul de proprietate i garanii 33
1.11. Exerciii propuse 35
Capitolul 2 Etapele de dezvoltare a sistemelor de programe 37 2.1. Ciclul de via 37
2.2. Cerine- Specificaii 46
2.3. Concepte ale specificaiilor de programe 52
2.4. Specificarea formal 57
2.5. Exemple de specificare formal 59
2.6. Exerciii 66
Capitolul 3 Paradigmele de dezvoltare a sistemelor software 69
3.1. Etapele de dezvoltare software 69
3.2. Paradigmele de dezvoltare software 71
Ingineria sistemelor de programe Cuprins
2
- Metodologia cascad 78
- Metodologia spiral 81
- Metodologia spiral WinWin 83
- Prototipizarea 84
- Metode formale 88
- Metoda V 89
- Programarea extrem 89
- Metoda Open Source 93
- Reverse Engineering 94
- Metoda de dezvoltare Offshore 94
- Metodologia orientat pe obiect 95
Capitolul 4 UML- Limbaj unificat de modelare 101 4.1. Introducere n UML 101
4.2. Diagrame i concepte UML 104
- Diagrama claselor 105
- Diagrama cazurilor de utilizare 112
- Diagrama de stare 115
- Diagrama de activitate 119
- Diagrama secveniale 122
- Diagrama de colaborare 125
- Diagrama de aplicaie 129
Capitolul 5 Principii de proiectare orientat pe obiect 133 5.1. Principiul Deschis-nchis 133
5.2. Principiul substituiei Liskov 137
5.3. Principiul Inversrii Dependenelor 144
5.4. Stabilitate. Principiul dependenelor stabile 151
Capitolul 6 abloane de proiectare software 161
6.1. Elementele unui ablon de proiectare 161
6.2. Cum rezolv abloanele problemele de proiectare 166
6.3. Cum se selecteaz un ablon 167
6.4. Cum se folosete un ablon de proiectare 169
Ingineria sistemelor de programe Cuprins
3
Capitolul 7 Proiectarea sistemelor software 173 7.1. Procesul de proiectare 173
7.2. Proiectarea arhitectural 177
7.3. Proiectarea calitii 180
7.4. Modularizarea proiectului 186
Capitolul 8 Testarea sistemelor software 191 8.1. Introducere 191
8.2. Testarea pe parcursul ciclului de via al unui program 192
8.3. Testele de sistem 196
8.4. Determinarea cazurilor de test 197
Capitolul 9 Estimarea costurilor unui proiect software 211
9.1. Costuri i efort 211
9.2. Modelul Halstead 212
9.3. Modele algoritmice clasice Modele liniare 214
- Modelul Nelson 214
- Modelul Wolverton 215
9.4. Modele algoritmice moderne Modele neliniare 215
- Modelul Walston Felix 216
- Modelul COCOMO 217
- Modelul Putnam Norden 221
- Legea lui Books 223
- Mrimea echipei i productivitatea 223
Capitolul 10 Calitatea sistemelor software 225
10.1. Indicatori de calitate 225
10.2. Productivitatea 228
10.3. Asigurarea fiabilitii produselor software 229
10.4. Metrici software pentru paradigma orientat obiect 233
10.5. Modele de studiere a posteriori a fiabilitii 237
10.6. Modele software pentru reducerea erorilor 247
10.7. Utilizarea datelor eronate pentru mbuntirea deciziilor 252
10.8. Reducerea erorilor datorit msurtorilor 254
Ingineria sistemelor de programe Cuprins
4
10.9. Aplicarea analizei cauzale procesului de modificare a software-ului 256
Capitolul 11 Evaluarea sistemelor software 267 11.1. Set de metrici software pentru conducerea proceselor de
mentenan a programelor
267
- Definirea setului de metrici 268
11.2. Program de implementare a metricilor 281
Bibliografie 283
Ingineria sistemelor de programe Capitolul 1
5
1 Sistemele informatice. Probleme i perspective
1.1 Introducere tiina calculatoarelor, domeniu de activitate recunoscut ca avnd o
dinamic extrem de ridicat, a evoluat n ultimii ani pe coordonate cum ar fi
conceperea de noi tehnologii pentru realizarea aplicaiilor software sau noi
modaliti de lucru n echip. Dac n anul 1946 Goldstine i von Neumann
apreciau c 1000 de instruciuni reprezint o limit superioar rezonabil pentru
complexitatea problemelor ce pot fi concepute ca rezolvabile cu ajutorul
calculatorului astzi o asemenea dimensiune este atins doar cu scop didactic.
Mai mult, dup ce a estimat n 1981 c nici un program pentru calculatoare
personale nu va necesita vreodat mai mult de 640 KB de memorie RAM, Bill
Gates, n anul 1995 a recunoscut c lucrurile s-au schimbat mult n ultimele dou
decenii.
Urmtoarele exemple ofer o imagine mai complet a complexitii la care
a ajuns software-ul n zilele noastre:
o Sistemul de rezervare a biletelor pentru compania aerian KLM
coninea, n anul 1992, 2000000 de linii de cod n limbaj de
asamblare;
o Sistemul de operare System V versiunea 4.0 (UNIX) a fost obinut
prin compilarea a 3.700.000 linii de cod;
o Sistemele de programe pentru controlul navetelor spaiale NASA
au circa 40 de milioane de linii de cod;
o Pentru realizarea sistemului de operare IBM OS360 au fost
necesari 5000 de ani- munc.om.
Ingineria sistemelor de programe Capitolul 1
6
Creterea n dimensiune i compl