Inginerie Software

Curs
9.5/10 (4 voturi)
Domeniu: Calculatoare
Conține 9 fișiere: doc
Pagini : 132 în total
Cuvinte : 51633
Mărime: 1003.19KB (arhivat)
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Anca Iordan

Extras din curs

Fazele dezvoltării unui produs software

1 Ce este ingineria programării?

2. Fazele ingineriei programării

2.1. Faza de analiză

2.2. Faza de proiectare

2.3. Faza de implementare

2.4. Faza de testare

2 Concluzii

1. Ce este ingineria programării?

Ştiinţa calculatoarelor este un domeniu relativ nou. Primele calculatoare au fost construite la mijlocul anilor 1940 şi de atunci au avut loc dezvoltări spectaculoase. Î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 în 1981 că nici un program pentru calculatoare personale nu va necesita vreodată mai mult de 640 KB de memorie RAM, Bill Gates admite în 1995 că lucrurile s-au schimbat în ultimele două decenii.

Următoarele exemple oferă o imagine asupra gradului de complexitate la care au ajuns programele în zilele noastre:

• sistemul de rezervare a biletelor pentru compania aeriană KLM conţinea, în anul 1992, două milioane de linii de cod în limbaj de asamblare;

o sistemul de operare System V versiunea 4.0 (UNIX) a fost obţinut prin compilarea a

o 3.700.000 linii de cod;

• programele scrise pentru naveta spaţială NASA au circa 40 de milioane de linii de cod;

• pentru realizarea sistemului de operare IBM OS360 au fost necesari 5000 de ani-om.

Creşterea programelor în dimensiune şi complexitate a depăşit cu mult progresele făcute în domeniul tehnicilor de programare. De aceea, programarea a devenit şi a rămas mai mult o artă decât o meserie.

O paralelă cu ingineria construcţiilor este atractivă. Dacă dorim să construim o cuşcă pentru câine, putem să mergem prin grădină, să căutam lemne şi cuie, să luăm un ciocan şi să începem să lucrăm. Avem şanse destul de bune să reuşim, mai ales dacă suntem îndemânatici. Dacă totuşi nu reuşim, putem încerca a doua zi din nou cu alte lemne şi alte cuie. Iar dacă câinele nu încape în cuşcă, putem putem încerca a treia zi din nou cu mai multe lemne.

Lucrurile stau radical diferit atunci când dorim să construim o casă pentru familia noastră. Atunci va trebui sau să angajăm un arhitect care să ne facă un proiect, sau să cumpărăm un proiect standard de casă. Va trebui să negociem cu o firmă de construcţii preţul, durata de realizare, calitatea finisajelor. Nu ne permitem să riscăm economiile familiei pe o construcţie care se va dărâma la a doua rafală de vânt. În plus, dacă membrilor familiei nu le place orientarea ferestrelor sau peisajul, nu îi putem schimba cu alţii (în cel mai rău caz, ne schimbă ei pe noi).

Cu atât mai mult, dacă o firmă plăteşte câteva milioane de dolari pentru a ridica un zgârie nori, reprezentanţii acesteia vor fi foarte atenţi cu cine şi în ce condiţii vor lucra. Ei vor dori garanţii că proiectul este viabil, vor angaja mai multe firme de arhitectură pentru a-l verifica. De asemenea, studii geologice, de fizică a pământului sau meteorologie vor fi obligatorii. Vor fi folosite cele mai performante materiale şi se vor angaja cei mai competenţi şi cu experienţă constructori. Eşecul nu mai este o opţiune pentru contractantul proiectului.

Ştim că inginerii constructori întocmesc planuri, construiesc machete, studiază proprietăţile materialelor folosite şi fac rapoarte privind progresul operaţiunilor. Construcţii de o complexitate foarte mare au fost realizate în acest fel într-un mod raţional şi economic. Inginerii de programe ar trebui să procedeze similar pentru ca dezvoltarea programelor să nu mai fie un proces impredictibil.

