CLASE 10: MÁS PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez



Documentos relacionados
Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Patrones de diseño en PHP Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y PHP

Patrones de diseño en Java Los 23 modelos de diseño: descripción y soluciones ilustradas en UML 2 y Java

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

PATRONES DE DISEÑO. FAVA - Formación en Ambientes Virtuales de Aprendizaje. SENA - Servicio Nacional de Aprendizaje

PATRONES. Experto. Solución:

Capítulo 4 Patrones y Patrones de Diseño (ii)

Instructivo para la elaboración de un Manual Técnico

Programación Orientada a Objetos en Java

UML 2 Iniciación, ejemplos y ejercicios corregidos

Lógica de Negocios. Esteban Calabria 2007

Introducción a la Programación de Videojuegos y Gráficos

Diseño Basado en Componentes. Curso 2008/09

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Patrones de Diseño Orientados a Objetos 2 Parte

Estilos de Arquitectura y. Patrones de Diseño Arquitectónico. Patrones de Arquitectura

2.2.- Paradigmas de la POO

IN77J Orientación al Objeto para el e-business. 6. Diseño

Tema: Patrones de Diseño.

Capítulo 6: Conclusiones

Patrones GRASP. Macario Polo Usaola - Patrones GRASP 1

6.8 La Arquitectura del Sistema. [Proceso]

DISEÑO DE COMPONENTES DE SOFTWARE *

Decorador y Prototype

Crear un Software que sea adaptable a las necesidades de cualquier tipo de Institución de Educación Superior.

Patrones de Diseño. Ezequiel Postan. 1 Libro e índice. 2 Introducción

CC61J / CC Taller de UML Apuntes de Clase

ASIGNATURA: Ingeniería de software II DOCENTE: Licda.Carla Milagro López Vásquez RESPONSABLE: Rodolfo Alberto Palma Ramos CARRERA:

ESCUELA POLITÉCNICA NACIONAL

Patrones de diseño: Test 1

POLIMORFISMO "una interfaz, múltiples métodos".

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013

Métricas. Valentin Laime. Calidad de Software

Estructura de clases. Estructura de Objetos. Arquitectura de módulos. Arquitectura de procesos

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

TIPOS DE PATRONES. PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Planificaciones Técnicas de Diseño. Docente responsable: PANTALEO GUILLERMO GUSTAVO. 1 de 5

Tema 5. Diseño detallado.

LINEAMIENTOS TÉCNICOS CATEGORÍA DISEÑO ORIENTADO A OBJETOS SENASoft Santander Documento elaborado por: Juan de Jesús Lizcano Sánchez

TRABAJO DE DIPLOMA CÓDIGO DE MATERIA 29

Servicio de groupware

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software

Diseño orientado al flujo de datos

CLASE 7: ARQUITECTURA: DEL ANÁLISIS AL DISEÑO DIAGRAMAS DE SECUENCIA Y CONTRATOS

UNIVERSIDAD DEL NORTE CENTRO DE INFORMÁTICA REGLAMENTO DE SERVICIOS Y RECURSOS ...

La importancia del desarrollo para el buen diseño del software

Patrones de Diseño. Programa de Estudio.

Fundamentos del diseño 3ª edición (2002)

Modelado Estático Avanzado (Generalizaciones) Diseño de Software Avanzado Departamento de Informática

Grupo 16: Enseñanza de IS con MF

CAPÍTULO 2 ANTECEDENTES

Los requisitos de accesibilidad en un proyecto software. Implicaciones de usuarios discapacitados en el proceso software

Universidad Tecnológica Emiliano Zapata Tecnologías De la Información Y comunicación Área Sistemas informáticos

PROGRAMA DE EDUCACIÓN VIAL

Ingeniería de Software II Tema 2: Diseño

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

MODULO DE PROGRAMACION JAVA Nivel Básico-Intermedio

Curso de Java POO: Programación orientada a objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Diseño orientado a los objetos

Wiip Surveillance. Sistema de gestión de rondas de vigilancia. Wiip Systems C.B. S.L

INGENIERÍA DEL SOFTWARE I. Univ. Cantabria Fac. de Ciencias. Especificación de Requisitos. Práctica 2

Gestión de la Configuración

Patrones de software y refactorización de código

CAPITULO I EL PROBLEMA. Debido al crecimiento de clientes y en vía de mejorar la calidad de

