curs 11 isp reutilizare

22
Ingineria sistemelor de programe - Anca Ionita Tehnici de reutilizare pentru dezvoltarea sistemelor de programe Sabloane de proiectare, generatoare de programe

Upload: iulia-dobra

Post on 20-Sep-2015

261 views

Category:

Documents


2 download

DESCRIPTION

curs anul 2015 automatica

TRANSCRIPT

  • Ingineria sistemelor de programe - Anca Ionita

    Tehnici de reutilizare pentru dezvoltarea

    sistemelor de programe

    Sabloane de proiectare, generatoare de programe

  • Ingineria sistemelor de programe - Anca Ionita

    Cuprins

    Tehnici de reutilizare Sabloane de proiectare Generatoare de programe

  • Ingineria sistemelor de programe - Anca Ionita

    Tehnici de reutilizare. Definitii.

    Sabloane de proiectare elemente abstracte generice

    aplicatiilor, descriind obiecte abstracte si concrete si interactiunile dintre ele

    Ex. sablon observator

    Generatoare de programe incapsuleaza cunostinte

    despre un tip particular de aplicatii si pot genera sisteme sau fragmente de sisteme in acel domeniu

    Ex. generatoare de cod

    Biblioteci de programe biblioteci de clase si functii

    ce implementeaza abstractii folosite in mod curent

    Ex. biblioteca JDBC

    Incapsularea sistemelor de programe mostenite (legacy systems)

    sistemele mostenite pot fi incapsulate wrapped prin definirea unui set de interfete si furnizarea accesului la aceste sisteme prin aceste interfete

    Ex. incapsularea unei baze de date mySQL intr-un sistem Java

    Aplicatii configurabile se proiecteaza un sistem

    generic astfel incat sa poata fi configurat pentru nevoile specifice sistemului clientului

  • Ingineria sistemelor de programe - Anca Ionita

    Tehnici de reutilizare. Definitii.

    Dezvoltarea bazata pe componente sistemele sunt dezvoltate prin

    integrarea unor componente (colectii de obiecte) care sunt conforme unor modele standard

    Ex. CORBA

    Sisteme orientate pe servicii

    sistemele sunt dezvoltate prin legarea unor servicii furnizate din exterior

    Ex. portaluri dinamice

    Dezvoltarea orientata pe aspecte cod intretesut intr-o aplicatie in

    diferite puncte la compilarea programului

    Ex. limbajul AspectJ

    Frameworks colectii de clase abstracte si

    concrete, care pot fi adaptate si extinse pentru a crea sisteme de aplicatii

    Ex. MVC (Model View Controller)

    Integrare COTS (Commercial Off-The-Shelf )

    sistemele sunt dezvoltate prin integrarea unor sisteme de aplicatii existente

    Ex. aplicatii care ofera un API (Application Programming Interface)

    Linii de productie un tip de aplicatii este generalizat pe

    baza unei arhitecturi comune, astfel incat pot fi adaptate pentru diferiti clienti

    Ex. aplicatii de telefonie mobila

  • Ingineria sistemelor de programe - Anca Ionita

    Tehnici de reutilizare aprofundate

    Sabloane de proiectare

    Dezvoltare bazata

    pe componente

    Frameworks Linii de productie

    Dezvoltare orientata

    pe aspecte

    Generatoare

    de programe

    COTS Interfatarea

    sistemelor

    mostenite

    Sisteme orientate

    pe servicii Biblioteci

    Aplicatii

    configurabile

    Dupa @ Jan Sommervile, Software Engineering 8th Edition

  • Ingineria sistemelor de programe - Anca Ionita

    Sabloane de proiectare Definitii: descrierea unei probleme si a

    solutiei sale, validata prin experienta

    reutilizarea unei solutii de proiectare de nivel inalt

    un mod de a descrie bunele practici si de a transmite cunostintele

    Tipuri de sabloane: arhitecturale de proiectare detaliata de limbaje

    pentru sisteme

    distribuite pentru sisteme de timp

    real sabloane pentru testare

  • Ingineria sistemelor de programe - Anca Ionita

    Tipuri de sabloane de proiectare

    Destinate crearii de obiecte factory singleton

    Structurale adaptator proxy fatada

    Comportamentale mediator observator

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Factory Furnizeaza o interfata pentru a crea familii de obiecte, fara a specifica clasa lor concreta.

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Singleton

    class Singleton

    { public static Singleton* Instance(); protected Singleton();

    private: static Singleton* _instance; }

    Asigura faptul ca o clasa are o singura instanta si furnizeaza un punct global pentru accesarea acesteia.

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Adaptator

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

    Convertirea interfetei unei clase la o alta interfata, conform asteptarilor clientului.

  • Ingineria sistemelor de programe - Anca Ionita

    Conceptul de Proxy

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

    Furnizeaza un inlocuitor pentru un alt obiect, pentru a controla accesul la acesta.

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Proxy

    Trebuie sa aiba aceeasi interfata ca si subiectul real.

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul fatada Furnizeaza o interfata unificata in locul unui set de interfete

    dintr-un subsistem.

    In acest mod, subsistemul este mai usor de accesat si se reduce complexitatea.

    clase client

    clase subsistem

    Fatada

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Conceptul de Mediator

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

    Un obiect care incapsuleaza interactiunea altor obiecte.

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Mediator Obiectele nu fac referiri unele la altele, ci cunosc doar mediatorul.

    cuplare slaba reducerea numarului de interactiuni;

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Conceptul de observator

    @ Jan Sommervile, Software Engineering 8th Edition

    Separa afisarea starii unui obiect de obiectul in sine si permite furnizarea unor alternative de afisare.

  • Ingineria sistemelor de programe - Anca Ionita

    Sablonul Observator

    Se defineste o dependenta intre obiecte astfel incat, cand un obiect isi schimba starea, toate obiectele care depind de el sunt notificate si actualizate automat.

    Design Patterns: Elements of Reusable Object-Oriented Software @ Addison Wesley

  • Ingineria sistemelor de programe - Anca Ionita

    Generatoare de programe Bazate pe identificarea conceptelor,

    sabloanelor si algoritmilor pentru un anumit domeniu

    Aplicatii (programe) descrise printr-un limbaj specific domeniului Ex: Prelucrarea limbajelor

    Prelucrarea datelor de afaceri

    Generatoare de cod in CASE

  • Ingineria sistemelor de programe - Anca Ionita

    public class Minge { private float x; private float y; private float unghi; private float acceleratie; private Joc joc; public void setUnghi(float u) { } public void setAcceleratie(float a)

    { } public void rostogolire(Teren t) { } }

    Ex. 1 Generare cod Java din modele UML

    public class Crosa { private float x; private float y; private float unghi; private Joc joc; public void lovire(Minge

    m) { } }

    public class Joc { private Crosa crosa; private Minge minge; private Teren teren; } public class Groapa {

    private float x; private float y; private float diametru; private Teren teren; public void

    cadereGroapa(Minge m) { } }

    public class Teren { private String deumire; private Joc joc; private Margine[]

    margine; private Groapa[] groapa; public void ricosare(Minge

    m) { } public void

    cadereGroapa(Minge m) { } }

    public class Margine { private float x1; private float y1; private float x2; private float y2; private Teren teren; public void ricosare(Minge

    m) { } }

  • Ingineria sistemelor de programe - Anca Ionita

    Ex. 2 Generarea unui editor folosind GME (Generic Modeling

    Environment)

    definire concepte

    specifice domeniului

    (retele)

  • Ingineria sistemelor de programe - Anca Ionita

    Editor de retele generat cu GME retea editata

    concepte specifice

    domeniului (retele)

  • Ingineria sistemelor de programe - Anca Ionita

    Bibliografie Jan Sommervile, Software Engineering, 8th

    Edition, Addison-Wesley, 2006 E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design

    Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, 1998

    http://jude.change-vision.com/ GME web site Defining Domain-Specific Modeling Languages:

    Collected Experiences Janne Luoma, Steven Kelly, Juha-Pekka Tolvanen, www.metacase.com