La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Aspectos Avanzados de la Tecnología de Objetos

Presentaciones similares


Presentación del tema: "Aspectos Avanzados de la Tecnología de Objetos"— Transcripción de la presentación:

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

2 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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
From Mud to Structure Distributed Systems Interactive Systems Adaptable Systems Layers Pipes and Filtres Blackboard Broker Model-View-Controller Presentation-Abstraction-Control Microkernel Reflection 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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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 Dr. Juan José Aranda Aboy
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
Desarrollo de software Arquitectura Gestión The Blob Lava Flow Functional Decomposition Poltergeists Golden Hammer Spaghetti Code Cut and Paste Programming Mini antipatterns Continuous Obsolescence Ambiguous Viewpoint Boat Anchor Dead End Input Kludge Walking through a Minefield Mushroom Management Stovepipe Enterprise Vendor Lock-in Architecture by Implication Design by Committee Reinvent the Wheel Autogenerated Stovepipe Jumble Cover your Assets Wolf Ticket Warm Bodies Swiss Army Knife The Grand Old Duke of York Analysis Paralysis Death by Planning Corncob Irrational Management Project Missmanagement Blowhard Jamboree Viewgraph Engineering Fear of Success Intellectual Violence Smoke and Mirrors Throw it over the wall Fire Drill The Feud is Dangerous 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 Dr. Juan José Aranda Aboy
Referencia León Welicki “Patrones y Antipatrones: una Introducción - Parte II” Parte I [Alexander79] Alexander, Christopher: A Timeless Way of Building, Oxford University Press, 1979. [AIX77] Alexander, Christopher et al.: A Pattern Language, Oxford University Press, 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.: Pattern Oriented 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 Pattern Language, SAMS Publishing, 2000. [Fowler03] Fowler, Martin: Enterprise Application Architecture Patterns, Addison Wesley, 2003. [Fowler97] Fowler, Martin: Analysis Patterns: Reusable Object Models, Adisson Wesley, 1997. [Fowler99] Fowler, Martin: Refactoring: Improving the Design of Existing Code, Adisson Wesley, 1999. [Gall75] Gall, John: Systemantics: How Systems Work and Especially How They Fail, New York, Quadrangle, 1975. [GoF95] Gamma E., Helm, R., Johnson, R., Vlissides J.: Design Patterns: Elements of Reusable Object Oriented Software, Addison Wesley, 1995. [Hillside03] Hillside Group: Home of the Patterns Library, 2003 <en línea> [Hophe03] Hophe, Gregor, Woolf, Robert: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, Addisson Wesley, 2003. [Kerievsky04] Kerievsky, Joshua: Refactoring to Patterns, Addison-Wesley, 2004. [McCormick98] McCormick, Hays: Antipatterns Tutorial, 1998 <en línea> [Microsoft03] Microsoft Corp: Enterprise Solution Patterns, Microsoft Press, 2003. [Microsoft04] Microsoft Corp: Enterprise Development Reference Architecture, Microsoft Press, 2004. [PPR04] C2 WikiWikiWeb: Portland Pattern Repository <en línea> [SAG04] Software Architecture Group at University Illinois at Urbana-Champaign, <en línea> [ST01] Shalloway, Alan; Trott James: Design Patterns Explained: A New perspective on Object Oriented Design, Pearson Education, 2001. [Vlissides98] Vlissides, John: Pattern Hatching: Design Patterns Applied, Addison Wesley, 1998.te Dr. Juan José Aranda Aboy


Descargar ppt "Aspectos Avanzados de la Tecnología de Objetos"

Presentaciones similares


Anuncios Google