Al formalizar la arquitectura del sistema, es importante que comprenda no solo el valor detrás de lo que la arquitectura aportará, sino también comprender y apreciar lo que debería ser.
Los objetivos principales del software o la arquitectura técnica es identificar los requisitos no funcionales que cumplen los atributos de calidad que impulsarán la arquitectura del sistema .
Sobre requisitos no funcionales:
Un requisito no funcional es un requisito que especifica criterios que pueden usarse para juzgar el funcionamiento de un sistema, en lugar de comportamientos específicos. Se contrastan con los requisitos funcionales que definen comportamientos o funciones específicos. El plan para implementar los requisitos funcionales se detalla en el diseño del sistema. El plan para implementar requisitos no funcionales se detalla en la arquitectura del sistema.
En términos generales, los requisitos funcionales definen lo que se supone que debe hacer un sistema y los requisitos no funcionales definen cómo se supone que debe ser un sistema. ... Los requisitos no funcionales a menudo se denominan "atributos de calidad" de un sistema. Otros términos para requisitos no funcionales son "cualidades", "objetivos de calidad", "requisitos de calidad de servicio", "restricciones" y "requisitos no conductuales"
Por supuesto, identificar los requisitos arquitectónicamente significativos tiene sentido cuando se trata de un proyecto totalmente nuevo, sin embargo, cuando se trabaja con el software existente, es mejor ser lo más disciplinado posible. No querrá que su arquitectura de software se vea influenciada por el sistema existente.
La arquitectura de software para ser autoritario realmente necesita ser 3 cosas.
Declarativo
Esta es la parte de la documentación en la que declaras NO LO QUE ES, sino cómo DEBEN SER las cosas. Hacemos esto mediante el uso de varias vistas arquitectónicas del sistema. Definimos los componentes que deberían ser, cómo interactúan y luego, opcionalmente, profundizamos en cada componente para obtener vistas más detalladas que declaran cómo debe diseñarse el sistema.
Esta es una distinción importante. El diseño del sistema debe estar limitado por la arquitectura del sistema, de hecho, son cosas separadas pero relacionadas.
Razón fundamental
El fundamento de su arquitectura de software es lo que proporciona legitimidad y autoridad a las decisiones de arquitectura que se tomaron. ¿Tal vez se tomó la decisión de utilizar un detector de eventos Pub / Sub a través de MQ para activar un trabajo por lotes y lo diagrama?
¿Por qué se tomó esta decisión? Explicamos por qué en la sección Justificación y vinculamos nuestra explicación a Requisitos no funcionales, Objetivos de atributos de calidad o Requisitos arquitectónicamente significativos. (Por ejemplo, los trabajos deben ser asíncronos y repetibles, la mantenibilidad como un atributo de calidad impulsa que, en caso de una falla del trabajo por lotes, los trabajos puedan reiniciarse a través de un mensaje MQ, el sistema debe tener pérdida de mensajes cero con comunicación asincrónica, etc. ..)
Riesgos
Ahora que ha declarado cómo debe ser la arquitectura y lo ha demostrado con su justificación, ahora puede identificar los riesgos en el estado actual del sistema en el que esto no se cumple.
(Por ejemplo, la validación del lado del servidor se está duplicando en el código Javascript del lado del cliente. Esto es una violación del principio DRY y esto va en contra del atributo de calidad de mantenimiento. No hay requisitos no funcionales definidos alrededor del rendimiento en esta área, por lo que no hay justificación para el comportamiento actual del sistema)
Sus riesgos también pueden diagramar dónde se está desviando actualmente el estado actual de la arquitectura. Estos riesgos pueden ser abordados por el equipo de desarrollo ahora, ya sea a través de su plan de proyecto o agregando esto a la cartera de pedidos.