Date post: | 20-Sep-2015 |
Category: |
Documents |
Upload: | iulia-dobra |
View: | 260 times |
Download: | 2 times |
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