Application Architecture Discovery - Towards Domain-Driven, Easily-Extensible Code Structure
The architecture of a software system and its code structure have a strong impact on its maintainability - the ability to fix problems, and make changes to the system efficiently. To ensure maintainability, software systems are usually organized as subsystems or modules, each with atomically defined responsibilities. However, as the system evolves, the structure of the system undergoes continuous modifications, drifting away from its original design, leading to functionally non-atomic modules and intertwined dependencies between the modules. In this paper, the authors propose an approach to improve the code structure and architecture by leveraging the domain knowledge of the system.