sábado, 27 de marzo de 2010

Patrones de diseño

Para describir de forma apropiada un patrón de diseño, con el propósito que sea conocido y utilizado por la comunidad de desarrolladores y arquitectos de software, se debe proporcionar información con respecto a los siguientes factores:

Nombre: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).

Clasificación: creacional, estructural o de comportamiento.

Intención: ¿Qué problema pretende resolver el patrón?

También conocido como: Otros nombres de uso común para el patrón.

Motivación: Escenario de ejemplo para la aplicación del patrón.

Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.

Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.

Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.

Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.

Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.

Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.

Código de ejemplo: Código fuente ejemplo de implementación del patrón.

Usos conocidos: Ejemplos de sistemas reales que usan el patrón.

Patrones relacionados: Si existen patrones con los que, el que se describe se relaciona: indicar cuáles y en qué consiste su diferencia con los otros. También, si es del caso, mencionar que otros patrones usa el patrón actual.

viernes, 26 de marzo de 2010

Patrones de diseño

Los patrones de diseño se componen de cuatro cosas fundamentales:

Su nombre: nos permite hablar de él con nuestros colegas. Esto hace más fácil su interiorización y aplicación, por esto es importante elegir un nombre adecuado. El nombre de un patrón de diseño nos permite cosas como la siguiente, cuando nos preguntan cómo solucionar un problema de diseño en el que reconocemos un patrón: “Si claro aplica el patrón de diseño X”.

El problema que resuelven: Es importante ejemplificar el contexto, escenario, condiciones y características de la situación de diseño que se resuelve con el patrón de diseño. De esta forma, otras personas pueden identificar que esa es, exactamente, la misma problemática que tienen (o sea, identifican el patrón) y deciden, entonces, resolverla con la forma descrita por el patrón de diseño.

La solución al problema planteado: Esta debe ser una solución general que pueda aplicarse en diferentes situaciones. No debe estar asociada, por ejemplo, al uso de un lenguaje de programación particular.

Las consecuencias de emplearlo: Es también importante mencionar, cuales son los beneficios y costos de utilizar la solución planteada por el patrón de diseño, para que las personas que lo vayan a usar, estén completamente seguros de su implementación o no. Recordar que siempre habrá otras formas de solucionar el problema, por lo cual las personas podrán sopesar el costo-beneficio de usar la solución del patrón contra otras posibles soluciones que se puedan dar a una determinada problemática y, así, elegir, si es del caso, con mayor objetividad. Las consecuencias de aplicar un patrón incluyen, por ejemplo, su impacto en la flexibilidad, extensibilidad o portabilidad del sistema o las posibles dificultades con su implementación con ciertos lenguajes de programación.

jueves, 25 de marzo de 2010

Patrones de diseño

Comencemos, entonces, recordando que son los patrones de diseño. Los patrones de diseño no son otra cosa que la forma como atacamos la solución a problemas que se nos presentan y en los que reconocemos un patrón o aspecto común con otros que ya se han solucionado por otras personas o por nosotros mismos en otra ocasión y para los cuales, como es de esperar, decidimos aplicar la misma solución que se dio a dicho problema en el que reconocemos el patrón, pues dicha solución ya demostró, suficientemente, solucionar el problema en cuestión.

No es fácil que un patrón de diseño llegue a convertirse en un patrón aceptado. Primero que todo debe solucionar un problema recurrente, en el diseño de soluciones de Software, es decir, no puede, simplemente, ser la solución a un problema específico que sólo sucede dadas ciertas condiciones; pues, en este caso , tendríamos simplemente la solución a un problema y no un patrón de diseño. El problema que soluciona el patrón, debe ser uno con el que, constantemente, se encuentran los desarrolladores o arquitectos de Software y que estos solucionan a su manera, una y otra vez y, por lo cual, la solución no es la misma siempre. Lo que pretende el patrón de diseño es solucionar de una única manera, un problema recurrente en el diseño de soluciones de Software.

La dificultad en que se promueva a patrón una propuesta de patrón de diseño es precisamente, que debe haber consenso en la comunidad de desarrolladores y arquitectos de software con respecto a que el problema que resuelve se presenta con regularidad y que, además, la solución propuesta es óptima y, ampliamente, aceptada. Recordemos, que el mismo problema era solucionado de diversas formas, unas mejores que otras. Por tanto, la solución del patrón que pretende ser la estándar y más aceptada, no puede ser objetada.

Continuara…

miércoles, 24 de marzo de 2010

Reorientación del BLOG

He decidido reorientar el propósito de mi BLOG, para lograr que este tenga más vida. He estado ausente de la escritura en él por varias razones:

1) Decidí participar en el foro de ASP.NET, para ayudar a la comunidad en la solución de problemas. En otro post, colocaré mi aporte.
2) Tengo el objetivo de completar mi carrera de Desarrollador de Aplicaciones (Web, conectadas e interconectadas) en la MVA ( Microsoft Virtual Academy)

Debido al hecho de no haber podido escribir en mi blog, cosa que me encanta, he decidido que todos los días escribiré sobre algo. Eso es un buen ejercicio.

Inicio esta noche, con esta breve explicación a mis lectores y con la invitación a leer, en próximos días, sobre un tema que cobró de nuevo fuerza en mí, como desarrollador de Software y que son los patrones de diseño. Estos se deben tener completamente claros y más si se desea, como es mi caso, proponer uno nuevo.

Sin más me despido por hoy.