Ir al contenido principal

Modelado y Documentaci贸n de Arquitectura

Los modelos y documentaci贸n de arquitectura de software son una manera fant谩stica de comunicar c贸mo planea construir un sistema de software (dise帽o inicial) o c贸mo funciona un sistema de software existente (documentaci贸n retrospectiva, intercambio de conocimientos y aprendizaje).

Dominio: Arquitectura de Software.

C贸mo comunicar la arquitectura: Vistas y Puntos de vista

“Esencialmente, todo modelo es incorrecto. Pero algunos son 煤tiles.” Empirical Model-Building and Response Surfaces (George Box, 1987).

Arquitectura restrictiva: Restringe las decisiones que quedan por tomar (por ejemplo cu谩ndo se le da a un equipo de desarrollo)

Arquitectura descriptiva: Documenta las decisiones tomadas y describe el estado actual del sistema, restricciones del pasado m谩s las actuales

El arquitecto va a trabajar con diferentes personas para garantizar que la arquitectura se ejecute correctamente:

  • Analista: Negociaci贸n de requerimientos.
  • Operaciones: C谩lculo de recursos.
  • Desarrolladores: Restricciones y libertades para desarrollar.
  • Dise帽adores de productos dependientes (Product Managers): Definici贸n de interoperabilidad. Comunicaci贸n entre productos. Requerimientos de comunicaci贸n como una API. Sincronizar equipos.
  • Gestores de proyecto (Project Manager): Gesti贸n de equipos y recursos
  • Equipo de calidad (QA): M茅tricas y conformidad.

Documentaci贸n vs implementaci贸n

Modelo de Arquitectura: Se compone de elementos tales como m贸dulos, componentes, conectores, restricciones, estilo, patrones, atributos de calidad.

C贸digo fuente: Hace referencia a paquetes, clases, interfaces, m茅todos, funciones, par谩metros, tipos.

La “fuente de la verdad” va a ser el c贸digo y no el documento de arquitectura. Se deben buscar estrategias para sincronizar el estado actual del c贸digo con el documento de arquitectura.

Las posibles estrategias son las siguientes:

  • Ignorar la divergencia: Aplica cuando el equipo de trabajo es peque帽o y mientras todos conozcan la diferencia entre el modelo de la arquitectura y la implementaci贸n consiste en mantener el documento de arquitectura tal y como se encuentra concebido, sabiendo que es lo que hace falta completar y que est谩 en el c贸digo fuente.
  • Modelado Ad-hoc: Se tiene una idea de la diferencia entre el modelado y el c贸digo fuente, de tal forma que se puede enunciar el modelo de arquitectura a pesar de que no se encuentra en el documento.
  • Modelos de alto nivel: Se puede seguir modelando la arquitectura con modelos de alto nivel que tienden a cambiar menos y por ende, son m谩s baratos.
  • Sincronizaci贸n en hitos del ciclo de vida: Consiste en actualizar el modelo de arquitectura en alg煤n punto del ciclo de vida de la aplicaci贸n. Permite versionar el modelo de arquitectura y saber en cada momento del proyecto cual era el estado del modelo de arquitectura.
  • Sincronizar en una crisis: Actualizar el modelo de arquitectura cuando dentro del desarrollo, el c贸digo fuente ri帽e contra alguna definici贸n plasmada en el modelo arquitect贸nico.
  • Sincronizaci贸n constante: Es la estrategia m谩s obvia, pero la menos eficiente de todas porque es la m谩s costosa y m谩s complicada de ejecutar porque es bastante complicado tener el modelo actualizado contra el c贸digo fuente.

Comentarios

Entradas populares de este blog

Patrones de Arquitectura

Son decisiones de dise帽o importantes ya tomadas para generar un esquema, estructura o tipo de comunicaci贸n entre componentes. Dominio:  Arquitectura de Software. Patrones monol铆ticos vs distribuidos Monol铆ticos : En este tipo de patrones, se entiende que existe una comunicaci贸n directa entre las partes del sistema, pero al distribuir dicho sistema este funciona como un ente 煤nico, esto dificulta la manutenci贸n del mismo pues no se pueden alterar partes especificas sin afectar al sistema en su totalidad, sin embargo, se puede desarrollar de manera m谩s r谩pida. Distribuidos : En este caso, el patr贸n distribuido es aquel que despliega el sistema en forma seccionada, cada uno de los subsistemas funcionan como entes monol铆ticos de por si, esto facilita la manutenci贸n o la alteraci贸n de estos subsistemas sin da帽ar el sistema en su totalidad, sin embargo, se debe tener cuidado de generar inconvenientes de comunicaci贸n entre los subsistemas. Gran Bola de Lodo : Es un patr贸n que surge del descui

Dise帽o de una Arquitectura

¡Maravilloso este punto, tantas opciones para elegir puede hacer que tomes una decisi贸n no acertada… pero si basamos nuestra decisi贸n en la experiencia ajena (exitosamente probada), seguro que llegamos a puerto seguro! Dominio:  Arquitectura de Software. Primer paso para crear una arquitectura. Pararse en hombros de gigantes Aprovechar el conocimiento existente para nuestra soluci贸n. Productos “de la estanter铆a”. Productos ya echos que resuelvan parte de nuestros problemas. Frameworks y librer铆as. Ayuda a empezar/proponer desde una arquitectura m谩s especifica. Arquitecturas especificas del dominio. Decisiones de dise帽o ya tomadas para ciertos dominios del problema. Patrones de arquitectura. Empezar desde un punto mas solido y restringir nuestro dise帽o a las partes importantes que quedan por resolver. Herramientas y partes de un dise帽o: Tipos de conectores La arquitectura est谩 separada en dos partes fundamentales: Componentes : Son partes de nuestro sistema que cumplen una funci贸n espec

Atributos de Calidad

Son las expectativas de usuario, en general impl铆citas, de cuan bien funcionar谩 un producto. Los atributos tienen identidad en si mismos y son las cualidades de la que todos hablamos, cuando un sistema es bueno o malo en alg煤n aspecto. "Los atributos de calidad son las expectativas de usuario, en general impl铆citas, de cu谩n bien funcionar谩 un producto." Software Requirements: 3rd Edition (Wiegers, Betty, 2013) Dominio:  Arquitectura de Software. Idoneidad Funcional  Tiene que ver con la conexi贸n del usuario (tareas u objetivos a resolver con el sistema) y como est谩n implementadas funcionalmente en dicho sistema. Se puede dividir en 3 partes: Completitud funcional : cuan completa esta la implementaci贸n con respecto a lo que se espera del sistema. Requerimientos Funcionales vs Funcionalidades implementadas. Exactitud funcional : cuan preciso es el sistema para implementar lo requerido. Resultados Esperados vs Resultados Obtenidos. Pertinencia funcional : cuan alineado esta lo