finos / architecture-as-code

"Architecture as Code" (AasC) aims to devise and manage software architecture via a machine readable and version-controlled codebase, fostering a robust understanding, efficient development, and seamless maintenance of complex software architectures
https://calm.finos.org/
Apache License 2.0
59 stars 31 forks source link

Integrating Architecture Decision Records into CALM #475

Open LeighFinegold opened 1 week ago

LeighFinegold commented 1 week ago

Feature Request

Description of Problem:

CALM provides a robust framework for documenting system architectures, capturing nodes, relationships, controls, and patterns. However, it currently lacks a mechanism for integrating Architecture Decision Records (ADRs) directly into these specifications. ADRs are critical for capturing the context and rationale behind architectural decisions, which can significantly impact the structure and behaviour of a system.

In complex architectures, the absence of clear links between ADRs and architectural components can lead to misunderstandings, rework, and difficulties in decision-making. This challenge is compounded when systems evolve, making it essential to have a straightforward way to trace decisions back to the relevant nodes, relationships, flows, and patterns.

Potential Solutions:

  1. Link Architectural Records to Nodes, Relationships, Flows, and Patterns: Amend nodes, relationships, flows, and pattern definitions that allow for references to ADRs i.e. similar how control requirements were added.

  2. Separate ADR Construct: Alternatively, we could create a separate construct for ADRs that points back to the document containing nodes, relationships, and patterns. This construct would not be part of the core document but would allow users to reference and maintain ADRs independently while still associating them with relevant architectural elements.

By implementing one of these solutions, we would enhance CALM's capability to serve as a comprehensive source of truth for both architectural structures and the decisions that shape them.

rocketstack-matt commented 1 week ago

I think we would probably want both of these in target state. We should start with 1 because it's simple, but someone using CALM and the related tooling who doesn't already have an existing solution for ADRs would likely want it integrated.