Antonio Vallecillo GISUM: Grupo de Ingeniería del Software de la Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación Universidad.

Slides:



Advertisements
Presentaciones similares
SISTEMAS DE INFORMACIÓN I
Advertisements

U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
Plan de Implantación Sistemas de Información III
Lenguaje Unificado de Modelado
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
FACHADA.
Aplicación de MDA a la Ingeniería del Conocimiento
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
Lidia Fuentes y Antonio Vallecillo GISUM: Grupo de Ingeniería del Software de la Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación.
Programación en Java Instructor:.
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Lección 1 Introducción a la POO
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Entornos orientados a objetos
UNIVERSIDAD LATINA (UNILA) INTRODUCCION A LA PROGRAMACIÓN
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Ingeniería del Software
Yeimi Constanza Patiño
Aspectos Avanzados de la Tecnología de Objetos
1  2008 Universidad de Las Américas - Ingeniería de Software : Dr. Juan José Aranda Aboy ACI491: Ingeniería de Software Unidad 7: Proceso de Ingeniería.
Algoritmo y Estructura de Datos I I Facultad de Ingeniería y Arquitectura Ing. Juan José Montero Román. Sesión 12 - Introducción.
Desarrollo de Software Basado en Componentes
Marzo 2007 Lenguajes Visuales Clase III.
Requerimientos No Funcionales
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Lenguaje C++ Segunda parte
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04) MDA Aplicado: Una Gramática de Grafos para la Transformación de.
SEMANA Introducción.
Modelado Arquitectónico
UML – Lenguaje de Modelado Unificado
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
LEDA Un Lenguaje para la Especificación y Validación de Arquitecturas de Software Carlos Canal Velasco Depto. de Lenguajes y Ciencias de la Computación.
Metodologías de desarrollo de software Argenis Aguiar Milagro Adrian Victor Rodriguez Keila Volcanes Luis Diaz.
Ingeniería de Software
Generación de Aplicaciones a partir de Descripciones Arquitectónicas en Extensiones de xADL Nadia Gámez Directoras: Lidia Fuentes y Mónica Pinto Universidad.
Programación Orientada a Aspectos (POA)
Ingeniería de Software Orientado a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Lenguajes de Programación Tema 3
Poder Expresivo de UML 2.0 para especificar arquitecturas de Software
Metodologías Orientadas a Objetos Maestría de Ingeniería Telemática Universidad del Azuay Sesión 2.
Introducción al modelado Unificado
Ingeniería de Software Asistida por Computadora
3.- Introducción a Patrones de Diseño
Son la base para la búsqueda de soluciones o problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
1 Diseño Orientado al Objeto Agustín J. González ELO-326: Seminario de Computadores II 2do. Sem
Diagramas de Interacción.
Reuso y Reingeniería M.C. Juan Carlos Olivares Rojas.
Introducción a UML Departamento de Informática Universidad de Rancagua
Conceptos Fundamentales
Ingeniería de Requisitos
Jairo Pinto Ing. sistemas
UML.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Ris2K Ingeniería del Software II Click to edit city and date.
MODELAMIENTO VISUAL Y UML
Modelado Orientado a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Transcripción de la presentación:

Antonio Vallecillo GISUM: Grupo de Ingeniería del Software de la Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. España 2ª Parte: Marcos de Trabajo

2 Contenido: Marcos de trabajo (Frameworks) orientados a objetos y a componentes Marcos de trabajo (Frameworks) orientados a objetos y a componentes Clasificación de los MTs Clasificación de los MTs Patrones de Diseño: su utilidad Patrones de Diseño: su utilidad

3 Marcos de Trabajo (Application Frameworks) * Un MT es un diseño reutilizable de todo o parte de un sistema, representado por un conjunto de clases abstractas y la forma en la que sus instancias interactúan * Un MT es el esqueleto de una aplicación que debe ser adaptado a necesidades concretas por el programador de la aplicación

4 Caracterización de los MTs Arquitectura especializada para un dominio de aplicación Arquitectura especializada para un dominio de aplicación Define interfaces de componentes Define interfaces de componentes Establece reglas de interacción entre ellos Establece reglas de interacción entre ellos Implementa alguno de los componentes Implementa alguno de los componentes El usuario encaja sus componentes en el marco El usuario encaja sus componentes en el marco

5 Desarrollo de Software basado en MTs Ventajas: Ventajas:  Aumenta la reutilización  Minimiza riesgos  Reducción de los costes de producción  Mejora de la calidad final del producto è Orientado a objetos (C++, Java) è Composicional Diseño del MT

6 Utilización de un MT  Valorar la adecuación de un MT a un problema  Comprender su arquitectura  Identificar los “hot spots”  Adaptar/Extender el MT El problema de la documentación El problema de la documentación  No existe documentación o es pobre  No es estándar  No tiene una semántica formal  Dirigida a diferentes tipos de usuarios

