200812 - Patrones de Diseño de Software (parte 1/4)

9,573 views

Published on

Seminario sobre patrones de diseño de software impartido en el Software Industry Excellence Center del Tecnológico de Monterrey. Parte 1 de 4.

200812 - Patrones de Diseño de Software (parte 1/4)

  1. 1. CONTEXTO ANALISTAS Y DISEÑADORES PROGRAMADORES javiergs@acm.org 2
  2. 2. ANTECEDENTES javiergs@acm.org 3
  3. 3. EXPECTACTIVAS ¿Qué esperas aprender en este taller ? javiergs@acm.org 4
  4. 4. OBJETIVO Conocer el concepto de patrón de software y las tres dimensiones del software utilizando patrones: el producto, el usuario y el ambiente. Haciéndolo consciente de la necesidad del uso de patrones de software en la aplicación de metodologías de desarrollo ágil. Familiarizarse con el vocabulario de patrones y aplicarlos como una forma de comunicación compartida por la empresa y los expertos; entender que los patrones nos ayudan a expresar y comunicar conocimiento. Responder a la pregunta genérica ¿cómo fabricar software de manera correcta? Ser capaz de aplicar los patrones en el proceso de creación de software javiergs@acm.org 5
  5. 5. AGENDA 1. Principios de patrones de software: arquitectura, diseño, codificación y gestión de proyectos. 2. Creación de objetos con patrones: Abstract Factory, Factory Method, Builder, Prototype, Singleton. 3. Estructura de objetos con patrones. Adapter, Bridge, Composite, Decorator, Facade. 4. Comportamiento de objetos con patrones. Chain of Responsabilities, Memento, Observer, Strategy, Visitor. 5. Patrones de Patrones, combinando conceptos: Blackboard, MVC, Layers, Pipes & Filter. 6. Patrones en la Gestión del proyecto. Nuevos horizontes en la conceptualización de buenas prácticas. 7. Patrones en la vida real. Casos de estudio: patrones en proyectos de su empresa. javiergs@acm.org 6
  6. 6. CALENDARIO Sábado 06 de Diciembre de 9:00 a 13:00 hrs. Sábado 13 de Diciembre de 9:00 a 13:00 hrs. Sábado 20 de Diciembre de 9:00 a 13:00 hrs. Sábado 10 de Enero (2009) de 9:00 a 13:00 hrs. javiergs@acm.org 7
  7. 7. 1.1. Principios de patrones de software: conceptos
  8. 8. CONTEXTO ANALISTAS Y DISEÑADORES PROGRAMADORES javiergs@acm.org 9
  9. 9. OOSE UML Cada modelos es examinado o Construir modelos que representan al manipulado por un grupo de stakeholders sistema Objetos, tipos, clases sistemático código cambiante informal modelo Problema sistema real OO-SE complejo Requerimientos – Analisis – Diseño - Implementacion -- Pruebas abstracto - iteraciones - concreto javiergs@acm.org 10
  10. 10. CONCEPTO "Cada patrón describe un problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que podemos utilizar esta solución un millón de veces más adelante sin tener que volver a pensarla otra vez.“ – Christopher Alexander (arquitecto) :: 1979 23 Patrones de diseño GoF – Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides) :: 1990 javiergs@acm.org 11
  11. 11. BENEFICIOS Formalizar un vocabulario común. Estandarizar el modo en que se realiza el diseño. Facilitar el aprendizaje condensando conocimiento ya existente javiergs@acm.org 12
  12. 12. El modelo LEGO La “creatividad” es positiva … … componentes javiergs@acm.org 13
  13. 13. La vida REAL javiergs@acm.org 14
  14. 14. 1.2. Principios de patrones de software: en práctica
  15. 15. De monitos a CÓDIGO lista Clases tesorería Métodos Variables Relaciones profesor Complejidad Tiempo Costo alumno grupo javiergs@acm.org 16
  16. 16. De monitos a CÓDIGO Un profesor puede estudiar en la escuela (ser alumno). En la universidad existe una tesorería única donde se concentran todos los pagos. Un grupo es un conjunto de alumnos que reciben el mismo trato Cada profesor cuenta con una lista donde registra asistencias y calificaciones de sus alumnos. Cuando un alumno no realiza su pago mensual es sacado de su grupo. javiergs@acm.org 17
  17. 17. Hablando de Relaciones a) Ser a) Observar b) Usar b) Encubrir a… c) Tener c) Decorar a… d) Soy único e) Yo construyo a… f) Trabajar con … g) Soy parte de … javiergs@acm.org 18
  18. 18. El modelo LEGO a) Relaciones b) Mini-componentes incluyentes c) Autonomía d) Estándar e) El “cambio” es mi amigo f) Creatividad g) Producto predecible javiergs@acm.org 19
  19. 19. EJEMPLO DE DISEÑO Problema: Restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto. Solución : Garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella. Patrón : javiergs@acm.org 20
  20. 20. EJEMPLO EN CÓDIGO public class Tesoreria { private static Tesoreria TESORERIA = null; private Tesoreria() { } public static Tesoreria getTesoreria() { if (TESORERIA == null) TESORERIA = new Tesoreria(); return INSTANCE; } // El resto de la clase va aquí } javiergs@acm.org 21
  21. 21. Y más… composición decorador observador fabrica estrategia singleton decorador javiergs@acm.org 22
  22. 22. Elementos UML javiergs@acm.org 23
  23. 23. 1.3. Principios de patrones de software: adopción
  24. 24. Arquitectura… y de software… javiergs@acm.org 25
  25. 25. Fundamentos Necesidad Notación requerimientos modelos Proceso (diagramas) metodología Herramientas Producto javiergs@acm.org 26
  26. 26. METODOLOGÍA javiergs@acm.org 27
  27. 27. El arquitecto Arquitectura de software NO IMPLICA DETALLES DE IMPLEMENTACION Arquitecto Obtener Información del problema y diseñar solución que satisfaga requerimiento (funcionales, no funcionales) PERO Apoyándose en patrones, modelos y Framework ADEMAS DE Participar activamente en el desarrollo. PERO no es un desarrollador Generar lineamientos GENERALES a considerarse en la creación de FAMILIAS de productos. javiergs@acm.org 28
  28. 28. Arquitectura y Patrones Aplicación o física Datos negocio Clase o tipo Estilos arquitectónicos arquitectura componente patrón javiergs@acm.org 29
  29. 29. Cualidades del Software Estáticas: Modificabilidad, Portabilidad, Reusabilidad, Integrabilidad, Verificabilidad. Dinámicas: Desempeño, Disponibilidad, Funcionalidad, Usabilidad. Arquitectónicas: Integridad Conceptual, Correctitud, Completitud, Factibilidad económica javiergs@acm.org 30
  30. 30. Modelo de Aplicación javiergs@acm.org 31
  31. 31. 1.4. Principios de patrones de software: clasificación
  32. 32. Clasificación ANTI - PATRONES • Java Código • .Net • PHP • Creación Diseño • Estructura • Comportamiento Pruebas Arquitectura PATRONES Gestión del Proyecto javiergs@acm.org 33
  33. 33. Cierre del Día 1 javiergs@acm.org 34
  34. 34. Javier González Sánchez javiergs@acm.org / in / javiergs javiergs@acm.org 35

×