Documente Academic
Documente Profesional
Documente Cultură
Ingineria programării
“Note curs”
2
Contents
Definiție Ing. Programării............................................................................................................................3
Modele de dezvoltare...............................................................................................................................12
Etapele dezvoltarii programelor............................................................................................................12
Prototipizarea........................................................................................................................................15
Analiza cerintelor.......................................................................................................................................15
Design patern............................................................................................................................................17
Principii si moduri arhitecturale................................................................................................................17
Coding Standards.......................................................................................................................................28
Testare.......................................................................................................................................................28
Teste de acceptanta..............................................................................................................................29
Ce anume ar trebui sa contina un test plan?.........................................................................................29
Software license........................................................................................................................................33
Forme de licente....................................................................................................................................33
Restrictii.................................................................................................................................................33
Acorduri suplimentare...........................................................................................................................34
Licente de tip MS FPP............................................................................................................................34
MS OEM software..................................................................................................................................34
Asigurarea calitatii.....................................................................................................................................34
Ce este calitatea?..................................................................................................................................34
Ce inseamna un produs de calitate ridicata?.........................................................................................35
Metrici de calitate software...................................................................................................................35
3
Este un set de activități legate de elaborarea unuia sau mai multor programe, părți de
programe sau sisteme de programe.
Rezultatul unui proiect software este un produs software.
2. Motivație:
Aplicații de dimensiuni mari (milioane de liniide cod) scrise pe durata a câteva luni, ani.
Echipe de lucru: Project manageri, Analiști,Arhitecți, Programatori, Testeri, Ingineri de
suport (de ordinul 10, 100, 1.000 de persoane,…)
Soluția acestor probleme este o soluție scrisa într-un limbaj de programare orientat-
obiect
Motivele eșecurilor:
4
Probleme de organizare
Modificari neasteptate ale clientului
Ingineri soft de slaba calitate
Resurse insuficiente
Probleme de managment
Metode noi de lucru
Motive:
Trasabilitate
Optimizare
Refolosire
Scaderea timpului
Calitate mai buna
Costuri mai mici
Planificare
Comunicare
Plan – Do – Check
Obiectivele (beneficile) rezultatelor la care ne asteptam in urma optimizarii procesului:
Produs conform
Reutilizam
Optimizat
QTC (quality time cost)
Profit
Trasabilitate
Marketing
În prezent costurile acestora sunt mai mari decât costurile rezervate componentelor
hardware. Costul întreținerii unui program este de regulă mai mare decât costul
realizării unui program.
Ing. Programării se ocupă de aspectele practice ale dezvoltării software iar informatica se
ocupă de aspectele teoretice ale dezvoltării software.
Specificarea cerințelor
Proiectarea arhitecturală
Implementare
Testare
Integrare
Implementare
Etapele dezvoltării:
8
Erori pe etape:
9
Presiunea pentru a livra programul cât mai repede cu un cost mic și cu o calitate bună.
Sistemele vechi trebuie întreținute și actualizate.
8. Analiza cerințelor:
Comunicarea
Negocierea
Sfătuirea clientului.
10
9. Proiectarea:
Primul pas în analiză este de a studia cu atenție cerințele de intrare și de ieșire pentru a
vă asigura că acestea sunt înțelese și au sens
Use case: lista acțiunilor utilizatorilor și răspunsurile sistemului pentru o anumită sub-
problemă în ordinea în care este probabil să apară
Diagrama secvențelor: arată toate obiectele implicate în acest caz de utilizare pe axa
orizontală, timpul este prezentat de-a lungul axei vertical
Condiție preliminară: o declarație privind orice ipoteze sau constrângeri asupra datelor
metodei înainte de începerea execuției metodei
Postcondition: o instrucțiune care descrie rezultatul executării unei metode
Abstracția este un model al unei entități fizice sau al unei activități
Abstracția ajută programatorii să trateze probleme complexe într-o manieră fragmentată
Abstractarea procedurală: distinge ceea ce urmează să fie realizat printr-o procedură de
la punerea sa în aplicare
Abstractizarea de date: specificarea obiectele de date pentru o problemă și operațiile
care trebuie efectuate asupra acestora fără reprezentarea lor în memorie
Reprezentarea unui obiect de date este irelevantă pentru alte clase care accesează
numai prin metodele sale Ascunderea informațiilor: ascunderea detaliilor unei
implementări de clasă pentru utilizatorii clasei
11
10. Implementare:
11. Integrare:
12. Validare:
12
13. Verificare:
14. Întreținere:
Modele de dezvoltare
Modele de dezvoltare
Ad-hoc: descurcă-te cum poți
Modelul în cascadă (cu feedback)
13
Prototipizare
Modelul în spirală
RUP (Rational Unified Process)
V-Model
XP (Extreme Programming)
Agile, Lean, Scrum
MDD, AMDD, TDD Modelul V:
Este o variantă a modelului cascadă, care pune în evidență corelarea dintre activitățile de
specificare și cele de testare, înlanțuirea în timp a activităților fiind aceeași. Planificările se fac o
dată cu parcurgerea primei ramuri.
Avantaje:
+ Mai bun decât modelul în cascadă deoarece planul de teste este făcut încă de la început.
Dezavantaje:
Avantaje și dezavantaje:
Kanban
Prototipizarea
Tipuri de prototipuri
De aruncat (throw-away)
Scop: clarificarea specificațiilor
Se dezvolta repede, orice altceva e secundar
(quick-and-dirty)
Util în a rezolva “architecural/technology spikes”
Programul “adevarat” este scris apoi de la 0
Evoluționar
Scop: construire incrementala a produsului final
Se construiește un nucleu funcțional la care se adauga apoi noi funcționalitați
Analiza cerintelor
16
Cerinte (requirements). O discutie intre client si req. Manager. In prima parte este
negocierea si clarificarea ( elicitation, requirements validation, requirements managment –
change managment este nevoie de versionare ).
Requirements pot fi :
Aplicabile
Atomice
Unice
Clare, explicite
Standardizat ( cine ce face)
Sa aibe ID
17
Scheme, tabele nu au ce cauta in requirements. Daca clientul ne da asa ceva le punem ca si info
sau aditionale.
Sunt fezabile cand nu mai avem dubii si daca avem o descriere corecta a problemei (cat mai
detaliata). Foarte important in acesta etapa este definirea obiectivului.
Design patern
Manager model – SO
Shared repository
Shared services / servers
Abstract machines
Design editor
Cod generator
Design Project
translator Program editor
repository
Modelarea
- Class
- Object ( obiectul este o instanta a clasei )
Modelul
- Simplificarea realitatii
- Planul detaliat al unui system
De ce modelam ?
- Mostenire
- Agregare
Persoana
Mostenire
Fetita
Modelarea arhitecturii
Decizie
Yes
No
Bucla
20
Instructiune
- Proceselor
- Cu ajutorul Deployment- ului – punerea in practica ( concept client – server )
Principii
Limbaje de modelare
UML
21
Use case
Relatii
- Asociere :
- Generalizare :
- Dependenta : < - - - - - - - - - - - - -
In cazul programarii 80 % din bug – uri sunt datorita “ tehnicii “ copy paste !!!
Obiecte
Function
- Function
- Methods
- Modules
22
parametrii
F O
return
return a + b ;
- Mesaj : continut
- Stare mesaj : to , ok , alterat
- Output – uri : structurate
- Receptie ( mesaj , stare )
- Sa nu existe conflicte
- Timp de executie
- Risipa de spatiu
- De compozitie – modularitate
- Functia sa cuprinda un singur predicat
- Intrepatrunderea componentelor
Nivele
- Concept
- Specificatie
- Implementare
Instantiere / Instanta
Polimorfismul
- Abstractizare
- Ajuta in refolosire
Intrepatunderea
Multiplicitatea
- Contul bancar
- Agregare, compozitie
- Minim un client
- Relatie de compozitie
Intrepatunderea buna
Forme de cuplare
De identitate
De reprezentare
Subclase / mostenire
1.
ISP
LSP
OCP
2. Principii de programare
25
In relatia de dependența a unei clase fata o de alta clasa, aceasta ar trebui să depindă de cea mai mică
interfață posibilă
Clienții nu ar trebui să fie obligați să depindă de metodele pe care nu le utilizează
TimerClient
Door
TimedDoor
implementarea nu respecta principiul! Deoarece nu
toate usile au nevoie de un timer
TimerClient Door
Yes
Door TimerClient
TimedDoor TimedDoorAdaptor
1 +
Copy
Readprinter WhiteKey
void copy ()
int c ;
}
28
Copy
Reader Writer
KeyReader PrinterWriter
Coding Standards
Sfaturi si reguli de folosit
“ Unde sunt 2 buguri, cel mai probabil va fi si al treilea “
“ Don’t patch bad code – rewrite it “
“ Don’t stop with your first draft “
Mentananta
Mai putine buguri
Munca in echipa
Cost
29
Tipuri de standarde
De companie
Pentru limbaje de programare
Reguli
Identare
Comentarea codului
Spatiere
Nume variabile ( tipul, modulul , nume sugestive)
Testare
Unit Testing
Integration Testing
Performance Testing
End-to-End Testing
User Acceptance Testing
Regression Testing
Teste de acceptanta
Testarea cerințelor funcționale
Gestionarea condițiilor de eroare și testarea distructivă
Testarea securității
Testarea de recuperare
Testarea controlului
Testarea performanțelor in conditii de stres
Testarea prin regresie
Verification:
> Are we building the product right? ( Construim produsul in mod correct?)
Validation:
Client Acceptance
Needs Testing
31
Requirements System
Testing
Design Integration
Testing
Code Unit
Testing
Obiectiv – Testeaza interfata intre componente pentru a pune in evidenta defecte in transferul
de informatie intre componente
Integrarea incrementala
Integrarea top – down
Integrarea bottom – up
Testarea de regresie
Smoke testing
Testarea incrementala se face pas cu pas , integrand la primul pas doua componente , apoi ,
dupa ce toate testele au fost realizate si defectele eliminate se adauga alta componenta , se
refac toate testele anterioare , se adauga noi teste si asa mai departe pana cand in testele
considerate nu mai pote fi pus in evidenta nici un defect .
Pasii procesului :
Programul principal joaca rolul de test driver si se introduce surrogate pentru fiecare din
componentele direct subordinate acesteia .
33
Testarea de regresie este un proces de confirmare ca, odata ce se schimba codul din program,
nu afecteaza celelalte functii.
Build Verification Testing altfel cunoscut ca si Smoke Testing testeaza functiile cele mai
importante al programului pentru a se asigura ca versiunea curenta este destul de stabila
pentru a se putea lucra in continuare pe ea.
Cu ajutorul testului scoatem la iveala probleme de integrare si alte erori mai devreme.
Software license
Licența software este un acord specific, în care autorul autorizează utilizarea programelor sale și
în principiu utilizatorul este obligat să plătească o remunerație (taxă de licență) pentru acest
lucru.
Forme de licente
Licență cu nume unic de identificare
35
Acorduri suplimentare
Actualizare licența
o Actualizarea este diferită (fix, patch, service pack)
Acord de întreținere
Acord de sprijin
kit de instalare, manual, licență (în unele cazuri numai electronic), formularul de
înregistrare este inclus
De obicei, puteți utiliza o singură versiune a produsului software
Termenii licenței sunt stabiliți în EULA
Nu există un identificator de utilizator final în licență, deci trebuie să dețineți o factură
(ca document concludent)
Este cel mai scump mod de achiziție de software
MS OEM software
Asigurarea calitatii
Ce este calitatea?
Abilitatea de a face același lucru în același mod, mereu și repede
Clientul care cumpără astăzi un produs este asigurat ca este același cu cel pe care l-a
cumpărat săptămâna trecută sau il va cumpăra săptămâna viitoare
Produsul satisface așteptările clienților în proportie de 100% tot timpul