The SEI 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 an SEI 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 activities are:
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 SEI ArchE, an architecture expert design assistant.
For consulting information about ADD and architecture design, visit our consulting pages. Direct technical questions to us using the link in the For more information box at the bottom of this page.
Attribute-Driven Design (ADD), Version 2.0
Rob Wojcik, Felix Bachmann, Len Bass, Paul Clements, Paulo Merson, Robert Nord, & Bill Wood
Integrating Software-Architecture-Centric Methods into the Rational Unified Process
Rick Kazman, Philippe Kruchten, Robert L. Nord, & James E. Tomayko
Managing Variability in Software Architectures
Felix Bachmann & Len Bass
A Practical Example of Applying Attribute-Driven Design (ADD), Version 2.0
William G. Wood
Quality Attribute Design Primitives and the Attribute Driven Design Method
Len Bass, Mark Klein, & Felix Bachmann