The software architect decides the boundaries of components. The components are a high-level group of codes and modules, while the modules are codes that are related to each other. We can think of them as libraries and small, lightweight frameworks. Components are one level above and formed by modules. Depending on the application and system, module partitioning is possible in two ways: domain and technical. Domain partitioning is embraced by Domain-Driven Design and focuses on architecting the system using business domains. On the other hand, technical partitioning splits the system using technical capabilities such as persistence, service, and presentation.
- Related Note(s):
- 19a: Knowns and Unknowns;
- 26: The Cost of Software Deployment and Continuous Delivery;
- 42: What to Consider While Designing a Software System;
- 43: The Role and Responsibility of Software Architect;
- 48: System Design Index;
- 56: Structuring Teams in Organizations;
- 59: Functional Decomposition in Software Systems;
- Source(s): Fundamentals of Software Architecture by Mark Richards & Neal Ford;