Curs 1 – 17 Octombrie 2011 Adrian Iftene [email protected]
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
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
AMDD este versiunea agilă a MDD
4
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
IBM Rational Rose Modeler
BPMN
Limbaje specifice domeniu (DSL)
Cadre de lucru:
◦ Eclipse Modeling Framework
◦ Open Architecture Ware (OAW)
6
Business Process Modelling Notation (BPMN) is a graphical representation for specifying business processes in a workflow
7
8
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
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
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
Exemple: AspectJ, CaesarJ, CLOS, Compose, JAsCo, ObjectTeams
12
13
aspect
pointcut
advice
14
Problem: we want to know when something changes the student (name or grade)
Solution: we add a pointcut for all “set” methods
15
Problem: we want to trace our program execution
Solution: we add a pointcut for all methods
set
println
toString
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
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
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
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
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
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
Lucrul cu portalul (Cursuri -> TAIP)
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!
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
Robert Cecil Martin:
Design Principles and Design Patterns.
www.objectmentor.com. Robert Cecil Martin:
Agile Development.
Principles, Patterns, and Practices,
Prentice-Hall, 200326