Documente Academic
Documente Profesional
Documente Cultură
1 Fundamente in Ingineria Programarii PDF
1 Fundamente in Ingineria Programarii PDF
Echipament
Interfețe
de
proces
Proces
Operator
uman
Software
Proceduri de
operare
IP - Vasile Stoicu-
Stoicu-Tivadar 2 / 53
Câțiva termeni Def.: un sistem on-line (legat de proces)
caracterizat printr-o valoare prescrisă a
timpului de răspuns (de cele mai multe
ori de ordinul secundelor sau fracţiuni
Sisteme în timp real de secundă) fiind capabil să
urmărească şi să răspundă în timp util
la solicitările din exterior.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 3 / 53
Câțiva termeni
Stil de programare modul de aplicare a tehnicilor de programare,
mod de documentare a programului, de aşezare
în pagină a textului sursă, în general totalitatea
atributelor care conferă unui program o anumită
personalitate urmărind realizarea unor anumite
performanţe.
IP - Vasile Stoicu-
Stoicu-Tivadar 4 / 53
Demn de atenție !
IP - Vasile Stoicu-
Stoicu-Tivadar 5 / 53
Câțiva termeni
Ingineria programării Proiectarea și dezvoltarea aplicațiilor software
(Software Engineering)
IP - Vasile Stoicu-
Stoicu-Tivadar 6 / 53
CE ESTE de fapt Ingineria Programării?
Programării?
Ca și Inginer Software,
Software, ne folosim
cunoștințele despre calculatoare, prelucrarea
informațiilor și altele pentru a ajuta la
rezolvarea problemelor.
problemelor.
IP - Vasile Stoicu-
Stoicu-Tivadar 7 / 53
Rezolvarea problemelor
(analiză
(analiză))
Problemele sunt mari ->
trebuie să începem prin a
investiga, prin anal
analiză,
iză,
adică prin împărțirea
problemei în bucăți pe care
le putem înțelege și trata.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 8 / 53
Rezolvarea problemelor
(sinteză
sinteză))
După ce am analizat problema,
trebuie să construim soluția
din componente care rezolvă
aspecte diferite ale
problemei ->
Sinteză- punem
punem împreună
o structurp mare din blocuri
constructive mai mici
Important: Compunerea unor
soluții individuale poate să fie la
fel de provocatoare ca și găsirea
soluției înseși.
(a se vedea scrierea unui roman: dicționarul cuprinde toate
cuvintele care vor fi folosite în roman, dar partea dificilă a
scrisului constă în a decide cum să fie compusă și organizată
cartea întreagă)
9 / 53
DE CE calitatea produselor
software este importantă ?
Deseori sistemele nu
Sunt utilizatorii funcționează așa cum am
mulțumiți cu dori și ne-am aștepta:
calitatea produselor codul conține erori dar este
software suficient de bun pentru a
demostra viabilitatea unei
DA și NU abordări
Calitatea
produsului Calitatea
produsului în
contextul
Calitatea mediului (ca
procesului afacere-
care conduce business) în care
la produs produsul va fi
utilizat
Următorul
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 11 / 53
Calitatea produsului software
• Software-ul poate
fi evaluat de
utilizarori de
exemplu după
numărul și tipul
căderilor (minore,
majore,
catastrofice), dacă Model care
realizează ce leagă
doresc, dacă este perspectiva
ușor de învățat, proiectantului
ușor de folosit etc. (perspectiva
internă) de cea
•Software-ul poate
a utilizatorului
fi evaluat de
(perspectiva
asemenea de către
externă)
proiectanți
(caracteristicii
interne: numărul și Modelul de calitate al lui
tipul erorilor ca și McCall
măsură a calității
produsului) Înapoi
IP - Vasile Stoicu-
Stoicu-Tivadar 12 / 53
Calitatea procesului software
Multe activități afectează calitatea produsului.
E demn de atenție răspunsul la întrebări precum:
•Unde și când găsim mai degrabă un anume
tip de erori ?
•Cum să găsim erorile, cât mai degreme în
cadrul procesului de dezvoltare software ?
•Cum să realizăm sisteme tolerante la
defectare astfel încât să minimizăm
posibilitatea ca o eroare să devină o cădere ?
•Există posibilități alternative care să ducă la
un proces mai eficient în asigurarea calității ?
Putem îmbunătăți calitatea unui produs prin
utilizarea unor metodologii și standarde de
calitate precum Capability Maturity Model (CMM)
sau varianta mai modernă CMM Integrated
Înapoi
(CMMI), ISO 9000 și variantele sale adaptate la
neceesitățile dezvoltării software , Software
Process Improvement and dEtermination (SPICE)
13 / 53
Calitatea produsului în contextul afacerii
instruire productivitate
programare proces
risc clienți
Înapoi
calitate costuri
“afacere” (rentabilitate)
IP - Vasile Stoicu-
Stoicu-Tivadar 14 / 53
Cine practică Ingineria Programării ?
Un element cheie al dezvoltării software este comunicarea dintre client
și dezvoltator.
Situații:
- clientul nu este utilizator
- utilizatorul , clientul și
dezvoltatorul sunt aceași entitate
- clientul poate decide să
achiziționeze software comercial (
commercial off-the-shelf software -
COTS ) pentru a fi încorporat în
produsul final
- utilizarea unor dezvoltatori
suplimentari (subcontractori) care
vor elabora subsisteme
- ca și soluții “la cheie”
Participanții în procesul de dezvoltare software
- pot să necesite un
proces separat de
integrare
IP - Vasile Stoicu-
Stoicu-Tivadar 15 / 53
ABORDAREA SISTEMICĂ
Often, the hardware and software we put toghether must interact with
users, with other software tasks, with other pieces of
of hardware, with
existing databases, with other computer systems -> with the
boundaries of the project.
IP - Vasile Stoicu-
Stoicu-Tivadar 16 / 53
ELEMENTELE UNUI SISTEM
Descriem un sistem enumerând
enumerând părțile sale și identificând modul în care se
manifestă relațiile dintre componente. Acesta este primul pas în analiza unei
probleme.
intrări
Elemente:
Activități și obiecte
activitate – ceva ce ce întâmplă în sistem
(de regulă descris ca un eveniment inițiat de
un trigger – transformă ceva în altceva
schmibându-i caracteristicile – prin translatare,
schimbare, combinare etc. )
obiect sau entitate – elementele implicate în
activități – uzual relaționate cumva (tabele,
matrici, înregistrări etc. sau văzute
independent, având asociată o listă de
caracteristici – ex. Abordarea Orientată pe
Obiecte)
Relații și marginile sistemului -unele elemente
traversează marginile pentru a intra în sistem, altele sunt
produse ale sistemului și îl părăsesc pentru a fi utilizate
de alt sistem etc.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar ieșiri
17 / 53
ELEMENTELE UNUI SISTEM - EXEMPLE
Sistemului Respirator:
•margini
•entități
•activități
18 / 53
ABORDAREA INGINEREASCĂ
Îndată ce am înțeles natura unui sistem, putem să îl construim. Aici, partea
“inginereasc
inginerească
ă” a ingineriei programării
programării devine mai importantă.
Un reprezentant al clasei de mijloc își cumpără mașină de tuns iarba (scumpă) pentru a
întreține gazonul; deoarece folosind această mașină nu depune efortt, este sedentar
deoarece își risipește unica posibilitate de a depune efort, neavând timp în afară de tunsul
ierbii și își cumpără în consecință și o bicicletă ergonomică (scumpă) pentru a-și menține
sănătatea, în loc să își cumpere o coasă (ieftină) pentru a rezolva ambele probleme.
Sunt foarte multe cereinte antagonisce spre rezolvare. Acesta este un motiv
pentru care s-a nascut ingineria software (inca din 1968 - la conferinta NATO)
Ingineria software intentioneaza sa:
• stabileasca ciclul de viata al programleor si continutul etapelor acestora
• elaboreze metode potrivite si tehnici pentru usurarea proiectarii soft
conform unor diferite cicluri de viata
• elaboreze metode pentru activitatile de concepere si administrare
Exemplul 2
Implementarea prin:
•parametrizari
•Structuri de date potrivite,
•Tehnici speciale de
programare,
•Scrierea codului pentru
refolosire etc.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 23 / 53
OBIECTIVE ALE INGINERIEI SOFTWARE
(continuare 1)
Eficienta – este un indice calitativ cu doua intelesuri :
• ca performanta a softului insusi (eficienta ca viteza de calcul,
memorie ocupata, etc.) – asociata cu calitatea software
• ca si cost de producere (productivitate) – asociata cu punctul de vedere
al afacerilor (presiunea pietei)
Producatorii trebuie sa obtina un soft mai bun (prin asigurarea unui standard de
calitate) si cat mai rapid posibil (cereri antagonice).Tehnicile ingineriei software
ajuta la rezolvarea acestora.
Fiabilitatea – se refera la evitarea, gasirea si repararea greselilor cat de repede
permite procesul de proiectare, si restabilirea functionarii corecte daca apar erori
de functionare. Nu putem impune aceasta prin adaugarea, mai tarziu, de
componente speciale pentru a creste siguranta;
- este foarte important pentru procesul de control software
Perceptibilitatea (readability
readability))- proprietate a programelor de a fi intelese
de catre alti programatori, altii decat autorii (sau chiar de catre autori, la un timp
dupa realizarea unor programe)
Acest atribut creste fiabilitatea dar si adaptabilitatea.
O proiectare soft buna, care tine cont de toate aceste obiective, este
influentata puternic de catre metode, tehnici si unelte descrise si impuse de catre
inginerul soft.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 25 / 53
PRINCIPII ALE INGINERIEI SOFT
Nivel
1. Modularitatea - presupune dividerea Nivel
strategic
superior
programului in entitati diferite cu intrari si iesiri in ierarhie
bine delimitate, numite module program si
structurarea programului in module pentru o mai Obiective
usoara obtinere a unor obiective sigure. (comenzi)
Un modul este cu atat mai independent de
rapoarte
hardware cu cat este mai sus in ierarhia
modulelor -> urmariti diferenta dintre Nivel
Nivel tactic
obiective ale modulelor din ierarhie scazut in
ierarhie
Procesarea
2. Abstractizarea- identificare a proprietatilor controlata a
esentiale ale unor entitati aparent diferite semnalelor
proceselor
industriale
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 26 / 53
PRINCIPII ALE INGINERIEI SOFT
continuare
3. Localizarea – punerea in vecinatatea fizica a elementelor cu unele
legaturi intre ele
Examplu: functiile unei biblioteci (calcule matematice, interfete grafice,
etc.), functii langa structurile de date folosite, etc.
4. Ascunderea – accentuarea elementelor esentiale si ascunderea detaliilor
care nu afecteaza alte componente ale sistemului
Exemplu: abordarea orientata pe obiecte - incapsularea
Observatie: diferenta dintre abstractizare si ascundere: amandoua
accentueaza aspecte esentiale dar ascunderea defineste restrictiile de acces.
5. Uniformi
Uniformitatea
tatea - asigura consistenta programelor, este specifica fiecarui
inginer in programare
Examplu: conventiile proprii ale fiecarui programator in notatii
6. Completitudinea
Completitudinea– asigura ca nici una din elementele esentiale nu sunt
omise.
Examplu: - notatiile trebuie sa exprime tot ce este necesar (referitor si la
uniformitate)
7. Confirmabilitatea – informatiile cerute de catre procesul de testare sa
fie formulate explicit si de asemenea disponibile .
Exemplu: necesitatea procedurilor de testare (ca document) 27 / 53
INSEMNATATEA PROCESULUI
Am vazut deja ca procesul de
proiectare are cativa pasi.
Orice proces are urmatoarele caracteristici:
O serie de sarcini cerute:
•Descrie toate activitatile majore ale procesului O serie de pasi implicand
•Foloseste resurse, fiind supus unor serii de activitati, constrangeri,
constrangeri si produce o serie de produse resurse care produc un
intrermediare si finale produs dorit.
•Pot fi formate din subprocese (fiecare are
propriul model de proces)
Cand procesul implica crearea
•Fiecare activitate a procesului are criterii de unui anume produs, ne referim la
intrare si iesire proces ca la un ciclu de viata..
Totusi, procesul de dezvoltare soft
•Activitatiile sunt organizate in secvente
este numit ciclu de viata soft,
•Fiecare proces are un set de principii de deoarece descrie viata unui produs
ghidare care explica obiectivele fiecarei activitati soft de la conceptie la
implementare, livrare, folosire si
•Constrangerile pot fi aplicate unei activitati,
intretinere.
resurse sau produs (exemplu: bugetul sau
programarile pot constrange timpul unei
activitati)
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 28 / 53
MODELELE PROCESULUI SOFT
Multe modele ale proceselor sunt descrise in literatura ingineriei
soft. Construirea unui model si discutarea subproceselor ajuta
echipa sa distanta dintre ceea ce ar trebui sa fie si ceea ce este.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 29 / 53
MODELUL CASCADA (WATERFALL)
Unul din primele
modele
Pasii sunt descrisi
in cascada unul
dupa altul
Un stagiu de
dezvoltare trebuie
terminat inainte de-
a incepe urmatorul
Prezinta un nivel
mare de vizualizare
a ceea ce se
intampla in timpul
dezvoltarii
Sugereaza
programatorilor
secventa
evenimentelor pe
care ei ar trebui sa
se astepte sa le
intalneasca
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 30 / 53
MODELUL CASCADA (WATERFALL)
Programele trebuie proiectate, testate, implementate şi exploatate. În general se
consideră că fazele prin care trece un program sunt:
Analiza cerinţelor - faza colaborării dintre beneficiar şi echipa de elaborare
pentru a se stabili definiţia exactă a problemei (cerinţe şi restricţii) rezultând în
general o temă de proiectare
Elaborarea specificaţiilor - faza în care se elaborează un set de specificaţii
formale (descrieri abstracte) pentru programe cuprinzând o descriere detaliată
pentru toate entităţile funcţionale precum şi pentru toate restricţiile.
Proiectarea programelor - se stabileşte structura pe module, raporturile dintre
ele, modul de comunicare, parametrii de intrare-
intrare-ieşire, tipuri de date etc..
Implementarea programului - programarea conform celor stabilite la punctele
anterioare. Se foloseşte un limbaj adecvat pe un calculator gazdă (host
computer)
Instalarea şi verificarea – pe calculatorul ţintă, al beneficiarului, în condiţii de
exploatare
Întreţinerea programului - asigură eliminarea erorilor ce se manifestă după
pornirea aplicaţiei
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 31 / 53
MODELUL CASCADA (WATERFALL)
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 32 / 53
MODELUL CASCADA - continuare
Poate fi foarte folositor pentru programatori in a
produce ceea ce doresc
Simplitatea lui il face mai usor de explicat clientilor
Multe modele complexe sunt derivate din modelul
cascada
dar (inconveniente)
nu reflecta intotdeauna modul in care
este implementeat codul
Modelul nu asigura ghidarea sefilor de
proiecte referitor la cum sa faca fata
schimbarilor si activitatilor care
probabil vor aparea neasteptat in timpul
implementarii (nu ne pregateste pentru
« surprize »)
Lipsa tratarii soft a ,,procesului
,,procesului de
rezolvare a problemelor
problemelor’’ ’’ ((producerea
producerea
softului nu este o rutina ci un proces de
creatie))
creatie 33 / 53
PROTOTIPURILE
Procesul de implementare soft poate ajuta
pentru a controla ‘’caderile’’ prin
includerea de activitati si subactivitati
care sporesc intelegerea; prototipul este
un asemenea subproces
Un prototip este un produs partial finalizat
care face posibila o examinare a unor
aspecte ale sistemului propus de catre
cumparator si producator pentru a
decide daca este convenabil sau se
apropie de produsul final.
Adesea, interfata cu utilizatorul este
construita si testata ca un prototip, de
aceea utilizatorul intelege cum va arata
noul sistem si designerii au o imagine
mai clara despre cum doreste utilizatorul
sa interactioneze cu sistemul.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 35 / 53
MODELUL DE PROTOTIPIZARE
Avantaje: Dezavantaje:
• Putem evita riscul unui model • Clientul crede ca aplicatia finala nu este
cascada – identificand departe de prototip deoarece acesta nu
neintelegerile despre cerinte, stie deaspre partile ascunse ale
dintre programator si client
aplicatiei
• Imbunatatirea dialogului cu
clientul • Programatorul are tendinta sa neglijeze
sau sa uite parti ale aplicatiei care
lipsesc in prototip
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 37 / 53
SPECIFICARILE OPERATIONALE
Pentru multe sisteme, nesiguranta in
privinta cerintelor duce la
schimbãri si probleme mai tarziu
în aplicatia respectiva.
Aceasta abordare( Zave, 1984)
permite programatorilor si
clientilor sa examineze cerintele
si implicãrile lor în dezvoltare,
unde ei pot sã discute si sa
rezolve unele dintre probleme.
Cerintele sunt evaluate într-un mod
care demonstreazã comportarea
sistemului - se poate incepe
evaluarea folosind un pachet de
soft, astfel incat implicarea lor sã
poata fi evaluata înaintea
începerii proiectului (dar se
foloseste un alt mediu si limbaj
decat cel de implementare). Acest tip este foarte diferit de modelele traditionale.
Modelul cascada desparte functionalitatea sistemului de
proiectare( ''ce'' este separat de ''cum''), intentionând sã
Exemplu: Dacã specificatia cere
ca sistemul propus sa poata fi pãstreze clientii departe de implementare. Specificatia
manipulat de catre 20 utilizatori, o operationalã permite ca functionalitatea si proiectarea sa
forma executabila a specificatiei fie unite.
poate sã ajute analistii pentru a Specificatia operationalã este asemãnãtoare cu
determina dacã acest numãr de prototipul. Procesul permite utilizatorului si
utilizatori solicita prea mult programatorului sa examineze cerintele mai devreme.
sistemul.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 38 / 53
MODELUL TRANSFORMATIONAL
Exemple de transformãri:
- Schimbând reprezentarea de
date selectând algoritmii
- optimizând
- compilând.
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 39 / 53
DEZVOLTAREA BAZATA PE FAZE
Intervalul de timp dintre cerintele aplicatiei si livrarea sistemului se numeste '‘durata de ciclu'' .
Un mod pentru a reduce acest interval este dezvoltarea bayata pe faze: sistemul este proiectat ca el sa
poata fi livrat în bucãti (sau versiuni), permitandu-le utilizatorilor o parte functionala în timp ce restul este
dezvoltat. Astfel, existã douã sisteme ce functioneaza în paralel - sistemul in exploatare (folosit de client) si
sistemul in dezvoltare.
Sistemul in dezvoltare este versiunea urmãtoare care este pregãtitã sã înlocuiascã sistemul in exploatare
curenta.
SE-
SE- Vasile Stoicu
Stoicu--Tivadar 40 / 53
Incrementari si iteratii
Abordari :
Dezvoltarea incrementala -
Sistemul este impartit în
subsisteme dupa functionalitate
iar varianta finala este la început
dintr-un subsistem de mici
dimensiuni, si dupã aceea cu
fiecare noua imbunatatire i se
adauga functionalitatati noi.
Dezvoltarea iterativã - livreazã un
sistem intreg la început si dupã
aceea schimbã functionalitatea
fiecarui subsistem cu fiecare
varianta nouã (o imbunatateste)
Exemplu: Un program de procesare de text, cu trei tipuri de functionalitate (creare de text,
organizare - taie & lipeste, formare fonturile).
Pentru dezvoltarea iterativã, 'varianta 1' contine toate functiile într-o forma
primitiva ( exemplu taie & lipeste este lenta), pe cand 'varianta 2' sporeste
calitatea functiilor etc. Fiecare noua versiune îmbunãtãteste una anterioara
într-un anume fel.
41 / 53
Incrementari si iteratii - continuare
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 42 / 53
MODELUL SPIRALA
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 43 / 53
MODELUL SPIRALA – continuare 1
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 44 / 53
MODELUL SPIRALA–
SPIRALA– continuare 2
(sau alta
reprezentare
simplificata)
Acest model este folosit pentru proiecte la scara mare, care implica
un risc deosebit (adica resurse financiare mari).
45 / 53
Dezvoltare AGILĂ
AGILĂ
46 / 53
Dezvoltare AGILĂ–
AGILĂ– continuare
PRINCIPII
Satisfacerea nevoilor clientului prin livrar
livrarea continuă
continuă și rapidă
de software util
Software
Software--ul este livrat frecvent (săptămâni)
Software
Software--ul care lucrează este principala măsură a progresului
Chiar și schimbări târzii sunt acceptate
47 / 53
DOD--STD
DOD STD--2167 un standard
Existã multe standarde pentru dezvoltarea software, dar multe din acestea sunt neoficiale
sau specifice companiilor respective.
Unul din primele este standardul DOD-
DOD-STD-
STD-2167 A sau MIL
MIL--STD-
STD-2167 de la US Dept. of
Defense (Dod).
49 / 53
DOD-STD
DOD- STD--2167 un standard -
continuare 2
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 50 / 53
DOD-STD
DOD- STD--2167 un standard -
continuare 3
Predarea rapoartelor si documentatiilor formale :
SE-
SE- Vasile Stoicu
Stoicu--Tivadar 51 / 53
ISO 9000
ISO 9000 (International Standard Organisation), este un standard international pentru
imbunatatirea calitatii, care a fost adoptat in Europa, SUA, Asia.
Standardul a fost conceput pentru aplicarea sa pentru o larga varietate de producatori. ISO 9001 -9003 se
aplica intreprinderilor, in conformitate cu scopul activitatilor lor. Familia ISO 9004 si ISO 9000-X sunt
documente care asigura indrumarea pentru aplicatiile specifice anumitor domenii.
ca echipă
echipă –
• un model bun arata fiecarui membru al echipei ce activitati apar intr-
intr-un proiect
pentru a si le putea imparti
• managerul proiectului poate folosi tehnicile specifice procesului pentru a
imbunatati procesul,
procesul, simuland activitati si urmarind resurse pentru
determinarea echipei optime si activitatile pentru a se incadra in bugetul si
termenele stabilite
IP
IP-- Vasile Stoicu-
Stoicu-Tivadar 55 / 53