MINISTERIO DE CIENCIA, TECNOLOGÍA Y MEDIO AMBIENTE. Programas de Ciencia, Tecnología e Innovación de Interés Nacional

La vida en un mundo centrado en la red

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Acuerdo de aprobación de la Normativa Básica de Correo Electrónico de la Universidad Miguel Hernández.

Capítulo 7: Introducción a la dinámica de servicios Web

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Service Oriented Architecture: Con Biztalk?

19. Packages o paquetes


Diagrama de Clases. Diagrama de Clases

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

NORMA ISO DE RIESGOS CORPORATIVOS

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

PEEPER PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS. Mayo Versión 2.1 OSCAR IVAN LÓPEZ PULIDO

Por qué es importante la planificación?

Comunicación entre procesos

CAPÍTULO 3 3 DISEÑO DE UN MECANISMO DE DETECCIÓN DE TRÁFICO MALICIOSO PARA REDUNAM

Modelado arquitectónico con UML

Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos

7. Distributed Data warehouse

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA

GESTIÓN DE COMPETENCIAS CLAVE EN LAS ORGANIZACIONES DEL TERCER SECTOR

Pequeño tutorial de fútbol de robots en Squeak

MINISTERIO DE JUSTICIA REGLAMENTO INTERNO DE USO DE CORREO ELECTRÓNICO, INTERNET E INTRANET EN EL MINISTERIO DE JUSTICIA

LA AUTOMATIZACIÓN DE LOS PROCESOS EMPRESARIALES EN EL NEGOCIO ELECTRÓNICO

- MANUAL TÉCNICO - Implantación de software de Marketing Online

Ética en la Investigación con seres humanos. Mod. 3 UD4: La investigación con datos personales

Notación UML para modelado Orientado a Objetos

Universidad de Cantabria

Capitulo III. Diseño del Sistema.

Transcripción:

CLASE 10: MÁS PATRONES Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Polimorfismo Problema: Cómo manejar las alternativas basadas en el tipo? Cómo crear componentes conectables? Solución: Cuando las alternativas o comportamientos relacionados varian según la clase asigne la responsabilidad para el comportamiento utilizando operaciones polimórficas.

Polimorfismo Corolario: NO UTILIZAR COMPROBACION DE TIPOS NI LOGICA CONDICIONAL PARA IDENTIFICAR LAS OPERACIONES SEGÚN EL TIPO. Condiciones: El uso de lógica condicional dificulta la mantenibilidad Componentes conectables: Contemplar como sustituir un componente servidor por otro sin que afecte al cliente. Ventajas: Se añaden fácilmente extensiones necesarias para nuevas variaciones. Las nuevas implementaciones se pueden añadir sin afectar a los clientes.

Polimorfismo

Fabricación Pura Problema: Qué objetos deberían tener la responsabilidad cuando no se quiere violar los objetivos de Alta cohesión y Bajo Acoplamiento, u otros, pero las soluciones que ofrece el Experto (por ejemplo) no son adecuadas? Solución: Asignar un conjunto de responsabilidades altamente cohesivas a una clase artificial o de conveniencia que no representa un concepto del dominio del problema algo inventado para soportar alta cohesión, bajo acoplamiento y reutilización -.

Fabricación Pura Ventajas: Soporta Alta cohesión puesto que las responsabilidades se factorizan en una clase de grano fino que solo se centra en un conjunto muy específico de tareas relacionadas. El potencial para reutilizar podría aumentar debido a la presencia de clases Fabricación Pura de grano fino cuyas responsabilidades tienen aplicación en otras aplicaciones.

Fabricación Pura

Indirección Problema: Dónde asignar una responsabilidad para evitar el acoplamiento directo entre dos (o más) cosas? Cómo desacoplar los objetos de manera que se soporte el bajo acoplamiento y el potencial para reutilizar permanezca más alto? Solución: Asignar la responsabilidad a un objeto que medie entre otros componentes o servicios de manera que no se acoplen directamente. Use patrón Adaptador. Ventaja: Disminuye el acoplamiento entre los componentes.

Indirección Indirección por medio de un adaptador

Variaciones Protegidas Problema: Cómo diseñar objetos, subsistemas y sistemas de manera que las variaciones o inestabilidades en estos elementos no tengan un impacto no deseable en otros elementos? Solución: Identificar los puntos de variaciones previstas o de inestabilidad asignando responsabilidades para crear una interfaz estable alrededor de ellos.

