• Nu S-Au Găsit Rezultate

Test-Driven Development – TDD

N/A
N/A
Protected

Academic year: 2022

Share "Test-Driven Development – TDD "

Copied!
26
0
0

Text complet

(1)

Curs 1 – 17 Octombrie 2011 Adrian Iftene [email protected]

(2)

SWEBOK: locul şi rolul ingineriei programării, arii tematice, discipline înrudite

Dezvoltarea şi mentenanţa sistemelor:dezvoltare agilă condusă de model, şabloane de arhitectură a aplicaţiilor de întreprindere, dezvoltare

condusă de teste, refactorizare: cod, arhitectură

Design orientat obiect clase: SOA, principii de design orientat obiect

Modelare, modelarea afacerilor: BPMN, limbaje specifice domeniu (DSL), cadre de lucru: Eclipse Modeling Framework, Open Architecture Ware (OAW)

2

(3)

Model-driven development (MDD) -

metodologie software orientată pe crearea de modele apropiate de un domeniu specific decât de concepte informatice

Model-driven architecture (MDA) este cea mai cunoscută inițiativă din MDD și a fost lansată de grupul OMG (Object Management Group) în

2001

3

(4)

AMDD este versiunea agilă a MDD

4

(5)

Test-Driven Development – TDD

Pașii TDD:

1. Adăuga un test.

2. Executa testele; testul nou eșuează.

3. Actualizează codul funcțional a.i. să treacă toate testele.

4. Execută testele din nou.

Dacă testele eșuează, treci la 3.

Dacă testele trec cu succes, putem continua cu altă funcționalitate

5. Restructurează codul funcțional și de testare

5

(6)

IBM Rational Rose Modeler

BPMN

Limbaje specifice domeniu (DSL)

Cadre de lucru:

Eclipse Modeling Framework

Open Architecture Ware (OAW)

6

(7)

Business Process Modelling Notation (BPMN) is a graphical representation for specifying business processes in a workflow

7

(8)

8

(9)

EMF is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a

structured data model

9

(10)

10

AOP is a programming paradigm which isolates secondary or supporting functions from the main program’s business logic

AOP increases modularity by allowing the separation of cross- cutting concerns

AOP includes programming techniques and tools that support the modularization of concerns at the level of the source code

(11)

11

Cross-cutting concerns - aspects of a program which affect other concerns

Advice - additional code

Pointcut - point where additional code is executed

Aspect - the combination of the pointcut and the advice

(12)

Exemple: AspectJ, CaesarJ, CLOS, Compose, JAsCo, ObjectTeams

12

(13)

13

aspect

pointcut

advice

(14)

14

Problem: we want to know when something changes the student (name or grade)

Solution: we add a pointcut for all “set” methods

(15)

15

Problem: we want to trace our program execution

Solution: we add a pointcut for all methods

set

println

toString

(16)

SOA (Service Oriented Architecture) presupune distribuirea funcţionalităţii aplicaţiei în unităţi mai mici, distincte - numite servicii - care pot fi distribuite într-o reţea şi pot fi utilizate

împreună pentru a crea aplicaţii complexe

Serviciile sunt unităţi funcţionale independente, ce rezolvă probleme punctuale și pot fi

combinate pentru a rezolva probleme complexe.

De asemenea pot fi reutilizate în aplicaţii diferite

16

(17)

Exemple de servicii

:

completarea unei cereri online pentru crearea unui cont

vizualizarea unui extras de cont

efectuarea unei comenzi de bilet de avion online

Pentru un robot: servicii pentru văz, auzit, deplasat

17

(18)

18

(19)

Arhitectură și dependințe:

Când spunem că avem un proiect degradat?

Principii de proiectare a claselor:

responsabilitate, dependențe, separare

Principii de proiectare a arhitecturii:

Reutilizare, versionare, închidere

Cuplare, dependențe

Șabloane de proiectare OO:

Abstract server, Adapter, Observer, Bridge, Abstract Factory

19

(20)

Rigidă – greu de modificat

Fragilă – modificările au efecte nedorite

Imobilă – separarea în componente e dificilă

Vâscoasă – lucrurile nu curg cum trebuie

Cumplexitate suplimentară

Repetiție suplimentară

Opacitate – greu de înțeles

20

(21)

Schimbările succesive conduc la o structură sub-optimă a codului

Crește complexitatea

Scade claritatea

Refactorizarea este o schimbare în structura

internă a unui produs software cu scopul de a-l face mai ușor de înțeles și de modificat fără a-i schimba comportamentul observabil

Rezultate:

Scăderea cuplării

Creșterea coeziunii

21

(22)

Următoarele situații sunt semnale pentru necesitatea refactorizării:

Cod duplicat

Metode lungi

Clase mari

Liste lungi de parametri

Instrucțiuni switch după tipul obiectelor - Se recomandã polimorfismul

Generalitate speculativă - Ierarhie de clase în care subclasele au acelașii comportament

Comunicare intensă între obiecte (cuplare puternicã)

Înlănțuirea de mesaje

22

(23)

Lucrul cu portalul (Cursuri -> TAIP)

(24)

Sursele proiectului vor fi salvate pe SVN-ul de la facultate

După ce creați un proiect anunțați coordonatorul de la laborator de adresa proiectului!

(25)

SOA: http://www-01.ibm.com/software/solutions/soa/ , http://ro.wikipedia.org/wiki/SOA

SOA for the real world: http://www.javaworld.com/javaworld/jw- 11-2006/jw-1129-soa.html?page=1

Abstract Server

http://today.java.net/pub/a/today/2004/06/8/patterns.html

Agile Model Driven Development (AMDD)

http://www.agilemodeling.com/essays/amdd.htm

Florin Leon – IP Curs 11

http://eureka.cs.tuiasi.ro/~fleon/Curs_IP/IP11_Implementarea.pdf

OAW http://www.openarchitectureware.org/

25

(26)

Robert Cecil Martin:

Design Principles and Design Patterns.

www.objectmentor.com.

Robert Cecil Martin:

Agile Development.

Principles, Patterns, and Practices,

Prentice-Hall, 2003

26

Referințe

DOCUMENTE SIMILARE

Se vor discuta aici probleme legate de arii, volume, calcul de integrale definite (care pot fi sau nu pot fi rezolvate prin metode analitice), aproximarea unor numere importante

Va fi urmărit și felul în care apar în cadrul programei școlare diverse probleme (de extrem sau cu inegalități) din algebră, geometrie și analiză matematică care pot fi

† Se construieşte arborele cursului: un curs poate avea mai multe capitole, fiecare capitol putând avea mai multe subcapitole, numite pagini;. † În fiecare pagină se pot insera, sub

limbaj de programare pentru HHVM, extinzând PHP scop: creșterea productivității dezvoltatorului Web facilități: tipuri de date explicite (type annotations), programare

Întrebarea principală a fost: Care dintre modelele alternanței lingvistice pot fi identificate în cadrul realității multilingve israeliene?; întrebările auxiliare se referă la

„în mod corespunzător” şi miniştrilor. Prin urmare, dispoziţiile art.107 alin.3 din Constituţie trebuie adaptate, având în vedere situaţia miniştrilor care pot fi

This philosophy, called user-centered design, incorporates user concerns and advocacy from the beginning of the design process and dictates.. the needs of the user should be foremost

Dacă numele comune pot fi transpuse cu ajutorul unor tehnici dintre cele mai diverse precum: traducerea literală, echivalenţa, împrumutul, înstrăinarea şi chiar adaptarea,