Inginerie Software 1

12
Inginerie software -generalităţi-

Transcript of Inginerie Software 1

Page 1: Inginerie Software 1

Inginerie software

-generalităţi-

Page 2: Inginerie Software 1

Ingineria software cuprinde metodele, instrumentele şi tehnicile folosite pentru dezvoltarea software.

software de sistem: e software-ul care se comportă ca instrument de ajutor pentru construcţia software-ului de aplicaţie. Exemple: SO, baze de date, compilatoare etc.

Software

software de aplicaţie: e software-ul care ajută să se efectueze task-uri utile sau de recreere. Exemple: jocuri, ATM, software de control în avioane, software pentru e-mail, editoare de texte etc.

In cadrul software-ului de aplicaţie, trebuie identificate categoriile de software:• jocuri

• sisteme de informaţie – sisteme de stochează şi accesează o cantitate mare de date (ex: sistem de rezervare a locurilor)• sisteme în timp real, în care computerul trebuie să raspundă repede (ex: controlul software al unei staţii de putere)• sisteme încorporate (embedded systems), în care computerul joacă un rol mai mic în cadrul unui sistem mai mare (ex: software într-un celular)• software de birou (office software): editor de texte, spreadsheets

• software ştiinţific: calcule, modelare, predicţie

Page 3: Inginerie Software 1

Scopurile pe care dezvoltarea software caută sa le îndeplinească sunt:

a) satisfacerea cerinţelor utilizatorilor

b) cost redus de realizare a software-ului

c) performanţă înaltă

d) portabilitate

e) cost redus de mentenanţă

f) fiabilitate sporită

g) livrare la timp

Page 4: Inginerie Software 1

a) Satisfacerea cerinţelor utilizatorilorPrincipala problemă e analiza cerinţelor

Sarcina încercării de a asigura că software-ul face ce vor utilizatorii să facă se numeşte validare.

Page 5: Inginerie Software 1

b) Costul realizării software-ului

• Se estimează că în lume se cheltuieşte pentru producerea de software aproximativ 1500 miliarde dolari şi că în fiecare an se prognozează o creştere a acestei cifre cu 15%.

• Se estimează că productivitatea unui programator mediu este de 10-20 linii de program pe zi, datorită următoarelor aspecte:

- un software de sistem se scrie mult mai greu decât un software de aplicaţie ;

- în studiul efectuat există mari diferenţe între programatorii individuali.

- această cifră include şi timpul petrecut pentru clarificarea problemelor, designul,

codul, testarea etc..

• Privire paralelă hardware - software

Page 6: Inginerie Software 1

b) Costul realizării software-ului (continuare)

• Costuri relative în dezvoltarea software-ului

• Numărul relativ de erori facute în dezvoltarea software

• Costul relativ de reparare a diverselor erori

Page 7: Inginerie Software 1

c) Performanţele software : trebuie să fim siguri că:

• un sistem interactiv răspunde într-un timp rezonabil de scurt

• un joc rulează suficient de repede pentru ca animaţia să nu fie supărătoare

• o anumită sarcină nu ia 15 ore în loc de una

Temă: Identificaţi sisteme software în care viteza e un factor important

Obs. Viteza mare şi economia de memorie sunt contradictorii

d) Portabilitate: cum pot transfera software de la un tip de computer la altul cu minimum de efort

e) Mentenanţa: e termenul pentru efortul care trebuie pus în software, după ce acesta a fost scris şi pus în aplicare.

de remediere (corectarea bug-urilor)

de adaptare (care modifică software-ul fie la cererea utilizatorilor, fie la schimbarea SO etc.)

Mentenanţă

Page 8: Inginerie Software 1

e) Mentenanţa (continuare)

Obs. Mentenanţa de remediere e practic inevitabilă, datorită faptului că testarea e dificilă şi consumatoare de timp şi lasă cu siguranţă elemente de software cu bug-uri

Obs. Se estimează că mentenanţa reprezintă 67% din totalul timpului necesar pentru dezvoltarea diferitelor părţi ale software-ului.

Exemplu de mentenanţă: Problema anului 2000. Ce tip de mentenanţă este?

f) FiabilitateaO parte a software-ului e fiabilă dacă lucrează fără să producă lucruri indezirabile.

Uzual se vorbeşte de bugs în software, dar pentru claritate se definesc si termenii:

• eroare (error) - o decizie greşită luată în timpul dezvoltării software;

• defect (fault) - o problemă care face ca software-ul să se îndepărteze de comportarea dorită; poate să nu apară până când condiţiile nu sunt potrivite; e sinonim cu bug.• eşec (failure) – un eveniment care face ca software-ul să se îndepărteze de comportarea dorită

Page 9: Inginerie Software 1

f) Fiabilitatea (continuare)

• O eroare cauzează unul sau mai multe defecte.

• Un defect cauzează unul sau mai multe eşecuri.

• Eşecurile apar când sistemul este testat.

Obs. Îndepăratea bug-urilor şi încercarea de a asigura fiabilitatea se numeşte verificare.

Obs. Deoarece este practic imposibil de îndepăratare a tuturor bug-urilor, s-a impus conceptul de good enough software (software suficient de bun), adică lansarea software-ului se produce când numărul şi severitatea defectelor (faults) devin acceptabile

Obs. Există şi conceptul de zero defect software

Obs. Se estimează că hardware-ul “pică” de trei ori mai repede decât software-ul.

Page 10: Inginerie Software 1

f) Fiabilitatea (continuare)

Sunt anumite aplicaţii care necesită o fiabilitate ridicată, safety-critical systems.

Exemple:

• sistemele pentru controlul avioanelor;

• controlul proceselor critice (software de comunicaţii ce joacă un rol critic în situaţiile de urgenţă)

• controlul echipamentelor medicale

Temă. Identificaţi sisteme ce trebuie să fie fiabile şi altele care nu trebuie să fie.

g) Livrare la timp

E una dintre problemele majore, poate chiar principala problemă.

Se estimează că aproximativ 60% dintre proiecte depăşesc perioada de livrare şi aproximativ 50% încalcă flagrant termenul de predare.

Page 11: Inginerie Software 1

Interacţiunea om-computerÎn ultimul timp, multe interfeţe au devenit grafical user interfaces (GUIs) care utilizează ferestre cu instrumente gen butoane şi bare de scroll. Se pune problema designului acestor interfeţe grafice, care să fie simple şi uşor de utilizat.

Temă. Identificaţi sisteme care sunt mai greu de utilizat şi altele mai uşor de utilizat.

Scopuri conflictuale şi complementare

Page 12: Inginerie Software 1

Concluzii

Dezvoltarea software ridică probleme mari. Metodele şi instrumentele necesare pentru îmbunătăţirea acestei situaţii sunt cunoscute ca inginerie software. Dintre aceste idei, amintim:

• accent crescut pe realizarea sistematică a tuturor etapelor de dezvoltare

• realizare de instrumente software pentru dezvoltare

• accent crescut pe determinarea cât mai exactă a cerinţelor utilizatorilor (requirements engineering şi validation)

• prezentarea unei versiuni prototip utilizatorilor

• folosirea unor limbaje de programare noi, inovatoare