viernes, 21 de septiembre de 2012

Arquitectura - La vista de integración


La vista de integración

A partir de los datos recolectados en la vista de información (Ver Vista de información), se debe iniciar un trabajo fuerte  definiendo las estrategias de integración para todas las fuentes que hayamos identificado. 

Para interfaces pequeñas de baja complejidad la definición de los contratos y estrategias de integración son bastante simples, pero conforme aumenta el alcance, aumenta también la información que se requiere y por ende se hace más complejo unificar los componentes y de esta manera aumentan los riesgos de que las cosas salgan mal. 

¿Qué puede salir mal?
  • Aquellas cosas que afectan la estabilidad del proyecto: En esta categoría podríamos encontrar problemas relacionados con integraciones mal realizadas que extienden los tiempos de desarrollo y por ende afectan las fechas pactadas de los entregables.
  • Aquellas cosas que afectan la estabilidad del producto: Aquí podríamos encontrar deficiencias que impacten directamente la percepción del usuario final (Problemas de desempeño, Problemas de disponibilidad, entre otros.)
¿Cómo disminuir entonces la probabilidad de que estos problemas se presenten?

Para mitigar los riesgos relacionados con la estabilidad del proyecto lo mas importante es mantener la comunicación constante con los responsables de aquellos componentes con los que debamos integrarnos (Esto tiene valor principalmente durante la etapa de desarollo). No basta con definir unas interfaces al inicio del proyecto, estas pueden cambiar y lo mas seguro es que lo hagan, por lo tanto la retroalimentación constante mientras se realizan las integraciones es vital.

Es aconsejable también que los acuerdos a los que se llegue con los responsables no se queden en llamadas telefónicas o documentación dispersa (Correos electrónicos) que sea difícil de analizar posteriormente. Si algo puede fallar, falla y si no se tiene clara esta información lo mas probable es que cuando la ejecución del software no sea satisfactoria por causa de una mala integración, quieran hacer responsable a quien se integró aún cuando no sea así, y sin la documentación de los acuerdos es imposible demostrar lo contrario.

    Para mitigar los riesgos relacionados con la estabilidad del producto podriamos hacer lo siguiente: 
  • Tenga clara su meta de diseño (Ver Goal driven design). Solo asi podrá aumentar las posibilidades de generar valor a los usuarios finales.  
  • Seleccione y evalué las alternativas de integración de cara a su impacto sobre la meta de diseño.  Por ejemplo. Si una opción del sistema es critica a nivel de desempeño, preguntase que necesidades de integración tiene, e identifique una estrategia que satisfaga este atributo de calidad, en este caso podría pensar en comunicación asíncrona.
  • Tenga en cuenta los Trade-offs (Aquellos puntos de la meta de diseño que se deben satisfacer pero al impactar uno positivamente se afecta el otro de manera negativa). Por ejemplo. Al utilizar mecanismos de comunicación asíncrona podría aumentar el desempeño pero disminuir la usabilidad al retardar la respuesta del procesamiento al usuario final.
  • Evalúe el catalogo de patrones de integración (Les recomiendo el libro Enterprise integration patterns de Martin Fowler). Nunca va a estar de mas revisar como éstos podrian apoyarnos en la tarea de lograr nuestra meta de diseño.
  • Tenga en cuenta la cantidad de datos que deberá intercambiar. Esto determinará que tan adecuada sea una estrategia de integración.
  • Finalmente documente y comunique las decisiones tomadas en este punto a todo el equipo de trabajo.



No hay comentarios: