Aspectos Avanzados de la Tecnología de Objetos

Slides:



Advertisements
Presentaciones similares
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Advertisements

Red Social: “Un millón de Amigos”.
Plan de Implantación Sistemas de Información III
2011Integración de Aplicaciones Desarrollo Basado en Componentes.
Introducción a LAS Bases de Datos
UNIVERSIDAD TECNOLÓGICA ISRAEL CARRERA DE SISTEMAS INFORMÁTICOS
Arquitectura Orientada a Servicios (SOA)
Design pattern Ing. Darío Guillermo Cardacci
Introducción a la programación orientada a aspectos.
Teórico: Introducción
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.
Framework Hexápodo PHP fácil, rápido y sin dolor
Índice 1. Introducción, objetivos y justificación del proyecto.
TOGAF.
La manera más simple para describir un patrón es que ofrece una solución probada a un problema común.
Java 2 Platform Enterprise Edition
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Ingeniería del Software
Versión 2004 Enrique Bañuelos Gómez
Yeimi Constanza Patiño
Aspectos Avanzados de la Tecnología de Objetos
1  2007 Universidad de Las Américas - Escuela de Ingeniería - Aplicaciones Internet - Dr. Juan José Aranda Aboy IMPLEMENTACION DE APLICACIONES INTERNET.
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
HERRAMIENTAS CASE.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
Ingeniería de Software
Arquitectura de una aplicación
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Lenguajes de Programación Tema 3
Desarrollo de aplicaciones para ambientes distribuidos
Arquitectura Orientada a Servicios
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
3.- Introducción a Patrones de Diseño
Universidad Nacional de San Juan Facultad de Ciencias Exactas, Físicas y Naturales “WEB SERVICES” Integrantes: Ene Adriana Guevara Vanina Martínez Cintia.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Vista de interacción  Una vista de interacción muestra el flujo de control requerido que se establece entre los objetos.
Eva Lleonart Martín Asunción García-Menacho Rovira
Modelo-Vista-Controlador Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación original fue realizada en Smalltalk.
FRAMEWORK VS Código fuente
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Términos y Conceptos Básicos
Modelo de 3 capas.
Introducción a UML Departamento de Informática Universidad de Rancagua
Conceptos Fundamentales
Ingeniería de Requisitos
Introducción a UML Ing. José Manuel Poveda.
Patrones de diseño equipo n.1
Jairo Pinto Ing. sistemas
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
UML.
Introducción al proceso de verificación y validación.
DESARROLLO DE APLICACIONES PARA AMBIENTES DISTRIBUÍDOS ALUMNOS: MARIANA MIGNÓN RÉDING CARLOS ANTONIO CARRASCO MARTÍNEZ PROFESOR: DR. JOSÉ BERNARDO PARRA.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
MODELAMIENTO VISUAL Y UML
Integrantes: Castro José República Bolivariana De Venezuela Ministerio Del Poder Popular Para La Educación Superior Instituto Universitario Tecnológico.
Conociendo el modelo Cliente-Servidor
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Conociendo el modelo Cliente-Servidor. Introducción En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se llama.
Entregables del Proyecto
Transcripción de la presentación:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Patrones y Antipatrones Dr. Juan José Aranda Aboy

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 E-Mail is Dangerous Dr. Juan José Aranda Aboy

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

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

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> http://hillside.net/. [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> http://www.antipatterns.com/briefing/sld001.htm. [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> http://c2.com/ppr/. [SAG04] Software Architecture Group at University Illinois at Urbana-Champaign, <en línea> http://wiki.cs.uiuc.edu/SAG/. [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