diff --git a/adr/005-oea.md b/adr/005-oea.md new file mode 100644 index 000000000..47c70fe30 --- /dev/null +++ b/adr/005-oea.md @@ -0,0 +1,60 @@ +# 5. Option Enabling Architecture (OEA) + +Date: 2022-10-24 + +## Decision + +We will use use OEA practices to inform how we add new features and refactor. + +## Status + +Accepted. + +## Context + +OEA is similar to [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html). +There are a couple main concepts that we strive to maintain while also being pragmatic. + +1. Less important code depends on more important code. For example, third-party dependencies such as ReST + frameworks, and database ORMs. This allows for swapping out less important code without affecting the more + important code. + + +2. Dependency inversion. This allows the path of code execution not to follow the dependency path of + less important code depending on more important code. For example, when business logic needs to call the + database. + +## Impact + +### Positive + +- **More flexible architecture** + + +- **Risk mitigation** through delayed decision-making. + + +- **Minimizes large-scale changes and overhauls** + + +- **Better maintainability** + +### Negative + +- **Experience May Be Required:** requires more experience to implement successfully + + +- **Increased initial development time** + + +- **Increased Planning:** requires much more forethought prior to implementation + +### Risks + +- **Overengineering:** potential to overengineer by keeping too many options open +- Deferred decision-making can lead to technical debt + +## Related Issues + +- #1 +- #13 diff --git a/adr/005-oesa.md b/adr/005-oesa.md deleted file mode 100644 index af23e6ef8..000000000 --- a/adr/005-oesa.md +++ /dev/null @@ -1,28 +0,0 @@ -# 5. Option-enabling Software Architecture (OeSA) - -Date: 2022-10-24 - -## Decision - -We will use use OeSA to inform how we add new features and refactor. - -## Status - -Accepted. - -## Context - -OeSA is similar to [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html). -There are a couple main concepts that we strive to maintain while also being pragmatic. - -1. Less important code depends on more important code. For example, third-party dependencies such as ReST - frameworks, and database ORMs. This allows for swapping out less important code without affecting the more - important code. -2. Dependency inversion. This allows the path of code execution not to follow the dependency path of - less important code depending on more important code. For example, when business logic needs to call the - database. - -### Related Issues - -- #1 -- #13