The key drivers are as follows:
- The code base of the application is large, unmanageable, complex, brittle, and refactoring is burdensome due to regression
- Lack of documentation hinders usage and future upgrades
- Implementation does not have an automated regression test framework
- Extreme dependencies among tiers, layers, and components, and incorrect coupling of classes prevents replacement and updates, and can cause changes to flow through the entire system
- Leveraging direct communication prevents changes to the physical architecture i.e layers, tiers, and components
- Interdependency on bespoke applications of features such as authentication and authorization prevents reuse and hampers maintenance
- The implementation of components ...