7 Documentación de MT (I)  Entornos gráficos  Grafos (Eusel et al. 1997, Florijn et al. 1997)  Secuencias de mensajes (Lange et al. 1995)  Aportan conocimiento más profundo del MT  Sin una metodología para usar ese conocimiento  Útil sólo en la fase de identificación del MT  Contratos de Reutilización  Definen la cooperación entre los diseñadores del MT y los encargados de extenderlo o adaptarlo (Steyaert et al. 1996, Codenie et al. 1997)

8 Documentación De MT(II)  Patrones de Diseño (Design Patterns)  Útil tanto para diseñar la arquitectura de un MT como para documentar el diseño  Lange y Nakamura, 1995  Odenthal y Quiebel-Cirkel, 1997  Meijler y Engel, 1997  Herramientas visuales  Enfoque de mayor aceptación actualmente  Notaciones visuales para representar componentes, conectores y enlaces  Tendencia: Complementar con LDAs

9 Extensión de MTs Atendiendo a la forma en que un MT puede ser extendido podemos clasificar éstos en: Atendiendo a la forma en que un MT puede ser extendido podemos clasificar éstos en:  MTs de caja de cristal  MTs de caja blanca  MTs de caja negra  MTs de caja gris

10 Ejemplo de MT: MultiTel ClassEvent type : String from : String args : Object[] Component usp :LocalUSP type : String event (e :ClassEvent) SetLocalUSP (usp :LocalUSP) Componente publicclassVCManagerextendsComponent { publicvoidshowSchedControl(){ if(sched==null){ try{ sched=newScheduleFrame(usp,this); sched.show(); }catch(Exception e){ System.out.println("Exception"+e); e.printStackTrace(); } } } publicvoidturnRequest(Stringuser){ message("User "+user+" hasrequestedtheturn"); Objectargs[]={user}; if (/*Managerdecision */) event("takeTurn",args);... } }

11 MultiTel: Conectores public void catchEvent(ClassEvent e) throws Exception { try { synchronized(state) { Method m; m=(state.getClass().getMethod(e.type,e.args)); state=(State)m.invoke(state,e.args);} if (state=null) finalizeConnector(); else startState(); } catch (Exception e) {} } State sender : Pid start () SConn_State1 Event1 () Event2 () SConn_State2 Event3 () Event4 () Connector catchEvent (e : ClassEvent) SConn_Prot Event1 ()... Conector Paquete reflective de Java Patrón de diseño State

12 MultiTel: Conectores packagemtsb.vc; publicclass SSchedMPTU1_Idleextends SSchedMPTU1_Prot{ public SSchedMPTU1_Idle(LocalUSPusp){ super(usp); } publicvoidstart(){ sendMessage("Manager","showSchedControl"); sendMessage("Manager","showClassControl"); broadcast(“Participant”,”initTurn”); } publicvoidturnRequest(Stringuser){ message("User "+user+" hasrequestedtheturn"); Objectarg[]={user}; sendMessage( scheduler,"turnRequest",arg); } publicStatetakeTurn(){ Object[]arg={usp.user}; sendMessage("VirtualConnection","emit",arg); return (State)new SSchedMPTU1_Speaking(usp); }... } Connector Statestate; catchEvent(ClassEvent e)