Pe măsură ce complexitatea programelor creştea, la sfârşitul anilor ’60 începea să se prefigureze deja o criză a programării. Un raport prezentat de către o companie, în care erau analizate câteva proiecte şi stadiile lor de finalizare, a constatat că:

• 2% din sistemele software contractate au funcţionat de la predare;

• 3% din sistemele software au putut funcţiona după câteva modificări;

• 29% au fost predate dar n-au funcţionat niciodată;

• 19% au fost folosite dar au fost abandonate;

47% au fost plătite dar niciodată predate.

Pentru a contracara aceste tendinţe, la conferinţa organizată de comitetul ştiinţific al NATO în anul 1968, a fost propus termenul de ingineria programării (engl. „software engineering”), într-un mod oarecum provocator. Se dorea ca arta programării să împrumute din rigoarea ştiinţelor inginereşti pentru a putea livra programe la timp şi în mod economic. Prima definiţie dată ingineriei programării a fost enunţată astfel (F. L. Bauer):

Ingineria programării este stabilirea şi utilizarea de principii inginereşti solide pentru a obţine în mod economic programe sigure şi care funcţionează eficient pe maşini de calcul reale.

În IEEE Standard Glossary of Software Engineering Technology (1983) ingineria programării este definită după cum urmează:

Ingineria programării reprezintă abordarea sistematică a dezvoltării, funcţionării, întreţinerii, şi retragerii din funcţiune a programelor.

Remarcăm că a doua definiţie este mai vagă decât prima, întrucât nu face referire la cost şi la eficienţă. Mai mult, se pare că experienţa în general negativă acumulată a făcut să se renunţe la formularea „principii inginereşti solide”, întrucât se pare că acestea nu pot fi identificate fără a fi supuse contestaţiilor. A doua definiţie adaugă însă referiri la perioade importante din viaţa unui program, ce urmează creării şi funcţionării, şi anume întreţinerea şi retragerea din funcţionare.

Considerăm că ingineria programării are următoarele caracteristici importante:

• este aplicabilă în producerea de programe mari;

• este o ştiinţă inginerească;

• scopul final este îndeplinirea cerinţelor clientului.

Programele mici se pot scrie relativ uşor, de către un singur programator, într-o perioadă destul de scurtă de timp. Un program de 100 de instrucţiuni este cu siguranţă un program mic. Nu putem identifica precis graniţa dintre un program mic şi unul mare, însă pe măsură ce dimensiunea programului creşte, apar provocări noi, calitativ diferite.

Întrucât un singur sau câţiva programatori nu pot avea timpul fizic pentru terminarea programului, este necesară crearea uneia sau mai multor echipe de lucru. Este necesară coordonarea şi comunicarea între echipe. Complexitatea sistemului software şi a organizaţiei care realizează sistemul software devine importantă, putând depăşi capacitatea de înţelegere a unui singur individ.

Apare ca dezirabilă o abordare riguroasă a acestor probleme, ce include stilul de lucru, modul de scriere a codului etc.

Preview document

