Presentation is loading. Please wait.

Presentation is loading. Please wait.

Tehnici Avansate de Ingineria Programării

Similar presentations


Presentation on theme: "Tehnici Avansate de Ingineria Programării"— Presentation transcript:

1 Tehnici Avansate de Ingineria Programării
Cursul 13 – 11 Ianuarie

2 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

3 Examen scris 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

4 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)

5 Conținut TAIP (Ce ar fi trebuit să facem…)
Design orientat obiect clase: recapitulare GRASP ș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)

6 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

7 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

8 SOA – .NetROBOT – Tudor D.

9 Implementing SOA the right way

10

11 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

12 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

13 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ţate să depindă de metodele pe care nu le folosesc

14 Dezvoltarea şi mentenanţa sistemelor
Dezvoltarea condusă de model Dezvoltare agilă condusă de model Dezvoltarea condusă de domeniu Dezvoltare condusă de teste Refactorizare

15 Dezvoltarea condusă de model
Model-driven development (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

16 Model-driven architecture
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: separarea dintre design și arhitectura sistemului => Grupurile pot să dezvolte separat, obținând ceea ce e mai bun în ambele direcții

17 Dezvoltare agilă condusă de model
AMDD este versiunea agilă a MDD

18 Dezvoltare condusă de teste
Test-Driven Development – 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

19 Tipuri de teste Unit testing Integration testing Functional testing
Acceptance testing Performance testing

20 Refactorizare (Refactoring)
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 Refactorizare - Detalii
Schimbările pot introduce noi defecte Refactorizarea trebuie efectuatã în pași mici Trebuie să existe teste care să indice locurile unde apar erori Refactorizarea nu se referă la introducerea de noi funcționalități Cele două activități trebuie despărțite Refactorizarea îmbunătățește structura, nu codul Codul prost scris nu trebuie refactorizat, ci rescris Refactorizarea nu trebuie să introducă niveluri de complexitate inutile Costurile suplimentare ale refactorizării sunt compensate de economiile ulterioare

22 Refactorizare - Când? 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

23 Refactorizare – Cum?

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

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

26 BPMN - Example

27 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

28 Links SOA: , SOA for the real world: /jw-1129-soa.html?page=1 Abstract Server Agile Model Driven Development (AMDD) Florin Leon – IP Curs 11 OAW

29 Bibliografie Robert Cecil Martin: Design Principles and Design Patterns. Robert Cecil Martin: Agile Development. Principles, Patterns, and Practices, Prentice-Hall, 2003

30 Vă Mulţumesc! Pentru prezenţă, răbdare, colaborare...


Download ppt "Tehnici Avansate de Ingineria Programării"

Similar presentations


Ads by Google