- Documents a decision that addresses a requirement (functional or /non functional requirement ) that is architecturally significant An Architecturally Significant Requirement is a requirement has significant impact on the application's architecture
- An architecturally significant requirement is something that has a measurable effect on a software system’s architecture and quality.Solution to a problem the application architecture's llities such as
- Usability
- Reliability
- Availability
- Portability
- Testability
- Scalability
- Flexibility
- Reusability
- Maintainability
- Supportability
- Interoperability
- Performance
- Security
- The solution to a problem/requirement can start as an RFC to facilitate discussion and collaboration within among the community members. The outcome of the RFC must be recorded as an ADR
- ADR can also be used to document patterns/standards that forms naturally. Patterns Such patterns can be identified when doing code reviews
- Status
- DRAFT
- ACCEPTED
- SUPERSEDED by ADR-xxx
- OBSOLETE
- Add label to confluence pages that has an ADR
Resources
https://github.com/npryce/adr-tools
Questions
- Is there any value in maintaining a decision log at the repo level ? Won't be an ADR.
- Can we categorize ADRs? DB, Frontend, Spring, Java, Python, CI/CD, Security, Performance, API, JavaScript