Inginerie Software - Pagina 1
Inginerie Software - Pagina 2
Inginerie Software - Pagina 3
Inginerie Software - Pagina 4
Inginerie Software - Pagina 5
Inginerie Software - Pagina 6
Inginerie Software - Pagina 7
Inginerie Software - Pagina 8
Inginerie Software - Pagina 9
Inginerie Software - Pagina 10
Inginerie Software - Pagina 11
Inginerie Software - Pagina 12
Inginerie Software - Pagina 13
Inginerie Software - Pagina 14
Inginerie Software - Pagina 15
Inginerie Software - Pagina 16
Inginerie Software - Pagina 17
Inginerie Software - Pagina 18
Inginerie Software - Pagina 19
Inginerie Software - Pagina 20
Inginerie Software - Pagina 21
Inginerie Software - Pagina 22
Inginerie Software - Pagina 23
Inginerie Software - Pagina 24
Inginerie Software - Pagina 25
Inginerie Software - Pagina 26
Inginerie Software - Pagina 27
Inginerie Software - Pagina 28
Inginerie Software - Pagina 29
Inginerie Software - Pagina 30
Inginerie Software - Pagina 31
Inginerie Software - Pagina 32
Inginerie Software - Pagina 33
Inginerie Software - Pagina 34
Inginerie Software - Pagina 35
Inginerie Software - Pagina 36
Inginerie Software - Pagina 37
Inginerie Software - Pagina 38
Inginerie Software - Pagina 39
Inginerie Software - Pagina 40
Inginerie Software - Pagina 41
Inginerie Software - Pagina 42
Inginerie Software - Pagina 43
Inginerie Software - Pagina 44
Inginerie Software - Pagina 45
Inginerie Software - Pagina 46
Inginerie Software - Pagina 47
Inginerie Software - Pagina 48
Inginerie Software - Pagina 49
Inginerie Software - Pagina 50
Inginerie Software - Pagina 51
Inginerie Software - Pagina 52
Inginerie Software - Pagina 53
Inginerie Software - Pagina 54
Inginerie Software - Pagina 55
Inginerie Software - Pagina 56
Inginerie Software - Pagina 57
Inginerie Software - Pagina 58
Inginerie Software - Pagina 59
Inginerie Software - Pagina 60
Inginerie Software - Pagina 61
Inginerie Software - Pagina 62
Inginerie Software - Pagina 63
Inginerie Software - Pagina 64
Inginerie Software - Pagina 65
Inginerie Software - Pagina 66
Inginerie Software - Pagina 67
Inginerie Software - Pagina 68
Inginerie Software - Pagina 69
Inginerie Software - Pagina 70
Inginerie Software - Pagina 71
Inginerie Software - Pagina 72
Inginerie Software - Pagina 73
Inginerie Software - Pagina 74
Inginerie Software - Pagina 75
Inginerie Software - Pagina 76
Inginerie Software - Pagina 77
Inginerie Software - Pagina 78
Inginerie Software - Pagina 79
Inginerie Software - Pagina 80
Inginerie Software - Pagina 81
Inginerie Software - Pagina 82
Inginerie Software - Pagina 83
Inginerie Software - Pagina 84
Inginerie Software - Pagina 85
Inginerie Software - Pagina 86
Inginerie Software - Pagina 87
Inginerie Software - Pagina 88
Inginerie Software - Pagina 89
Inginerie Software - Pagina 90
Inginerie Software - Pagina 91
Inginerie Software - Pagina 92
Inginerie Software - Pagina 93
Inginerie Software - Pagina 94
Inginerie Software - Pagina 95
Inginerie Software - Pagina 96
Inginerie Software - Pagina 97
Inginerie Software - Pagina 98
Inginerie Software - Pagina 99
Inginerie Software - Pagina 100
Inginerie Software - Pagina 101
Inginerie Software - Pagina 102
Inginerie Software - Pagina 103
Inginerie Software - Pagina 104
Inginerie Software - Pagina 105
Inginerie Software - Pagina 106
Inginerie Software - Pagina 107
Inginerie Software - Pagina 108
Inginerie Software - Pagina 109
Inginerie Software - Pagina 110
Inginerie Software - Pagina 111
Inginerie Software - Pagina 112
Inginerie Software - Pagina 113
Inginerie Software - Pagina 114
Inginerie Software - Pagina 115
Inginerie Software - Pagina 116
Inginerie Software - Pagina 117
Inginerie Software - Pagina 118
Inginerie Software - Pagina 119
Inginerie Software - Pagina 120
Inginerie Software - Pagina 121
Inginerie Software - Pagina 122
Inginerie Software - Pagina 123
Inginerie Software - Pagina 124
Inginerie Software - Pagina 125
Inginerie Software - Pagina 126
Inginerie Software - Pagina 127
Inginerie Software - Pagina 128
Inginerie Software - Pagina 129
Inginerie Software - Pagina 130
Inginerie Software - Pagina 131
Inginerie Software - Pagina 132
Inginerie Software - Pagina 133

