1 / 28

Aspectos Avanzados de la Tecnología de Objetos

Aspectos Avanzados de la Tecnología de Objetos. 7. Tópicos avanzados. Contenidos. Concurrencia. Patrones utilizados para resolver la Concurrencia Distribución: CORBA y RMI. Patrones utilizados para resolver la Distribución Patrones utilizados para resolver la Presentación

doris
Download Presentation

Aspectos Avanzados de la Tecnología de Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aspectos Avanzados de laTecnología de Objetos 7. Tópicos avanzados

  2. Contenidos • Concurrencia. • Patrones utilizados para resolver la Concurrencia • Distribución: CORBA y RMI. • Patrones utilizados para resolver la Distribución • Patrones utilizados para resolver la Presentación • Desarrollo bajo el modelo cliente - servidor e Internet. Dr. Juan José Aranda Aboy

  3. Objetivos específicos • Conocer, describir y aplicar apropiadamente los patrones utilizados para resolver la concurrencia y la distribución. • Explicar las características de CORBA y Java RMI, comparándoles adecuadamente. • Utilizar el modelo Cliente – Servidor para construir sistemas. Dr. Juan José Aranda Aboy

  4. Patrones de arquitectura • Los patrones de arquitectura expresan el esquema fundamental de organización para sistemas de software. • Proveen un conjunto de subsistemas predefinidos; especifican sus responsabilidades e incluyen reglas y guías para organizar las relaciones entre ellos. • Los patrones de arquitectura representan el nivel más alto en el sistema de patrones propuesto en Pattern Oriented Software Architecture (POSA)- Volume 1, reflejado en la Figura: Dr. Juan José Aranda Aboy

  5. Patrones según el nivel de detalle Dr. Juan José Aranda Aboy

  6. Características • Ayudan a especificar la estructura fundamental de una aplicación. • Cada actividad de desarrollo es gobernada por esta estructura; por ejemplo, el diseño detallado de los subsistemas, la comunicación y colaboración entre diferentes partes del sistema, etc. • Cada patrón de arquitectura ayuda a conseguir una propiedad específica en el sistema global; por ejemplo, la adaptabilidad de la interfaz de usuario. • Los patrones que dan soporte a características similares se agrupan en una misma categoría. Dr. Juan José Aranda Aboy

  7. Categorías de POSA • En POSA, libro de referencia de patrones de arquitectura, se divide a los patrones en las siguientes categorías: • From Mud to Structure: los patrones en esta categoría ayudan a evitar un “mar” de componentes u objetos. En particular, soportan una descomposición controlada de una tarea del sistema en subtareas que cooperan. • Distributed Systems • Interactive Systems • Adaptable Systems Dr. Juan José Aranda Aboy

  8. Clasificación de patrones de arquitectura de POSA Dr. Juan José Aranda Aboy

  9. Pattern of Enterprise Application Architecture (PEAA) • Describe una gran cantidad de patrones orientados a la arquitectura de aplicaciones empresariales. • La visión es más pragmática y está alineada a la definición de arquitectura que establece: • “…1) deconstrucción de más alto nivel de un sistema en sus partes componentes; • 2) aquellas cosas que resulta difícil cambiar…” Dr. Juan José Aranda Aboy

  10. Categorías de PEAA • Se definen las siguientes categorías de patrones: • Layering: Patrones para dividir un sistema en capas. • Organización de la lógica del dominio: Formas de organizar los objetos del dominio. • Mapping to Relational Databases: Se relaciona con la comunicación entre la lógica del dominio y los repositorios de datos. Incluye el mapeo entre modelos de objetos y bases de datos relacionales. En la actualidad, se consume mucho tiempo de desarrollo en la realización de estas tareas debido a las diferencias de impedancia entre SQL y los lenguajes orientados a objetos tales como C#, C++, Java, etc. Dr. Juan José Aranda Aboy

  11. Categorías de PEAA • Presentación Web: La presentación Web es uno de los desafíos que han tenido que sortear en los últimos años las aplicaciones empresariales. Los clientes delgados Web proveen muchas ventajas, siendo una de las principales la facilidad de distribución (no es necesario instalar software en los equipos cliente). Esta categoría incluye una serie de patrones para gestionar la presentación Web. • Concurrencia: Manejo de la concurrencia. Las aplicaciones actuales basadas en tecnologías Web tienen grandes necesidades de gestión de la concurrencia. • Estado de sesión: Patrones para el manejo de la sesión en servidores Web. • Estrategias de Distribución: Distribución de objetos en múltiples emplazamientos, basada en conocimientos empíricos en clientes. Dr. Juan José Aranda Aboy

  12. Clasificación de patrones de arquitectura de aplicaciones empresariales de PEAA Dr. Juan José Aranda Aboy

  13. Ejemplo: El patrón Modelo-Vista-Controlador • El Model-View-Controller (MVC) fue introducido inicialmente en la comunidad de desarrolladores de Smalltalk-80. • MVC divide una aplicación interactiva en 3 áreas: procesamiento, salida y entrada. Para esto, utiliza las siguientes abstracciones: • Modelo (Model): Encapsula los datos y las funcionalidades. El modelo es independiente de cualquier representación de salida y/o comportamiento de entrada. • Vista (View): Muestra la información al usuario. Obtiene los datos del modelo. Pueden existir múltiples vistas del modelo. Cada vista tiene asociado un componente controlador. • Controlador (Controller): Reciben las entradas, usualmente como eventos que codifican los movimientos o pulsación de botones del ratón, pulsaciones de teclas, etc. Los eventos son traducidos a solicitudes de servicio (“service requests” en el texto original) para el modelo o la vista. El usuario interactúa con el sistema a través de los controladores. Dr. Juan José Aranda Aboy

  14. MVC (2) • Las Vistas y los Controladores conforman la interfaz de usuario. • Un mecanismo de propagación de cambios asegura la consistencia entre la interfaz y el modelo. • La separación del modelo de los componentes vista y del controlador permite tener múltiples vistas del mismo modelo. • Si el usuario cambia el modelo a través del controlador de una vista, todas las otras vistas dependientes deben reflejar los cambios. • Por lo tanto, el modelo notifica a todas las vistas siempre que sus datos cambien. • Las vistas, en cambio, recuperan los nuevos datos del modelo y actualizan la información que muestran al usuario. • La figura muestra la estructura del patrón MVC: Dr. Juan José Aranda Aboy

  15. Diagrama de clases de MVC Dr. Juan José Aranda Aboy

  16. Características • Este patrón es muy popular y ha sido portado a una gran cantidad de entornos y frameworks como entre los que se encuentran WinForms, ASP .Net, etc. • Las herramientas de programación visual como Visual Basic, Visual Studio .Net, etc., siguen también alguna variante de este esquema. • El MVC es un patrón ampliamente utilizado en múltiples plataformas y lenguajes. Dr. Juan José Aranda Aboy

  17. Principales beneficios • Menor acoplamiento • Desacopla las vistas de los modelos • Desacopla los modelos de la forma en que se muestran e ingresan los datos • Mayor cohesión • Cada elemento del patrón esta altamente especializado en su tarea (la vista en mostrar datos al usuario, el controlador en las entradas y el modelo en su objetivo de negocio) Dr. Juan José Aranda Aboy

  18. Principales beneficios (2) • Las vistas proveen mayor flexibilidad y agilidad • Se puede crear múltiples vistas de un modelo • Se puede crear, añadir, modificar y eliminar nuevas vistas dinámicamente • Las vistas pueden anidarse • Se puede cambiar el modo en que una vista responde al usuario sin cambiar su representación visual • Se puede sincronizar las vistas • Las vistas pueden concentrarse en diferentes aspectos del modelo. Dr. Juan José Aranda Aboy

  19. Principales beneficios (3) • Mayor facilidad para el desarrollo de clientes ricos en múltiples dispositivos y canales • Una vista para cada dispositivo que puede varias según sus capacidades • Una vista para la Web y otra para aplicaciones de escritorio • Más claridad de diseño • Facilita el mantenimiento • Mayor escalabilidad Dr. Juan José Aranda Aboy

  20. Patrones de diseño en el MVC • Un patrón de arquitectura puede contener varios patrones de diseño. • El patrón de arquitectura Model-View-Controller contiene (o puede contener) los siguientes patrones de diseño: • Observer: Para el mecanismo de publicación y suscripción que permite la notificación de los cambios en el modelo a las vistas. • Composite: para la creación de vistas compuestas. Utilizando este patrón podemos crear una jerarquía de vistas y tratar a cada vista compuesta igual que una a una vista normal. Dr. Juan José Aranda Aboy

  21. Patrones de diseño en el MVC (2) • Strategy: En la relación entre las vistas y los controladores. Utilizando este patrón podemos cambiar dinámicamente o en tiempo de compilación los algoritmos del controlador mediante los cuales responde a su entorno. • Factory Method: Para especificar la clase controlador predeterminada de una vista. • Decorator: Para añadir capacidades adicionales a una vista (por ejemplo, scroll). • Proxy: Para distribuir la arquitectura (Modelo y Vista-Controlador) en diferentes emplazamientos. Dr. Juan José Aranda Aboy

  22. Antipatrones • Son soluciones negativas que presentan más problemas que los que solucionan. • Son una extensión natural a los patrones de diseño. • Comprender los antipatrones provee el conocimiento para intentar evitarlos o recuperarse de ellos. • El estudio de los antipatrones permite conocer los errores más comunes relacionados con la industria del software. • La obra de referencia en este campo es AntiPatterns: Refactoring Software, Architectures and Projects in Crisis [BMMM98], publicada en 1998. • Los antipatrones se documentan con cierto cinismo, lo cual los hace bastante graciosos y fáciles de recordar. Dr. Juan José Aranda Aboy

  23. Antipatrones (2) • Los nombres siempre aluden al problema que tratan con humor. • Se documentan mediante una plantilla (como los patrones de diseño) que incluye secciones para documentar la solución origen (que es la causa del problema), el contexto, las fuerzas en conflicto y las soluciones correctas propuestas (para más detalles sobre la plantilla, ver el Capítulo 3 de Antipatterns). • Un buen antipatrón explica por qué la solución original parece atractiva, por qué se vuelve negativa y cómo recuperarse de los problemas que ésta genera. Dr. Juan José Aranda Aboy

  24. Patrones y Antipatrones Dr. Juan José Aranda Aboy

  25. Clasificación de antipatrones Dr. Juan José Aranda Aboy

  26. Otros tipos de patrones… • Los patrones pueden encontrarse en todas las áreas de la ingeniería informática. A continuación, enumeraremos una serie de áreas donde existen patrones aceptados y conocidos en la industria: • Idiomas: Son específicos del lenguaje de programación. Describen cómo implementar ciertos aspectos de un problema utilizando las características de un lenguaje de programación. • Patrones de Análisis: Los patrones enumerados en el libro Analysis Patterns: Reusable Object Models [Fowler97] provienen de diversos dominios, incluyendo las áreas de la salud, servicios financieros y contabilidad. Cada uno de los patrones se describen en forma textual y con una simple notación pre-UML. Dr. Juan José Aranda Aboy

  27. Otros tipos de patrones… (2) • Patrones de Integración de Aplicaciones: Patrones para integración de aplicaciones. La obra más popular al respecto es Enterprise Integration Patterns [Hophe03], de Gregor Hophe y Bobby Woolf. • Patrones de UI: Patrones referentes a interfaces de usuarios. Existen distintas categorías bien diferenciadas: algunas se encargan de detalles relacionados con la cognición, memoria a corto plazo y mejoras en la experiencia del usuario, mientras que otros describen técnicas de ingeniería para crear interfaces de usuario. • Patrones de Pruebas: Patrones para diseñar y realizar pruebas. Dr. Juan José Aranda Aboy

  28. Referencia • León Welicki “Patrones y Antipatrones: una Introducción - Parte II” Parte I • [Alexander79] Alexander, Christopher: A TimelessWay of Building, Oxford UniversityPress, 1979. • [AIX77] Alexander, Christopher et al.: A PatternLanguage, Oxford UniversityPress, 1977. • [BMMM98] Brown, W., Malveau, R., Mc Cormick III, H., Mowbray, T.: Antipatterns: Refactoring Software, Architectures and Project in Crisis, Wiley and Sons, 1998. • [Buschman96] Buschmann, Frank et al.: PatternOriented Software Architecture, Volume 1: A System of Patterns,Willey & Sons, 1996. • [Cueva04] Cueva Lovelle, Juan Manuel: Tecnología de Objetos: Patrones de Diseño, 2004. • [Evitts00] Evitts, Paul: A UML PatternLanguage, SAMS Publishing, 2000. • [Fowler03] Fowler, Martin: Enterprise ApplicationArchitecturePatterns, AddisonWesley, 2003. • [Fowler97] Fowler, Martin: AnalysisPatterns: Reusable ObjectModels, AdissonWesley, 1997. • [Fowler99] Fowler, Martin: Refactoring: ImprovingtheDesign of ExistingCode, AdissonWesley, 1999. • [Gall75] Gall, John: Systemantics: HowSystemsWork and EspeciallyHowTheyFail, New York, Quadrangle, 1975. • [GoF95] Gamma E., Helm, R., Johnson, R., Vlissides J.: DesignPatterns: Elements of Reusable ObjectOriented Software, AddisonWesley, 1995. • [Hillside03] HillsideGroup: Home of thePatterns Library, 2003 <en línea> http://hillside.net/. • [Hophe03] Hophe, Gregor, Woolf, Robert: Enterprise IntegrationPatterns: Designing, Building, and DeployingMessagingSolutions, AddissonWesley, 2003. • [Kerievsky04] Kerievsky, Joshua: RefactoringtoPatterns, Addison-Wesley, 2004. • [McCormick98] McCormick, Hays: Antipatterns Tutorial, 1998 <en línea> http://www.antipatterns.com/briefing/sld001.htm. • [Microsoft03] Microsoft Corp: Enterprise SolutionPatterns, Microsoft Press, 2003. • [Microsoft04] Microsoft Corp: Enterprise DevelopmentReferenceArchitecture, Microsoft Press, 2004. • [PPR04] C2 WikiWikiWeb: Portland PatternRepository<en línea> http://c2.com/ppr/. • [SAG04] Software ArchitectureGroup at University Illinois at Urbana-Champaign, <en línea> http://wiki.cs.uiuc.edu/SAG/. • [ST01] Shalloway, Alan; Trott James: DesignPatternsExplained: A New perspectiveonObjectOrientedDesign, PearsonEducation, 2001. • [Vlissides98] Vlissides, John: PatternHatching: DesignPatternsApplied, AddisonWesley, 1998.te Dr. Juan José Aranda Aboy

More Related