13 MultiTel: Composición dinámica de componentes y conectores C3P USP P1,P2,cc1,cc2 =CA cc1=Access P1=Participant AS Búsqueda del contexto global Event(e)catchEvent(e) Composición dinámica event(ClassEvent event){ for(i=0;i<numberOfConnectors();i++){ if(service.catchEvent(i, event.type,event.from,role)){ String location =service.connectorLocation(i); String to =service.connectorName(i); Connector ref =service.connectorRef(i); String newname=service.getEventRenaming(...); ClassEvent renamed=event.rename(newname); if(location.equals("local")){ if(ref!=null){ propagateEvent(to,renamed); } if (location.equals(“remote”)) { Vector usps=getGlobalContext(); for(int j=0;j<usps.size();j++){ USP r=getRemoteUSP(remoteusp); if(r.isThisConnector(to).booleanValue()){ transmitEvent(remote,to,renamed); } else // URL.... }

14 Extensión de MultiTel: programación de un servicio publicclassTeleUniextendsServiceUSP{ publicvoid defComponents (){ component("Participant",{"participant,local","manager,remote"},"mtsb.vc.TUParticipant"); component("Manager",{"participant,remote","manager,local"},"mtsb.vc.TUManager"); component("ACDB",{"participant,local","manager,remote"},"mtsb.vc.VCACDB");... } publicvoid defConnectors (){ connector("SCAccess",{"participant,local","manager,remote"},"mtsb.vc.SCAccess1"); connector("SMAccess",{"participant,remote","manager,local"},"mtsb.vc.SMAccess1");... } publicvoid loadConnections (){ String[] events1={"join"}; handlesEventsFrom("SMAccess",events1,"Manager"); String[] events2={"access"}; handlesEventsFrom("SCAccess",events2,"Participant");... } publicvoid participantInitialContext (){ try{ createComponent("Participant,SCAccess"); }catch(Exception e){System.out.println("InitialContext Error"); } } publicvoid managerInitialContext (){ try{ createComponent("Manager, ACDB,SMAccess, SSchedMP,..."); }catch(Exception e){ System.out.println("InitialContext Error ");e.printStackTrace();} } publicvoid loadOrganizationParameters (){ // Loadvalueforthe "scheduler"parameterof SSchedMPconnector }... }

15 Clasificación De Los Marcos De Trabajo (I) Horizontales: Horizontales:  Infraestructuras de comunicaciones  Interfaces de usuario  Entornos visuales  Plataformas de componentes distribuidos, etc Verticales: Verticales:  Telecomunicaciones (TINA, MultiTEL)  Fabricación  Multimedia (JMF), etc.

16 Clasificación De Los Marcos De Trabajo (II) Software de base Software de base  Infraestructuras de comunicaciones  Plataformas de componentes Generales Generales  Programación de GUIs  Entornos de programación visual  Programación de redes De Empresa De Empresa  específicos de un dominio, a medida

17 Components Frameworks  Específicos para el desarrollo de aplicaciones basadas en componentes reutilizables  Presentan características especiales:  Composición tardía, interconexión dinámica, extensibilidad black-box, etc  Suelen definirse como implementación concreta de varios patrones de diseño sobre una plataforma de componentes concreta

18 ¿ Cuándo resulta conveniente definir un MT ? Mercado competitivo Mercado competitivo Plazos de desarrollo muy cortos Plazos de desarrollo muy cortos Dominio de aplicación complejo Dominio de aplicación complejo Solucionar problemas repetitivos Solucionar problemas repetitivos Ej: aplicaciones multimedia distribuidas

19 Interacción de MTs Problemas Problemas  Cohesión entre las clases de un MT  Solapamiento de dominio  Falta de estándares de MT Soluciones Soluciones  Adaptadores o wrappers  Patrones de diseño  Mediadores software

20 Patrones de Diseño (Design Patterns) Complementarios con los MT Complementarios con los MT Granularidad más fina que los MT Granularidad más fina que los MT Un MT suele estar compuesto por una colección de patrones de diseño. Un MT suele estar compuesto por una colección de patrones de diseño. * Un patrón de diseño ofrece una solución abstracta a un problema de diseño que aparece muy frecuentemente, expresada mediante un conjunto de relaciones e interacciones entre sus componentes

21 Ventajas e Inconvenientes Ventajas: Ventajas:  Permiten reutilizar soluciones de problemas comunes.  Están probados y son lo suficientemente flexibles para adaptarse a necesidades específicas. Inconvenientes: Inconvenientes:  Su elevado número (falta de catalogación).  Su complejidad.  Composición poco definida.

22 PD: Adaptador * El PD Adapter o Wrapper se utiliza para convertir la interfaz de una clase en otra interfaz, que es la esperada por el objeto cliente. Adapta interfaces incompatibles clienteDestino Peticion() Adapter Peticion() Servidor OtraPeticion() p.OtraPeticion()

23 PD: Puente * El PD Bridge se utiliza para desacoplar la definición abstracta de un objeto de su implementación. De esta forma ambas pueden evolucionar independientemente Abstraccion Operacion() OperacionRedefinida Implementacion OperacionImpl() ImplementaA OperacionImpl() ImplementaB OperacionImpl() imp.OperacionImpl()

24 Bibliografía  M. Fayad, R. Johnson y D. Schmidt, Building Application Framework, Wiley & Sons,  M. Fayad, R. Johnson y D. Schmidt, Implementing Application Frameworks, Wiley & Sons,  M. Fayad y R. Johnson, Domain-Specific Application Frameworks, Wiley & Sons,  M. Fayad, Object-Oriented Application Frameworks, Communications of the ACM, Vol. 40, No. 10, Octubre  E. Gamma et. al., Design Patterns, Addison-Wesley,  J. Bosch, Design Patterns & Frameworks: On the Issue of Language Support, Actas del Workshop “Language Support for Design Patterns and Frameworks” del ECOOP’97.

25 Bibliografía  M. Mattsson, J. Bosch y M. Fayad, Framework Integration, problems, causes, solutions, Communication of the ACM, Vol. 42, no. 10, octubre  G. Odenthal y K. Quibeldey-Cirkel, Using Patterns for Design and Documentation, actas del ECOOP’97, pp ,  D. Schmidt, A Family of Design Patterns For Flexibly Configuring Network Services in Distributed Systems, actas del ICCDS’96,  A. Deimel, The SAP R/3 Business Framework, software - Concepts & Tools, Vol. 19, pp.29-36,  Research on Design Patterns for Concurrent, Parallel, and Distributed Systems.  