Conținut arhivă zip

  • Curs 1.doc
  • Curs 2.doc
  • Curs 3.doc
  • curs 4.doc
  • Curs 5.doc
  • Curs 6-7.doc
  • Curs 8.doc
  • curs 9-10.doc
  • Cursul 11-12.doc

Alții au mai descărcat și

Inginerie Software

1. Specificarea cerintelor sistemului software La o agentie de zboruri un client poate, prin intermediul unor terminale instalate in sediul...

Rezolvarea Problemei Comis - Voiajorului cu Ajutorul Algoritmilor Genetici

Algoritmi genetici Tehnici adaptive de cautare euristica, bazate pe principiile geneticii si ale selectiei naturale Lucreaza cu o populatie de...

Algoritmica grafurilor

Curs 1 1.Notatii.Definitii Multiset – S multime finita, S!=VID R=(S,r) r:S->N³0, r=functie multiplicitate r:S->{0,1} => def partilor lui S (R)...

Autocad pentru începători

C1.1.CONCEPTUL DE CAD TERMINOLOGIE - COMPUTER AIDED ENGINEERING -CAE-vizeazăetapeledecercetare,inovaresiconcepţie; - COMPUTER AIDED DRAWING/...

Programare orientată pe obiect C++

1. INTRODUCERE ÎN C++ Exista limbaje concepute strict pe baza conceptelor programării orientate pe obiecte (POO), de exemplu Simula sau Smalltalk....

Seminar 4 Python

Exemplu instalare pachet scikit-learn Din https://pypi.org/project/scikit-learn/ copiem pip install scikit-learn În Command Prompt:...

Programare HTML și XML

CAPITOLUL I NOTIUNI GENERALE [13, 28, 78, 77] 1.1 INTERNET Internet-ul, sau reteaua mondială de calculatotore, reprezintă un puternic instrument...

Rețele de Calculatoare

O reţea de calculatoare (computer network) este un ansamblu de calculatoare interconectate prin intermediul unui mediu de comunicaţie (cablu...

Te-ar putea interesa și

Baze Managementul Proiectelor - Conceperea, Planificarea și Monitorizarea unui Proiect

I. CONCEPEREA PROIECTULUI Înainte de a începe completarea propriu-zisă a formularului, descrieţi contextul pentru care propuneţi implementarea...

Inginerie Software

1. Specificarea cerintelor sistemului software La o agentie de zboruri un client poate, prin intermediul unor terminale instalate in sediul...

Ingineria Sistemelor de Progamare - Software Engineering

Generalitati. Istoric Ingineria sistemelor de programare sau ingineria software, sub alta denumire, este o disciplina care se ocupa de toate...

Proiect Inginerie Software - Multimedia Chat Application

1. Prezentare generala Acest proiect doreste a implementa o aplicatie chat cu capacitati multimedia asemanatoare serviciilor de chat deja...

Inginerie Software

Descrierea sistemului (senzori, dispozitiv de conditionare a semnalului, placa de achizitie) Elementele sensibile care detecteaza marimea de...

Inginerie Software

Laborator 1 UML – Unified Modeling Language Diagrama cazurilor de utilizare (Use Case Diagram) Introducere UML este un limbaj de modelare bazat...

Inginerie de Sistem

• Condiţionări şi cunoştinţe prerechizite Cursul nu are condiţionări prerechizite. Cunoştinţele prerechizite care pot facilita asimilarea...

Informatică cu Aplicații în psiho-pedagogie

În loc de introducere Despre calculatoare şi utilizarea acestora s-au scris şi se vor mai scrie încă multe cărţi. Unele pentru începători, altele...

Ai nevoie de altceva?