Ingineria programării

Curs
6/10 (3 voturi)
Domeniu: Calculatoare
Conține 4 fișiere: pdf
Pagini : 33 în total
Cuvinte : 12507
Mărime: 881.21KB (arhivat)
Publicat de: Profira Vereș
Puncte necesare: 0

Extras din curs

În “Ghidul cunoștințelor esențiale referitoare la Ingineria Programării” (Guide to the

Software Engineering Body of Knowledge - http://www.swebok.org/), ingineria programării (sau

ingineria software) este definită astfel:

- aplicarea unei metode sistematice, disciplinate și cuantificabile pentru dezvoltarea,

operarea și întreținerea unui program software; cu alte cuvinte este vorba de aplicarea

ingineriei în domeniul dezvoltării programelor;

- studiul metodelor descrise mai sus.

De asemenea, tot în această lucrare, se identifică 10 direcții ale cunoașterii referitoare la

ingineria programării:

1. cerințele unui proiect software (identificarea și descrierea cerințelor);

2. proiectarea software-ului (programare orientată pe obiecte);

3. dezvoltarea (implementarea) programului;

4. verificarea programului (tehnici de testare);

5. întreținerea programului (reverse engineering);

6. gestionarea tuturor variantelor programului;

7. planificarea unui proiect software;

8. procese specifice ingineriei programării (definirea și gestionarea proceselor

software);

9. instrumente și metode ale ingineriei programării (instrumente CASE);

10. calitatea softului (metode de gestiune a calității programelor).

Acest curs nu își propune să studieze toate direcțiile cunoașterii privitoare la ingineria

programării enumerate anterior. În principal ne propunem abordarea câtorva direcții mai

importante:

- cerințe software, metodologii ale ingineriei cerințelor, modelarea sistemelor software;

- proiectarea programelor: analiza programului, proiectarea arhitecturală, arhitectura

unui sistem distribuit, ingineria programării bazată pe componente;

- metode ale ingineriei programării: metode agile pentru dezvoltarea de programe.

Obiectivul formativ al acestui curs se referă la prezentarea aspectelor fundamentale cu

privire la metodologiile și tehnologiile informatice folosite la dezvoltarea proiectelor software de

dimensiune medie și mare.

Scopul acestui curs este acela ca un student să dobândească cunoștințele necesare pentru

participarea la un proiect software, analizând detaliile și problemele, atât tehnologice cât și

organizatorice sau metodologice.

Ingineria Programării

2

Bibliografie

- Ian Sommerville, Software engineering (7th edition), Pearson, Addison Wesley,

2004.

- Craig Larman, Applying UML and patterns - an introduction to object-oriented

analysis and design and iterative development, Prentice Hall PTR, 2005.

- Len Bass, Paul Clements, Rick Kazman, Software architecture in practice (2nd

edition), Pearson, Addison Wesley, 2003.

- Frank Buchmann, Regine Meunier, Peter Sommerlad, Michael Stal, Pattern-oriented

software architecture - a system of patterns, John Wiley & Sons, 1996.

- George Coulouris, Jean Dollimore, Tim Kindberg, Distributed systems, concepts and

design (3rd edition), Pearson, Addison Wesley, 2001.

- Ed Roman, Rima Patel Sriganesh, Gerald Brose, Mastering Enterprise JavaBeans

(3rd edition), Wiley, 2005.

Știința calculatoarelor este un domeniu relativ nou, primele calculatoare fiind construite

