300 likes | 428 Views
Tehnici Avansate de Ingineria Program ării. Cursul 1 3 – 11 Ianuarie. Cuprins. Despre examen TAIP: Design orientat obiect : SOA, principii de design orientat obiect
E N D
TehniciAvansate de Ingineria Programării Cursul 13 – 11 Ianuarie
Cuprins • Despre examen • TAIP: • Design orientat obiect: SOA, principii de design orientat obiect • Dezvoltarea şi mentenanţa sistemelor: MDD, dezvoltare agilă condusă de model, design condus de domeniu, dezvoltare condusă de teste, refactorizare • Modelare, modelarea afacerilor: BPMN, DSL, cadre de lucru: Eclipse Modeling Framework, OAW
Examenscris • Tematici: IP, TAIP, logică, cunoştinţe generale, etc. • 120 de puncte 30 de minute • Răspunsurile scurte la obiect (spațiul alocat răspunsului sugerează mărimea răspunsului așteptat) • Data: 18 Ianuarie • Între 8-9 numele care încep cu A-H • Între 9-10 numele care încep cu I-Z
Conţinut IP (Ceștiți…) • Ingineria programării (Software engineering) • Modele de proiectare (Design models) • Ingineria cerinţelor (Requirements identification) • Diagrame UML (UML diagrams) • Design patterns • Testare şi debug (Testing and debugging) • Întreţinere (Maintenance) • Metrici software (Software metrics) • Drepturi de autor (Author rights)
Conținut TAIP (Cearfitrebuit să facem…) • Design orientat obiect clase: recapitulareGRASP și nivel mediu: GOF, nivel ridicat: stiluri arhitecturale (şabloane), SOA, principii de design orientat obiect • Dezvoltarea şi mentenanţa sistemelor: dezvoltare agilă condusă de model, design condus de domeniu, dezvoltare condusă de teste, refactorizare • Modelare, modelarea afacerilor: BPMN, limbaje specifice domeniu (DSL), cadre de lucru: Eclipse Modeling Framework, Open Architecture Ware (OAW)
SOA • 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
SOA - Exemple • 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
Principii de design OO • 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
Arhitectură degradată • 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
Proiectarea claselor - Principii • Responsabilitate unică (coeziune) • Deschis-închis (eliminarea modificărilor în cascadă) • Substituției (Liskov) - Subclasele se pot pune oriunde apar clasele lor de bază • Principiul inversării dependențelor (Hollywood) • Separarea interfețelor - Programele client nu trebuie forţatesă depindă de metodele pe care nu le folosesc
Dezvoltarea şi mentenanţa sistemelor • Dezvoltarea condusă de model • Dezvoltare agilă condusă de model • Dezvoltarea condusă de domeniu • Dezvoltare condusă de teste • Refactorizare
Dezvoltarea condusă de model • Model-drivendevelopment (MDD) - metodologie software orientată pe crearea de modele apropiate de un domeniu specific decât de concepte informatice • Scopul MDD: mărirea productivității prin mărirea compatibilității dintre sisteme • Cum? Simplificând procesele de design, și promovând comunicarea atât între oamenii din echipă, cât și între echipele care lucrează la acel proiect. • În MDD se consideră utile modelele care pot fi înțelese de utilizator, urmând ca pe baza acestora să se construiască sistemul final
Model-drivenarchitecture • MDA este cea mai cunoscută inițiativă din MDD și a fost lansată de grupul OMG (Object Management Group) în 2001 • MDA are la bază un set de reguli pentru realizarea specificațiilor, care sunt date prin intermediul modelelor • În MDA, OMG s-a concentrat pe forward engineering • Scopul de bază ale MDA: separareadintre design și arhitectura sistemului => Grupurile pot să dezvolte separat, obținând ceea ce e mai bun în ambele direcții
Dezvoltare agilă condusă de model • AMDD este versiunea agilă a MDD
Dezvoltare condusă de teste • Test-DrivenDevelopment – TDD Pașii TDD: • Adăuga un test. • Executa testele; testul nou eșuează. • Actualizează codul funcțional a.i. să treacă toate testele. • Execută testele din nou. • Dacă testele eșuează, treci la 3. • Dacă testele trec cu succes, putem continua cu altă funcționalitate • Restructurează codul funcțional și de testare
Tipuri de teste • Unit testing • Integration testing • Functional testing • Acceptance testing • Performance testing
Refactorizare (Refactoring) • Schimbările succesive conduc la o structură sub-optimă acodului • Crește complexitatea • Scade claritatea • Refactorizarea este o schimbare în structura internă a unuiprodus software cu scopul de a-l face mai ușor de înțeles și demodificat fără a-i schimba comportamentul observabil • Rezultate: • Scăderea cuplării • Creșterea coeziunii
Refactorizare - Detalii • Schimbările pot introduce noi defecte • Refactorizarea trebuie efectuatã în pași mici • Trebuie săexisteteste care săindicelocurileundeaparerori • Refactorizarea nu se referă la introducerea de noifuncționalități • Celedouăactivitățitrebuiedespărțite • Refactorizareaîmbunătățeștestructura, nu codul • Codulprostscris nu trebuierefactorizat, ci rescris • Refactorizarea nu trebuie să introducă niveluri de complexitateinutile • Costurilesuplimentare ale refactorizăriisunt compensate deeconomiileulterioare
Refactorizare - Când? • Următoarele situații sunt semnale pentru necesitatearefactoriză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
Modelare, modelarea afacerilor • BPMN • Limbaje specifice domeniu (DSL) • Cadre de lucru: • Eclipse Modeling Framework • Open Architecture Ware (OAW)
BPMN • Business Process Modelling Notation (BPMN) is a graphical representation for specifying business processes in a workflow
Eclipse Modeling Framework • EMF is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model
Links • 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/
Bibliografie • Robert Cecil Martin: Design Principles and Design Patterns. www.objectmentor.com. • Robert Cecil Martin: Agile Development. Principles, Patterns, and Practices, Prentice-Hall, 2003
Vă Mulţumesc! Pentru prezenţă, răbdare, colaborare...