Asigurarea CalitAsigurarea Calităţii (ii (QA)...

90
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Asigurarea Calităţii ( Asigurarea Calităţii (QA QA) Asigurarea Calităţii ( Asigurarea Calităţii (QA QA) Principii de implementare Principii de implementare Ciprian Dobre Ciprian Dobre [email protected] Instrumente pentru dezvoltarea programelor – Curs 7 1

Transcript of Asigurarea CalitAsigurarea Calităţii (ii (QA)...

Page 1: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Asigurarea Calităţii (Asigurarea Calităţii (QAQA))Asigurarea Calităţii (Asigurarea Calităţii (QAQA))Principii de implementarePrincipii de implementarep pp p

Ciprian DobreCiprian [email protected]

Instrumente pentru dezvoltarea programelor – Curs 7 1

Page 2: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SumarSumarSu aSu a

• Erori Java comune• Câteva elemente de ghidaj în scrierea de

cod Javacod Java• Refactorizare• Modularitate

Ascunderea Informaţiilor• Ascunderea Informaţiilor

2Instrumente pentru dezvoltarea programelor – Curs 7

Page 3: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Erori Erori Java Java ComuneComune

To err is human,but to really foul things up

you need a computeryou need a computer.(Paul Ehrlich)

3Instrumente pentru dezvoltarea programelor – Curs 7

Page 4: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Accesarea Membrilor NonAccesarea Membrilor Non--Statici din Statici din M t d St tiM t d St tiMetode StaticeMetode Statice

• Membrii non-statici aparţin unor obiecteM b ii t ti i ţi i l• Membrii statici aparţin unei clase

• Dacă nu aveţi un obiect nu puteţi nici accesa un membru non-staticnon-static

• this se referă la obiectul asupra căruia o metodă non-statică este apelată public class Demo {ppublic class Demo {

public int x = 1;bli id () { }

public class Demo { public int x = 1;public void m() { }

bli t ti id ipublic void m() { }public static void main(String[] args) {

public static void main(String[] args) {

Demo d = new Demo();int y = x;m();Object o = this;

int y = d.x;d.m(); Object o = d;

4

} } } }

Instrumente pentru dezvoltarea programelor – Curs 7

Page 5: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Nume de metode greşite la Nume de metode greşite la suprascrieresuprascriere

• Java suportă polimorfismul prin mecanismul de overridingO f– O superclasă A defineşte o metodă m

– O subclasă B a lui A poate defini propria metodă m, suprascriind definiţia metodei din ATipul obiectului din care este apelată metoda m decide ce versiune a lui m– Tipul obiectului din care este apelată metoda m decide ce versiune a lui meste în final folosită (cea definită în A sau cea definită în B)

• Problemă: atunci când definiţia metodei din subclasă foloseşte numele metodei în mod greşit faţă de metoda din superclasă suprascrierea nu g ş ţ p pmai poate funcţiona

• Simptom: o metodă nu ajunge să fie apelată; nu se generează nici un warning la nivel de compilator

• Problema poate fi depistată prin trasarea fluxului de control al programului

public class Demo extends WindowAdapter {public class Demo extends WindowAdapter { // This should be “windowClosed” !!! public void windowClose(WindowEvent e) {

S t it(0)

Programulnu se opreşte

după închiderea

5

System.exit(0); } }

pferestrei!!!

Instrumente pentru dezvoltarea programelor – Curs 7

Page 6: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Suprascrieri cu semantici diferiteSuprascrieri cu semantici diferiteSup asc e cu se a t c d e teSup asc e cu se a t c d e te• Aveţi grijă ca orice metodă suprascrisă să păstreze

semantica metodei originale• Altfel: posibil comportament ciudat în părţi ale programului

ce par a fi implementate corect• Exemplu: folosirea in NZ a “Goods and Services Tax”• Exemplu: folosirea in NZ a Goods and Services Tax

conform cazului in Germania; semantici incompatibile!!!public class Product {public class Product {

public double grossPrice;public double netPrice() {

return 1 125*grossPrice; // in NZ: 12 5% GSTreturn 1.125*grossPrice; // in NZ: 12.5% GST} }

public class Food extends Product {public class Food extends Product {public double netPrice() {

// in Germania: GST e 7% pentru alimentereturn 1 07*grossPrice;

6

return 1.07*grossPrice;} }

Instrumente pentru dezvoltarea programelor – Curs 7

Page 7: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Gestiunea ExcepţiilorGestiunea ExcepţiilorGest u ea cepţ oGest u ea cepţ o• În Java: multe excepţii trebuie fie prinse, fie declarate• Adesea excepţiile sunt prinse fără o gestionare adecvată• Problemă: atunci când este aruncată o excepţie acest lucru nu mai

devine vizibil• Problema ce a cauzat excepţia poate cauza diverse alte probleme mai

târziutârziupublic double reciprocal(double x) {

double y = 0;try {

y = 1/x; // ArithmeticException for x==0} catch (Exception e) {} // no handlingreturn y; // returns 0 for x==0

}

…} catch (Exception e) {

System.out.println(e);}

7

}…

Instrumente pentru dezvoltarea programelor – Curs 7

Page 8: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Câteva eroriCâteva erori & & excepţii importanteexcepţii importanteCâte a e oCâte a e o && e cepţ po ta tee cepţ po ta te1. Nu faceţi confuzie între = şi ==2 Nu faceţi confuzie între == şi equals2. Nu faceţi confuzie între == şi equals3. Indicii de array încep cu 0 ( off-by-one error)4. Tipurile primitive sunt diferite de tipurile referite4. Tipurile primitive sunt diferite de tipurile referite

(call-by-value vs. call-by-reference)5. Numele unui fişier.java trebuie să fie acelaşi cu

numele primei clase/interfeţe din elnumele primei clase/interfeţe din el6. Java este case sensitive7. Aţi recompilat programul după ce a suferit modificări?ţ p p g p

NullPointerExceptionObject o = null;

ArithmeticExceptionint x = 4/0;

ClassCastExceptionInteger i = (Integer)j ;

o.getClass();/ ;g ( g )

"hello";

ArrayStoreException IndexOutOfBoundsException

8

Object x[] = new String[3]; x[0] = new Integer(0);

Object x[] = new String[3]; x[3] = "hello";

Instrumente pentru dezvoltarea programelor – Curs 7

Page 9: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Java Coding GuidelinesJava Coding GuidelinesJava Coding GuidelinesJava Coding Guidelines

9

9

Instrumente pentru dezvoltarea programelor – Curs 7

Page 10: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Convenţii de numeConvenţii de nume1. Numele claselor şi interfeţelor întotdeauna încep cu litere

marie g Demo Panel GridbagLayoute.g. Demo, Panel, GridbagLayout

2. Numele membrilor, parametrilor metodelor şi a variabilelor locale încep cu litere mici, e.g. getMax, startS f C C “3. Se foloseşte CamelCase, i.e. un cuvânt nou este “separat” printr-o literă mare, e.g. getMainPanel

4. Numele de pachete sunt scrise cu litere mici, e.g.4. Numele de pachete sunt scrise cu litere mici, e.g. java.awt.color

5. Constantele static final ar trebui scrise cu litere mari, cu cuvinte separate prin underscore (" ") e gcu cuvinte separate prin underscore ( _ ), e.g. MIN_WIDTH

6. Numele de parametrii de tip pentru elemente generice ar t b i ă ţi ă i ă lit ătrebui să conţină o singură literă mare, e.g. List<T>

7. Câteva alte convenţii:• Prefixe de nume pentru interfeţe e g ICollection

10

Prefixe de nume pentru interfeţe, e.g. ICollection• Prefixe de nume pentru variabile private, e.g. _size

Instrumente pentru dezvoltarea programelor – Curs 7

Page 11: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Altele...Altele...te ete e• Gestiunea condiţiilor de eroare (e.g. throw and handle

Exception)p )• Comentariile aferente codului, în mod particular atunci când

nu este clar ce funcţie este implementată de o secvenţă de codcod– Comentariile se pun la începutul unei clase/metodă/variabilă

La ce e utilă clasa/metoda/variabila?De asemenea se comentează anumite instrucţiuni “cheie”– De asemenea se comentează anumite instrucţiuni cheie

• Nu se folosesc căi absolute de fişiere în codul sursă pentru că computere diferite au foldere diferite( “ \ f ld \ fil t t”)(e.g. “c:\myfolder\myfile.txt”) Se folosesc în schimb căi relative la folderul aplicaţiei(e.g. “subfolder\myfile.txt”)

• Indentaţia urmăreşte structura programului• Adăugarea unei linii goale între blocuri logice de instrucţiuni

din cadrul aceleaşi metode

11

din cadrul aceleaşi metode• Definirea unei singure interfeţe/clase într-un fişier

Instrumente pentru dezvoltarea programelor – Curs 7

Page 12: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

RefactorizareRefactorizare

There's always roomfor improvement, you knowfor mprovement, you know

- it's the biggest room in the house(L H Leber)

12

(L. H. Leber)

Instrumente pentru dezvoltarea programelor – Curs 7

Page 13: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

RefactorizareaRefactorizareae acto a eae acto a ea• “Arta de a îmbunătăţi designul codului existent într-un mod corect”• Rescrierea codului sursă pentru a îmbunătăţi designul sau modul deRescrierea codului sursă pentru a îmbunătăţi designul sau modul de

înţelegere ("cleaning it up“ - XP)• Refactorizarea poate schimba modul CUM funcţionează codul dar NU

CE face acesta (conservarea semanticii)( )– Nu se referă la repararea de bug-uri sau adăugarea de noi funcţionalităţi– Modificările pot fi minore sau foarte mari– Modificările pot fi făcute asupra mai multor fişiere sursă simultan

• Încurajează programarea exploratorie, rescrierea codului, calitatea mărită a codului livrat

• Cazurile de test ajută la verificarea că modificările nu duc la fmodificarea semanticii

• Lucrările despre refactorizare descriu indicatori pentru probleme comune de proiectare (“smells”) şi posibile soluţii (“refactorings”)

F l M ti (1999) R f t i I i th D i f E i ti– Fowler, Martin (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley.

– Wake, William C. (2003). Refactoring Workbook. Addison-Wesley.

13Instrumente pentru dezvoltarea programelor – Curs 7

Page 14: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SimplitateSimplitateS p tateS p tate• Simplitatea reprezintă un principiu foarte important pentru

refactoizare: putem rescrie codul a.î. să devină mai simplu p p(de înţeles)?

• Evitarea complexităţii inutile, e.g.Înlăturarea codului neutilizat/nenecesar– Înlăturarea codului neutilizat/nenecesar

– Folosirea de nume clare, sugestive şi simple– În XP: nu se foloseşte mai multă codare decât absolut necesar

“H k il d ” î d l d â d• “Hack-urile deştepte” nu au întotdeauna valoare, decât de a confuza şi mai mult oamenii

• Codarea pentru oameni: claritate, accesibilitate, înţelegereCodarea pentru oameni: claritate, accesibilitate, înţelegere• Capacitatea de mentenanţă mai importantă decât

performanţa(l l i M t il i l t ţ i ft )(legea lui Moore vs. costurile mari ale mentenanţei software)

• KISS ("Keep it Short and Simple"), Occam's razor, Einstein: "everything should be made as simple as possible, but no

14

y g p p ,simpler"

Instrumente pentru dezvoltarea programelor – Curs 7

Page 15: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SmellSmell: Long Method: Long MethodS eS e o g et odo g et od• Simptom: multe linii de cod (LOC) într-o singură metodă

(>> 10 LOC poate fi considerată o euristică)( p )• Cauza: un programator tot adaugă cod într-o singură metodă• Soluţia: găsirea unor grupuri coerente de instrucţiuni şi extragerea

unor metode din acestea• Rezultat: înţelegere mai bună, structură mai clară, procent ridicat de

abstractizare şi reutilizare• Scăderea în performanţă este cel mai adesea neglijabilăp ţ g j

void m() {double[] data = {4.2, 6.4, 1.5, 9, 10.1};

double avg(double[] d)

double sum(double[] d)double avg = 0;for(double x : data) avg += x;avg /= data.length;

double var(double[] d)

double var = 0;for(double x : data) var += (x-avg) * (x-avg);var /= data.length;

15

}

Instrumente pentru dezvoltarea programelor – Curs 7

Page 16: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SmellSmell: Large Class: Large ClassS eS e a ge C assa ge C ass• Simptome: un număr prea mare de instanţe de variabile,

metode sau LOCmetode sau LOC• Cauze:

– Clasa a devenit “supraîncărcată” prin adăugarea incrementală a tot i lt f ţi lităţi fă ă i t bi t bilitmai multor funcţionalităţi fără un proiect bine stabilit

– Conceptul de bază a fost prea puţin înţeles şi/sau reprezintă un conglomerat al mai multor concepte

P bl ă l i d f l ă i î ă• Problemă: clasa pierde forma clară; nu mai încorporează un singur concept cu o funcţionalitate unică bine-definită

• Soluţii:ţ– Extragerea unor clase încorporând propriile concepte– Extragerea unor subclase ce implementează funcţionalităţi specifice– Extragerea unor interfeţe ce definesc precis funcţionalităţileExtragerea unor interfeţe ce definesc precis funcţionalităţile

implementate• Rezultat: simplitate & claritate a părţilor componente, şanse

mai mari de abstractizare & refolosire

16

mai mari de abstractizare & refolosire• Ex: GUI combinat cu modelul de date şi/sau logica aplicaţiei

Instrumente pentru dezvoltarea programelor – Curs 7

Page 17: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SmellSmell: Magic Number: Magic NumberS eS e ag c u beag c u be• Simptome: o valoare constantă (“literal”) e definită de mai

multe ori, chiar în câteva locaţii diferite, ţ• Cauze: valoarea este folosită ad hoc doar atunci când este

nevoie de ea; nu se anticipează nici o folosire ulterioarăProbleme:• Probleme:– Multe dependenţe introduse prin duplicare în diverse locuri a aceloraşi

constante sau a unor valori derivate ale acestoraG d ţi t d l– Greu de menţinut codul

– Uşor de introdus buguri prin modificările incomplete• Soluţia: păstrarea într-un singur loc și înlocuirea literalilor cu ţ p g ș

constante simbolice (static final) sau enumerări: enum Gender { MALE, FEMALE }

• Exemple:Exemple:– Constante din matematică/fizică (pi, e, factori de conversie, ...)– Numere de identificare (elemente speciale de date, erori, ...)

Setări ale configuraţiei (e g nume de fişiere comportamentul

17

– Setări ale configuraţiei (e.g. nume de fişiere, comportamentul programului)

Instrumente pentru dezvoltarea programelor – Curs 7

Page 18: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cod duplicatCod duplicatCod dup catCod dup cat• Simptome:

– Două fragmente de cod arată (aproape) identicD ă f t d d i l t ă ( ) l i l– Două fragmente de cod implementează (aproape) acelaşi lucru

• Cauze:– Mai mulţi programatori lucrând independent

D li t ă fi hi tât d d b t f t– Duplicarea poate să nu fie chiar atât de uşor de observat sau nu a fost anticipată

– Programatorii adesea copiază şi adaptează cod în funcţie de necesităţile lor curente

• Soluţia: extragerea de metode– Dacă codul duplicat implementează acelaşi lucru: alegerea şi substituirea

algoritmului superior (sau chiar merge între cele două)– Dacă duplicarea apare în clase pereche: extragerea de metode şi

câmpuri şi plasarea lor într-o superclasă; formarea unor metode şablon• Exemple:

Mi i t k i ili ( t l ă i l t l ) t– Mici task-uri auxiliare (e.g. sortarea numerelor, găsirea elementelor) sunt rezvoltate ad hoc

– Cerinţe înrudite duc la implementearea de UI sau logică a programului similare

18

similare

Instrumente pentru dezvoltarea programelor – Curs 7

Page 19: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Metode şablonMetode şablonşş• Algoritmul este adesea acelaşi pentru mai multe tipuri de date înrudite

(siblings), cu diferenţe doar de detaliiIdea descrierea paşilor com ni generali ai algoritm l i într o metodă a• Idea: descrierea paşilor comuni, generali ai algoritmului într-o metodă a superclasei (metodă şablon); detaliile sunt plasate în metode ajutătoare a subclaselor

abstract class Game {int numPlayers;

class Chess extends Gamey ;

abstract void makeTurn(int player);abstract int getWinner();final void play() {

e te ds Ga e{ …Chess() { numPlayers = 2;p y() {

while(getWinner()==0)for(int p=1;p<=numPlayers;p++)makeTurn(p);

numPlayers 2;}void makeTurn(int p) { }a e u (p);

System.out.println("Player "+getWinner()+" wins");

}

(int p) { … }

int getWinner(){ }

19

}}

{ … }}

Instrumente pentru dezvoltarea programelor – Curs 7

Page 20: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

“Ask What Kind” Anti“Ask What Kind” Anti--PatternPattern((M t iM t i Si l tSi l tăă))((Moştenirea Moştenirea SimulatSimulatăă))

• Simptom: metoda foloseşte switch sau mai multe if-uri(posibil cu instanceof) pentru a distinge între diverse(posibil cu instanceof) pentru a distinge între diverse tipuri de obiecte

• Cauze: concepte înrudite dar diferite nu sunt reprezentate în clase diferite lipsa polimorfism l i la ni el de metodăclase diferite, lipsa polimorfismului la nivel de metodă

• Soluţia:– Reprezentarea diferitelor tipuri în diverse subclasep p– Implementarea comportamentului specific în subclase prin

suprascrierea metodelor– Metoda specifică subclasei este

class C {void m() { generic }p

invocată automat (“don’t ask what kind”)class C {String type;

void m() { generic }}class A extends C {

1String type;void m() {if(type.equals("A")) m1();if(type equals("B")) m2();

void m() { m1 }}class B extends C {

20

if(type.equals("B")) m2();} } void m() { m2 }

}Instrumente pentru dezvoltarea programelor – Curs 7

Page 21: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Refactorizarea în EclipseRefactorizarea în Eclipsee acto a ea c psee acto a ea c pse• Selectare cod sursă,

right-click şi folosire submeniu Refactorg ş• Refactorizarea cu preview al modificărior

(modificări individuale pot fi acceptate)

• Cu selectarea numelui unei metode: Rename, Inline, Pull Up, Push Down, I t d I di ti Ch M th d Si tIntroduce Indirection, Change Method Signature, …

• Cu selectarea numelui unui câmp: Rename, Pull Up, Push Down, Encapsulate Field, , p, , p ,Generalize Declared Type, …

• Cu selectarea numelui unei clase:Rename Move Extract Interface Extract SuperclassRename, Move, Extract Interface, Extract Superclass,Use Supertype Where Possible, …

• Cu selectarea unor instrucţiuni: Extract Method

21

• Cu selectarea unor expresii: Extract Constant

Instrumente pentru dezvoltarea programelor – Curs 7

Page 22: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SumarSumarSu aSu a• Există erori Java comune, e.g.

A b il t ti i di t d t ti– Accesarea membrilor non-statici din metode statice– Probleme de suprascriere

G i i fi i ă il– Gestiunea insuficientă a erorilor• Convenţiile de nume şi alte reguli trebuie respectate• Refactorizarea presupune îmbunătăţirea designului

codului existent• “Refactoring” - soluţii la probleme comune de

design adesea indicate prin “smells”, e.g.– Metode lungi sau clase mari– Cod duplicat

22

– Antişabloane precum "magic numbers" şi "ask what kind"Instrumente pentru dezvoltarea programelor – Curs 7

Page 23: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

QuizQuizQuizQuiz

1. De ce este importantă gestiunea e ce es e po a ă ges u eaexcepţiilor atunci când ele sunt aruncate?

2. Ce rol are refactorizarea în organizarea funcţionalităţii unui program?ţ ţ p g

3. Ce reprezintă o metodă şablon?

23Instrumente pentru dezvoltarea programelor – Curs 7

Page 24: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ModularitModularitateateModularitModularitateate

LEGO is not a toy.It’s a way of life.y

(Mike Smith)

24

24

Instrumente pentru dezvoltarea programelor – Curs 7

Page 25: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ModularitateModularitateodu a tateodu a tate• Sistemele complexe pot fi adesea descompuse în părţi

mai mici numite modulemai mici numite module• Modul: componentă de sine stătătoare a unui sistem

– Are o interfaţă bine-definită cu alte module– Separă interfaţa de implementare– Adesea corespunde unui set de tipuri de date sau cod, similar

pachetelor Java• Sistemul modular (i.e. sistem compus din module) este

mai uşor de înţeles, dezvoltat şi menţinut– Atunci când lucrăm cu un modul detaliile celorlalte module pot fi p

ignorate (separaţia preocupărilor)– Modulele pot fi dezvoltate independent– O mai bună izolare între module poate preveni ca un defect dintr-p p

un modul să cauzeze defectarea altor module– Modulele pot fi schimbate cu alte module– Modulele pot fi refolosite în alte sisteme

25

p

Instrumente pentru dezvoltarea programelor – Curs 7

Page 26: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ModularitateModularitateodu a tateodu a tate

• Component frameworks– Suportă dezvoltarea şi conectarea unor module– Format pentru specificarea interfeţelor de module– Funcţionalitate pentru încărcarea, conectarea, şi

rularea modulelor• Module interconnection languages

– Permit specificarea interconectării modulelor într-un psistem la un nivel înalt

– Programming-in-the-small: codarea unui modul– Programming-in-the-large: asamblarea unui sistem din

module

26Instrumente pentru dezvoltarea programelor – Curs 7

Page 27: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ModularitateModularitateodu a tateodu a tate

Exemplu: multimedia stream processing Exemplu: procesarea imaginii cu Blender

A dio

Denoiser Mixer

MPEG4

imaginii cu BlenderAudioSource Ch1AudioSourceVideo NTSC to PAL

MPEG4Encoder

Audio In

Ch2Normalizer

27Source Converter Video In

27Instrumente pentru dezvoltarea programelor – Curs 7

Page 28: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Separarea preocupărilorSepararea preocupărilorSepa a ea p eocupă oSepa a ea p eocupă o• Cum se poate gestiona eficient complexitatea unui sistem?• Separation of concerns (SoC)• Separation of concerns (SoC)

– Separarea problemelor (spargerea problemelor mari în piese mici) şi concentrarea pe rezolvarea uneia la un moment datS l i î f ţi lităţi di ti t ât– Spargerea programului în funcţionalităţi distincte ce se suprapun cât mai puţin posibil

– Concern: o bucată a unui program, adesea o funcţionalitate sau un comportament particular al programuluicomportament particular al programului

• Diverse moduri de implementare– Abordarea tradiţională bazată pe modularitate

Ζ În OO: separarea preocupărilor în clase şi metode– În UI-uri: separarea conţinutului de prezentare şi a prezentării de

logica aplicaţiei– Service-Oriented Architecture (SOA): împărţirea funcţionalităţii între

diferite servicii(-web)– Aspect-Oriented Programming (AOP): separarea preocupărilor în

"aspecte"

28

"aspecte"

Instrumente pentru dezvoltarea programelor – Curs 7

Page 29: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Coeziunea şi cuplareaCoeziunea şi cuplarea• Regulă pentru proiectarea modulelor: “cuplare slabă, coeziune mare”• Coeziunea: măsură a cât de bine lucrează împreună liniile de cod sursă

ale unui modul pentru a oferi o anumită funcţionalitate. În programarea p ţ p gOO, reprezintă gradul în care o metodă implementează o singură funcţie. Metodele ce implementează o singură funcţie sunt descrise ca având coeziune puternică.U d l t b i ă fi t i i• Un modul trebuie să fie puternic coeziv– Ar trebui să formeze o unitate de sine-stătătoare având o funcţie precisă– Părţile din modul lucrează împreună într-o manieră strâns cuplată

Î t d l t b i ă i t l l bă• Între module trebuie să existe cuplare slabă– Puţine dependenţe între module– Un modul este independent de implementarea internă a altui modul

M difi i l tă ii i d l ită difi lt d l– Modificarea implementării unui modul nu necesită modificarea altor module– Interacţiunea dintre module este restricţionată (prin intermediul unui interfeţe

stabile)– Fiecare modul ar trebui să poată fi înţeles fără a necesita înţelegereaFiecare modul ar trebui să poată fi înţeles fără a necesita înţelegerea

detaliilor altor module• Coeziunea şi cuplarea sunt adesea înrudite: cuplare slabă presupune

coeziune puternică şi vice versa

29

• În OO: mai puţine conexiuni între clase (low coupling) dacă grupăm metode înrudite ale unei clase împreună (high cohesion)

Instrumente pentru dezvoltarea programelor – Curs 7

Page 30: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cuplarea în Programarea OOCuplarea în Programarea OOCup a ea og a a ea OOCup a ea og a a ea OO• Cuplarea este crescută între două clase A şi B dacă:

A t ib t f ă ( ti l) B– A are un atribut ce referă pe (are tipul) B– A apelează o metodă a lui B– A are o metodă ce referenţiază Bţ

(via return type, parametru sau variabilă locală)– A este o subclasă a (sau implementează) B

• Dezavantajele cuplării strânse includ:• Dezavantajele cuplării strânse includ:– Modificările unei clase adesea forţează modifică în alte clase– Greu de înţeles o clasă izolată– Greu de refolosit sau testat o clasă deoarece clasele dependente

trebuie să fie şi ele disponibile• Cuplarea slabă poate fi atinsă prin limitarea• Cuplarea slabă poate fi atinsă prin limitarea

responsabilităţilor unei clase/pachet

30Instrumente pentru dezvoltarea programelor – Curs 7

Page 31: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Spaghetti CodeSpaghetti Code vvs. Modular Systems. Modular SystemSpag ett CodeSpag ett Code s odu a Systes odu a SysteSpaghetti Code• Conexiuni hazardoase probabil• Conexiuni hazardoase, probabil

crescute de-a lungul timpului• Nu există grupuri coeziveg p• Cuplare strânsă: interacţii sporite între

părţi aleatoare• Trebuie înţeles totul sau nimic

10 părţi, 13 conexiuni

• Trebuie înţeles totul sau nimic

Modular Systemy• Coeziune puternică în module• Cuplare slabă între module

f

10 părţi 13 conexiuni

• Modulele pot fi înţelese separat• Interacţiile dintre module sunt bine-

înţelese şi specificate în detaliu

31

10 părţi, 13 conexiuni,3 module

înţelese şi specificate în detaliu

Instrumente pentru dezvoltarea programelor – Curs 7

Page 32: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: Windows NTExemplu: Windows NT

• Baza lui WinXP• Arhitectură stratificată

– Modulele suprapuse unele peste altelepeste altele

– Adesea un nivel poate accesa numai nivelul de

b lsub el• Cel mai de jos nivel

vorbeşte direct cuvorbeşte direct cu hardware-ul

• Cu cât mai sus, cu atât mai multă abstractizare introdusă faţă de hardware-ul fizic

Instrumente pentru dezvoltarea programelor – Curs 7 32

hardware ul fizic

Page 33: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: Joc 3DExemplu: Joc 3De p u Joc 3e p u Joc 3

AI CollisionD t tiAI

Scripting

Detection

Physics

ScriptingEngine

AnimationyEngine Engine

RenderingEngine

SceneManager

SoundEngine

InputS b t

EngineManagerEngine

33

Subsystem

Instrumente pentru dezvoltarea programelor – Curs 7

Page 34: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ExExeemplmpluu: Google: Googleee pp uu Goog eGoog e• Încărcarea de date

necesită paralelism necesită paralelism puternic

• Mai multe module l â d ilucrând concurent şi asincron

• Arhitectură scalabilă• Arhitectură scalabilă• Comunicaţia adesea

se desfăşoară prinse desfăşoară prin intermediul unor baze de date

• Modulele pot fi optimizate în mod independent

34

independent

Instrumente pentru dezvoltarea programelor – Curs 7

Page 35: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ascunderea InformaţieiAscunderea InformaţieiAscunderea InformaţieiAscunderea Informaţiei

Out of sight, out of mind.

Instrumente pentru dezvoltarea programelor – Curs 6 35

Page 36: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ascunderea informaţieiAscunderea informaţieiscu de ea o aţ escu de ea o aţ e• Ascunderea informaţiei ce nu trebuie să fie vizibilă pentru

a folosi o anumită clasă/modul/programa folosi o anumită clasă/modul/program• Prea multă informaţie poate produce confuzie: ce este

important pentru folosire şi ce nu?• Prea multă informaţie poate duce la dependenţe de

nedorit– Dacă aspectele interne sunt vizibile & accesibile, cineva ar putea p , p

să le folosească sau chiar să le modifice (e.g. crearea unui “hack” pentru a folosi ceva într-o manieră nedorită)

– Dacă aspectele interne sunt modificate atunci codul extern ce se b l t ă i f ţibaza pe ele s-ar putea să nu mai funcţioneze

• Permiterea numai accesului restricţionat oferă mai multă flexibilitate– Clasa/modulul/programul poate fi schimbată fără a afecta alte

componente– Multe decizii de proiectare pot fi ascunse iar proiectul sistemului

36

p p ppoate evolua fără a interfera

Instrumente pentru dezvoltarea programelor – Curs 7

Page 37: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ScopScopScopScop• Locul unde declarăm o variabilă determină modul în care poate fi

accesată (i.e. Scopul acesteia)( p )• Scopul unei variabile ar trebui să fie întotdeauna cât mai restrâns cu

putinţă• Dacă o variabilă poate fi accesată acolo nu ar trebui să poată fi p p

accesată: confuzie şi greşeli• Scopul variabilelor tip instanţă > scopul variabilelor locale unei

metode > scopul variabilelor locale unui bloc de instrucţiuni

class C {int x;

class C {int x;

int y;int z;void m() { void m() {y = 0;for(z=0; z<10; z++) {y += z;

int y = 0;for(int z=0; z<10; z++) {y += z;

37

y} } }

y} } }

Instrumente pentru dezvoltarea programelor – Curs 7

Page 38: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Modificatori de accesModificatori de accesPot fi folosiţi pentru controlul accesului

public:clasa/interfaţa pot fi accesate din afara pachetului– clasa/interfaţa pot fi accesate din afara pachetului

– constructorii, metodele şi câmpurile pot fi accesate de oriunde poate fi accesată clasa acestora

protected:protected:– pot fi accesate de alte clase din acelaşi pachet– şi din orice subclasă a clasei în care au fost declarate

i t t fi t i di l î f t d l tprivate: pot fi accesate numai din clasa în care au fost declarateFără modificator: pot fi accesate numai din pachetul în care sunt

declarate

Dezavantaje:• Doar pentru grupuri pre-definiteDoar pentru grupuri pre definite• Drepturile de acces depind doar de cine (altă clasă) doreşte

accesul, nu de cum vor de fapt să folosească (e.g. doar 1 metodă)

38

metodă)

Instrumente pentru dezvoltarea programelor – Curs 7

Page 39: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Conceptul de interfaţăConceptul de interfaţăCo ceptu de te aţăCo ceptu de te aţăExistă diverse tipuri de interfeţe• Interfeţe utilizator• Interfeţe utilizator

– Nu doar pentru software: orice instrument– Adesea pot suferi modificări,

ât d tă i ă f difi ă icâteodată nu au voie să sufere modificări• API-uri: importante pentru programele ce le folosesc• Java interface: importante pentru clasele ce folosescJava interface: importante pentru clasele ce folosesc

alte clase prin intermediul lor

I t ţi t î t td iUser/ClientIntenţia este întotdeauna aceeaşi:

• Interfaţa defineşte şi restricţioneazăcum ajunge ceva să fie folosit

nt

Interfacej g

• Utilizatorii/clienţii execută operaţiinumai prin intermediul interfeţelorDacă implementarea internă se modifică

Implementation

39

• Dacă implementarea internă se modifică, utilizatorii/clienţii nu trebuie să sufere modificări

Instrumente pentru dezvoltarea programelor – Curs 7

Page 40: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Interfeţe JavaInterfeţe Java• Modificatorii de acces pot doar controla accesul în funcţie de

cine foloseşte o clasă/metodă/câmp

te eţe Ja ate eţe Ja a

ş p• Folosind interfeţe putem restricţiona accesul într-o manieră mai

flexibilă:O clasă poate implementa mai multe interfeţe– O clasă poate implementa mai multe interfeţe

– Putem folosi o altă interfaţă în funcţie de• Cine o foloseşte (cu altă clasă)

La ce este folosităClient

• La ce este folosită• Totuşi: adesea folosirea interfeţelor

vs. accesarea directă a unei clasă Class

1 2 3

reprezintă o decizie ce trebuie în prealabil cântărită

Programatorii au nevoie să ştie că ar trebui

Interface AInterface B

– Programatorii au nevoie să ştie că ar trebui să folosească interfeţe

– Programatorii au nevoie să ştie ce interfeţe ă f l ă

ImplementationClass

40

să folosească1 or 2 or 3 ?

Instrumente pentru dezvoltarea programelor – Curs 7

Page 41: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemple de interfeţeExemple de interfeţeExemple de interfeţeExemple de interfeţepublic class USSEnterpriseimplements Maintenance, SafeControl, FullControl {public void navigate(Point dest) { … }public void warpJump(Point dest) { … }public int checkSystems() { … }public void selfDestruct() { … }

}

i t f i t {interface Maintenance {public int checkSystems();

}

interface SafeControl extends Maintenance {public void navigate(Point dest);public void warpJump(Point dest);public void warpJump(Point dest);

}

interface FullControl extends SafeControl {

41

public void selfDestruct();}

Instrumente pentru dezvoltarea programelor – Curs 7

Page 42: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemple de interfeţeExemple de interfeţeExemple de interfeţeExemple de interfeţe

Maintenance e = new USSEnterprise();

Scotty accesând sistemul:

Acc sul p t fi Maintenance e = new USSEnterprise();int status = e.checkSystems();

Spock accesând sistemul:

Accesul poate fi restricţionat cu succes doar prin

d SafeControl e = new USSEnterprise();e.warpJump(new Point(103, 789));

Spock accesând sistemul: accesarea de interfeţe corespunzătoare.

e.selfDestruct(); Nu compilează!!!

Borg accesând sistemul:

p

USSEnterprise e = new USSEnterprise();e.selfDestruct(); // Boooom!

Borg accesând sistemul:

• Se alege o interfaţă corespunzătoare pentru accesarea unei clase• Accesarea directă a unei clase poate duce la dependenţe şi alte greşeli

42

• Accesarea directă a unei clase poate duce la dependenţe şi alte greşeli ce ar fi putut fi depistate de către compilator

Instrumente pentru dezvoltarea programelor – Curs 7

Page 43: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Forţarea folosirii interfeţelor Forţarea folosirii interfeţelor -- FactoriesFactorieso ţa ea o os te eţe oo ţa ea o os te eţe o acto esacto esprotected class USSEnterpriseimplements Maintenance, SafeControl, FullControl { protected USSEnterprise() {} … }

public class EnterpriseFactory {public static Maintenance getMaintenance() {public static Maintenance getMaintenance() {return (Maintenance) new USSEnterprise();

}public static FullControl getFullControl(String pw) {public static FullControl getFullControl(String pw) {if(pw.equals("please"))return (FullControl) new USSEnterprise();

else throw new RuntimeException("Alarm!!!");else throw new RuntimeException( Alarm!!! );}// similar for SafeControl

}

Maintenance e = EnterpriseFactory getMaintenance();

Accesul este acum permis numai prin intermediul interfeţelor:

}

43

Maintenance e = EnterpriseFactory.getMaintenance();int status = e.checkSystems();

Instrumente pentru dezvoltarea programelor – Curs 7

Page 44: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SumarSumarSu aSu a• Modularitatea înseamnă că un sistem este compus

di ă ţi i d d t ( d l ) â d i t f ţdin părţi independente (module) având interfeţe bine-definite– Poate fi atinsă prin “separation of concerns”– Regulă: “low coupling, high cohesion”

• Ascunderea informaţiilor înseamnă că doar acele informaţii absolut necesare pentru a face ceva este pusă la dispoziţie– Accesul este posibil prin interfeţe bine-specificateţ– Detaliile interne de implementare sunt ascunse şi pot fi

modificate fără a afecta restul sistemului

44Instrumente pentru dezvoltarea programelor – Curs 7

Page 45: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

QuizQuiz1. Ce avantaje oferă sistemele modulare?

QuizQuizj

2 D i d l l ă fi l b2. De ce avem nevoie ca modulele să fie slab cuplate?

3 Care este scopul folosirii interfeţelor?3. Care este scopul folosirii interfeţelor?

45Instrumente pentru dezvoltarea programelor – Curs 7

Page 46: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Depanarea programelorDepanarea programelorDepanarea programelorDepanarea programelor

46Instrumente pentru dezvoltarea programelor – Curs 6

Page 47: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Procesul de dProcesul de depanareepanareocesu de docesu de depa a eepa a e• Procesul de identificare şi corectare a erorilor software

– Folosită în principal pentru găsirea erorilor la run-time sau a rezultatelor incorecte produse de programe

• Erorile de runtime sunt mai greu de depistat decât erorile• Erorile de runtime sunt mai greu de depistat decât erorile de compilare– Compilatorul poate depista erorile mai repede (sintaxă incorectă,Compilatorul poate depista erorile mai repede (sintaxă incorectă,

apeluri incorect efectuate, etc.)

• Depanatoarele grafice sunt mai uşor de folosit (Eclipse, Visual Studio) decât cele din linia de comandă (gdb)

• În general se corectează o singură eroare la un moment dat şi fiecare modificare trebuie bine documentată (se poate folosi şi un VCS precum SVN)

47

poate folosi şi un VCS precum SVN)

Instrumente pentru dezvoltarea programelor – Curs 6

Page 48: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ProfilingProfilingo go g

• Profiling-ul reprezintă o formă de analiză g pdinamică a funcţionalităţilor oferite de execuţia programului care se concentreazăexecuţia programului care se concentrează pe aspecte măsurabile ale sistemului

48Instrumente pentru dezvoltarea programelor – Curs 6

Page 49: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Funcţionalităţi ale unui ProfilerFuncţionalităţi ale unui Profileru cţ o a tăţ a e u u o eu cţ o a tăţ a e u u o e

• Un Profiler poate:– Măsura timpul necesar pentru rularea

aplicaţiei/părţi componente ale aplicaţiei– Furniza analize de utilizare– Prezenta istoria de execuţia a programuluiţ p g– Genera rapoarte privind utilizarea memoriei, a

instanţelor de obiecte, firelor de execuţie, etc.ţ , ţ ,

• Este bine când putem depista “bottleneck-Este bine când putem depista bottleneckurile” pentru a putea optimiza codul

49Instrumente pentru dezvoltarea programelor – Curs 6

Page 50: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Tipuri de ProfilersTipuri de Profilers

• Memory profilers:

pu de o e spu de o e s

– Pentru analize ale memoriei native, memoriei colectate, stivei

• Thread profilers:– Detectarea condiţiilor de race deadlock-uriDetectarea condiţiilor de race, deadlock uri,

etc.• Code coverage profiles:• Code coverage profiles:

– Determinarea segmentelor de execuţie a programului având contexte specifice:programului având contexte specifice:

• Context: atunci când un utilizator se loghează în sistem care sunt metodele care ajung să fie s ste ca e su t etode e ca e aju g să eexecutate?

50Instrumente pentru dezvoltarea programelor – Curs 6

Page 51: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemple: Profilere JavaExemple: Profilere Javae p e o e e Ja ae p e o e e Ja a

• Comerciale:– Profiler4J, JProfiler, JProbe, YourKit,

Introscope (JEE specific) - $$$ etcIntroscope (JEE specific) $$$, etc.

O• Open source:– NetBeans Profiler, Java Interactive Profiler,

Eclipse TPTP, etc.

51Instrumente pentru dezvoltarea programelor – Curs 6

Page 52: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: JProfilerExemplu: JProfilere p u J o ee p u J o e

52Instrumente pentru dezvoltarea programelor – Curs 6

Page 53: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: JProfilerExemplu: JProfilere p u J o ee p u J o e

53Instrumente pentru dezvoltarea programelor – Curs 6

Page 54: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: JProfilerExemplu: JProfilere p u J o ee p u J o e

54Instrumente pentru dezvoltarea programelor – Curs 6

Page 55: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: JProfilerExemplu: JProfilere p u J o ee p u J o e

55Instrumente pentru dezvoltarea programelor – Curs 6

Page 56: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplu: JProfilerExemplu: JProfilere p u J o ee p u J o e

56Instrumente pentru dezvoltarea programelor – Curs 6

Page 57: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Depanarea folosind EclipseDepanarea folosind Eclipseepa a ea o os d c pseepa a ea o os d c pse

• Features:– Breakpoints

• Double-click pe marginea din stângaStep into execuţia instrucţiunii următoare– Step into – execuţia instrucţiunii următoare

• Din perspectiva Debug – F5– Step over – step into, cu salt peste execuţia uneiStep over step into, cu salt peste execuţia unei

metode• Din perspectiva

– Step return– Step Filters

W t h– Watches– Run to line

Suspend/Resume/Terminate

57

– Suspend/Resume/Terminate

Instrumente pentru dezvoltarea programelor – Curs 6

Page 58: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Depanarea folosind EclipseDepanarea folosind Eclipseepa a ea o os d c pseepa a ea o os d c pse• Features:

B k i t– Breakpoints• Double-click pe marginea din stânga

– Step into – execuţia instrucţiunii următoare• Din perspectiva Debug – F5

– Step over – step into, cu salt peste execuţia unei metode• Din perspectiva Debug – F6Din perspectiva Debug F6

– Step return – execuţia instrucţiunilor rămase din metoda curentă• Din perspectiva Debug – F7

Step c Filters e ec ţia n mai a an mitor metode– Step cu Filters – execuţia numai a anumitor metode• Window > Preferences > Java > Debug > Step Filtering

– Watches – verificarea/modificarea valorilor variabilelor• Din perspectiva Debug fereastra “Variables”

– Run to line – setarea unui breakpoint temporar– Suspend/Resume/Terminate

58

Suspend/Resume/Terminate

Instrumente pentru dezvoltarea programelor – Curs 6

Page 59: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Eclipse Java DebuggerEclipse Java Debuggerc pse Ja a ebuggec pse Ja a ebuggeLocal variables

Threads and stack

frames

Editor with breakpoint breakpoint

marks

l

59

Console I/O

59Instrumente pentru dezvoltarea programelor – Curs 6

Page 60: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Integrated Development Integrated Development E i t (IDE )E i t (IDE )Environments (IDEs)Environments (IDEs)

Duct tape is like the Force.It has a light side, a dark side, d it h ld th i t thand it holds the universe together.

(Carl Zwanzig)

60Instrumente pentru dezvoltarea programelor – Curs 6

Page 61: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Integrated Development Integrated Development Environments (IDEs)Environments (IDEs)

• IDE = workbench - un set coerent de instrumente CASE proiectat pentru a suporta activităţi software– Oracle Designer– Microsoft’s Visual Studio .NET– Eclipse

• Furnizează o interfaţă unică utilizatorului către mai multe instrumente CASEmulte instrumente CASE

• Common UI: toate instrumentele pot fi invocate din şi pot afişa rezultatele în acelaşi IDE

61

pot afişa rezultatele în acelaşi IDE

Instrumente pentru dezvoltarea programelor – Curs 6

Page 62: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Integrated Development Integrated Development

• Extensibilitate: arhitecturi bazate pe plug in uri

EnvironmentsEnvironments• Extensibilitate: arhitecturi bazate pe plug-in-uri

– Plug-in: componentă program ce poate fi integrată (“plugged”) în sistem( plugged ) în sistem

– De obicei are propriile ferestre de comunicare• Un IDE furnizează de obicei resurse comuneUn IDE furnizează de obicei resurse comune

tuturor instrumentelor integrate (ex. acces la codul sursă, modele interne, …), , )

• Avantaje şi dezavantajeAvantaje şi dezavantaje– Integrează diverse instrumente ce asistă tot parcursul

procesului software– Fiecare IDE este diferit şi necesită învăţare şi cunoştinţe

62Instrumente pentru dezvoltarea programelor – Curs 6

Page 63: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Integrarea instrumentelorIntegrarea instrumentelor• Workbenchurile integrează mai multe instrumente în

acelaşi UI

gg

– Editoare text– Compilatoare– Depanatoarea (execuţia & verificarea programului pas cu pas)p ( ţ p g p p )– Profilere (măsurarea & verificarea timpului petrecut în execuţia

unor secvenţe de cod)– Diverse alte editoare (e.g. pentru diagrame)( g p g )– Diverse alte instrumente (constructie, generearea/transformarea

codului, …)• Valoare dată de integrarea funcţionalăValoare dată de integrarea funcţională

Comunicaţie între instrumente, e.g.– Editor text cu senzitivitate la elementele constructive ale limbajului

(syntax sensitivity, auto-completion)(syntax sensitivity, auto completion)– Lista de erori de compilare cu navigare în codul sursă– Depanator integrat cu editorul text

• Extensibilitate: arhitectura de tip plug in şi interfaţa cu• Extensibilitate: arhitectura de tip plug-in şi interfaţa cu instrumente consolă

63Instrumente pentru dezvoltarea programelor – Curs 6

Page 64: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Vederi multipleVederi multipleede u t p eede u t p e• IDE-urile furnizează un UI workspace conţinând câteva paneluri ce

prezintă diverse informaţii de interes pentru utilizatorTask ri diferite beneficia ă de ederei diferite as pra nor elemente• Task-uri diferite beneficiază de vederei diferite asupra unor elemente

• Idea: furnizarea aceleiaşi (sau măcar similare) informaţii în diferite paneluri (sincronizate), folosind diverse reprezentăriExemplu: lucrul cu un GUI• Exemplu: lucrul cu un GUI– Diagrama de clase arată relaţiile statice dintre controale– Ierarhia de conţinut prezintă structura la runtime a GUI-ului

Editorul vizual arată proiectul grafic (layout culori )– Editorul vizual arată proiectul grafic (layout, culori, …)– Codul cursă prezintă specificaţia comportamentului dinamic

b.addActionListener(new ActionListener() {void actionPerformed(ActionEvent e) {

System out println("Hello!");

64

System.out.println( Hello! );} });

Instrumente pentru dezvoltarea programelor – Curs 6

Page 65: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Reprezentare structurată a codului sursăReprezentare structurată a codului sursăep e e ta e st uctu ată a codu u su săep e e ta e st uctu ată a codu u su să• Multe instrumente folosesc o reprezentare textuală a codului sursă

– Eliminarea detaliilor lexicale ne-necesare; predispuse la erori pentru că d i d d fi i (“ d”)depind de fiecare singur caracter (“untyped”)

– Lineare, deci greu de procesat (necesită folosirea unui parser) şi inflexibile• Idea: folosirea de reprezentări structurate, orientate spre tipuri de AST

pentru codul sursăpentru codul sursă• Multe IDE-uri moderne folosesc intern o astfel de abordare

– Codul sursă este parsat (adesea chiar în timp ce dezvoltatorul tastează) şi stocat ca un ASTstocat ca un AST

– AST-ul este folosit pentru navigaţie, editare, transformări, analize• Reprezentarea structurată permite adăugarea de noi funcţionalităţi

– Regăsire rapidă: căutare agregare– Regăsire rapidă: căutare, agregare– Editarea verificată (prevenţia inerentă a erorilor de sintaxă)

int x = 0;x++;

Var int0

=

Program

65

; x++

Instrumente pentru dezvoltarea programelor – Curs 6

Page 66: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Integrated Development EnvironmentsIntegrated Development Environmentsgg

66Instrumente pentru dezvoltarea programelor – Curs 6

Page 67: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Dezvoltare GUIDezvoltare GUI

67Instrumente pentru dezvoltarea programelor – Curs 6

Page 68: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Dezvoltare grafică…Dezvoltare grafică…Dezvoltare grafică…Dezvoltare grafică…

Instrumente pentru dezvoltarea programelor – Curs 6 68

Page 69: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

De ce prezentarea a două IDE?De ce prezentarea a două IDE?e ce p e e ta ea a douăe ce p e e ta ea a două• Alegerea unui IDE – probleme Personale/Religioase

– Unii oameni iubesc/urăsc Microsoft– Unii oameni iubesc/urăsc Java– Unii oameni iubesc/urăsc Eclipse/Visual Studio– Unii oameni iubesc/urăsc “open source”

• Dacă vorbim cu utilizatorii de Visual Studio:– Aveţi grijă la referirile la “Java” şi “Open Source”

• Java = încet, cu multe probleme• Open Source = bug-uri, fără suport

– Pentru ei Eclipse nu reprezintă centrul universului

• Propria experienţă contează– Clientul are întotdeauna dreptate

N ă f iţi ă l ţi ibil bl l d ţi i tâ i ă– Nu vă feriţi să semnalaţi posibile probleme pe care le vedeţi – mai târziu vă veţi mulţumi

– Nu vă feriţi de a vă arăta nelămuririle legate de o soluţie impusă - “Arată-mi cum fac asta în Visual Studio…”

69

– Întotdeauna veniţi cu propriile soluţii la probleme întâlnite, ceilalţi vor aprecia

Instrumente pentru dezvoltarea programelor – Curs 6

Page 70: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Visual StudioVisual Studio

70Instrumente pentru dezvoltarea programelor – Curs 6

Page 71: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Visual StudioVisual Studiosua Stud osua Stud o

• Scurtă istorie:– Visual Studio 97 (1997)– Visual Studio 6 (1998)– Visual Studio.NET (2002)Visual Studio.NET (2002)– Visual Studio.NET 2003– Visual Studio 2005– Visual Studio 2008Visual Studio 2008

71Instrumente pentru dezvoltarea programelor – Curs 6

Page 72: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

(Câteva)(Câteva) CaracteristiciCaracteristici(Câteva) (Câteva) CaracteristiciCaracteristici

• Class Browser• Rich Debug Info

D kt I t ti• Desktop Integration• Scriptingp g• System Search• Flexible Projects

72Instrumente pentru dezvoltarea programelor – Curs 6

Page 73: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CaracteristiciCaracteristici• Class Browser

Ri h D b I f

Ca acte st cCa acte st c

• Rich Debug Info• Desktop Integrationp g• Scripting

S t S h• System Search• Flexible Projectse b e ojec s

73Instrumente pentru dezvoltarea programelor – Curs 6

Page 74: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CaracteristiciCaracteristiciCa acte st cCa acte st c

• Class Browser• Rich Debug Info

D kt I t ti• Desktop Integration• Scriptingp g• System Search• Flexible Projects

74Instrumente pentru dezvoltarea programelor – Curs 6

Page 75: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CaracteristiciCaracteristiciCa acte st cCa acte st c

• Class Browser• Rich Debug Info

D kt I t ti• Desktop Integration• Scriptingp g• System Search• Flexible Projects

75Instrumente pentru dezvoltarea programelor – Curs 6

Page 76: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

EclipseEclipse

76Instrumente pentru dezvoltarea programelor – Curs 6

Page 77: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CaracteristiciCaracteristici• Platformă universală, open-source, ce integrează

diverse instrumente de dezvoltare a aplicaţiilor

Ca acte st cCa acte st c

diverse instrumente de dezvoltare a aplicaţiilor• Independenţă de limbajul de dezvoltare şi mediu de

operare– Diverse tipuri de conţinut– HTML, Java, C, JSP, EJB, XML, GIF, …

F ilit ă i t ă d di i t t• Facilitează integrarea uşoară de diverse instrumente– Instrumentele pot avea acces la diverse funcţii de bază ale

platformeiplatformei– Se pot adăuga noi instrumente la produsele deja instalate

• Comunitate mare de dezvoltatori– Include companii comerciale dezvoltatoare de software

(IBM leader)Se bazează pe popularitatea de care se bucură Java în– Se bazează pe popularitatea de care se bucură Java în rândul dezvoltatorilor de aplicaţii

77Instrumente pentru dezvoltarea programelor – Curs 6

Page 78: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Elemente EclipseElemente Eclipsee e te c psee e te c pse• Workbench (Fereastra Eclipse) conţine paneluri

Edit ti ti l d fi i t fi dit t– Editoare: un tip particular de fişier poate fi editat– Vederi: furnizează reprezentări alternative şi ajută la navigare

O vedere se deschide cu Window -> Show View sau ca “Fastview”• Paneluri sunt grupate în areas (zone)

– Zonele pot fi minimizate/maximizateZonele pot fi suprapuse prin– Zonele pot fi suprapuse prindrag & drop asupra taburilor

– Panelele pot fi reordonate, mutate între t lâ ă kb hzone, ancorate lângă workbench

– Separatorii dintre zone pot fi mutaţi• Perspectivele sunt configuraţii particulare al workbench-uluiPerspectivele sunt configuraţii particulare al workbench ului

– Fiecare se ocupă de un anumit task– Schimbarea perspectivei:

S l ii i Wi d S P i A

78

– Salvarea noii perspective cu Window -> Save Perspective As…

Instrumente pentru dezvoltarea programelor – Curs 6

Page 79: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Câteva Vederi EclipseCâteva Vederi EclipseCâte a ede c pseCâte a ede c pse• Navigator (foldere şi fişiere) şi Package Explorer (proiecte cu

pachete, fişiere, clase, metode, câmpuri)p , ş , , , p )– Iconurile indică tipuri şi stări (e.g. Accesibilitate, eroare)– Drag & drop:

mutarea claselor între pachete, fişiere între foldereu a ea c ase o e pac e e, ş e e e o de e– Double-click deschide resursa în editor– Right-click pe o resursă deschide un meniu de context cu operaţii

• Multe alte vederi: Console Outline Hierarchy Properties• Multe alte vederi: Console, Outline, Hierarchy, Properties, …

79Instrumente pentru dezvoltarea programelor – Curs 6

Page 80: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Arhitectura (1)Arhitectura (1)tectu a ( )tectu a ( )

AnotherToolEclipse Platform

HelpWorkbench

JF

JavaDevelopment

Toolp

Team

JFace

SWT

Tools(JDT)

Your T l

Workspace

Tool

Plug-inDevelopment Debug

Their

Environment(PDE)

Platform Runtime

Eclipse Project

Their Tool

80Instrumente pentru dezvoltarea programelor – Curs 6

Page 81: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Arhitectura (2)Arhitectura (2)tectu a ( )tectu a ( )

PDEPlug-in developmenti t

Java developmentt l

JDT

environment

PlatformEclipse Platform

tools

Java VMStandard Java2Virtual Machine

81Instrumente pentru dezvoltarea programelor – Curs 6

Page 82: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Arhitectura bazată pe plugArhitectura bazată pe plug--inin--uriuri• Eclipse Platform Runtime este un micro-kernel

– Toate funcţionalităţile sunt oferite de plug-in-uri

tectu a ba ată pe p ugtectu a ba ată pe p ug uu

ţ ţ p g

• Eclipse Platform Runtime start up:– Descoperă plug-in-urile instalate local pe disc– Realizează corespundenţa extensii – puncte de extensie– Construieşte un registry global de plug-in-uri– Salvează local (cache) registry-ul

• Plug-in – cea mai mică unitate funcţională din Eclipse– Un exemplu mare: editor HTML– Cel mai mic exemplu: Acţiunea de creare a unui fişier zip

• Punct de extensie – entitate identificată prin nume folosită pentru colectarea de “contribuţii”

Exemplu: punct de extensie pentru colectarea preferinţelor asupra workbench ului– Exemplu: punct de extensie pentru colectarea preferinţelor asupra workbench-ului din UI

• Extensie - o contribuţie– Exemplu: preferinţe specifice ale editorului HTML

82Instrumente pentru dezvoltarea programelor – Curs 6

Page 83: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Arhitectura bazată pe plugArhitectura bazată pe plug--inin--uriuritectu a ba ată pe p ugtectu a ba ată pe p ug uu

• Un plug-inp g– Contribuie la 1 sau mai multe puncte de

extensieextensie– Poate depinde de alte plug-in-uri (un plug-in

t i l i t API)poate inclusiv exporta un API)– Conţine biblioteci Java şi alte fişiereţ– Situat în propriul director de plug-in

83Instrumente pentru dezvoltarea programelor – Curs 6

Page 84: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Componente EclipseComponente EclipseCo po e te c pseCo po e te c pse

• Platforma Eclipse reprezintă bazap p• Conţine câteva componente cheie

Eclipse Platform

Workbench

JFace“UI”

SWT Team Help Debug

Workspace Ant“Core”

84

Platform Runtime

Instrumente pentru dezvoltarea programelor – Curs 6

Page 85: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Componenta workbenchComponenta workbenchCo po e ta o be cCo po e ta o be c• SWT (Standard Widget Toolkit) – Set generic de componente grafice

de nivel scăzut şi widget-uriButoane liste text meniuri tree uri text cu stil– Butoane, liste, text, meniuri, tree-uri, text cu stil...

– API independent de platformă– Foloseşte widget-uri native atunci când e posibilg

• JFace – task-uri de interacţiune UI– Registrii de imagini şi fonturi– Dialoguri, preferinţe– View-uri personalizate: adaptoare pentru widget-uri SWT de formă

arbore, tabele, liste, etc.– Infrastructura pentru widget-uri de formatare a textului– Gestiunea acţiunilor utilizatorilor

• Workbench personalitatea UI a Eclipse PlatformWorkbench

• Workbench – personalitatea UI a Eclipse Platform

SWTJFace

85Instrumente pentru dezvoltarea programelor – Curs 6

SWT

Page 86: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

De ce SWT?De ce SWT?e ce Se ce S

Eclipse pe Windows XPEclipse pe Windows XP Eclipse pe Linux Eclipse pe Linux -- GTK 2.0GTK 2.0

Eclipse pe Linux Eclipse pe Linux -- MotifMotif Eclipse pe Mac OS X Eclipse pe Mac OS X -- CarbonCarbon

86Instrumente pentru dezvoltarea programelor – Curs 6

Page 87: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Terminologia de lucru EclipseTerminologia de lucru Eclipsee o og a de uc u c psee o og a de uc u c pse

Menu barText

Tool bar

Perspectiveand

Texteditor

Fast Viewbar

Outlineview

ResourceNavigatorview

Propertiesview

Bookmarksview

S k d

Messagearea

EditorStatusarea

87

Stackedviews

Tasksview

area

Instrumente pentru dezvoltarea programelor – Curs 6

Page 88: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Perspectiva JavaPerspectiva Javae spect a Ja ae spect a Ja a

Ierarhii de tip

M b ii Membrii selectaţi

88Instrumente pentru dezvoltarea programelor – Curs 6

Page 89: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Perspectiva JavaPerspectiva Javae spect a Ja ae spect a Ja a

Rezultatele căutării sunt marcate în stânga

Toate lt t l rezultatele

unei căutări

89Instrumente pentru dezvoltarea programelor – Curs 6

Page 90: Asigurarea CalitAsigurarea Calităţii (ii (QA) …andrei.clubcisco.ro/cursuri/f/f-sym/4idp/6_7_QA...6. Numele de parametrii de tip pentru elemente generice ar tbitrebui să conţină

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Editorul JavaEditorul Javad to u Ja ad to u Ja aHelp automat (Javadoc)

Lista de metodeDocumentaţia metodei

90Instrumente pentru dezvoltarea programelor – Curs 6