Tarea: Esbozar la arquitectura
Proporcionar suficiente orientación y guía para que el equipo comience (o continúe) evolucionando la arquitectura.
Disciplinas: DiseñoDiseño
Relaciones
Descripción principal

Esta actividad se enfoca en identificar los objetivos arquitectónicos para una determinada iteración, los cuales guiarán el desarrollo y las pruebas posteriores. Se basa en la experiencia acumulada obtenida en sistemas o dominios similares para restringir y enfocar la arquitectura a las necesidades de la solución a construir. El objetivo es no desperdiciar mucho esfuerzo en reinventar la arquitectura de forma periódica, con el consecuente retrabajo y riesgos que esto presupone.

Vale la pena recordar que esta actividad se recomienda para enfoques basados en planes como MCS-OpenUp, en donde existe una cierta estabilidad de los requerimientos y un cierto "contrato" de las funcionalidades principales del sistema, que se espera no cambie en el corto plazo.

Pasos
Identificar los objetivos de la arquitectura

Tomando como base la visión de la solución y el modelo conceptual generados en la fase de conceptualización, el equipo de desarrollo debe trabajar con los interesados del proyecto y el analista para para describir los objetivos de la arquitectura de la solución tecnológica e identificar cuáles son apropiados para abordar en la iteración.

Se deben examinar tanto la visión de la solución como la especificación de requerimientos. Los objetivos definidos para la arquitectura guiarán el enfoque de decisiones técnicas importantes sobre el diseño de la solución. Será importante revisar periódicamente el estado de estos objetivos a lo largo del proyecto para asegurarse de que sigan siendo válidos y que el desarrollo de la soución se encamine a cumplirlos.

Identificar los requerimientos relevantes a la arquitectura

Identificar cuáles de los requerimientos actuales son relevantes/significativos para la arquitectura. Se deben explorar y refinar aquellos que deben implementarse para alcanzar los objetivos arquitectónicos para la iteración actual. Como soporte a esta actividad es puede consultar la guía para determinar los requerimientos relevantes a la arquitectura.

Debe haber una referencia a los requerimientos arquitectónicamente relevantes en la descripción de la arquitectura después de identificarlos. Es importante revisar esta lista de forma periódica de acuerdo a los cambios en los requerimientos que vayan surgiendo para asegurarse de que sigan siendo válidos.

Identificar las restricciones de la arquitectura

Realizar una lista de las restricciones en la arquitectura y cualquier trade-off entre los requerimientos y recursos. Decidir cómo la arquitectura resolverá estos problemas. Justificar cada una de las decisiones tomadas y documentar esta información.

Es necesario revisar de forma periódica la lista de restricciones para asegurarse de que sigan siendo válidas y que no hayan aparecido nuevas.

Investigar, evaluar y seleccionar los activos disponibles

Identificar activos de otras áreas que puedan reutilizarse en la arquitectura actual. Estos podrían incluir:

  • Marcos arquitectónicos (frameworks)
  • Mecanismos arquitectónicos
  • Decisiones arquitectónicas
  • Restricciones
  • Aplicaciones
  • Componentes
  • Software COTS (componentes comerciales disponibles)
Definir un enfoque en el cual se estructurará el sistema

Decidir cómo se va a estructurar el software, tanto en términos lógicos como físicos.

Como mínimo, debe decidirse sobre:

  • Cómo particionar el software al administrar el desarrollo (el uso de capas como una estrategia de partición, por ejemplo).
  • Cuáles serán los componentes del software en tiempo de ejecución.

Para cada componente de software, describa brevemente:

  • Su nombre y propósito.
  • Sus relaciones con otros componentes.

Estas decisiones formarán la base para estructurar el diseño detallado y el desarrollo posterior.

Definir el enfoque para desplegar el sistema
Describir cómo se implementará el software en los diferentes nodos de la red. Trabajar con los interesados del proyecto, como los equipos de operaciones y redes, para garantizar que el enfoque propuesto se ajuste bien al entorno de producción de la organización.
Identificar los mecanismos arquitectónicos

Realizar una lista de los servicios técnicos que el sistema debe proporcionar y capturar la información básica sobre cada elemento de la lista. En general, es una buena idea hacer una lista inicial de todos los mecanismos necesarios para el proyecto y luego priorizar la construcción de aquellos que deben entregarse para lograr los objetivos de la iteración actual.

Identificar las abstracciones clave
Identificar las abstracciones clave que el sistema necesita manejar. Por lo general, se pueden encontrar buscando sustantivos que los requerimientos enfaticen o repitan, porque ayudan a identificar lo que es importante para el negocio. El Glosario también es una fuente útil para abstracciones clave, ya que es una lista de sustantivos comerciales. Sin embargo, no todos los sustantivos serán abstracciones clave en el sistema. Es necesario trabajar con el analista y los interesados del proyecto, ya que tendrán el conocimiento tácito y materiales relevantes para este paso.
Verificar la consistencia de la arquitectura

El arquitecto trabaja con el desarrollador y el gerente de proyecto para verificar que la arquitectura sea consistente con los requerimientos y que las descripciones de la arquitectura sean completas, significativas y claras.

Para realizar este paso, puede utilizar la Guía para la revisión de la arquitectura.

Documentar las decisiones arquitectónicas
Se deben capturar y documentar decisiones importantes sobre la arquitectura para referencia futura. Puede utilizar templates para facilitar este trabajo. Los desarrolladores en particular deben comprender claramente el estado actual de la arquitectura en cada iteración antes de desarrollar la arquitectura.