Variaciones Protegidas Variaciones Protegidas (VP) es un principio fundamental que motiva la mayoría de los mecanismos y patrones en la programación y el diseño destinados a proporcionar flexibilidad y protección frente a las variaciones.

Variaciones Protegidas Mecanismos Básicos: Diseño dirigido por los datos Se protege al sistema del impacto de las variaciones de los datos registrando exactamente la variante. (Parametrización) Búsqueda de servicios Se protegen los clientes de las variaciones en la ubicación de los servicios, utilizando una interfaz estable de la búsqueda del servicio (Jini, UDDI, etc).

Variaciones Protegidas Mecanismos Básicos Diseño dirigido por un intérprete Se protege al sistema del impacto de las variaciones lógicas registrando externamente la lógica, leyéndola, y utilizando un intérprete. Diseño reflexivo o de meta-nivel Se protege al sistema del impacto de la lógica o variaciones del código mediante algoritmos reflexivos que utilizan introspección y servicios de metalenguaje (Ej: Method.invoke).

Variaciones Protegidas Mecanismos Básicos Principio de sustitución de Liskov (PSL) El software (métodos, clases,...) que hace referencia a un tipo T (alguna interfaz o superclase abstracta) debería trabajar correctamente, o como se espera, con cualquier implementación o subclase de T. Ejemplo: Public void otrosimpuestos(adaptadorcalculadordeimpuestos calculador, Venta venta) { List lineasdeimpuestos = calculador.getimpuestos(venta);... }

Variaciones Protegidas Mecanismos Básicos Diseño de ocultación de la estructura (no hable con extraños) Un método solo debería enviar mensajes a los siguientes objetos: El objeto this o self; Un parámetro del método; Un atributo de this; Un elemento de una colección que es un atributo de this; Un objeto creado en el método. Los objetos directos son conocidos del cliente, los objetos indirectos son extraños. Un cliente debería hablar solo con conocidos y evitar hablar con extraños.

Variaciones Protegidas Mecanismos Básicos Diseño de ocultación de la estructura (no hable con extraños) Class Registro { private Venta venta; public void metodoalgofragil() { } dinero cantidad = venta.getpago().getcantidadentregada();... } venta.getpago() envía un mensaje a un conocido pero en venta.getpago().getcantidadentregada() el mensaje getcantidadentregada() se aplica a un Pago extraño.

Variaciones Protegidas Punto de variación: Variaciones en el sistema actual, existente o en los requisitos. Puntos de evolución: Puntos especulativos de variación que podrían aparecer en el futuro, pero que no están están presentes en los requisitos actuales. Ventajas de Variaciones Protegidas: Se añaden fácilmente las extensiones que se necesitan para nuevas variaciones; Se pueden introducir nuevas implementaciones sin afectar a los clientes; Se reduce el acoplamiento; Puede disminuirse el impacto o coste de los cambios.

Clasificación de los patrones de diseño GoF Patrones de Creación Para tratar en problema de la inicialización y configuración de objetos Cómo voy a crear mis objetos? Patrones Estructurales Para tratar con el desacoplamiento entre la interfaz y la implementación de las clases y los objetos Cómo las clases y los objetos se componen para formar estructuras más grandes y complejas? Patrones de Comportamiento Para tratar con las interacciones dinámicas entre clases y objetos Cómo manejar flujos de control complejos (comunicaciones)?

Catálogo de Patrones de diseño - GoF Propósito Creacional Estructural Comportamental Clase Factory Method Adapter Interpreter Alcance Objeto Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Momento Observer State Strategy Vistor

Beneficios de los patrones de diseño Inspiración Los patrones no proveen soluciones, inspiran soluciones Los patrones capturan explícitamente conocimientos de expertos y tradeoffs de diseño, y hacen que esta experticia esté disponible ampliamente. Facilitan la transición a las tecnologías orientadas a objetos.

Beneficios de los patrones de diseño Los patrones mejoran la comunicación entre los desarrolladores Los nombres de los patrones forman el vocabulario Ayudan a documentar la arquitectura de un sistema Mejoran la comprensión de los sistemas Los patrones de diseño habilitan la reutilización en gran escala de las arquitecturas de software

Debilidades de los patrones de software Los patrones no conducen a una reutilización del código directa. Los equipos pueden sufrir de sobrecarga de patrones. La integración de patrones en un proceso de desarrollo de software es una actividad de gran participación humana.