Attribute-driven design (ADD) process allows us to use a recursive method for explicitly representing of quality attributes as well as explicitly stating association between architectural decision and quality attributes. To begin the process of ADD, we need a set of functional requirements (e.g. use-cases), quality attributes (ideally expressed through design scenarios) and any further system constraints potentially impactful to the system.
The ADD method is made of 3 key steps:
- Choose a module to decompose
- Initially the whole system
- Refine the module
- Choose architectural drivers
- Determine quality attributes important for this decomposition
- Choose tactics and patterns to satisfy drivers
- Satisfy quality Attributes
- Allocate functionality from functional requirements
- Satisfy functional requirements
- Verify and refine functional requirements
- Make them constraints for the child modules
- Choose architectural drivers
- Repeat steps for all modules requiring further decomposition