Domain-Driven Design & Bounded Contexts
Regarding to the domain architecture, the concept of micro and macro architecture has long been a common practice. A macro architecture divides the domains into coarse-grained modules. These modules are further divided as part of the micro architecture.
For example, an e-commerce system can be divided into modules and sub-modules as follows:
- Customer registration
- Order process
- Data validation
- Freight charge calculation
The internal architecture of the order process module is, however, hidden from the outside and can be altered without affecting other modules. This flexibility to change one module without influencing the other modules is one of the main advantages of modular software development.