2. Uno de los aspectos mas retadores de escribir o discutir
sobre tecnología es usar terminología de la industria.
Algunos términos de TI sufren de ambigüedad, lo cual a
veces hace que aún la más simple conversación se torne
difícil. Toma a los profesionales de TI de diferentes
organizaciones , ponlos en la misma habitación y
escucharás preguntas como “¿qué entendemos
exactamente por componente?” “¿cuál es tu definición de
servicio?” o mi favorita “¿A qué clase de SOA te estás
refiriendo?”
Para asegurarnos que las descripciones de los tópicos
asociados son fácilmente comprendidos, necesita
establecerse un framework de comunicaciones, compuesto
de una colección de términos con definiciones muy
explícitas.
3. Antes que podamos comenzar a explorar los detalles de la
computación orientada a servicios, primero necesitamos
establecer algunas terminologías básicas de diseño. El
vocabulario estará compuesto de los siguientes términos
relacionados al diseño:
Característicade Diseño
Principio de Diseño
Paradigma de Diseño
Patrón de Diseño
Lenguaje de Patrón de Diseño
Estándar de Diseño
Mejor Práctica
4. Una característica de algo es simplemente un atributo o
cualidad. Una solución de negocio automatizada tendrá
muchas características únicas que fueron establecidas
durante su diseño inicial (Figura 3.1). De ahí que el tipo de
característica de diseño en la que estamos interesados es un
atributo específico o cualidad de un cuerpo de soluciones
lógicas que documentamos en una especificación de diseño
y planeamos realizar en el desarrollo.
5. F
i
g
u
r
a
3
.
1
Por componentes Por componentes Por componentes y
Altamente acoplada Altamente acoplada distribuida
Base de datos Base de datos débilmente acoplada
compartida dedicada Reutilización destinada
Moderadamente Base de datos dedicada
stateful Altamente stateful
Mínimamente stateful
6. La orientación a servicio enfatiza la creación de características de
diseño específicas, mientras también desenfatiza otras. Es
importante notar que a casi todas las características de diseño
que exploramos les atañe una cierta “medida”. Esto significa que
generalmente no es sobre si la solución lógica tiene una cierta
característica; es casi siempre sobre la extensión a la cual puede
o debe una característica realizarse.
Aunque cada sistema puede tener sus propias características
únicas, estamos primeramente interesados en establecer
características de diseño comunes. La concordancia incrementada
asegura un grado de consistencia incrementado, haciendo a las
diferentes clases de lógica de solución más parecidas. Cuando
las cosas son más semejantes llegan a ser más predecibles. En el
mundo de la lógica compartida, distribuida, la predictibilidad es
una cosa apreciada. Las características del diseño predecible
llevan a un comportamiento predecible. Esto, en turno, lleva a
una confiabilidad incrementada la oportunidad para entregar
lógicas de solución en diferentes formas.
7. Un principio es una práctica generalizada, aceptada
por la industria. En otras palabras, es algo que otros
están haciendo en asociación con un objetivo común.
Puedes comparar un principio con una mejor práctica
en el sentido que ambos proponen un significado de
llevar a cabo algo, basado en experiencias pasadas o
aceptación amplia de la industria.
Cuando se viene a construir soluciones, un ‘principio de
diseño’ representa un lineamiento altamente
recomendado para formar la lógica de solución en una
cierta forma y con ciertos objetivos en mente (Figura
3.2). Estos objetivos usualmente están asociados con el
establecimiento de una o más características de diseño
específicas (como resultado de la aplicación del
principio)
8. “Promueve un débil acoplamiento”
Figura 3.2
La aplicación repetida de principios de diseño incrementa la cantidad de
características de diseño comunes. En este caso, el acoplamiento entre las unidades
lógicas de solución A y B ha sido aflojados (como se indica por una reducción de
puntos de conexión).
9. Por ejemplo, podemos tener un principio tan fundamental
como aquel que declara que la lógica de solución debe ser
distribuible. Aplicando este principio resulta en la lógica de
solución que está siendo particionada en unidades
distribuibles individualmente. Esto luego establece que las
distintas características de diseño de la lógica de solución
están llegando a ser fragmentadas por componentes. Esto
no es sólo un ejemplo de principio de diseño muy abierto,
sino que también es el punto de partida de la orientación a
servicios.
10. Hay muchos significados asociados con el término
“paradigma”. Puede ser un enfoque a algo, una escuela de
pensamiento con respecto a algo, o un conjunto de reglas
combinadas que son aplicadas en una zona limitada
predefinida.
Un paradigma de diseño en el contexto de automatización de
negocio es generalmente considerado un enfoque de
gobierno para diseñar lógica de solución. Normalmente
consiste de un conjunto de reglas complementarias o
principios que definen colectivamente el enfoque
primordial representado por el paradigma (Figura 3.3).
11. “Aplicar el balance correcto de acoplamiento débil y reutilización y…”
Figura 3.3
Debido a que un paradigma de diseño representa una colección de principios
de diseño, además incrementa el grado de elementos comunes a través de
diferentes cuerpos de lógica de solución. En el ejemplo, la cantidad de
reutilización de y B ha incrementado.
12. La orientación a objetos (o diseño orientado a objetos) es un
ejemplo clásico de un paradigma de diseño aceptado.
Proporciona un conjunto de principios que forman una
lógica de solución formada por componentes en ciertas
formas, de manera que cumplan con un conjunto de
objetivos.
Junto a estas mismas líneas, la orientación a servicios
representa su propio paradigma de diseño distintivo. Al
igual que la orientación a objetos, es un paradigma que
aplica a la lógica de solución distribuida. Sin embargo,
debido a que algunos de sus principios difieren de aquellos
asociados con la orientación a objetos, puede dar como
resultado la creación de diferentes tipos de características
de diseño.
13. Hemos establecido que la orientación a servicios es un
paradigma de diseño compuesto de un conjunto de
principios de diseño, cada uno de los cuales proporciona
una regla generalizada o lineamiento para realizar ciertas
características de diseño. El mismo paradigma suena muy
completo, y realmente lo es. Sin embargo, para aplicar
exitosamente en el mundo real, requiere más que sólo una
comprensión teórica de sus principios.
14. Los diseñadores de servicio estarán enfrentándose
regularmente con obstáculos y retos cuando intenten
aplicar un paradigma de diseño, debido a que la
realización de las características de diseño deseadas
frecuentemente se complica por varios factores,
incluyendo:
Restricciones impuestas por la tecnología que está siendo usada para
construir y/o hostear las unidades de lógica de solución.
Restricciones impuestas por la tecnología o sistemas que residen junto
a las unidades deployadas de lógica de solución.
Restricciones impuestas por los requerimientos y prioridades del
proyecto que está entregando las unidades de lógica de solución.
15. Un patrón de diseño describe un problema común y
proporciona una solución correspondiente (Figura 3.4).
Esencialmente documenta la solución en un formato de
plantilla genérica de forma que pueda ser aplicada
repetidamente. El conocimiento de los patrones de diseño
no sólo te arma con una comprensión de los problemas de
diseño potenciales a los que se puede estar sujeto,
proporciona respuestas sobre cómo y con qué son mejor
tratados.
16. “Problema: “Solución:
Lógica de solución reutilizable que depende Si la lógica de solución está siendo
de una base de datos compartida que se reutilizada, debe tener una base de datos
ejecute con tiempos de respuesta dedicada para maximizar la autonomía.”
inconsistentes”
Figura 3.4
Los patrones proporcionan soluciones recomendadas para problemas de diseño comunes. En este
ejemplo simplificado, un patrón sugiere que reduzcamos el acceso externo a una base de datos para
incrementar la autonomía de la aplicación
17. Los patrones de diseño son nacidos de la experiencia. Los
pioneros en cualquier campo han tenido que someterse a
ciclos de prueba y error, y aprendiendo de lo que no
trabajaba, fueron desarrollados enfoques que finalmente
llevaron a cabo sus objetivos. Cuando un problema y su
correspondiente solución fueron identificados como
suficientemente comunes, las bases de un patrón de diseño
fueron formadas. Además, los patrones de diseño pueden
ser combinados en patrones compuestos que resuelven
problemas más grandes, y una serie de patrones puede
formar las bases de un lenguaje de patrón.
18. La aplicación de un patrón de diseño puede generar nuevos
issues o problemas por los cuales otro patrón puede ser
requerido. Una colección de patrones relacionados puede
establecer una expresión formalizada de un proceso de
diseño por lo cual cada una dirige un punto de decisión
primaria. Combinando patrones en esta manera forma las
bases de un lenguaje de patrón.
Un lenguaje de patrón está compuesto esencialmente de una
cadena de patrones de diseño relacionados que establecen
una secuencia configurable en la cual los patrones pueden
ser aplicados (Figura 3-5). Tal lenguaje proporciona un
significado altamente efectivo de comunicación de aspectos
fundamentales de un enfoque de diseño dado debido a que
proporciona documentación detallada de cada paso mayor
en un proceso de diseño que forma las características de
diseño de la lógica de solución.
19. “Problema: “Problema:
La lógica de negocio es combinada con lógica La lógica de negocio abstraída está compuesta
de no negocio haciéndolo difícil de cambiar.” de lógica agnóstica y no agnóstica.”
“Solución: “Solución:
La lógica de negocio es abstraída en su propio La lógica de negocio agnóstica es abstraída en
conjunto de unidades.” su propio conjunto de unidades.”
Figura 3.5
Una secuencia de
patrones de diseño
relacionados formaliza
los puntos de decisión
primaria de un
paradigma de diseño.
En este ejemplo, la
lógica en el diseño de
la aplicación B es
descompuesta como
resultado de un
patrón, luego además
compuesto como un
resultado de otro. Los
patrones
fundamentales
siguientes continúan
para formar la lógica.
20. Para que una organización aplique exitosamente un paradigma
de diseño, requerirá más que una adherencia a los principios de
diseño asociados y un conocimiento de los patrones de diseño de
apoyo. Cada organización tendrá objetivos estratégicos únicos
entornos empresariales únicos. Estos forman un conjunto
distinto de requerimientos y restricciones que necesitan ser
acomodadas en diseños de soluciones.
Los estándares de diseño son convenciones de diseño
(generalmente obligatorias) personalizadas para predeterminar
de forma consistente características de diseño de soluciones en
soporte de los objetivos organizacionales y optimizados para
entornos empresariales específicos. Es a través del uso de
estándares de diseño internos que las organizaciones pueden
entregar soluciones de forma consistente adaptados a sus
entornos, recursos, objetivos, prioridades (Figura 3.6).
Pagina 66 del libro
21. “Aunado a los requerimientos de privacidad y seguridad específica, los datos
de estados no pueden ser compartidos en una base de datos separada.”
Figura 3.6
En este caso un estándar de diseño requiere que el diseño original de C sea alterado
para remover el acceso a una base de datos de estados, externa, compartida.
22. Como con los principios de diseño, la aplicación de estándares
de diseño resulta en la creación de características de diseño
específicas. Como con los patrones de diseño, los estándares de
diseño fomentan y refinan estas características para evitar
problemas potenciales y para fortalecer el diseño de solución
general. De hecho, se recomienda diseñar estándares que se
basen contra, o estén derivados de patrones y principios de
diseño de la industria.
¿Puedes tener estándares de diseño sin principios de diseño? Sí,
es realmente común tener muchos estándares de diseño. Sólo
algunos necesitan estar relacionados a los principios con el fin de
ver a través de la aplicación del paradigma de diseño general.
También pueden crearse diferentes estándares de diseño para
simplificar el soporte de otros objetivos o compensar las
restricciones impuestas por el entorno específico, cultural, o
factores relacionados con la tecnología. Aunque algunos
estándares pueden no tener asociación directa con los principios
de diseño aceptados, debería haber siempre un esfuerzo para
mantener en alineación relativa a todos los estándares.
23. ¿Puedes tener principios de diseño sin estándares?
Generalmente depende del grado de compromiso del
paradigma de diseño que le rige a una organización. Si
ve un potencial en usar sólo un subconjunto de los
paradigmas de diseño, entonces algunos principios
pueden no ser soportados por los estándares de diseño
correspondientes. Sin embargo, este enfoque no es
común.
Esencialmente, al igual que con los principios de
diseño, a través de la estandarización queremos
construir consistencia en las características de diseño
específicas – consistencia en la calidad de las
características y en la forma en que frecuentemente
son implementadas.
24. Una mejor práctica generalmente es considerada
una técnica o enfoque para resolver o prevenir
ciertos problemas (Figura 3.7). Generalmente es
una práctica que tiene reconocimiento de la
industria y ha emergido de experiencias pasadas
de la industria.
25. “La lógica de solución reutilizable debe
Figura 3.7
ser apropiada y mantenida por un Las mejores
custodio separado para asegurar su prácticas proveen
apropiado involucramiento para una guía en la
acomodar los requerimientos de largo forma general de
plazo de la empresa.”
“lecciones
aprendidas“. En
el ejemplo,
sugiere que el
mantenimiento en
curso de
unidades lógicas
de solución
reutilizable de
todas las
aplicaciones
incluyan un solo
custodio
26. Entonces ¿cómo se diferencía una mejor práctica de un
principio de diseño? Aquí hacemos una clara distinción en
que un principio de diseño está limitado a sólo diseño. Una
mejor práctica puede estar relacionada a cualquier cosa,
desde la entrega de un proyecto hasta issues
organizacionales, gobierno o proceso. Un principio de
diseño podría ser considerado como una mejor práctica
asociada sólo con el diseño de la solución.
27. Cada una de las secciones anteriores describieron una pieza de
inteligencia que puede actuar como input en un proceso de
diseño general. Cuando se diseñan soluciones orientadas a
servicios es prácticamente inevitable que algunas o todas estas
piezas sean usadas al mismo tiempo. Por lo tanto es importante
comprender como están relacionadas con cada una de forma que
podamos obtener un conocimiento previo de cómo y dónde son
mejor utilizadas.
La figura 3.8 muestra como están interrelacionadas algunas de
las partes más comunes de un framework de diseño y enfatiza
cuan central puede ser el uso de principios de diseño. La figura
3.9 expande en esta perspectiva ilustrando como el uso de
patrones puede además soportar y extender un framework de
diseño básico. Finalmente, la figura 3.10 muestra como las partes
de un framework de diseño puede al final ayudar a realizar la
aplicación del paradigma de diseño primordial.
28. Figura 3.8
Los términos de diseño
fundamentales establecen
una taxonomía básica
utilizada en el resto del
documento. Este diagrama
sugiere en cómo algunas
partes de un framework de
diseño básico puede
relacionarse a cada una de
las otras.
29. Figura 3.9
Los patrones de diseño proporcionan inteligencia adicional que pueden enriquecer un
framework de diseño con una colección de soluciones probadas a problemas comunes
30. Figura 3.10
El propósito de la
aplicación de un
paradigma de diseño es el
de llevar a cabo ciertas
metas. Es importante
enfatizar como los
estándares de diseño,
patrones de diseño y
mejores prácticas pueden
todas soportar la aplicación
exitosa de un patrón de
diseño, y, como resultado,
la consecución de sus
metas.