Software Engineering Institute Carnegie Mellon

Attribute-Driven Design (ADD) Method

The SEI's Attribute-Driven Design (ADD) method is a systematic step-by-step method for designing the software architecture of a software-intensive system.

Required input to ADD includes known functional requirements, quality attribute requirements, and constraints. Functional requirements may be specified with a feature list or use cases. Quality attribute requirements may be specified using quality attribute scenarios, such as result from a Quality Attribute Workshop. Constraints are design decisions that are forced by outside factors.

Applying ADD results in the first several levels of module decomposition, a preliminary set of other architectural views (as appropriate for the architecture patterns selected along the way), and set of elements with assigned functionalities and the interactions among the elements. ADD is a recursive method. Roughly, the steps at each stage are:

  1. Choose an element of the system to design. (The first time, this will likely be the entire system itself.)
  2. Identify architecturally significant requirements that apply to the element being designed. The architecturally significant requirements are the combination of quality, business, and functional goals that apply to the element being designed and that will have the biggest impact on its architecture.
  3. Choose patterns and tactics to satisfy the architectural drivers. There are known patterns to achieve various qualities and functionality. Choose the solutions that are most appropriate for the high priority architectural drivers.
  4. Instantiate the pattern and tactics to create new design elements within the element. The new elements will be of the types dictated by the chosen pattern and tactics. Assign each new element its functionality and sketch an interface for it showing information flow.
  5. Refine the quality, business, and functional goals and constraints and allocate them to the newly created design elements, which will be the subject of future iterations.
  6. Repeat steps 1-6 until all of the drivers have been satisfied.

The ADD method has been used for application domains ranging from information systems to embedded systems. Additional research on systematically producing an architecture design from a set of quality attribute scenarios is underway. Current work is embodied in ArchE, an architecture expert design assistant.

Additional Information

Read More:

Products and Services: Learn about ADD and architecture design related products and services.

Contact Information: For technical details about ADD, contact Rob Wojcik.

Working with the SEI: Learn more about working with the SEI in software architecture.