Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Patrones de Diseño - UML

Presentación realizada para la cátedra Metodología del Desarrollo de Sistemas II, Universidad Abierta Interamericana. Una descripción de los patrones de diseño en la fase de diseño de un sistema informático.
by

Jacobo Andrés Dominguez

on 6 June 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Patrones de Diseño - UML

Patrones de diseño ¿Qué es un
patrón? Objetivos de los Patrones de Diseño Proporcionar catálogos de elementos reusables en el diseño de sistemas software. Se plantean como una buena herramienta para el diseño y la documentación de Aplicaciones Frameworks y Es una forma de formalizar la reusabilidad de código ante situaciones similares a las ya conocidas. "Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada mas de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma" Es una descripción de objetos y clases que se comunican y que son capaces de solucionar un problema de diseño en general, en un contexto en particular. Christopher Alexander Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides Formalizar un vocabulario común entre diseñadores y estandarizar el modo en que se realiza el diseño Aprovechar las experiencia de los desarrolladores para facilitar el aprendizaje de las nuevas generaciones de diseñadores. Patrones de Diseño base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de Interacción Interfaces Elementos esenciales debe poseer ciertas características... Nombre del patrón debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Problema debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias. Estructura
de
Patrones Nombre del patrón Clasificación del patrón Intención También conocido como Motivación Aplicabilidad Estructura Participantes Colaboraciones Consecuencias Implementación Código de ejemplo Usos conocidos Patrones relacionados Tipos
de
Patrones Experto 1 ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el Diseño Orientado a Objetos? Problema 2 Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad. Solución 3 El patrón Experto expresa la “intuición” de que los objetos hacen cosas relacionadas con la información que poseen. Descripción Beneficios Solución Se conserva el encapsulamiento

•El comportamiento se distribuye entre las clases que cuentan con la información requerida Conclusión Beneficios y problemas Creador ¿Quién es responsable de crear una nueva instancia de alguna clase? Problema Asignarle a la clase B la responsabilidad de crear una instancia de clase A en los casos en que B Agregue, Contenga, Utilice, Registre, Tenga o Cree uno de los objetos de A Solución El propósito fundamental de este patrón es asignar responsabilidades relacionadas con la creación de objetos producidos en cualquier evento. Descripción Beneficios Se brinda apoyo a un bajo acoplamiento, lo cual supone menos dependencias respecto al mantenimiento y mejores oportunidades de reutilización. Beneficios
• Favorecen la reutilización de diseños y arquitecturas a gran escala y la transmisión de conocimiento
•Accesible para toda la comunidad.
•Proporciona un lenguaje común y cuerpo de conocimiento utilizable por toda la comunidad software. 1 2 3 Bajo acoplamiento ¿Cómo dar soporte a una dependencia escasa y a un aumento de la reutilización? Problema Asignar responsabilidad para mantener bajo el acoplamiento. Solución El Bajo Acoplamiento es un patrón evaluativo que el diseñador aplica al juzgar sus decisiones de diseño. Descripción Beneficios •No se afectan por cambios de otros componentes.
• Fáciles de entender por separado.
Fáciles de reutilizar. Alta cohesión ¿Cómo mantener la complejidad dentro de límites manejables? Problema Asignar una responsabilidad de modo que la cohesión siga siendo alta. Solución •Muy baja Cohesión: una clase es la única responsable.
•Baja Cohesión: una clase tiene la responsabilidad exclusiva de una tarea compleja.
•Alta Cohesión: una clase tiene responsabilidades moderadas en un área y colabora con otras. Descripción Beneficios •Mejorar la claridad y la facilidad con que se entiende el diseño.
•Se simplifican el mantenimiento y las mejoras
•A menudo se genera un Bajo Acoplamiento.
•Mayor capacidad de reutilización. Controlador ¿Quién debería encargarse de atender un evento del sistema? Problema Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a una clase que represente "el sistema global", la empresa, etc. Solución Este patrón ofrece una guía para tomar decisiones apropiadas. La misma clase controlador debería utilizarse con todos los eventos de un Caso de Uso. Descripción Beneficios Mayor potencial de los componentes reutilizables. Garantiza que los eventos del sistema sean manejados por la capa de los objetos del dominio y no por la de la interfaz. Problemas
• No llevan de forma directa a la reutilización del código, aunque dicha reutilización se facilita mediante su uso.
• La integración de los patrones se hace todavía de forma manual.
• El número de patrones identificados es cada vez más grande. Las clasificaciones actuales no siempre sirven de guía para decidir cual usar.
• El número de combinaciones de patrones estilos y atributos que se dan en la práctica son incontables.
• Los patrones se validan por la experiencia y el debate, no mediante la aplicación de técnicas formales. 1 2 3 1 2 3 1 2 3 Patrones de arquitectura Aquellos que expresan un esquema organizativo estructural fundamental para sistemas de software. Descripción de los patrones Clasificación de los patrones
de
diseño De Creación  Patrones de Diseño Estructurales De Comportamiento Aquellos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software Dialectos Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto. Están relacionados con los algoritmos y con la asignación de responsabilidades entre los objetos.
No describen sólo patrones de clases y de objetos, sino que describen los patrones de cómo éstos se comunican.
Estos patrones caracterizan complicados flujos de control que son difíciles de seguir o imaginar en tiempo de ejecución. Interacción Son patrones que nos permiten el diseño de interfaces web. Intenta prevenir contra errores comunes de diseño en el software. Anti-patrones •Abstract Factory
•Builder
•Prototype
•Singleton
•Object Pool •Adapter (Adaptador)
•Bridge (Puente):
•Composite (Objeto compuesto)
•Decorator (Envoltorio)
•Facade (Fachada)
•Flyweight (Peso ligero)
•Proxy
•Módulo •Chain of Responsibility (Cadena de responsabilidad)
•Command (Orden)
•Interpreter (Intérprete)
•Iterator (Iterador)
•Mediator (Mediador)
•Memento (Recuerdo)
•Observer (Observador)
•State (Estado)
•Strategy (Estrategia)
•Template Method (Método plantilla)
•Visitor (Visitante) Jacobo Domínguez Julian Bacelli Sofía Pacífico Adriel Freites Juan Pablo Mansilla Permite tratar las clases a crear de forma genérica apartando la decisión de qué clases crear o como crearlas.
Utiliza la herencia para determinar la creación de las instancias, es decir en los constructores de las clases) o Patrones de Objeto.
Proveen diferentes maneras para remover las referencias explicitas a clases concretas del código donde deben ser utilizadas. Tienen que ver con la forma en que las clases y los objetos son agrupados para formar grandes estructuras.
Usan la herencia para formar interfaces o implementaciones (de clase).
Describen formas de agrupar objetos para dar o crear nuevas funcionalidades (los de objetos). • Fundamentales
• De creación
• Estructurales
• De comportamiento
• De partición
• De concurrencia Clasificación (GRASP)
Full transcript