Sunteți pe pagina 1din 2

------------------------BACKLOG (cerinte)------------------------- rezultat unul sau mai multe documente care trebuie pentru ca toti sunt implicati in mod

ati in mod direct); -dispozitie la -Obiectele si actorii sunt reprezentati la capatul de sus al ##View - Construieste interfata prezentata utilizatorilor, pe
#Cerinţele sunt descrieri ale serviciilor oferite de sistem "aprobate" -bazat pe modele de proces folosite pentru schimbare chiar in cursul dezvoltarii. unor linii punctate, care reprezinta linia de viata a baza cerintelor transmise de catre controller sau intero -
şi a constrângerilor sub care acesta va fi dezvoltat și va productia de hardware (!! proces bine structurat, riguros, ###Dezavantaje XP: -nu este scalabila; -necesita mai obiectelor. gand direct modelele
opera. clar; produce sisteme robuste) multe resurse umane "pe linie de cod"(d.ex. programare -Scurgerea timpului este reprezentata in cadrul diagramei##Controller - Conponenta logica a aplicatiei, ce inter-
##Utilizatorii documentului cu cerinte: -clienţii: impun ##Dezavantaje -dezvoltarea unui sistem software nu estein doi); -implicarea clientului in dezvoltare (costuri supli - de sus in jos. cepteaza cererile clientilor, interogheaza baza de date
cerinţele şi verifică apoi dacă acestea sunt conforme cu de obicei un proces liniar; etapele se intrepatrund meto- mentare si schimbari prea multe); -lipsa documentelor -Un mesaj se reprezinta printr-o sageata de la linia de prin intermediul modelelor, construieste un raspuns
nevoile lor; -managerii: utilizează documentul pentru a da ofera un punct de vedere static asupra cerintelor - "oficiale" ;-necesita experienta in domeniu ("senior level" viata a obiectului care trimite mesajul la linia de viata a utilizand view-urile.
stabili termenii contractului şi a planifica procesul de schimbarile cerintelor nu pot fi luate in considerare dupa developers); -poate deveni uneori o metoda ineficienta celui care-l primeste. #Avantaje: -Decupleaza componentele aplicatiei, ce pot
producţie; -inginerii de sistem: utilizează documentul aprobarea specificatiei -nu permite implicarea utilizatoru- (rescriere masiva de cod) -Timpul cât un obiect este activat este reprezentat printr- fi ulterior mai usor de realizat, modificat sau inlocuit; -
pentru a înţelege ce trebuie dezvoltat; -inginerii de la lui dupa aprobarea specificatiei #SCRUM - o metodă “agilă”, care se axează mai mult pe un dreptunghi subtire care acopera linia sa de viata. Modularizeaza logic aplicatia, previne duplicarea codului
testare: utilizează documentul pentru a proiecta testele managementul dezvoltării incrementale, decât pe practici -Optional, pot fi reprezentate raspunsurile la mesaje sursa; -Permite crearea de interfete multiple pentru
de validare -----------Procesul de dezvoltare incremental-------------- agile specifice. printr-o linie punctata, dar acest lucru nu este necesar. utilizatori, ale acelorasi date sau logica a aplicatiei (in
#User story -> descrie o functionalitate care poate fi utila ##Etape -un proprietar de produs creeaza o lista de sarcini numita ###Mesaje -sincron (sau apel de metoda). Obiectul general interfetele unei aplicatii se modifica mai des
si valoroasa atat unui utilizator, cat si unui comparator al -dezvoltarea si livrarea este realizata in parti "backlog"; -apoi se planifica ce sarcini vor fi implemen- pierde controlul pâna primeste raspuns -de raspuns: decat baza de date sau logica aplicatiei). -Datorita
sistemului; unitate de baza intr-un proiect Agile; sufficient (incremente), fiecare increment incorporând o parte de tate in urmatoarea iteratie, numita "sprint"; -aceasta lista raspunsuri la mesajele sincrone; reprezentarea lor este tehnologiilor diferite si utilizarea specifica a componen-
de mic pentru a putea fi implementat intr-o iteratie functionalitate de sarcini se numeste "sprint backlog"; -sarcinile sunt optionala. -asincron: nu asteapta raspuns, cel care trimitetelor MVC, acestea pot fi dezvoltate si intretinute de o
(Independent, Negotiable, Valuable, Estimable, Small, -cerintele sunt ordonate dupa prioritati (cele cu prioritatearezolvate in decursul unui sprint care are rezervata o mesajul ramânând activ (poate trimite alte mesaje). echipa specializata pe fiecare component.
Testable) cea mai mare fac parte din primul increment). -dupa ce perioada relativ scurta de 2-4 saptamâni; -echipa se #Diagrame de clase Diagramele de clase sunt folosite #Dezavantaje: -Creste complexitatea aplicatiei, pe
##Cerinte functionale - Sunt afirmatii despre servicii pe dezvoltarea unui increment a inceput, cerintele pentru intruneste zilnic pentru a discuta progresul ("daily pentru a specifica structura statica a sistemului, adica: nivele; - Separa fiecare functionalitate pe mai multe
care sistemul trebuie sa le contina, cum trebuie el sa acel increment sunt inghetate, dar cerintele pentru noile scrum"); -la sfârsitului sprintului, rezultatul ar trebui sa fie ce clase exista in sistem si care este legatura dintre ele. nivele; - Necesita o perioada de adaptare mai mare a
raspunda la anumite intrari si cum sa reactioneze in incremente pot fi modificate. livrabil (adica folosit de client sau vandabil); -dupa o ##Elemente dezvoltatorilor, precum si aptitudini de baza pe toate cele
anumite situatii. ##Avantaje -clientii nu trebuie sa astepte pâna ce intreg analiza a sprintului, se reitereaza. ###Atribute de vizibilitate trei nivele
-Descriu functionalitatea sistemului si serviciile oferite; - sistemul a fost livrat pentru a beneficia de el. Primul publice ``+``; private ``-``; protejate ``#``; package ``~``
Depind de tipul softului, de utilizatorii avuti in vedere si de increment include cele mai importante cerinte, deci --------------------------------UML---------------------------------- -> exemplu array: nume: String[1..2]; -------------------SISTEME DE VERSIONARE-------------------
tipul sistemului pe care softul este utilizat; -Cerintele sistemul poate fi folosit imediat. -se micsoreaza riscul ca UML este un limbaj grafic pentru vizualizarea, specifi - ###Operatii Semnatura unei operatii este formata din: - Instrument de dezvoltare software utilizat în gestionarea
functionale ale utilizatorilor pot fi descrieri de ansamblu proiectul sa fie un esec deorece partile cele mai impor- carea, constructia si documentatia necesare pentru numele operatiei, numele si tipurile parametrilor (daca e multiplelor versiuni ale fișierelor și dependențelor unei
dar cerintele functionale ale sistemului trebuie sa descrie tante sunt livrate la inceput. dezvoltarea de sisteme software (orientate pe obiecte) cazul) si tipul care trebuie returnat (daca este cazul). aplicații, înregistrând toate stările acestora, inclusiv
in detaliu serviciile oferite -deoarece cerintele cele mai importante fac parte din complexe. ###Relatii intre clase modificări, autori și comentarii privind fiecare modificare
##Cerinte non-functionale primele incremente, acestea vor fi testate cel mai mult. #Motive pentru care UML nu e folosit: -Nu este -asociere. Asocierile sunt legaturi structurale intre clase. (necessitate: securitate-repository securizat, lucrul in
Sunt constrângeri ale serviciilor si functiilor oferite de ##Dezavantaje -dificultati in transformarea cerintelor cunoscuta notatia UML; -UML e prea complex (14 tipuri Între doua clase exista o asociere atunci când un obiect echipa, istoria proiectului, integrare cu project trackers)
sistem cum ar fi: constrângeri de timp, constrângeri ale utilizatorului in incremente de marime potrivita. -procesul de diagrame); -Notatiile informale sunt suficiente; -Docu- dintr-o clasa interactioneaza cu un obiect din cealalta #Concepte
procesului de dezvoltare, standarde, etc. -Definesc nu este foarte vizibil pentru utilizator mentarea arhitecturii nu e considerata importanta clasa. Dupa cum clasele erau reprezentate prin substan- -Repository - server de fișiere (bază de date) unde sunt
proprietati si constrângeri ale sistemului, ca de exemplu: (nu e suficienta documentatie intre iteratii) #Motive pentru care e folosit UML: -UML este stan - tive, asocierile sunt reprezentate prin verbe. stocate datele proiectului software; -Working copy -
fiabilitatea, timpul de raspuns, cerintele pentru spatiul de -codul se poate degrada in decursul ciclurilor dardizat; -existenta multor tool-uri; -flexibilitate: mode- -multiplicitati (1..*/1/2..5 etc); versiunea curentă a proiectului; -Commit - modificări
stocare, cerinte ale sistemului de intrari-iesiri etc; -La ##Exemple: -Unified Process cu varianta Rational larea se poate adapta la diverse domenii folosind "profil- -navigabilitate(A->B => A stocheaza o referita la B) efectuate asupra unor fișiere, publicate în repository; -
intocmirea lor se va tine cont de un anumit mediu de Unified Process; uri" si "stereotipuri"; -portabilitate: modelele pot fi expor - -agregare si compunere Revision - versiune a unui fișier, ca urmare a unui commit;
dezvoltare, limbaj de programare sau metoda de dez- -Peocese de dezvoltare in spurala introduse de Boehm;- tate in format XMI (XML Metadata Interchange) si folosite ---agregare: o clasa este „intregul” care contine parti mai -Branch - copie separată a proiectului, ce poate conține
voltare; -Cerintele non-functionale pot fi mai critice decât Agile de diverse tool-uri; -se poate folosi doar o submultime de mici modificări individuale; -Merge - operație de combinare a
cele functionale. Daca nu sunt indeplinite, sistemul nu va #Metodologii agile diagrame ---compunere(mai puternica): partile componente nu modificărilor din branch-uri separate; -Checkout / fetch /
fi util scopului in care a fost dezvoltat. -se concentreaza mai mult pe cod decât pe proiectare -arhitectura software e importanta exista fara intreg pull - descărcare modificări de pe repository
####Tipuri -Cerinte ale produsului: Cerinte care speci- -se bazeaza pe o abordare iterativa de dezvoltare de #Diagrama cazurilor de utilizare -generalizare: relatie intre un lucru general (numit super- #Particularitati Git: salveaza patches (diferente) pentru
fica un anumit comportament al produsului, ca de exem- software ##Elemente clasa) si un lucru specializat (numit subclasa) fiecare commit, local branches folosite intensive, oper -
plu: gradul de utilitate, eficienta (viteza de executie), -produc rapid versiuni care functioneaza, acestea -Caz de utilizare (componenta a sistemului): unitate -dependenta:A depinde de B daca o modificare din B atiuni de merge, rebase, fork mult mai facile decat in SVN
fiabilitate, portabilitate etc. -Cerinte legate de organi- evoluând repede pentru a satisface cerinte in schimbare. coerenta de functionalitate sau task; reprezentata printr- schimba si A(ex: A are o metoda cu param de timp B) #Instrumente de build: GNU Make(C/C++), Ant(Java),
zare: Cerinte care sunt consecinte ale politicilor de ##Aplicabilitate -companii mici sau mijlocii; -software un oval. -interfata(realizare) Maven, Gradle(Java, Scala, C/C++, Android)
organizare a productiei software, ca de exemplu: stan - pentru uz intern -Actor (utilizator al sistemului): element extern care #Diagrame de stari (numite si masini de stare sau state- -Build automation este procesul de creare automată a
darde utilizate, cerinte de implementare, cerinte de livrare ##Dezavantaje -dificultatea de a pastra interesul clientilorinteractioneaza cu sistemul; reprezentat printr-o figurina charts) descriu dependenta dintre starea unui obiect si componentelor software pornind de la codul sursă și
etc. -Cerinte externe: Cerinte asociate unor factori implicati in acest procesul de dezvoltare pentru perioade -Asociatii de comunicare: legaturi intre actori si cazuri de mesajele pe care le primeste sau alte evenimente recep- dependențe
externi, ca de exemplu: cerinte de interoperabilitate, lungi; -membrii echipei nu sunt intotdeauna potriviti utilizare; reprezentate prin linii solide tionate. -Fazele uzuale ale procesului de build:, Instalare depen-
cerinte legislative etc. pentru implicarea intensa care caracterizeaza metodele -Descrierea cazurilor de utilizare: un document (narativ) ##Elemente dențe, Compilare cod sursă în cod binar, Împachetare
##Tipuri de cerinte agile; -prioritizarea modificarilor poate fi dificila atunci care descrie secventa evenimentelor pe care le executa -stari, reprezentate prin dreptunghiuri cu colturi rotunjite. cod binar, Rulare aplicație, Rulare teste automate,
###Cerinte utilizator când exista mai multe parti interesate; -mentinerea un actor pentru a efectua un caz de utilizare O stare este o multime de configuratii ale obiectului care Revenire la starea inițială
-afirmatii in limbaj natural si diagrame a serviciilor oferite simplitatii necesita o munca suplimentara; -contractele ###Actorii se comporta la fel la aparitia unui eveniment(evenimente
de system laolalta cu constrângerile operationale; -scrise pot fi o problema ca si in alte metode de dezvoltare -Actorii primari sunt cei pentru care folosirea sistemului asociate starilor: entry[cand ob intra in starea resp], -------MEDII INTEGRATE DE DEZVOLTARE (IDE) --------
pentru clienti incrementala are o anumita valoare (beneficiari); exit[cand iese], do[in timp ce se afla in starea #I.D.E = Integrare, Dezvoltare, Environment
-trebuie sa descrie cerinte functionale si nonfunctionale ##Exemple: -Extreme Programming (XP) -1996; -Adap- -Actorii secundari sunt cei cu ajutorul carora se real - respectiva]) ##Integrare
intr-o maniera in care sunt pe intelesul utilizatorilor sis- tive Software Development (ASD); -Test-Driven Develop- izeaza cazul de utilizare; Actorii secundari nu initiaza -tranzitii intre stari, reprezentate prin sageti - O serie de instrumente de dezvoltare (tool-chains) – în
temului care nu detin cunostinte tehnice detaliate. ment (TDD); -Feature Driven Development (FDD); -Behav-cazul de utilizare, dar participa la realizarea acestuia. -evenimente care declanseaza tranzitiile dintre stari (cel marea lor majoritate la linia de comandă: Compilator,
Se adreseaza: utilizatorilor finali, inginerilor clientului, ior Driven Developement (BDD); -Crystal Clear; -Scrum ###Cazuri de utilizare -Un caz de utilizare este o unitate mai des intâlnite evenimente sunt mesajele primite de Debugger, Build-tool, Profiler, Version contol tool, Genera-
proiectantilor de system, managerilor clientului, manager - -1995 coerenta de functionalitate. -Un caz de utilizare in- catre obiect) toare de cod/resurse, Dezasamboare/decompilatoare
ilor de contracte #Extreme programming -noile versiuni pot fi construite globeaza un set de cerinte ale sistemului care reies din -semnul de inceput, reprezentat printr-un un disc negru etc.; - Unul sau mai multe navigatoare cum ar fi: file
###Cerintele sistemului de mai multe ori pe zi; -acestea sunt livrate clientilor la specificatiile initiale si sunt rafinate pe parcurs. -Cazurile dincare porneste o sageata (fara eticheta) spre starea manager, project manager, class manager, proprieties,
-un document structurat stabilind descrierea detaliata a fiecare 2 saptamâni; de utilizare pot avea complexitati diferite; initiala a sistemului. widgets etc; - Unul sau mai multe editoare de text/resurse
functiilor sistemului, serviciile oferite si constrângerile -toate testele trebuie sa fie executate pentru fiecare ####Frontiera sistemului -este important de a defini -semne de sfârsit, reprezentate printr-un disc negru cu unspecializate în recunoașterea formatului fișierelor editate;
operationale. versiune si o versiune e livrabila doar in cazul in care frontiera sistemului astfel incât sa se poata face distinctie cerc exterior, in care sosesc sageti din starile finale ale - Unul sau mai multe console folosite pentru a afișa starea
-poate fi parte a contractului cu clientul. Se adreseaza: testele au rulat cu succes. intre mediul extern si mediul intern (responsabilitatile sistemului. Acestea corespund situatiilor in care obiectul proiectului, sau a operațiilor care se execută supra
utilizatorilor finali, inginerilor clientului-proiectantilor de ##Valorile XP: -Simplitate (Simplicity); -Comunicare sistemului) -ea poate avea un nume -cazurile de utilizare ajunge la sfârsitul vietii sale si este distrus. acestuia
system, programatorilor (Communication); -Reactie (Feedback); -Curaj sunt inauntru, iar actorii in afara. -garzi(în anumite situaţii un eveniment declanşează o ###Dezavantaj integrare - se pierde generalitatea unor
##Structura documentului de specificare a cerintelor (Courage); -Respect (Respect) ###Relatia << include >> -Daca doua sau mai multe tranziţie numai dacă atributele obiectului îndeplinesc o componente. De exemplu un ”file-manager” transformat
-Prefata; -Introducere; -Glosar de termini; -Definirea ##Practici: -procesul de planificare (The Planning cazuri de utilizare au o componenta comuna, aceasta anumită condiţie suplimentară (gardă)): într-un ”project-navigator” nu mai permite vizualizarea
cerintelor utilizatorilor; -Arhitectura sistemului; -Specifi- Game); -client disponibil pe tot parcursul proiectului (On- poate fi reutilizata la definirea fiecaruia dintre ele. -În eveniment[garda]/actiune tuturor fișierelor dintr-o structură de directoare, ci numai a
carea cerintelor de sistem; -Modelarea sistemului; - Site Customer); -implementare treptata (Small Releases) acest caz, componenta refolosita este reprezentata tot acelor fișiere care aparțin logic de proiect;
Evolutia sistemului; -Anexe; -Index -limbaj comun (Metaphor); -integrare continua (Continu- printr-un caz de utilizare legat prin relatia « include » de --------------------------ARHITECTURA -------------------------- ###Avantaj integrare - se câștigă funcționalități noi. De
ous Integration); -proiectare simpla (Simple Design); - fiecare dintre cazurile de utilizare de baza. -împărțirea optimă a unui sistem complex în diverse exemplu, un editor de cod Java va avea: ”syntax high -
------------------PROCESE DE DEZVOLTARE------------------- testare (Testing); -rescriere de cod pentru im- ###Relatia << extend >> Relatia « extend » se foloseste componente, evidențiind relațiile dintre acestea; - docu- lighting”, permite indentarea după un anumit code-style
#Procesul de dezvoltare cascada Modelul cascada bunatatire (Refactoring); -programare in pereche (Pair pentru separarea diferitelor comportamente ale cazurilor ment ce se adreseaza atat clientului / beneficiarul apli- predefinit etc;
trebuie folosit atunci cand cerintele sunt bine intelese si Programming); -drepturi colective (Collective Ownership) de utilizare. Daca un caz de utilizare contine doua sau catiei, cat si echipei de dezvoltare; - se creaza o legatura ###Functionalitati noi aparute : Visual profiling, Visual
când este necesar un proces de dezvoltare clar si rig - -40 ore/saptamâna (40-Hour Week); -standarde de mai multe scenarii semnificativ diferite (in sensul ca se intre cerintele logice ale aplicatiei si posibilitatile tehno- diffs, Visual preview, Refactorizare.
uros. scriere a codului (Coding Standard) pot intâmpla diferite lucruri in functie de anumite circum - logice; - arhitectura descrie structura sistemului, fara a ##Dezvoltare (creare sau de programare a aplicațiilor)
##Etape ##Programarea in 2 -tot codul este scrisa de doua stante), acestea se pot reprezenta ca un caz de utilizare expunde informatii detaliate despre implementare; - ###Deficiente: -Sunt foarte multe și au tendința de a
-analiza si definirea cerintelor: ce trebuie sa faca sistemul persoane folosind un singur calculator -sunt doua roluri inprincipal si unul sau mai multe cazuri de utilizare excep- raspunde cerintelor de functionalitate crește ca număr în timp, de la o versiune la alta (a se
-design: cum trebuie sa se comporte sistemul aceasta echipa: Unul scrie cod si celalalalt il ajuta tionale. #Atribute de calitate: -performanță: trebuie paralelizat vedea numărul de tool-uri în tool-chain-urile din JDK sau
-implementare si testare unitara: designul sistemului este gândindu-se la diverse posibilitati de imbunatatire. ###Relatia de generalizare Acest tip de relatie poate cat mai mult, descompunând sistemul în procese coop- de la GNU); -Modul de utilizare al acestor instrumente
transformat intr-o multime de programe (unitati de pro- ###Avantajele programarii in 2 -sustine ideea de pro- exista atât intre doua cazuri de utilizare cât si intre doi erante; -precizie: trebuie optimizată structura datelor și variază în funcție de tipul de aplicație și/sau de limbajul
gram); testarea unitatilor de program verifica faptul ca prietate si responsabilitate in echipa pentru sistemul actori. -generalizarea intre cazuri de utilizare indica faptul modul în care valorile sunt prelucrate; -securitate: de programare folosit; -Fiecare instrument de programare
fiecare unitate de program este conforma cu specificatia. colectiv; -proces de revizuire imbunatatit, deoarece ca un caz de utilizare poate mosteni comportamentul trebuie gestionate bine restricțiile de comunicare și are foarte multe opțiuni de execuție, necesită multe
-integrare si testare sistem: unitatile de program sunt fiecare linie de cod este privita de catre cel putin doua definit in alt caz de utilizare. generalizarea intre actori acces; operații manuale și un timp mare de învățare; -Nu permit
integrate si testate ca un sistem complet; apoi acesta persoane; -ajuta la imbunatatirea codului; -transfer de arata ca un actor mosteneste structura si comportamen- -portabilitate și reutilizare: trebuie minimizate depe- refactorizarea și navigarea ușoară a codului în interiorul
este livrat clientului. cunostinte si training implicit (important când membrii tul altui actor. dențele puternice între componente unui proiect; -Debugging-ul, profilingul sau compararea
-operare si mentenanta: sistemul este folosit in practica; echipei se schimba) (!!!! NU EXISTA linii simple intre cazuri) #MVC - software design pattern utilizat in surselor la linia de -comandă este foarte complicată;
mentenanta include: corectarea erorilor, imbunatatirea ##Avantaje XP: -solutie buna pentru proiecte mici; - #Diagrame de secvente Este tipul de diagrama UML implementarea aplicatiilor cu interfata catre utilizatori, de -Unele sisteme de operare (Cum ar fi MAC OS sau
unor servicii, adaugarea de noi functionalitati. programare organizata; -reducerea numarului de greseli -care pune in evidenta transmiterea de mesaje (sau regula applicatii web (Java, C#, Ruby, PHP) Windows) descurajează folosirea liniei de comandă;
##Avantaje -fiecare etapa nu trebuie sa inceapa inainte clientul are control (de fapt, toata lumea are control, apeluri de metode) de-a lungul timpului. ##Model - Componenta software ce reprezinta resursele ###Rezolvari: -Același look&feel pentru proiecte din
ca precedenta sa fie incheiata. -fiecare faza are ca ##Elemente conceptuale puse la dispozitie de catre aplicatie aceeași clasă de aplicații. De exemplu: pentru Java,
indiferent dacă build-tool-ul folosit e Ant, Maven sau -Inspectorii detecteaza erorile, programatorul trebuile sa #Depanare sistematica (utila deoarece datele pot fi ---în acest caz, de exemplu scurgerile nesemnificative de ##Acoperire la nivel de conditie -Genereaza date de
Gradle, proiectul va arăta la fel în IDE, iar operațiile de le corecteze; erorile determinate pot conduce la modifi- mari, programele pot avea mii de locatii de memorie etc) memorie se pot acumula şi pot provoca căderea sistemu-test astfel incât fiecare conditie individuala dintr-o decizie
bază (clean, compile, run, debug) vor avea aceeași carea design-ului; de obicei o ispectie dureaza 90-120 lui sa ia atât valoarea adevarat cât si valoarea fals (daca
funcționalitate; de min, cu o rata de 150 de instructiuni/ore ---------------------------TESTARE----------------------------------- #GUI testing -testarea interfeţei cu utilizatorul presupune acest lucru este
-Același look&feel pentru debugging (De exemplu: -Aspecte care pot fi luate in considerare: formatul codu- #Verificare = se refera la dezvoltarea produsului memorarea posibil).
degugger-ul din NetBeans arată la fel indiferent de lui, stilul programarii, ce fel de nume sunt folosite, #Validare = se refera la respectarea specificatiilor, tuturor acestor informaţii şi elaborarea unei modalităţi prin###Avantaje -se concentreaza asupra conditiilor individ -
limbajul de programare folosit (C/C++, Java sau PHP) și acoperirea cu teste a codului inspectat utilitatea produsului care mesajele să fie trimise din nou aplicaţiei, la un uale
de natura proiectului (aplicații stand-alone, mobile sau #Avantaje: descoperire de bug-uri, cod scris mai bine #Evaluarea unui produs - depinde de functionalitate moment ulterior; -de obicei se folosesc scripturi pentru ###Dezavantaje -poate sa nu realizeze o acoperire la
web).) In plus debugger-ul din IDE are o ergonomie de la inceput, transfer de cunostinte, solutii mai bune la o programului, asteptarile utilizatorilor, mediul de afaceri testare nivel de
ridicată datorită folosirii ferestrelor; -Operațiile de anumita problema #Terminologie IEEE ---Eroare (engl. “error”) - o acţiune #Testarea utilizabilităţii (usability testing) -testează cât ramura. Pentru a rezolva aceasta slabiciune se
Search&Replace și mai ales Refactorizare funcționează #Dezavantaje: creste timpul investit in dezvoltarea de umană care are ca rezultat un defect în produsul soft- de uşor de folosit este sistemul; -se poate face în labora- poate folosi testarea la nivel de conditie/decizie.
atât la nivelul unui fișier sursă cât și la nivelul întregului cod, stres suplimentar asupra dezvoltatorilor care prefera ware; ---Defect (engl. “fault”) - consecinţa unei erori în toare sau „pe teren” cu utilizatori din lumea reală; - ##Acoperire la nivel de conditie/decizie - Genereaza
proiect etc. sa lucreze singuri, uneori e suficient ca o singura per- produsul software- un defect poate fi latent: nu cauzează exemple de metode folosite: testare “pe hol” (hallway date de test astfel incât fiecare conditie individuala dintr-o
##Environment - un sistem hardware-software (format soana sa isi faca singura inspectia codului si sa probleme cât timp nu apar condiţiile care determină testing): cu câțiva utilizatori aleatori, testare de la dis- decizie sa ia atât valoarea adevarat cât si valoarea fals
din unul sau mai multe calculatoare și din una sau mai gaseasca problemele execuţia anumitor linii de cod; ---Defecţiune (engl. tanță: analizarea logurilor utilizatorilor, recenzii ale unor (daca acest lucru este
multe aplicații auxiliare) în care o aplicație este deploy- “failure”) - manifestarea unui defect: când execuţia experți (externi) posibil) si fiecare decizie sa ia atât valoarea adevarat cât
ată și apoi executată; --------------DEPANAREA PROGRAMELOR--------------------programului întâlneşte un defect, acesta provoacă o #Testarea de tip “cutie neagră” (functionala) si valoarea fals.
#Defect software (BUG): o eroare, o omisiune, o nein- defecţiune abaterea programului de la comportamentul Se iau in considerare numai intrarile (intr-un modul, ##Acoperirea MC/DC -fiecare conditie individuala dintr-o
----------------------REFACTORIZARE----------------------------- telegere sau un esec etc. -Consecinte: producerea unui aşteptat componenta sau sistem) si iesirile dorite, conform speci- decizie ia atât valoarea true cât si valoarea false -fiecare
-Refactorizarea codului sau „code refactoring” este rezultat incorect sau neașteptat, producerea unui rezultat #Principii de testare -o parte necesara a unui caz de ficatiilor structura interna este ignorata (de unde si nu- decizie ia atât valoarea true cât si valoarea false -fiecare
procesul de modificare a unei secvențe de program fără corect însă însoțit de o serie de comportamente neaștep- test este definirea iesirii saurezultatului asteptat; -pro- mele de "black box testing") conditie individuala influenteaza in mod ndependent
a-i schimba funcționalitatea externă tate sau neintenționate gramatorii nu ar trebui sa-si testeze propriile #Exemple de metode de testare de tip black box decizia din care face parte
-Refactorizarea vizează în principal îmbunătățirea struc- ##Efectele defectelor software programe(exceptie face testarea de nivel foarte jos - ###Partitionare in clase de echivalenta ###Avantaje: -acoperire mai puternica decât acoperirea
turală a unui codul existent – cod care a fost testat și -Efecte subtile-funcționalitatea software-ului pare a fi testarea unitara); -organizatiile ar trebui sa foloseasca si -ideea de bază este de a partiționa domeniul problemei conditie/decizie simpla, testând si influenta conditiilor
validat anterior - având ca obiective finale: corectă. Totuși, dacă acestea sunt lăsate să ruleze pentrucompanii (sau departamente) externe pentru testarea (datele de intrare) în partiții de echivalență sau clase de individuale asupra deciziilor -produce teste mai putine –
---Reducerea complexității; o perioadă mai lungă de timp, atunci aceste efecte propriilor programe; -rezultatele testelor trebuie analizate echivalență astfel încât, din punctul de vedere al specifi- depinde liniar de numarul de conditii
---Creșterea lizibilității și implicit a mentenabilității codului; subtile se vor acumula ducând în final la efecte vizibile; - amanuntit -trebuie scrise cazuri de test atât pentru condi- cației, datele dintr-o clasă să fie tratate în mod identic #Metrici in testarea software: -no. of requirements, total
---Modificarea internă a acestuia în vederea extinderii Efecte tranzitorii-funcționalitatea software-ului este afec- tii de intrare invalide si neasteptate, cât si pentru conditii -după ce clasele au fost identificate, se alege o valoare no. of test cases written for all requirements, total no. of
codului cu noi opțiuni (capacitatea codului de a fi exten- tată pe termen scurt după care aceasta revine la normal. de intrare valide si asteptate. din fiecare clasă. În plus, pot fi alese și date invalide test cases executed/passed/failed/blocked, total no. of
sibil); Aceste defecte poartă numele de glitch-uri și sunt uneori #Testare unitara (unit testing) -o unitate (sau un modul) (care sunt în defects identified, critical/ high/ medium/ low defects
-Refactorizarea poate produce un cod diferit de la caz la deosebit de greu de reprodus și mai ales de reparat. se referă de obicei la un element atomic (clasă sau afara claselor și nu sunt procesate de nici o clasă) count
caz, în funcție de obiectivul urmărit. De exemplu dacă Exemple: defecte de timing, defecte de initializare, funcţie), dar poate însemna şi un element de nivel mai ####Avantaje -reduce drastic numarul de date de test
obiectivul urmărit este: defecte datorate erorilor de comunicatie; -Efecte vizibile- înalt; -testarea unei unităţi se face în izolare doar pe baza specificatiei; -potrivita pentru aplicatii de ------------------------PERFORMANTA --------------------------
----Reducerea complexității => poate produce mai multe funcționalitatea software-ului este afectată în general de o--> Un test contine: initializarea(clasei sau arg necesare), tipul procesarii datelor, in care intrarile si iesirile sunt usor #Software
componente simple; serie de factori externi cum ar fi: o combinatie a datelor apelul metodei testate, decizia daca testul a reusit sau a de identificat si iau valori distincte -Capacitatea unui sistem software de a executa sarcinile
----Creșterea lizibilității și implicit a mentenabilității codului de intrare, o secventa de comenzi si actiuni, o configu- esuat(compara valorile produse de metoda cu cele ####Dezavantaje -modul de definire a claselor nu este pentru care a fost proiectat, în timpul și condițiile de lucru
=> o serie de componente simple pot fi grupate în expre- ratie hardware particulara; se manifesta prin corecte) evident (nu exista nici o modalitate riguroasa sau macar prestabilite. Sistemul software implementat întrunește un
sii/funcții/clase mai complexe, dar mai elegante, care pot blocare(freeze) sau crash; in aceasta categorie intra #Testarea de integrare (integration testing) -Testează niste indicatii clare pentru identificarea acestora). -in set de condiții de lucru optimale, ce includ capacitate de
fi utilizate mai ușor în diferite părți ale aplicației; majoritatea bug-urilor; -Efecte secundare-funcționalitatea interacţiunea mai multor unităţi; -Testarea este determi - unele cazuri, desi specificatia ar putea sugera ca un procesare, timpi de execuție sau medii de execuție,
----Modificarea internă a acestuia în vederea extinderii software-ului nu este afectată. Ceea ce este afectat în nată de arhitectură grup de valori sunt procesate identic, acest lucru nu este cunoscute de către utilizatori.
codului cu noi opțiuni => apar noi nivele de abstractizate acest caz este stabilitatea și/sau securitatea sistemului #Testarea sistemului (system testing) -testarea sis- adevarat. (Acest lucru intareste ideea ca metodele de tip #Hardware
situate deasupra nivelelor deja existente hardware/software pe care aplicația în cauză este execu- temului testează aplicaţia ca întreg şi este determinată de "cutie neagra" trebuie combinate cu cele de tip "cutie Sisteme distribuite ce inglobeaza puterea de calcul a mai
#Tehnici de refactorizare a codului tată (exemplu: acapararea in mod nejustificat a unor scenariile de analiză; -aplicaţia trebuie să execute cu alba".) -mai putin aplicabile pentru situatii când intrarile si multor calculatoare obisnuite aflate in acceasi retea /
1. Tehnici pentru îmbunătățirea denumirii și localizării resurse software sau hardware) succes toate scenariile pentru a putea fi pusă la dispoz - iesirile sunt simple, dar procesarea este complexa. Internet. Aceastea executa task-uri individuale simple al
codului: ##Modalitati de depanare iţia clientului; -spre deosebire de testarea internă şi a ##Analiza valorilor de frontiera -este folosită de obicei caror rezultat poate fi combinat
--Mutarea definiței unei variabile, constante, funcție, etc. -folosind tiparirea-simplu de aplicat, nu necesita tool-uri; componentelor, care se face prin program, testarea împreună cu partiționarea în clase de echivalență; -ea se in scopul finalizarii unei sarcini complicate. Clustere de
într-un fișier (sau într-o clasă) care ilustrează mai bine codul se complica, performanta scade uneori, sunt aplicaţiei se face de obicei cu scripturi care rulează concentrează pe examinarea valorilor de frontieră ale calculatoare / supercomputers - sisteme dedicate, insta -
apartenența funcțională de aceasta; --Redenumirea unei necesare recompilari repetate etc; -folosind log-uri(istoria sistemul cu o serie de parametri şi colectează rezultatele; claselor, care de regulă sunt o sursă importantă de erori; late in aceeasi locatie, ce pot lucra impreuna pentru a
variabile, constante, funcție, etc. într-un fișier (sau într-o executiei progr)-poate fi controlat prin progr sau propri- -testarea aplicaţiei trebuie să fie realizată de o echipă -această metodă adaugă informații suplimentare pentru executa task-uri in paralel
clasă) care să reflecte mai bine scopul/utilitatea acesteia; etati(codul se complica); -debugger (JAVA in ECLIPSE) independentă de echipa de implementare; -testele se generarea setului de date de test #Criterii de masurare a performatei aplicatiilor: -
-- Pull Up/Push Down – cazuri particulare de mutare public class BinarySearch { bazează pe specificaţiile sistemului ###Partiționarea în categorii (category-partition) -se Capacitate de procesare a sarcinilor (workload); -Viteza
folosite în OOP pentru a evidenția deplasarea unor // presupunem ca vectorul array e ordonat crescator! #Testarea de acceptanta (acceptance testing) -testele bazează pe cele două anterioare; -ea încearcă să de procesare a sarcinilor (throughput); -Resurse consu-
membrii în cadrul ierarhiei de clase (mutare într-o super public static int binarySearch(int array[], int target){ de acceptanță determină dacă sunt îndeplinite cerințele genereze date de test care "acoperă" mate (memorie, CPU, network, disk I/O, ...etc.); -Over -
clasă respectiv mutare într-o sub clasă). int low = 0, high = array.length, mid; unei specificații sau ale contractului cu clientul. funcționalitatea sistemului și astfel, să crească posibili- head elemente de securitate
2. Tehnici pentru „spargerea” codului în secțiuni logice while (low <= high) { #Testarea de regresie (regression testing) -un test valid tatea de
distincte: mid = (low + high)/2; generează un set de rezultate verificate, numit “standar - găsire a erorilor. --------------SABLOANE(DESIGN PATTERNS)----------------
--Componentizarea sau spargerea codului în unități if ( target < array[ mid ] ) dul de aur”; -testele de regresie sunt utilizate la re-testare, ####Avantaje si dezavantaje-pașii de început (identifi- -soluţii generale reutilizabile la probleme care apar
semantice reutilizabile reprezentate de interfețe care sunt high = mid - 1; după realizarea unor modificări, pentru a asigura faptul carea parametrilor și a condițiilor de mediu precum și a frecvent în roiectare (orientată pe obiecte)
mai clare, mai bine definite și mai simplu de utilizat; -- else if ( target > array[ mid ]) că modificările nu au introdus noi defecte în codul care categoriilor) nu sunt bine definiți, bazându-se pe expe- #Folositoare in urmatoarele feluri: -ca mod de a învăța
Extract class – mutarea unei părți de cod dintr-o clasă low = mid + 1; funcţiona bine anterior; -pe măsură ce dezvoltarea con- riența celui care face testarea. Pe de alta parte, odată ce practici bune; -aplicarea consistentă a unor principii
într-o clasă nouă; --Extract field/constant/method – ex- else return mid; } tinuă, sunt adăugate alte teste noi, iar testele vechi pot acești pași au fost realizați, aplicarea metodei este clară; generale de proiectare; -ca vocabular de calitate de nivel
tragerea unei valori (sau a unei secțiuni de cod) care se return -1; } rămâne valide sau nu; -dacă un test vechi nu mai este -este mai clar definită decât metodele “cutie neagră” înalt (pentru comunicare); -ca autoritate la care se poate
repetă într-o nouă variabilă sau funcție. Rulăm câteva teste pentru funcția de căutare: valid, rezultatele sale sunt modificate în standardul de anterioare și poate produce date de testare mai cuprinză-face apel;-în cazul în care o echipă sau organizație
3. Tehnici care permit creșterea gradului de abstractizare -binarySearch( {1,2,3}, 1) == 0 OK aur; -acest mecanism previne regresia sistemului într-o toare, care testează funcționalități suplimentare; pe de adoptă propriile șabloane: un mod de a explicita cum se
a codului: -binarySearch( {1,2,3}, 4) aruncă ArrayIndexOutOf- stare de eroare anterioară. altă parte, datorită exploziei combinatorice, pot rezulta fac lucrurile acolo
--Encapsulate Field – așa cum îi spune și numele permite BoundsException #Testarea performantei (performance testing) seturi de teste de foarte mari dimensiuni. #Trebuie folosite cu grija deoarece: -sunt folositoare
încapsularea unui câmp și forțează utilizatorul să TESTE IMPLEMENTATE IN JUNIT -O parte din testare se concentrează pe evaluarea pro- #Testarea de tip cutie alba (structurala) doar dacă există într-adevăr problema pe care ele o
folosească accesori de tip getter și setter în locul ac- public class BinarySearchTest { prietăţilor Testarea de tip „cutie alba" ia in calcul codul sursa al rezolvă; -pot crește complexitatea și scădea performanța
cesării directe; --Generalize type – permite, în anumite @Test non-funcționale ale sistemului, cum ar fi: metodelor testate. Vizeaza acoperirea diferitelor structuri #Tipuri: arhitecturale, de proiectare, idiomuri
condiții schimbarea tipului de date al unui câmp cu un tip public void test_1() { ---siguranța (“reliability”) - menţinerea unui nivel specificat ale programului. #Principii de baza: -programare folosind multe interfețe:
de date cu un grad de generalizare mai ridicat (de int[] a = {1, 2, 3}; de performanţă Programul este modelat sub forma unui graf orientat. interfețe și clase abstracte pe lângă clasele concrete,
exemplu: de la List la Collection); int x = 1; ---securitatea - persoanele neautorizate să nu ##Acoperire la nivel de instructiune- Fiecare instruc- framework-uri generice în loc de soluții directe; se preferă
#Bune practici pentru refactorizare: Restaurează codul int result = BinarySearch.binarySearch(a,x); #Testarea la încărcare (load testing) -asigură faptul că tiune (sau nod al grafului) este parcursa macar o data. compoziția în loc de moștenire(delegarea către obiecte
inițial atunci când refactorizarea eșuează (folosind un assertTrue(result == 0); } sistemul poate gestiona un volum aşteptat de date, ###Avantaje -realizeaza executia macar o singura data a“ajutătoare”); -se urmărește decuplarea: obiecte cât mai
version control system); Creează-ți un scenariu de testare @Test similar cu acela din locaţia-destinaţie (de exemplu la fiecarei independente, folosirea “indirecției”, obiecte “ajutătoare”.
(sau mai bine, o întreagă suită de teste) înainte de a public void test_2() { client); -verifică eficienţa sistemului şi modul în care instructiuni; -in general, usor de realizat. #Sabloane creationale: singleton, abstract factory,
realiza prima operație de refactorizare; Refactorizează în int[] a = {1, 2, 3}; scalează acesta pentru un mediu real de execuţie; ###Dezavantaje: -nu testeaza fiecare conditie in parte in builder
pași cât mai mici; Testează modificările după fiecare int x = 4; #Testarea la stres (stress testing) cazul #Sablon structural: facade
refactorizare; Refactorizează codul automat (folosind un int result = BinarySearch.binarySearch(a,x); -solicită sistemul dincolo de încărcarea maximă proiec- conditiilor compuse (de exemplu, pentru a se atinge o #Sabloane comportamentale: observer, visitor
IDE) și nu refactoriza manual decât în situații ex - assertTrue(result == -1); } tată acoperire la nivel de instructiune in programul anterior, nu#Anti-sabloane: BaseBean, God object, yoyo-problem,
cepționale; Nu combina în același pas refactorizarea cu #Debugging/Debuggers - supraîncărcarea testează modul în care „cade” sistemul este necesara introducerea unei valori mai mici ca 1 race hazzard, input kludge etc.
bug-fixing-ul și/sau cu extinderea funcționalității Un debugger este o aplicație software folosită pentru a sistemele nu trebuie să eşueze catastrofal testarea la pentru n); -nu testeaza fiecare ramura; -probleme supli-
testa și a depana o altă aplicație stres verifică pierderile inacceptabile de date sau mentare apar in cazul instructiunilor if a caror clauza else —————————> asociere
--------------------INSPECTIA CODULUI------------------------ ##Functionalitatile unui debugger: funcţionalităţi lipseste. În acest caz, testarea la nivel de instructiune va —————————|> mostenire
-O metodă importantă pentru asigurarea calității este -controlul execuției: poate opri execuția la anumite locații -deseori apar aici conflicte între teste. Fiecare test forta executiei ramurii corespunzatoare valorii "adevarat", —————————<> agregare
citirea numite breakpoints funcţionează dar, deoarece nu exista clauza else, nu va fi necesara si —————————-<> (umplut) compunere
codului cu scopul de a detecta erori -interpretorul: poate executa instrucțiunile una câte una corect atunci când este făcut separat. Când două teste executia celeilalte ramuri. Metoda poate fi extinsa - - - - - - - - - - - - - - - - |> implementare
-O echipa de inspecție/recenzie a codului are patru -inspecția stării programului: poate observa valoarea sunt rulate în paralel, unul sau ambele teste pot eşua pentru a rezolva aceasta problema. - - - - - - - - - - - - - - - - > dependenta
membri: variabilelor, obiectelor sau a stivei de execuție ---cauza este de obicei managementul incorect al acce - ##Acoperire la nivel de ramura -Fiecare ramura a
----Moderatorul – un programator competent -schimbarea stării: poate schimba starea programului în sului la grafului este parcursa macar o data. Dezavantaj: nu
----Programatorul – cel care a scris codul inspectat timpul execuției resurse critice (de exemplu, memoria) testeaza conditiile individuale ale fiecarei decizii.
----Designer-ul, dacă este o persoană diferită de pro- ##Breakpoint = punct in cadrul unui program folosit -o altă variantă, “soak testing”, presupune rularea sis- ##Acoperire la nivel de cale -Genereaza date pentru
gramator pentru a-i opri executia in acel loc temului pentru o perioadă lungă de timp (zile, săptămâni, executarea fiecarei cai macar o singura data.
----Un specialist în testare luni)

S-ar putea să vă placă și