Sunteți pe pagina 1din 12

Inginerie software

-generalităţi-
Ingineria software cuprinde metodele, instrumentele şi tehnicile folosite pentru
dezvoltarea software.
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 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
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
a) Satisfacerea cerinţelor utilizatorilor
Principala problemă e analiza cerinţelor

Sarcina încercării de a asigura că software-ul face ce vor utilizatorii să facă se


numeşte validare.
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


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


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)


Mentenanţă
de adaptare (care modifică software-ul fie la
cererea utilizatorilor, fie la schimbarea SO etc.)
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) Fiabilitatea
O 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ă
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.
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.
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


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

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