Sunteți pe pagina 1din 3

Backlog Management membrii echipei nu sunt mereu potriviți pentru implicarea intensă; un dreptunghi cu numele în colțul din stânga-sus.

Contine​:​ Epics, User stories, Non functional requirements, Chores, Defects. menținerea simplității nu e ceva simplu.
Def.​:​ A user story describes functionality that will be valuable to either a user Extreme Programming (XP)​: ​noile versiuni pot fi construite de mai multe ori pe
or purchaser of a system or soft zi; acestea sunt livrate clienților la fiecare 2 săptămâni; toate testele trebuie
Caracteristici​: ​Basic unit of work in an agile project, să fie executate pentru fiecare versiune și o versiune e livrabilă doar în cazul
Describes a desired piece of business functionality, în care testele au rulat cu succes. ​Met. agile in XP: ​“oameni, nu procese” prin
Small enough to be implemented in an iteration, A good
programare în doi; “dezvoltarea incrementală” este susținută prin intermediul
user story is the simplest statement about the system
that: The customer cares about, Test cases can be livrării de software în mod frecvent cu mici incremente; “menținerea
written to verify, Can be reasonably estimated, Can be simplității” prin refactoring constant de cod. ​Valori XP:​Simplitate,
prioritized Comunicare, Feedback, Curaj, Respect. ​Practici XP: ​client disponibil​ pe tot
INVEST​: ​Independent, Avoid introducing dependencies (leads to difficulty parcursul proiectului, ​proiectare simplă​(proiectează cel mai simplu lucru care Arhitecturi
prioritizing and planning), Negotiable, Stories are not written contracts, Do funcționează acum. proiectează doar pentru a satisface cerințele și nimic în Def.​:​ Arhitectura aplicatiilor software este un concept ce descrie structura
not need to include all details, Valuable, Valuable to users and customers, plus), ​refactoring constant​, ​livrari frecvente​(livrări cât de des este posibil, cu fundamentala a sistemelor software, din etapa de proiectare, dezvoltare si
Estimable, Because stories are used in planning, Small, Large stories are hard condiția să existe o plus-valoare, acest lucru asigură feedback ul rapid; clientul pana in productie, la un nivel inalt, pentru a raspunde diverselor cerinte,
to estimate, Testable, Tests demonstrate that a story meets the customer’s are funcționalitatea esențială cât mai curând posibil), ​testare​(​test-driven precum functionalitate, performanta, securitate. ​Necesitate:​ ​Intelegerea
expectations, Automate if possible development”​:se scriu teste înaintea codului pentru a clarifica cerințele. cerintelor aplicatiei afecteaza structura finala a acesteia; Nevoia de
Estimari​:​ Poker = Fibonacci + Playing Cards testele sunt scrise ca programe în loc de date, astfel încât acestea să poată fi cunoastere in ansamblu a sist. de catre membrii echipei; Arhitectura aplicatiei
Kanban​:​ task-uri in tabel:ToDo, Dev, Test, Release, Done executate automat. fiecare test include o condiție de corectitudine. toate software trebuie sa raspunda cerintelor initiale, curente si viitoare.
Cerinţe testele anterioare și cele noi sunt rulate automat atunci când sunt adăugate MVC​: ​Software design pattern utilizat in implementarea app. cu interfata
Def.​: ​sunt descrieri ale serviciilor oferite de sistem şi a constrângerilor sub noi funcțion., verificând astfel că nu s-au introdus erori.) ​programare în catre utilizatori, de obicei app. Web ​Model​: Componenta software ce
care acesta va fi dezvoltat și va opera pereche​(unul scrie cod și celălalt îl ajută gândindu-se la posibilități de reprezinta resursele conceptuale puse la dispozitie de catre aplicatie, de
Tipuri​:​ ​(1)​Cerinţe utilizator: ​afirmaţii în limbaj natural şi diagrame ale îmbunătățire; susține ideea de responsabilitate în echipă; proces de revizuire regula instantiate prin tehnici ORM din medii de stocare persistente. ​View​:
serviciilor oferite de sistem laolaltă cu constrângerile operaţionale; scrise îmbunătățit, deoarece fiecare linie de cod este privită de cel puțin două Construieste interfata prezentata utilizatorilor, pe baza cerintelor transmise
pentru clienţi. ​Cerinţe sistem:​ document structurat stabilind descrierea persoane; transfer de cunoștințe și training implicit (important când membrii de catre controller sau interogand direct modelele, obtinand ca rezultat un
detaliată a funcţiilor sistemului, serviciile oferite şi constrângerile echipei se schimbă)). ​Avantaje XP: ​soluţie bună pentru proiecte mici; cod HTML, XML, JSON etc. ​Controller​: Conponenta logica a aplicatiei, ce
operaţionale; poate fi parte a contractului cu clientul. ​(2)​Cerinţe funcţionale: programare organizată; reducerea numărului de greşeli; dispoziție la intercepteaza cererile clientilor, interogheaza baza de date prin intermediul
afirmaţii despre servicii pe care sistemul trebuie să le conţină, cum trebuie el schimbare în cursul dezv. ​Dezavantaje XP: ​nu este scalabil; necesită mai modelelor, construieste un raspuns utilizand view-urile, pe care apoi il
să răspundă la anumite intrări şi cum să reacţioneze în anumite situaţii. multe resurse umane; necesită experienţă în domeniu; lipsa documentelor intoarce catre client. ​Avantaje​:Decupleaza componentele aplicatiei, ce pot fi
Cerinţe non-funcţionale: ​constrângeri ale serviciilor și funcţiilor oferite de “oficiale” ulterior mai usor de realizat, modificat sau inlocuit; Modularizeaza logic
sistem cum ar fi constr. de timp, constrângeri ale procesului SCRUM​: ​Scrum este o metodă “agilă”, care se axează mai mult pe aplicatia, previne duplicarea codului sursa; Permite crearea de interfete
de dezvoltare, standarde etc. ​(3)​Ale produsului: ​Cerinţe care specifică un managementul dezvoltării incrementale, decât pe practici agile specifice. ​Pe multiple pentru utilizatori, ale acelorasi date sau logica a aplicatiei(in general
anumit comportament al produsului. D. ex.: gradul de utilitate, eficiență scurt: ​proprietarul creeaza o lista de sarcini(“backlog”); se planifică care dintre interfetele unei aplicatii se modifica mai des decat baza de date sau logica
(viteză de execuţie), fiabilitate, portabilitate etc. ​Legate de organizare: sarcini vor fi implementate în următoarea iterație(“sprint backlog”); echipa se aplicatiei); Datorita tehnologiilor diferite si utilizarea specifica a comp. MVC,
Cerinţe care sunt consecinţe ale politicilor de organizare a producţiei întrunește zilnic pentru a discuta progresul. ​Roluri​: product owner (proprietar acestea pot fi dezv. si intretinute de o echipa specializata pe fiecare
software. (ex: standarde utilizate, cerinţe de implementare, cerințe de livrare de produs); scrum master - are grijă de întreg procesul; membrii echipei; component. ​Dezavantaje​: Creste complexitatea aplicatiei, pe nivele; Separa
etc.) ​Externe: C​erinţe asociate unor factori externi(ex.: legislative etc.) utilizatori & stakeholders & manageri. ​Tools: ​pivotaltracker; scrumwise fiecare functionalitate pe mai multe nivele; O perioada de adaptare mai mare
Structura documentului de specificare: ​Prefaţă, Introducere, Glosar de UML a dezvoltatorilor, precum si aptitudini de baza pe toate cele trei nivele.
termenin, Definirea cerinţelor utilizatorilor, Arhitectura sistemului, Def.​: ​UML este un limbaj grafic pentru vizualizarea, specificarea, construcția și Medii integrate de dezvoltare(IDE)
Specificarea cerinţelor de sistemn, Modelarea sistemuluin, Evoluţia documentația necesare pentru dezvoltarea de sisteme software (OO) Contine​: ​tool-uri​(Compilator, Debugger, Build-tool, Profiler, Version contol
sistemului, Anexe, Index complexe. ​Tipuri de diagrame: ​class diagram; use case diagram; state tool, Generatoare de cod, decompilatoare),​ navigatoare​(ex.: file manager,
Reprezentare​: ​limbaj natural:​ Cerințele sunt organizate în paragrafe machine diagram; sequence diagram; package diagram; activity diagram; project manager), ​editoare​ de text,​ console​ folosite pentru a afișa starea
numerotate. communication diagram. ​Avantaje: ​este standardizat; existența multor proiectului. ​Organizare structurala: ​o zonă de meniuri, o zonă de tool-bar-uri;
Limbaj natural structurat:​ utilizarea unui format standard sau a machetelor în tool-uri; flexibilitate: modelarea se poate adapta la diverse domenii folosind editor, navigator, zonă de console/output/status;
conjuncţie cu limbajul natural ​limbaj grafic suplimentat cu adnotări “profiluri” și “stereotipuri”; portabilitate: modelele pot fi exportate în format Refactorizare
textuale​(mai ales pentru cerinţe sistem), cum ar fi UML. ​Specificaţii XMI (XML Metadata Interchange) și folosite de diverse tool-uri; se poate folosi Def.​:​ procesul de modificare a unei secvențe de program fără a-i schimba
matematice:​ concepte matematice lucrând cu maşini cu stări finite sau relații doar o submulțime de diagrame; arhitectura softw e importanta. funcționalitatea externă;Uneori prin refactorizare se înțelege simpla
peste mulțimi. Elimina ambiguitatile, dar pot fi dificil de înţeles. Dezavantaje: ​nu este cunoscută notația UML; e prea complex; notațiile reorganizare a codului însa deseori prin refactorizare funcționalitatea internă
Procese de dezvoltare informale sunt suficiente; documentarea arhitecturii nu e considerată e schimbată prin optimizarea codului existent sau prin folosirea unor algoritmi
“cascadă” (waterfall):​ ​analiza și definirea cerințelor:​ Sunt stabilite serviciile, importantă. mai buni.
constrângerile și scopurile sistemului prin consultare cu utilizatorul. (ce Cazuri de utilizare​: ​Descriu comportamentul sistemului din punct de vedere al Scop.​: ​vizează în principal îmbunătățirea structurală a unui codul existent -
trebuie să facă sistemul). ​design:​ Se stabilește o arhitectură de ansamblu și utilizatorului; Două părți principale: cod care a fost testat și validat anterior, având ca obiective finale: Reducerea
funcțiile sistemului software pornind de la cerințe. (cum trebuie să se sistem; utilizatori. scopul principal: relația dintre actori și cazuri de utilizare. complex.; Creșterea lizibilității si a mentenabilității codului; Modif. internă a
comporte sistemul). ​implementare și testare unitară:​ Designul sistemului este Elemente principale: ​Caz de utilizare​ (componentă a sistemului): unitate acestuia în vederea extinderii codului cu noi opțiuni (capacitatea codului de a
transf. într-o mulțime de programe (unități de program); testarea unităților de coerentă de funcționalitate sau task; reprezentată printr-un oval. ​Actor fi extensibil);
program verifică faptul că fiecare unitate de program este conformă cu (utilizator al sistemului): element extern care interacț(reprezinta un rol jucat Rezultate.​:​Refactorizarea poate produce un cod diferit de la caz la caz, în
specificația. ​integrare și testare sistem:​ Unitățile de program sunt integrate și de utilizatori; pot fi primari-beneficiari, declanseaza cazul de utilizare- si funcție de obiectivul urmărit.De ex.: Reducerea complexității => poate
testate ca un sistem complet; apoi acesta este livrat clientului. ​operare și secundari-cu ajutorul lor se realizeaza cazul de utilizare-). cu sistemul, produce mai multe componente simple; Creșterea lizibilității și a mentenab.
mentenanță:​ Sistemul este folosit în practică; mentenanța: corectarea reprezentat printr-o figurină. ​Asociații de comunicare​: legături între actori și => o serie de componente simple pot fi grupate în expresii/funcții/clase mai
erorilor, îmbunătățirea unor servicii, adăugarea de noi funcționalități. ​Avantaj: cazuri de utilizare; reprezentate prin linii solide. ​Descrierea cazurilor de complexe, dar mai elegante, care pot fi utilizate mai ușor în diferite părți ale
proces bine structurat, riguros, clar; produce sisteme robuste. ​Probleme: utilizare​: un document (narativ) care descrie secvența evenimentelor pe care aplicației;
metoda oferă un punct de vedere static asupra cerințelor; schimbarile le execută un actor pentru a efectua un caz de utilizare. Include include un alt Modificarea internă a acestuia în vederea extinderii codului cu noi opțiuni =>
cerințelor nu pot fi luate în consid. după aprobarea specificatiei;nu permite caz/extend folosit pentru exceptii(sub extend se poate scrie motivul exceptiei) apar noi nivele de abstractizate situate deasupra nivelelor deja existente (de
implicarea utilizatorului după aprobarea specificației.​ Concluzie:​ ​Modelul <<include>>(imprumuta carte) - - ->(verifica rezervare) ||| tipul interfețelor sau claselor de bază);
cascadă trebuie folosit atunci cand cerințele sunt bine înțelese și când este <<extend>>(impprumuta carte)<- - -(refuza imprumut) ||| generalizare: Tehnici​: ​îmbunătățirea denumirii și localizării codului​:​ Mutarea
necesar un proces de dezvoltare clar și riguros. (livreaza produs)<|----(livreaza produs prin posta) ||| de la actori la use cases definiței​(​Redenumirea​)​ unei variabile, constante, funcție etc. într-un fișier
Procesul incremental​: ​sunt identificate cerințele sistemului la nivel înalt, dar, linie simpla ---. Ex.: customer ----(session)- -include (sau într-o clasă) care ilustrează mai bine apartenența funcțională de
în loc de a dezvolta și livra un sistem dintr-o dată, dezvoltarea și livrarea este ->(transaction)<|---(deposit)/(transfer); mai mult, (transaction)<- -extend aceasta(​care să reflecte mai bine scopul/utilitatea​). ​„spargerea” codului în
realizată în incremente, fiecare increment încorporând o parte de -(invalid PIN); (transaction)---bank secțiuni logice distincte: ​spargerea codului în unități semantice reutilizabile
funcționalitate. cerințele sunt ordonate după priorități. după ce dezvoltarea Diagrame de clase reprezentate de interfețe care sunt mai clare; mutarea unei părți de cod într-o
unui increment a început, cerințele pentru acel increment sunt înghețate, dar Def.:​ Diagramele de clase sunt folosite pentru a specifica structura statică a clasă nouă; extragerea unei valori (sau a unei secțiuni de cod) care se repetă
nu si cele pentru noile incremente. ​Avantaje:​ clienții nu trebuie să aștepte sistemului, adică: ce clase există în sistem şi care este legătura dintre ele. într-o nouă variabilă sau funcție. ​Tehnici care permit creșterea gradului de
până ce întreg sistemul a fost livrat pentru a beneficia de el. Primul increment Atribute​: publice ‘+’; private ‘-’; protejate ‘#’; package ‘~’(ex: - prenume : abstractizare: ​Encapsulate Field​: permite încapsularea unui câmp și forțează
include cele mai importante cerințe, deci poate fi folosit imediat. se String [1..3]; ~ nrMaximAdmis : Integer = 3). ​Operatii: ​definesc modurile în utilizatorul să folosească getter și setter; ​Generalize type​: permite, în anumite
micșorează riscul ca proiectul să fie un eșec deoarece părțile cele mai care interacţionează obiectele; op. Specifice: constructori, accesorii (getX) și condiții schimbarea tipului de date al unui câmp cu un tip de date cu un grad
importante sunt livrate la început. ​Probleme: ​dificultăți în transformarea mutatori (setX). ​Relatii intre clase: ​Asociere​: linie simpla; cand exista relatii de generalizare mai ridicat (ex.: de la List la Collection).​Bune
cerințelor utilizatorului în incremente de mărime potrivită. procesul nu este intre clase; se poate marca ​multiplicitatea​ la capetele liniei(1, 1..*); putem practici:​Restaurează codul inițial atunci când refactorizarea eșuează;
foarte vizibil pentru utilizator (nu e suficientă documentație între iterații). plasa o săgeată la unul dintre capetele liniei pentru a arăta că este posibil să Creează-ți un scenariu de testare (sau o întreagă suită de teste)înainte de a
codul se poate degrada în decursul ciclurilor. se trimită mesaje în direcţia săgeţii(ex.: ​[Student] <--- [Curs]​, deci curs are realiza prima operație de refactorizare;
Metodologii “agile”​: ​scopul​ metodelor agile este de a reduce cheltuielile în cunostinta de student, adica exista un camp/ colectie Student in Curs); daca Refactorizează în pași cât mai mici; Testează modificările după fiecare
procesul de dezvoltare a software-ului (de exemplu, prin limitarea nu exista sageata, asocierea este bidirectionala; ​
A gregare(relatie de tip refactorizare; Refactorizează codul automat (folosind un IDE); Nu combina în
documentației) și de a răspunde rapid cerințelor în schimbare. se parte-intreg)​: Romb gol la ob. container; ​Compunere(agregare mai puternica același pas refact. cu bug-fixing-ul și/sau cu extinderea funcționalității.
concentrează mai mult pe cod decât pe proiectare se bazează pe o abordare deoarece intregul controleaza durata de viata a partii; o parte nu poate să fie Versionare
iterativă de dezvoltare de software produc rapid versiuni care funcționează, conţinută în mai mult de un singur întreg)​: Romb plin la ob. container. Def.​:​ Instrument de dezvoltare software utilizat în gestio. multiplelor versiuni
acestea evoluând repede pentru a satisface cerințe în schimbare. ​Agile Generalizare: ​relație între un lucru general (părinte) și un lucru specializat ale fișierelor și dependențelor unei aplicații, înregistrând toate stările
Manifesto: ​indivizii şi interacţiunea înaintea proceselor şi uneltelor; (copil). ex.: ​[Bird] <|--- [AngryBird]​. Clasele abstracte sunt scrise in ​italic​. acestora, inclusiv modificări, autori și comentarii privind fiecare modificare
software-ul funcţional înaintea documentaţiei vaste; colaborarea cu clientul Dependență: ​A depinde de B dacă o modificare în specificația lui B poate Frameworks: ​SVN, Git, Mercurial, CVS, Perforce. ​Concepte VCS: ​Repository:
înaintea negocierii contractuale; receptivitatea la schimbare înaintea urmăririi produce modificarea lui A, dar nu neapărat și invers; cel mai frecvent caz de server de fișiere (bază de date) unde sunt stocate datele proiectului software;
unui plan. ​Principii ale manifestului agil: ​(1)Schimbarea cerinţelor este dependență este relația dintre o clasă care folosește altă clasă ca parametru Working copy: versiunea curentă a proiectului
binevenită chiar şi într-o fază avansată a dezvoltării. Procesele agile valorifică într-o operație(ex.: ​[Abonat|...| +imprumuta(c: Carte)])- - -> [Carte]​). Commit - modificări efectuate asupra unor fișiere, publicate în repository;
schimbarea în avantajul competitiv al clientului. (2)Clienții şi dezvoltatorii Realizare/Interfata:​ ​[<<interface>> Nume|...|...] <|- - -[Clasa|...|...]​. ​Pachete: Revision: versiune a unui fișier, ca urmare a unui commit; Branch: copie
trebuie să colaboreze zilnic pe parcursul proiectului. (3)Livrarea de software separată a proiectului, ce poate conține modificări individuale; Merge:
funcţional se face frecvent, de preferinţă la intervale de timp cât mai mici, de operație de combinare a modificărilor din branch-uri separate;
la câteva săptămâni la câteva luni. (4)La intervale regulate, echipa reflectează Checkout/fetch/pull: descărcare modificări de pe repository; Push: încărcare a
la cum să devină mai eficientă, apoi îşi adaptează şi ajustează modif. de pe un repository local pe un repository remote.
comportamentul. ​Aplicare în:​ companiile care dezvoltă produse software de GIT​:​ git config user.name / user.email; git init; git add [file1, file2...]; git
dimensiuni mici sau mijlocii;în cadrul companiilor care dezvoltă software pt. commit -m “First commit”; git remote add origin url.git; git push origin
uz intern. ​Dificultati: ​păstrarea interesului clienților pt. perioade lungi; master; git clone url.git; git pull origin master; git rebase origin master;
Ordine: ​add, commit, pull, push​. Branch-uri: ​git checkout -b new_feature; git
rebase master; git checkout master; git merge new_feature; git push origin programului, structura programului nejucând nici un rol. ​Exemple:
master partiționare în clase de echivalență; analiza valorilor de frontieră;
Build partiționarea în categorii; graful cauză-efect; testarea tuturor perechilor;
Def.​:​ este procesul de creare automată a componentelor software pornind de testarea bazată pe modele
la codul sursă și dependențe. Partiționare în clase de echivalență​: ​ideea de bază este de a partiționa
Faze​:​Instalare dependențe; Compilare cod sursă în cod binar; Împachetare domeniul problemei (datele de intrare) în partiții de echivalență sau clase de
cod binar; Rulare aplicație; Rulare teste automate; Revenire la starea inițială. echivalență astfel încât, din punctul de vedere al specificației, datele dintr-o
Instrumente de buid​:​GNU Make​(UNIX) - ex.: gcc -o prog main.o foo.o bar.o, clasă să fie tratate în mod identic; cum toate valorile dintr-o clasă au același
Apache Ant​(Java),​ Apache Maven​, ​Gradle​(Java, C/C++, Android) - ex.: gradle comportament,
init; gradle init --type java-library; gradle tasks; gradle clean build; apply presupunem că toate valorile dintr-o clasă sunt procesate în același fel, fiind
plugin: ‘java’; apply plugin: ‘maven’; gradle clean install. deci suficient să se aleagă câte o valoare din fiecare clasă; domeniul de ieșire
[conditie = valoare]addStudent()​ decide dacă mesajul addStudent() este
este tratat asemănător; se alege o valoare din fiecare clasă.
transmis sau nu; ​opt[conditie] ​se noteaza in stanga sus intr-un chenar care
Inspectarea codului Avantaje​: reduce drastic numărul de date de test doar pe baza specificației;
cuprinde mai multe instructiuni din diagrama si reprezinta o serie de
Descrierea procesului​: ​●Citirea codului cu scopul de a detecta erori; ●In potrivită pentru aplicații de tipul procesării datelor, în care intrarile și ieșirile
instructiuni optionale; ​alt[conditie]...[else]... ​; ​loop ​urmat de un numar care
varianta extinsă, echipa de inspecție are patru membri: Moderatorul- un sunt ușor de identificat și iau valori distincte. ​Dezavantaje: ​modul de definire
spune de cate ori se executa loop-ul sau de o garda(conditie).
programator competent; Programatorul- cel care a scris codul inspectat; a claselor nu este evident; mai puțin aplicabile pentru situații când intrările și
Diagrame de stari
Designer -ul, dacă este o persoană diferită de programator; Un specialist în ieșirile sunt simple, dar procesarea este complexă
Def.​:​ descriu dependenţa dintre starea unui obiect şi mesajele pe care le
testare; ●activități: programatorul citeşte, instrucţiune cu instrucţiune, Cutie alba​: ​vizează acoperirea diferitelor structuri ale
primeşte sau alte evenimente recepţionate.
logica Programului; datele de test sunt generate pe baza implementării
Elemente​:​stări​, reprezentate prin dreptunghiuri cu colţuri rotunjite;​ tranziţii
Programului; ceilalţi participanţi pun întrebări; programatorul însuşi poate (programului), fără a lua în considerare specificația(cerințele) programului;
între stări, reprezentate prin săgeţi; ​evenimente​ declanşează tranziţiile
descoperi cele mai multe erori; se caută în program cele mai întâlnite tipuri de structura programului poate fi reprezentata sub forma unui graf orientat.
dintre stări; ​semnul de inceput​ reprezentat printr-un disc negru cu sageata
erori(folosind de exemplu o listă de erori comune); inspectorii detectează Acoperiri: ​acoperire la nivel de instrucțiune​(fiecare instrucțiune este parcursă
spre prima stare; ​semn de sfarsit​, reprezentat printr-un disc incercuit. ​In plus,
erorile, programatorul trebuie să le corecteze; programatorul primeşte reacţii măcar o dată),​ acoperire la nivel de ramură​(fiecare ramură a grafului este
pe lângă evenimentele care declanșează o tranziție(schimbarea stărilor),
privind stilul de programare, tehnicile şi algoritmii folosiţi parcursă măcar o dată; generează date de test care testează cazurile când
există și [gărzi], care pot condiționa execuția tranzițiilor (reprezentate pe
Debugging(Depanare) fiecare decizie este adevărată sau falsă) sau ​acoperire la nivel de cale​(fiecare
tranzitii: ​eveniment[garda]/actiune​).
Def.​: ​Căutarea sursei defectului/problemei detectate intr-un program folosind cale din graf este parcursă măcar o dată).
de obicei un tool(“debugger”); bug = defecte de design/fabricatie/legale Testare unitara​: ​testarea unei proceduri/metode; un test conține: -inițializarea
Modalitati​: ​depanarea de tip “println”​ (urmărirea diverselor aspecte tipărind (clasei sau a argumentelor necesare), -apelul metodei testate, -decizia
în output diverse valori ale variabilelor)- simplu de aplicat; nu necesită alte (oracolul) dacă testul a reușit sau a eșuat(ex. Tool: JUnit). ​Testarea valorilor
tool-uri asteptate: ​@Test​ public void test_insert_1() {
dezavantaje: codul se complică, outputul se complică, int[] x = {2, 7};int n = 6;int[] res = Ex1.insert(x, n);int[] expected = {2, 6,
performanța uneori scade, nevoie de recompilări; 7};​assertTrue​(Arrays.equals(expected, res));}. ​Testarea exceptiilor:
Functionalitati(debugger)​:​ ​controlul execuției​: poate opri execuția la anumite @Test​(​expected​ = IndexOutOfBoundsException.class) public void
locații numite breakpoints; ​interpretorul​: poate executa instrucțiunile una outOfBounds() { new ArrayList<Object>().get (1);} ​@Before​ public void
câte una; ​inspecția stării programului​: poate observa valoarea variabilelor, setUp(){.....}. ​Etape: ​(In test-driven development) se scrie mai intai testul, apoi
obiectelor sau a stivei de execuție; ​schimbarea stării​: poate schimba starea implementarea; apoi se implementează metoda, dar prima oară ne asigurăm
programului în timpul execuției. ca testul eșuează(pentru a fi siguri ca nu cumva testul va avea succces în orice
Atributele unui debugger​:​ ​Permit executarea codului linie cu linie; Într-o linie condiții); după ce testul eșuează, implementăm metoda.
de cod pot permite executarea operațiilor pas cu pas; Permit inspectarea și Performanta O stare contine (Nume|constrangeri|activitati)
modificarea valorilor variabilelor; Permit inspectarea stivei de apeluri; Permit Def.​:​ Capacitatea unui sistem software de a executa sarcinile pentru care a
inspectarea diferitelor threaduri; Permit suspendarea condiționată sau fost proiectat, în timpul și condițiile de lucru prestabilite.
necondiținată a execuției unei aplicații într-un anumit punct; Criterii de masurare a performantei​: ​Capacitate de procesare a sarcinilor
Breakpoint​: ​o locație în program care, atunci când este atinsă, oprește (workload); ​Viteza de procesare a sarcinilor​ (throughput); ​Resurse
execuția consumate​ (memorie, CPU, network, disk I/O, ...etc.); Overhead ​elemente de
Stadiul de viață al defectelor​: ​etapele pe care le parcurge defectul din securitate​. ​Pt. app. Web:​ Timp de raspuns mediu (ms); Timp de raspuns in
momentul in care a fost gasit pana cand a fost inchis (rejected/fixed). incarcare maxima (ms); Rata erorilor (procentul de erori din totalul de cereri);
Utilizatori concurenti; Cereri concurente (req / sec); Capacitate (throughput) -
O stare S poate conține ​substări​ care detaliază comportamentul sistemului în
cantitatea de sarcini procesate in unitatea de timp; Numarul de utilizatori
starea S(​daca nu e marcat cu​ H​, când o tranziţie intră într-o stare compusă,
activi. ​App. Desktop: ​Cerinte hardware; Timpi de executie; FPS (Frames per
submaşina corespunzătoare acesteia va începe să funcţioneze din starea sa
second); Gaming: Retention - numarul de utilizatori ce se intorc la aplicatie
iniţială). ​Activitati concurente: ​Grafic: se împarte dreptunghiul corespunzător
dupa primul contact; Conversion - numarul de utilizatori ce investesc bani
stării compuse printr-o linie punctată, în regiunile obţinute fiind reprezentate
dupa versiunea demo; CPI (cost per install). ​Instrumente de testare a
submaşinile care vor acţiona concurent.
performantei: ​stress test: ​Apache JMeter, LoadRunner; ​profilere:​ NetBeans
Sabloane de proiectare(Design patterns)
Profiler, Chrome Inspector, JProfiler.
Def.​: ​soluţii generale reutilizabile la probleme care apar frecvent în proiectare
Testare Continuous delivery​: ​Tehnica software de lucru in cicluri scurte, cu scopul de a
(orientată pe obiecte)
Metode​: ​testarea de integrare​: -testează interacţiunea mai multor unităţi avea in orice moment o aplicatie stabila, pregatita pentru deployment in
Cazuri de folosire​: ​ca mod de a învăța practici bune; aplicarea consistentă a
-testarea este determinată de arhitectură; ​testarea sistemului​:- testarea productie. ​Caracteristici: ​Se dezvolta aplicatia, se testeaza si se publica in
unor principii generale de proiectare; ca vocabular de calitate de nivel înalt
sistemului testează aplicaţia ca întreg şi este determinată de scenariile de productie in ritm crescut; Capacitate de a lucra pe mai multe fire de
(pentru comunicare). ​Folosite cu grija pentru ca:​ ​sunt folositoare doar dacă
analiză -spre deosebire de testarea internă şi a componentelor, care se face executie(functionalitati noi sau bug fixes); Optiunea de a publica in productie
există într-adevăr problema pe care ele o rezolvă; pot crește complexitatea și
prin program, testarea aplicaţiei se face de obicei cu scripturi care rulează numai anumite modificari, intr-un timp scurt.
scădea performanța
sistemul cu o serie de parametri şi colectează rezultatele; ​testarea de Deployment
Clase​:​creationale​(abstract factory, builder,singleton, factory method,
acceptanta​:- testele de acceptanță determină dacă sunt îndeplinite cerințele Def.​: ​instalarea, configurarea și controlul unei aplicații software pe o mașină
prototype), ​structurale​(adapter, facade, composite, decorator),
unei specificații sau ale contractului cu clientul –sunt diferite tipuri ​[​teste țintă, locală sau la distanță, într-o manieră similară cu un instrument de build, comportamentale​ (command, visitor, interpreter, iterator, observer,
rulate de dezvoltator înainte de a livra produsul software, teste rulate de sau bazându-se pe un asemenea instrument mediator).
utilizator (user acceptance testing), teste de operaționalitate (operational Necesitate​:​Automatizează instalarea și configurarea aplicației; Permite Categorii de sabloane​: ​șabloane arhitecturale​: la nivelul arhitecturii (ex.:
testing), testare alfa și beta: alfa la dezvoltator, beta la client cu un grup ales accesul la distanță pe mediul de lucru; Asigură continuarea MVC, publish-subscribe), ​șabloane de proiectare​: la nivelul
de utilizatori​]​; ​testarea de regresie​: -un test valid generează un set de funcționalității(minimal downtime); Permite revenirea la versiuni anterioare a claselor/modulelor; idiomuri: la nivelul limbajului.
rezultate verificate, numit “standardul de aur” -testele de regresie sunt aplicației (capistrano); Minimizarea impactului asupra utilizatorilor, menținând Singleton​: ​aplicabilitate​: când doar un obiect al unei clase e necesar; când
utilizate la re-testare, după realizarea unor modificări, pentru a asigura faptul serverele în stare de funcționare în timpul deploymentului (capistrano). instanța este accesibilă global; este folosit în alte șabloane (factories și
că modificările nu au introdus noi defecte în codul care funcţiona bine Exemple: ​capistrano, chef, Docker. ​Tools:​ Capistrano(este un instrument builders). ​consecințe​:
anterior -acest mecanism previne regresia sistemului într-o stare de eroare universal de execuție a scripturilor pe un server la distanță scris în limbajul accesul controlat la instanță; spațiu de adresare structurat (comparativ cu o
anterioară; ​testarea performantei​:se ocupa de evaluarea proprietăţilor Ruby, utilizând protocolul SSH ); Chef; Octopus Deploy; Docker. variabilă globală)
non-funcționale ale sistemului, cum ar fi: siguranta, securitatea, Live monitoring system​:​ Sisteme software ce analizează condițiile de execuție Șablonul creațional: Abstract Factor​: ​oferă o interfață pentru crearea de
utilizabilitatea, load & stress testing; ​testarea interfetei cu utilizatorul​: -se ale aplicațiilor, atât în medii de dezvoltare sau testare, cât mai ales în familii de obiecte înrudite sau dependente fără a specifica clasele lor
folosesc scripturi pentru testare –presupune memorarea informatiilor despre producție. ​Tools:​ ​LiveAction, New Relic, SQL Live Monitor.​ Caracteristici: concrete; ​exemplu clasic:​ un set de instrumente GUI (Widgets) care oferă
buclele de evenimente, care contin cozi de mesaje de la mouse, tastatura, Instrumentează aplicațiile țintă, prin programe / plug-ins adiționale cu look-and-feel multiplu, să zicem pentru două pachete diferite: Motif și
touchscreen etc. avand asociate coordonatele ecranului si eleborarea unei overhead minim; Colectează date de intrare, ieșire sau performață ale Presentation Manager (PM).
modalitati prin care mesajele sa fie trimise din nou aplicatiei, la un moment aplicațiilor, punându-le la dispoziția utilizatorilor într-o interfață prietenoasă, Observații: ​independent de modul în care produsele sunt create, compuse și
ulterior; ​testarea utilizabilitatii​: - testeaza cat de usor este folosit sistemul de regulă configurabilă. reprezentate; produsele înrudite trebuie să fie utilizate împreună; pune la
–exemple de metode folosite: testare “pe hol”, testare de la distant, recenzii Diagrame de secventa: dispoziție doar interfața, nu și implementarea; ​consecințe: ​numele de clase de
ale unor experti(externi), A/B testing(in special pentru web design, pp. Def.​: ​diagramă UML care pune în evidență transmiterea de mesaje(sau apeluri produse nu apar în cod; familiile de produse ușor interschimbabile cere
modificarea unui singur elem. din UI si verif. comportamentului unui grup de de metode) de-a lungul timpului. consistență între produse
utilizatori). Elemente de baza​: ​Obiectele şi actorii sunt reprezentaţi la capătul de sus al Șablonul creațional: Builder​:​ separă construcția unui obiect complex de
Load testing & Stress testing​: ​testarea la incarcare​ asigură faptul că sistemul unor linii punctate, care reprezintă linia de viaţă a obiectelor; Scurgerea reprezentarea sa, astfel încât același proces de construcție poate crea
poate gestiona un volum aşteptat de date, similar cu acela din timpului este reprezentată în cadrul diagramei de sus în jos; Un mesaj se reprezentări diferite. ​exemplu clasic:​ citește RTF (Rich Text Format) și traduce
locaţia-destinaţie (de exemplu la client) si verifică eficienţa sistemului şi reprezintă printr-o săgeată de la linia de viaţă a obiectului care trimite în diferite formate interschimbabile. ​Observații: ​folosit când algoritmul de
modul în care scalează acesta pentru un mediu real de execuţie; ​testarea la mesajul la linia de viaţă a celui care-l primeşte; Timpul cât un obiect este creare a unui obiect complex; este independent de părţile care compun
stres​ -solicită sistemul dincolo de încărcarea maximă proiectată ; activat este reprezentat printr-un dreptunghi subţire care acoperă linia sa de obiectul şi de modul lor de asamblare și când procesul de construcţie trebuie
-supraîncărcarea testează modul în care „cade” sistemul(sistemele nu trebuie viaţă; Opţional, pot fi reprezentate răspunsurile la mesaje printr-o linie să permită reprezentări diferite pentru obiectul construit; ​comparație cu
sa esueze catastrofal, testarea la stres verifica pierderile inacceptabile de date punctată. ​Simboluri: ​----|> mesaj sincron​ (sau apel de metodă). Obiectul Abstract Factory: ​Builder creează un produs complex pas cu pas. Abstract
sau functionalitati) pierde controlul până primește răspuns; ​<- - - mesaj de răspun​s: răspunsuri la Factory creează familii de produse, de fiecare dată produsul fiind complet.
Cutie neagra​: ​se iau in considerare numai intrarile (intr-un modul, mesajele sincrone; reprezentarea lor este opţională; ​---- > mesaj asincron​: nu Șablonul structural: Facade​: ​oferă o interfață unificată pentru un set de
componenta sau sistem) si iesirile dorite, conform specificatiilor: structura așteaptă răspuns, cel care trimite mesajul rămânând activ (poate trimite alte interfețe într-un subsistem; ​exemplu:​ un subsistem de tip compilator care
interna este ignorata, se bazeaza pe functionalitatea descrisa in specificatii, mesaje).​ Mai mult​, Un obiect este creat prin plasarea acestuia în josul paginii, conține scanner, parser, generator de cod etc. Șablonul Facade combină
poate fi folosita la orice nivel de testare(unitara,integrare,sistem); tipul de poziţia sa corespunzând cu momentul în care a fost creat obiectul; interfețele și oferă o nouă operație de tip compile(). ​Observații: o ​ interfață
specificatie ideal este alcatuit din pre-conditii si post-conditii; datele de test Distrugerea unui obiect este reprezentată printr-un X. simplă la un subsistem complex când sunt multe dependențe între clienți și
sunt generate pe baza specificației (cerințelor) subsistem, este redusă cuplarea.
Șablonul comportamental: Observer​: ​presupunem o dependență de 1:n între
obiecte; cand se schimbă starea unui obiect, toate obiectele dependente sunt
înștiințate
Șablonul comportamental: Visitor​: ​reprezintă operații pe o structură de
obiect; adaugă noi operații, fără a modifica însă clasele; de exemplu:
procesarea arborelui sintactic într-un compilator (type checking, generare de
cod, pretty print)
-----------------------------------------------------------------------------------------------------

Anti-șabloane:​input kludge; magic pushbutton;race hazard; yo-yo problem

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