la mijlocul anilor `40, de atunci având loc dezvoltări spectaculoase ale acestui domeniu. Î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. În 1981, Bill Gates prevedea faptul că nici un program pentru calculatoare

personale nu va necesita vreodată mai mult de 640 KB de memorie RAM.

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

circa 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

peste 3.700.000 linii de cod;

- programele scrise pentru naveta spațială NASA au circa 40 de milioane de linii de cod.

Creșterea programelor în dimensiune și complexitate a depăsit 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.

Pe măsură ce complexitatea programelor creștea, la sfârșitul anilor ’60 începea să se

prefigureze deja o criză a programării. Într-un raport prezentat de către o companie, în care erau

analizate câteva proiecte și stadiile lor de finalizare, se constată că:

- 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

3

Ingineria programării reprezintă abordarea sistematică a dezvoltării, funcționării,

întreținerii, și retragerii din funcțiune a programelor.

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, diferite din punct de vedere calitativ.

Întrucât unul sau câțiva programatori nu pot avea timpul fizic pentru terminarea unei

aplicații mai mari, este necesară crearea uneia sau mai multor echipe de lucru, precum și

coordonarea și comunicarea între acestea. Complexitatea sistemului software și a organizației ce

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.

Nerespectarea cerințelor poate avea efecte serioase. Un sistem de livrare a insulinei

pentru diabetici poate provoca moartea pacientului dacă nu funcționează corect. Funcționarea

incorectă a unui sistem de control al unui satelit poate provoca pagube de milioane de dolari.

Un program este fiabil dacă funcționează și continuă să funcționeze fără întreruperi un

interval de timp. Această noțiune exprimă de fapt rezistența la condițiile de funcționare. Un

motor trebuie să fie fiabil pentru că trebuie să funcționeze o perioadă suficient de lungă de timp

fără întreruperi, chiar dacă nu totdeauna la performanțe optime.

Programul este sigur dacă funcționează corect, fără operații nedorite. Un automat bancar

trebuie să fie sigur, pentru a efectua tranzacțiile în mod absolut corect, chiar dacă funcționarea sa

poate fi întreruptă din când în când. Atunci când funcționează însă, trebuie să funcționeze foarte

bine.

Un program are o eroare („bug” în limba engleză) dacă nu se comportă corect. Se

presupune că dezvoltatorul știa ce ar fi trebuit să facă programul, iar comportamentul greșit nu

este intenționat.

Ingineria programării are ca scop obținerea de sisteme funcționale chiar și atunci când

teoriile și instrumentele disponibile nu oferă răspuns la toate provocările ce apar. Personalul

implicat face lucrurile să meargă, ținând seama de restricțiile organizației în care lucrează și de

constrângerile financiare care îi sunt impuse.

Problema fundamentală se referă la îndeplinirea cerințelor clientului. Aceasta trebuie

realizată nu punctual, nu în acest moment, ci într-un mod flexibil și pe termen lung. Ingineria

programării se ocupă cu toate etapele dezvoltării programelor, de la extragerea cerințelor

clientului până la întreținerea și retragerea din folosință a produsului livrat. Pe lângă cerințele

funcționale, clientul dorește, de obicei, ca produsul final să fie realizat cu costuri de producție cât

mai mici. De asemenea, se urmărește ca acesta să aibă performanțe cât mai bune (uneori direct

evaluabile), un cost de întreținere cât mai mic, să fie livrat la timp și să fie sigur.

Rezumând, atributele cheie ale unui produs software se referă la:

- posibilitatea de a putea fi întreținut: un produs cu un ciclu lung de viață este supus

deseori modificărilor, de aceea el trebuie foarte bine documentat;

- fiabilitate: produsul trebuie să se comporte după cerințele utilizatorului și să nu „cadă”

mai mult decât e prevăzut în specificațiile sale;

- eficiență: produsul nu trebuie să folosească în pierdere resursele sistemului ca memoria

sau ciclii procesor;

Preview document

Ingineria programării - Pagina 1
Ingineria programării - Pagina 2
Ingineria programării - Pagina 3
Ingineria programării - Pagina 4
Ingineria programării - Pagina 5
Ingineria programării - Pagina 6
Ingineria programării - Pagina 7
Ingineria programării - Pagina 8
Ingineria programării - Pagina 9
Ingineria programării - Pagina 10
Ingineria programării - Pagina 11
Ingineria programării - Pagina 12
Ingineria programării - Pagina 13
Ingineria programării - Pagina 14
Ingineria programării - Pagina 15
Ingineria programării - Pagina 16
Ingineria programării - Pagina 17
Ingineria programării - Pagina 18
Ingineria programării - Pagina 19
Ingineria programării - Pagina 20
Ingineria programării - Pagina 21
Ingineria programării - Pagina 22
Ingineria programării - Pagina 23
Ingineria programării - Pagina 24
Ingineria programării - Pagina 25
Ingineria programării - Pagina 26
Ingineria programării - Pagina 27
Ingineria programării - Pagina 28
Ingineria programării - Pagina 29
Ingineria programării - Pagina 30
Ingineria programării - Pagina 31
Ingineria programării - Pagina 32
Ingineria programării - Pagina 33

Conținut arhivă zip

  • IPCurs1.pdf
  • IPCurs2.pdf
  • IPCurs3.pdf
  • IPCurs4.pdf

Alții au mai descărcat și

Factori de Succes în Dezvoltarea Sistemelor Informaționale

INTRODUCERE În noua economie, producătorii de soluţii IT sunt confruntaţi cu o nouă cerinţă care îi obligă să schimbe total modul de construcţie a...

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...

Inginerie Software

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...

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...

Securitatea rețelelor VPN

I. Prezentarea rețelelor VPN O rețea privată virtuală (VPN) este o conexiune criptată de rețea care folosește un tunel sigur între capete, prin...

Te-ar putea interesa și

Ingineria programării

1. Descrierea problemei Principalul obiectiv indeplinit de sistemul software e-quiz este acela de a evalua cunostintele studentilor cu ajutorul...

Ingineria programării

Inmatriculari de masini Sa presupunem ca proprietarul unei masini Logan vrea sa isi inmatriculeze masina, folosind un system software. Cu privire...

Ingineria programări - Enlight browser

Analiza cerintelor Conform cu standardul IEEE STD-830-1993, IEEE Recommended Practice for Software Requirements Specification. 1. Introducere...

Ingineria programării - arbori și grafuri

Problema 1 Fie G un graf conex cu n varfuri. Fiecarui arc (i,j) i se pune in corespondenta un cost c[i][j]. Sa se listeze toti arborii acestui...

Portofoliu de probleme ingineria programării

Problema din Siracuza Fie n un număr natural oarecare citit de la tastatură. Dacă n este număr par, se împarte la 2, iar dacă este număr impar, se...

Ingineria programării

Acest proiect implementeazǎ operaţiile ce se realizeazǎ în mod curent cu structura avansatǎ de date denumitǎ B-arbore (B-Tree în englezǎ)....

Inginerie Software

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...

Ingineria programării - probleme

1. Enunt: Se considera un set de date ale unor elefanti (greutate si coeficient de inteligenta). Se cere sa se gaseasca o secventa cat mai lunga a...

Ai nevoie de altceva?