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
Payment
Shipping
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.