ingineria sistemelor de programe - profesori · pdf filetotodată să-i pun la dispoziţie un...

Download INGINERIA SISTEMELOR DE PROGRAME - Profesori · PDF filetotodată să-i pun la dispoziţie un ghid de proiectare şi realizare a sistemelor informatice cu metodele şi tehnicile

If you can't read please download the document

Upload: lamlien

Post on 06-Feb-2018

230 views

Category:

Documents


4 download

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