Patrones de Procesos Conocimiento 01 Patrones Muchos problemas recurrentes que se encuentran al modelar sistemas de negocio ya han sido resueltos. Entonces, ¿por qué volver a resolverlos de nuevo? Los patrones permiten capturar y describir estos problemas de modelado de negocio y sus correspondientes soluciones de modo que las soluciones se puedan reutilizar. Las soluciones, en este contexto, no son código de programas. Comprenden una realización que se usa para estructurar o modelar el negocio. Una solución no puede ser traducida directamente a código. Un patrón es una solución generalizada que puede ser implementada y aplicada en un problema (un contexto), y así eliminar uno o más problemas inherentes con el fin de satisfacer uno o más objetivos. Los patrones se pueden considerar prototipos para la producción. Una buena definición de patrón es la siguiente: “Cada patrón es una regla de 3 partes, la cual expresa una relación entre cierto contexto, un problema, y una solución. Como un elemento en el mundo, cada patrón es una relación entre un cierto contexto, un cierto sistema de fuerzas, el cual ocurre repetidamente en ese contexto, y una cierta configuración espacial, la cual permite que ellos se resuelven a sí mismos. Como un elemento de lenguaje, un patrón es una instrucción, que muestra cómo se puede usar esta configuración espacial, una y otra vez, para resolver el sistema de fuerzas dado en cualquier parte donde el contexto lo haga relevante. El patrón es, en resumen, al mismo tiempo una cosa, que pasa en el mundo, y la regla que nos dice cómo crear aquella cosa, y cuándo debemos crearlo. Es un proceso y una cosa; una descripción de una cosa que está viva, y una descripción del proceso que generará aquella cosa." Los patrones son soluciones generalizadas establecidas que solucionan los problemas que son comunes a situaciones diferentes de negocio. Ellos pueden ser reutilizados repetidamente y pueden ser combinados y adaptados de muchos modos diferentes. Es importante comprender que los patrones no son "inventados"; se encuentran en modelos existentes que describen sistemas de negocio de la vida real. En otras palabras, el modelo es realmente el resultado de un modelador experimentado quien ha identificado soluciones generales para problemas comunes. Ellos también sirven como el medio para mejorar el vocabulario de negocio; los modeladores que entienden el patrón subyacente pueden usar el nombre del patrón para describir y comunicar estructuras complejas de negocio y relaciones. Los patrones se encuentran en todas las fases de desarrollo, desde el modelado de negocio hasta la codificación real y las etapas de pruebas. Los patrones encontrados en modelos de negocio se conocen como un patrón de negocio; los patrones encontrados en diseño de sistemas como patrones arquitectónicos (patrones de sistemas de alto nivel); patrones más cercanos al nivel de programación se denominan patrones de diseño. Hay que tener presente, sin embargo, que los patrones no solucionan cada problema. Para beneficiarse de los patrones, el contexto en el cual el patrón es requerido para ser usado debe ser entendido totalmente. La solución a un problema presentado en el patrón se aplica dentro del contexto descrito en el patrón. Cuando es aplicado incorrectamente, el patrón puede causar problemas, como modelos mal estructurados. Hay también un riesgo evidente de sobrecarga para el patrón; es decir, el uso rutinario de patrones sin considerar los problemas al alcance de la mano o solamente por usar patrones. Nuevamente, los patrones no son soluciones a todos los problemas; un patrón debería ser usado sólo para el tipo de problema que puede enfrentar. Conocimiento 02 Patrón de Negocio Los patrones de negocio tratan con problemas dentro del dominio del negocio, típicamente situaciones de análisis tales como cómo modelar y estructurar los recursos del negocio que incluyen facturas, organización, información, etcétera. Los patrones negocio también se orientan a cómo organizar y relacionar procesos de negocio, reglas de gestión, visiones corporativas, y objetivos. La primera etapa en todos los tipos de resolución de problemas es comprender el área involucrada. Esto se puede lograr usando un método de análisis, tal como inducción y deducción en la teoría de ciencias, el método de resolución de problemas de Polya en matemáticas, el Proceso Unificado (Rational Unified Process) en ingeniería de software, o las metáforas de Gareth Morgan en teoría de la organización. Los patrones de negocio se pueden usar como herramientas para ayudar, primero, a comprender una situación problema en un contexto de modelado de negocio y, segundo, cómo tratar con el problema en esta situación. El entendimiento de una situación de problema no depende únicamente del método de análisis usado; también depende del conocimiento y la experiencia del modelador, los modelos y frameworks existentes, el proceso perceptual - como se perciben y entienden cosas en el mundo alrededor de uno - y los patrones aprendidos. Los patrones son un complemento al método de análisis y son útiles en el análisis de situaciones de negocio - la etapa de modelado del negocio. El análisis se puede enfocar en la comprensión de una situación de negocio existente a través del modelado; puede ser un intento de modelar un nuevo negocio o una mejora de negocio con el fin de implementarlo. Como se mencionó anteriormente, es importante destacar que los patrones de negocio no son transferibles directamente a código. Se usan para crear modelos de negocio comprensibles y flexibles, que describan la estructura y conducta de un negocio; más tarde, estos modelos se pueden usar como la base para crear sistemas de información que apoyen el negocio, así, en una etapa posterior se transformará en código de programa (e indirectamente será la base para el código de programa). El diseño de los sistemas de información puede entonces implementar patrones de arquitectura o patrones de diseño. Los patrones de negocio también son útiles para remodelar un modelo de negocio existente. De la misma manera, los modelos no estructurados de vez en cuando pueden ser remodelados y mejorados por el empleo de patrones. De hecho, los patrones de negocio no son solamente un instrumento para producir o mejorar modelos, ellos son también un modo excelente de enseñar buenas técnicas de modelado. Los patrones de negocio a menudo se combinan unos con otros o se adaptan a la situación a mano. Sin embargo, es importante mantener el objetivo principal del patrón en mente cuando se combinan o se adaptan. Cuando se combinan de manera errónea o se emplean mal, pierden su utilidad en la solución de problemas. Cambiar radicalmente un patrón puede diluir o eliminar la ventaja del patrón; de hecho, al hacerlo podría cambiar el patrón a uno totalmente diferente, no probado, y no testeado. También se pueden personalizar los patrones, especialmente si se trabaja mucho en un dominio de negocio particular y uno se encuentra resolviendo el problema una y otra vez. Los patrones evolucionan desde estructuras o interacciones que ocurren con frecuencia en aquel dominio, y un modelador experimentado puede ver aquellas estructuras e interacciones. Conocimiento 03 Patrones en UML Ha habido un creciente interés en los patrones, y UML es el primer lenguaje de modelado que proporciona un símbolo específico y visual que representa un patrón. Este símbolo UML es la llamada colaboración. Se usa para representar tanto la estructura (típicamente un diagrama de clases) como la conducta (típicamente un diagrama de secuencia o colaboración) en un patrón. El símbolo de colaboración es una elipse dibujada con una línea de guiones y el nombre del patrón dentro de ella. El símbolo de colaboración representa un patrón. La elipse representa un patrón. Si un usuario quiere estudiar la estructura y conducta del patrón (es decir, ver sus diagramas de clases y posiblemente también un diagrama de secuencia) debería expandir (hacer un “zoom”) el patrón (a través de un comando en la herramienta de modelado). Cuando se expande el patrón, se muestra el diagrama que describe el patrón genérico. Si el símbolo Definición de Términos se expandiera, debería mostrar la estructura de ese patrón específico. En este caso, se debería mostrar el diagrama de clases, donde las clases, en el patrón, se muestran con sus relaciones entre ellas. Si el patrón también tiene conducta, también se debería mostrar un diagrama de secuencia al expandir el patrón. Cuando se expande un patrón, se muestra la estructura del patrón, en este caso el patrón Definición de Término se muestra como un diagrama de clases. Un patrón (o colaboración en términos UML más genéricos) también puede parametrizarse, para lo cual, las clases en el patrón son listadas en un rectángulo en la esquina superior derecha de la elipse. Al listar las clases en el patrón, es posible mostrar como el patrón se usa en una implementación concreta, o uso del patrón. Un patrón parametrizado se puede usar en otros diagramas. El símbolo del patrón se muestra con una lista de las clases que son parte del patrón (las clases parámetros formales del patrón). Las líneas con guiones conducen a las clases concretas usadas en esta implementación del patrón. Sobre cada línea con guiones está el nombre del rol que tiene la clase concreta en el patrón. En la siguiente figura, el Nombre de la clase toma el rol de la clase Término en el patrón. Cuando un patrón se expande, las clases concretas remplazan las clases parámetro en el patrón. El uso de un patrón en un caso específico, donde las clases concretas tienen líneas con guiones hacia el símbolo de la colaboración, y el nombre del rol que ellas tienen en el patrón. Cuando se expande el patrón, se muestran las clases concretas en sus roles en el patrón. Debido a que UML tiene un símbolo específico para patrones, es fácil modelar y usar patrones con una herramienta de modelado que soporte esto. Hay que recordar que no todas las herramientas UML soportan los símbolos de patrones. Todos los patrones pueden representarse por colaboraciones UML y se pueden usar fácilmente en los modelos de negocio. Conocimiento 04 Ejemplos gráficos de Patrones de Procesos de Negocio Secuencia Separación Paralela Sincronización Decisión Excluyente Combinación Simple Decisión Múltiple Combinación Múltiple Discriminador N out M join Combinación Sincronizada Ciclos Arbitrarios Terminación Implícita Múltiples Instancias con un Diseño de Conocimiento de Tiempo a priori Múltiples Instancias con Conocimiento Runtime a priori Múltiples Instancias sin Conocimiento a priori Múltiples Instancias requiriendo Sincronización Decisión Aplazada Enrutamiento Intercalado Hito Actividad Cancelada Caso Cancelado