Introducción a los patrones de Software

Documentos relacionados
Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

Programación Orientada a Objetos 2

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

Patrones de Diseño. Programa de Estudio.

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

Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2014/15 Curso 4º Cuatrimestre 1º

CLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

A continuación se describe con mayor detalle cada una de tales unidades:

Capítulo 16. Diagrama de Clases UML

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

Aplicaciones Móviles. Unidad 2: Patrones de Diseño de Software

Patrones Arquitectónicos de Software

UML 2 Iniciación, ejemplos y ejercicios corregidos

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

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

Uso de Patrones de diseño

Arquitectura de Software. Juan Bernardo Quintero

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

Desarrollo de Aplicaciones Empresariales

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

Lógica de Negocios. Esteban Calabria 2007

Patrones. Maestría en Ingeniería de Software

SISTEMAS DE INFORMACIÓN II TEORÍA

Ingeniería de Software Arquitectura y Diseño [2]

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

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

Curso: Diseño Orientado a Objetos Patrones de Diseño

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

Patrones. (Conceptos Generales)

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

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

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

Crear diagramas basados en UML para la representación de la solución a un problema mediante el Paradigma Orientado a Objetos.

Programación 4. Diseño Patrones de Diseño

Arquitectura de Software: Estilos y Patrones

Tema 3 - Principios de diseño Ingeniería del Software de Gestión II Grupo de Ingeniería del Software

TRABAJO DE DIPLOMA CÓDIGO DE MATERIA 29

Diseño de Software Basado en Patrones. César Julio Bustacara M.

ESCUELA POLITÉCNICA NACIONAL

Capítulo 17 Modelo de Diseño: realización de los casos de uso con los patrones GRASP

SILABO DEL CURSO DISEÑO DE SOFTWARE 1. DATOS GENERALES

Diseño Basado en Componentes. Curso 2008/09

Arquitectura de Software

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

UNIVERSIDAD DE CIENCIAS EMPRESARIALES Y SOCIALES FACULTAD DE CIENCIAS EMPRESARIALES

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD INGENIERÍA PROYECTO CURRICULAR MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Ingeniería del software I Patrones de Diseño

Creación de Soluciones usando Patrones

DISEÑO DE APLICACIONES ORIENTADAS A OBJETOS

Unidad IV: Modelo de Diseño 4.1. Estrategias de diseño

Tema 6. Patrones de diseño.

Diseño y Evaluación de Arquitecturas de Software. Estilos Arquitectónicos

Unified modeling language

PHP Laravel. Programa de Estudio.

Arquitecturas Software. Arquitecturas Software. Arquitecturas Software. Juan José Moreno Navarro. Motivación: Idea principal: Características:

TRABAJO PRÁCTICO 7: OBJETOS

Asignatura: Metodologías, Desarrollo y Calidad en la Ingeniería de Software. Contenidos: Competencias 1 : Cuatrimestre: 1º ECTS: 6 Carácter: OB

UNT INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE

Patrones de Diseño. M.C. Juan Carlos Olivares Rojas

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

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

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Estilos Arquitectónicos

Ingeniería del Software

Patrones de Diseño. Creado por: Javier Garzás Actualizado por: Santiago Moral

Validación de Patrones de Diseño de Comportamiento a través de Perfiles UML

UML (Lenguaje de Modelado Unificado) y Diagramas de Casos de Uso

octubre de 2007 Arquitectura de Software

Tema 1. Introducción a UML C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA M A R Í A

Diagramas De Casos De Uso

12/08/2017. Casos de uso. Casos de uso. Casos de uso. Casos de uso

Análisis de Patrones de Software y su aplicación en un Framework de Desarrollo utilizando plataforma.net

Diagrama de Clases I: asociaciones

Patrones de Diseño GOF (The Gang of Four) en el contexto de Procesos de Desarrollo de Aplicaciones Orientadas a la Web

PATRONES DE DISEÑO FRAMEWORKS

Redalyc. Giraldo G., Gloria L.; Acevedo O., Juan F.; Moreno N., David A.

Transcripción:

Introducción a los patrones de Software Dpto. de Ingeniería de Sistemas y Computación Universidad de los Andes Material de base: Gloria Cortés y Rubby Casallas Referencias LARMAN, Craig. Applying UML and Patterns. Prentice Hall. 1998. Patrones GRASP, Cap. 18 1

Agenda Introducción a los Patrones Patrones GRASP Introducción a los Patrones Qué es un Patrón? Es una solución reutilizable de problemas recurrentes que ocurren durante el desarrollo del software Ayudan a entender las soluciones del problema con un vocabulario igual lo que permite un mejor entendimiento Existen diferentes tipos de patrones 2

Introducción a los Patrones Características Tiene un nombre Tiene un contexto o problema a resolver Tiene una solución Tiene unas consecuencias al utilizarlo Tipos de Patrones Arquitecturales - Buschmann Subdivisión de Sistemas (3) Layers, Pipes and Filter, Blackboard Sistemas Distribuidos (1) Broker Sistemas Interactivos (2) Model View Controller, Presentation Abstraction Control Sistemas Adaptables (2) Microkernel, Reflection 3

