Extras din curs
INTRODUCERE
Ingineria software a parcurs o cale lungă începând cu 1968, an în care acest termen a fost
utilizat pentru prima oară la o conferinţă NATO. Iar de atunci software-ul a pătruns în viaţa
fiecăruia dintre noi în diverse moduri, aşa cum puţini anticipaseră chiar cu un deceniu în urmă.
Aşadar cunoaşterea noţiunilor de bază legate de teoria şi practica ingineriei software este esenţială
pentru înţelegerea tehnicilor de construire a unui software performant şi de asemenea a metodelor
de evaluare a riscurilor şi oportunităţilor pe care software-ul le oferă vieţii noastre de zi cu zi.
În anul 1946 Goldstine şi von Neumann apreciau 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 că nici un program pentru calculatoare personale nu va
necesita vreodată mai mult de 64 KB de memorie RAM, Bill Gates a admis în 1995 că lucrurile sau
schimbat în ultimele două decenii.
Următoarele exemple oferă o imagine asupra gradului de complexitate la care au ajuns
programele:
• 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
obiect;
• Pentru realizarea sistemului de operare IBM OS360 au fost necesari 5000 de ani-om.
Pentru a contracara ceea ce se prefigura ca fiind o criză a programării, a fost propus în anul
1968 termenul de “ingineria software” (software engineering), într-un mod oarecum provocator. Se
dorea ca arta programării să împrumute din rigoarea stiinţelor inginereşti pentru a putea livra
programe la timp şi în mod economic.
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.
Fritz Bauer (1968)
Stabilirea şi utilizarea unor principii inginereşti în scopul realizării în mod economic
produse software fiabile care funcţionează eficient pe maşini reale.
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.
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.
Fairley (1985)
Ingineria software este disciplina tehnică şi managerială având ca obiect producţia
sistematică şi întreţinerea produselor informatice care sunt realizate şi modificate în timp în condiţii
economice.
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
În metodele OO, modelul domeniului soluţiei este o extensie a modelului domeniului
problemei, astfel încât structura software-ului reflectă structura problemei.
- activitate de rezolvare a problemelor - modelele folosite pentru a căuta o soluţie acceptabilă
sunt:
• efectuarea de experimente
• reutilizarea unor soluţii model (reuses pattern solutions)
• evoluţia incrementală a sistemului spre o variantă acceptată de client
• revizuirea răspunsului la schimbări
- activitate de achiziţionare de informaţie-în modelare aplicaţiei şi a domeniului soluţiei, se
colectează datele, se organizează in 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 bazata pe risc - identificarea componentelor cu risc mare pentru a evita
surprizele ulterioare
• dezvoltare pe probleme (issue-based development) - execuţia in paralel a activităţilor de
dezvoltare, organizarea făcându-se ţinând cont de problemele care sunt încă nerezolvate
• dezvoltare iterativa – proiectarea si implementarea la început a părţilor cu risc ridicat
(dificile)
- activitate raţională-logică – realizatorii de software trebuie să înţeleagă contextul în care au
fost luate deciziile şi logica ce stă in spatele lor pentru a înţelege implicaţiile unei schimbări
propuse atunci când decizia este reanalizată; utilă în cazul unor sisteme care să schimbă în mod
frecvent precum şi utilă in etapa de întreţinere
Clasificarea aplicaţiilor software
• Sisteme de operare şi software de sistem
• Software timp real – restricţii timp de răspuns
• Sisteme informatice – baze de date
• Software ştiinţific
• Software inclus (ascensoare, telefoane, aparatură casnică)
Conținut arhivă zip
- C1_introducere.pdf
- C10_Proiectarea_sistemelor_software.pdf
- C11_Implementare.pdf
- C12_Testarea_sistemelor_software.pdf
- C13_Estimare_costuri_curs.pdf
- C2_Modele _de dezvoltare.pdf
- C3_Anexa1_Exemplu_DCU.pdf
- C3_Anexa2_Exemplu_DCU.pdf
- C3_ingineria_cerintelor.pdf
- C4_is_curs_4.pdf
- C5_C6_is_curs_5_6.pdf
- C7_C8_UML.pdf
- C9_Exprimarea_constrangerilor_in_OCL.pdf