Entradas

Mostrando las entradas con la etiqueta Patrones

Flexibilidad y Patrones de Diseño con DART, Composite

Imagen
Para el mundo de desarrollo de  software siempre es relevante la utilidad propuesta por los patrones de diseño. Como ustedes saben, los patrones de diseño son la base de la búsqueda de soluciones a problemas comunes en el desarrollo de software. En esta oportunidad les voy a dejar un análisis de uno de los patrones de diseño más utilizados, el patrón Composite y cómo podemos representar esta funcionalidad en DART . (desde el Programa con Google ) Les dejo un vídeo de implementación: Les dejo el código fuente de la solución: Descargar

Tripleta de Patrones “Builder-Adapter-Strategy”

Imagen
Para este articulo, les traigo una análisis sobre algunos patrones de diseño importantes que a diario en el ambiente de la ingenieria de software son muy valorados, decidí ejemplificar un patrón de diseño creacional, uno estructural y un de comportamiento y asi poder matizar cada uno de los escenarios. Las herramientas utilizadas: Visual 2008 – con aplicaciones Windows Application y Web Application depediendo el caso. Modelado con EA 7.1 Veamos en primer lugar esta categorización propuesta de Patrones de diseño:   Creacionales Estructurales Comportamiento Clases Factory Method   Interpreter Template Method Objeto Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor Tabla 1 (Patrones de Diseño – Elementos de software orientado a objetos reutilizables- Gamma, Helm, Johnson, Vlissides) Como podemos observar los marcados en negrita de la tabla 1, será...

Diseñando con Patrones, una vista al COMPOSITE

Imagen
Para este artículo les traigo un análisis sobre patrones de diseño, la idea es repasar un poquito el tema de forma genérica y esta actividad que sea disparador para aplicar un patrón particular, "El Composite". Introducción Si vamos a hablar de patrones de diseño, es necesario definir: ¿Qué es diseño? (dentro del proceso de desarrollo de software) ¿Qué es un patrón? Finalmente ¿Qué es un patrón de diseño? Veamos, el diseño es una actividad, definir el "como" frente al "qué", hacerlo correcto frente a hacer lo correcto… ¿Somos consientes de estos puntos descriptos cuando diseñamos? Sin duda el diseño es una actividad compleja, sabemos que los requerimientos no funcionales son conflictivos. Cuales serian nuestras propiedades no funcionales a realizar: Reutilización Facilidad de modificación Facilidad de comprensión Robustez Eficiencia …. ¿Suenan lindas no? Lo concreto es que las técnicas para conseguir la calidad están menos desarrolladas que las usadas para...

¿Arquitectos de Software? ¿Son necesarios?

Imagen
En este artículo voy a analizar un material que me gustó y me hizo reflexionar sobre el concepto de arquitecto, cualidades y habilidades necesarias sobre el rol. Para comenzar voy a citar el material sobre el cual quiero reflexionar y de paso les recomiendo la lectura en su totalidad: http://msdn.microsoft.com/en-us/arcjournal/cc505974.aspx Autor: Joseph Hofstader "En proyectos de software, el título Arquitecto es a menudo definido de forma ambigua y el valor que brindan los arquitectos no se mide con facilidad" Este frase resume la actualidad sufrida en los actuales proyectos de ingenieria de software, incluso se torna muy complejo para las organizaciones encontrar el valor agregado por el concepto de arquitecto. La idea es encontrar como objetivo general el valor que los buenos arquitectos aportan a los procesos de desarrollo de software. ¿Les parece un buen objetivo? Algo de lo que debemos partir para esta discusión es una definición de un buen arquitecto, para este objeti...

Aplicando Patrones, Observer

Imagen
Para este articulo intenté de recrear uno de los patrones más populares como es el "Observer", la idea es mostrar un ejemplo claro con código sobre un esquema Web particularmente ASPNET con C#. Veamos, para comenzar definiremos que implica el patrón de forma conceptual: "El patrón observer define una dependencia uno a muchos entre objetos de modo que cuando el estado de un objeto cambia, se les notifica el cambio a todos los que dependen de él y se actualizan de forma automática". Nota: (Les dejo un vínculo a la wikipedia para matizar un poco un concepto bien simple: http://es.wikipedia.org/wiki/Observer_(patr%C3%B3n_de_dise%C3%B1o) ) Yo voy a tomar la herramienta de modelado EA que me propone la aplicación del patrón GOF Observer, veamos: Como podemos observar los elementos del patrón son muy bien identificables: Subject : Conoce a sus observadores, que pueden ser de 0 a N, y ofrece la posibilidad de añadir y eliminar observadores. Observer : Define la interfaz...

Strategy, sigamos con los patrones…

Imagen
Bueno para los amantes de los patrones en este artículo voy a mostrarles una aplicación de Strategy. Vemos algunas definiciones para comenzar la implementación del ejemplo: "El patrón Strategy permite mantener un conjunto de algoritmos de los que el objeto cliente puede elegir aquel que le conviene e intercambiarlo según sus necesidades." "El patrón strategy (estrategia) está orientado a resolver situaciones en las que nos encontramos con un problema base pero existen diversas estrategias para abordar el problema" La pregunta es: ¿Cuántas veces nos ocurren estos problemas? Y ni hablar la diversidad de soluciones propuestas, muchas con poco sentido. Por este motivo es fundamental entender el objetivo del patrón para poder aplicar de forma consistente a determinados problemas. Les voy a mostrar un diagrama general del patrón después veremos una implementación: (grafico herramienta de modelado EA) La implementación de estrategias extensibles es lo más notorio del patr...

Tormenta de patrones, Facade

Imagen
En este articulo coy a comenzar con el análisis de un patrón muy común en el diseño de aplicaciones corporativas, el Facade (fachada). Según una definición muy simple el facade, sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces más complejas. Para nuestro entendimiento he decidido modelar una situación exponiendo este patrón y que se pueda apreciar alguna funcionalidad sobre el mismo.Como herramienta de modelado voy a utilizar EA (Enterprise Architect) y esta herramienta trae plantillas de patrones, justamente el facade figura en estas plantillas y un buen comienzo es verificar lo que se propone desde el punto estructural. (Asistente para la generación del patrón) (Patrón generado) Como prestaciones este patrón tiene: Simplificar el uso y comprensión de una librería software. Encapsular una interfaz de librería poco amigable en un interfaz más coherenteo mejor estructurado. Centralizar las dependencias ...