Tipos de Patrones Generales Grand Delegación, Interface, Immutable, Marker Interface, Proxy Estructurales Gamma y Grand Adapter, Iterator, Bridge, Facade, Flyweight, Virtual Proxy etc Creación Gamma y Grand Factory Method, Abstract Factory, Builder, Prototype, Singleton, Object Pool, etc. Tipos de Patrones Particionamiento Gamma y Grand Layered Initialization, Filter, Composite Comportamiento Gamma y Grand Command, Mediator, Observer, State, Strategy, Visitor. Concurrencia - Grand Single Thread Execution, Guarded Suspension, Balking, Read/Write Lock, Produce-Consumer Asignación de Responsabilidades Larman GRASP 4

Patrones General Buschmann 17 patrones Gamma 23 patrones Grand 41 patrones Larman 10 patrones Patrones GRASP General Responsability Assignment Software Patterns Asignación de Responsabilidades Expert Creator Low Coupling High Cohesion Controller 5

Patrones GRASP Motivación La asignación de responsabilidades es la habilidad más importante en el análisis y diseño orientado por objetos Respetar los principios fundamentales es uno de los factores críticos, para obtener diseños reutilizables, mantenibles y extendibles. GRASP: descripción de los principios fundamentales de la asignación de responsabilidades expresados como patrones Patrones GRASP En que consiste la responsabilidad? Obligaciones o contratos de una clase Dos clases de responsabilidades Conocer Conocer la información privada del objeto Conocer acerca de los objetos relacionados Conocer acerca de lo que se puede calcular o derivar 6

Patrones GRASP Hacer Realizar algo él mismo Iniciar acciones en otros objetos Controlar o coordinar actividades en otros objetos. Patrones GRASP Cuando se asignan resposabilidades? En la fase de análisis? Definición de los servicios de los componentes de la arquitectura global Responsabilidades de hacer Definición de los atributos de las clases del modelo conceptual del mundo. Definición de los diagramas de interacción, para refinar el modelo conceptual del mundo. 7

Patrones GRASP Cuando se asignan resposabilidades? En la fase de diseño: Diseño estructural, refinamiento del modelo conceptual del mundo Responsabilidades de conocer Definición de métodos Patrones GRASP Quién tiene la responsabilidad de: atender un evento del sistema? crear un objeto? realizar una operación (distinta de crear o responder un evento)? Cómo utilizar los patrones de evaluación: alta cohesión vs. bajo acoplamiento? 8

Expert pattern Cada objeto es responsable por mantener su propia información (principio de encapsulamiento): conoce y puede informar el valor de sus atributos puede modificar el valor de sus atributos Si tiene relaciones de agregación (fuerte) con otros objetos (sus partes), también será responsable de conocer la información de ellos, de crearlos (Creator pattern) y de delegarles las operaciones. Creator Pattern El objeto B tiene la responsabilidad de crear objetos de la clase A si: B agrega objetos A B contiene objetos A B registra objetos A B usa (exhaustivamente) objetos A B posee la información necesaria para inicializar A 9

Low coupling pattern Acoplamiento es la medida de cuánto una clase esta conectada (tiene conocimiento) de otras clases. Es un patrón evaluativo: un bajo acoplamiento permite que el diseño de clases sea más independiente. Reduce el impacto de los cambios y aumenta la reutilización. No puede ser considerado aisladamente. Puede no ser importante si la reutilización no es un objetivo. High cohesion pattern Cohesión funcional dentro de una clase es una medida que indica cuán relacionadas están las responsabilidades de una clase. Es un patrón evaluativo: entre más alta cohesión mas fácil de entender, de cambiar, de reutilizar. No puede ser considerado aisladamente. 10

11

12

13

14

Controller pattern (1) Asignar la responsabilidad de manejar los mensajes eventos del sistema a una clase que representa una de las siguientes elecciones: el sistema total la organización algo en le mundo real que está activo - por ejemplo el rol de una persona una manija artificial de los eventos del sistema relacionados con un caso de uso 15

Controller pattern (2) Un controller o varios? Usar los patrones de evaluación (cohesión/acoplamiento) para decidir. En particular, si hay muchos eventos, un solo objeto puede volverse poco cohesivo! Si es necesario guardar o asegurar una secuencia de eventos es mejor un controller por caso de uso. Controller pattern (3) Un controller despacha operaciones. Al principio del análisis existirá una clase: System servicio1() serviciok() Un controller NO es un objeto de la interfaz!! 16

Decisiones de diseño GRASP Refinamiento estructural Se modifica y completa el diagrama de clases del mundo Actividades de diseño Verificación de requerimientos contra el diagrama de clases Se realiza haciendo los diagramas de interacción para cada uno de los requerimientos Utilizar los patrones GRASP para justificar las decisiones que se tomen Documentar las decisiones tomadas y completar la información del diseño 17

Actividades de diseño Tipos de decisiones a tomar Agregar/eliminar clases, atributos, métodos o asociaciones Asignar cardinalidad a las asociaciones Asignar roles a las asociaciones Completar información de los atributos ( decidir tipo, representación y restricciones ) Completar información de los métodos ( parámetros, resultados, contrato) Evaluación de opciones atributo o asociación? 18