Software Engineering Institute Carnegie Mellon

About the logo

Attribute Driven Design (ADD) Method

Challenges:
How do you design the architecture for a family of systems so that they best meet user needs?

  • How do you meet quality requirement goals for envisioned systems?
  • How do you design for a family of systems?
  • What architectural strategies are appropriate for your quality requirements?

Overview:
The Attribute Driven Design (ADD) method is a systematic approach to designing the architecture for a family of systems. It is based on knowing both the functional and quality requirements for your systems and knowing the architectural approaches that have proven successful in achieving those qualities in other systems.

Benefits:
The Attribute Driven Design (ADD) method enables designers to understand quality trade offs early in the design process and to allow for the variation of product line within their architecture.

Who Would Benefit:
Software product or project managers, software product line managers, software architects.

Example Use:
During an engagement with a large manufacturing concern that had little prior experience with either architecture or software product lines, a product line architecture for a particular family was designed jointly by personnel from the SEI and the manufacturer using the ADD method. Currently, four different products are being derived from the product line architecture.

Description:
The ADD method is a recursive decomposition method. At each stage of the decomposition there are the following steps:

  1. Choose architecturally significant requirements. The architecturally significant requirements are the combination of quality, business, and functional goals that "shape" the architecture.
  2. Choose patterns and children component types to satisfy drivers. There are known patterns to achieve various qualities. Choose the solutions that are most appropriate for the high priority qualities.
  3. Instantiate children design elements and allocate functionality from use cases using multiple views. The functionality to be achieved by the product family is allocated to the component types.
  4. Identify commonalities across component instances. These commonalities are what define the product line, as opposed to individual products.
  5. Validate that quality and functional requirements and any constraints have not been precluded from being satisfied by the decomposition.
  6. Refine use cases and quality scenarios as constraints to children design elements. Because ADD is a decomposition method, the inputs for the next stage of decomposition must be prepared.

Availability:
SEI staff will work with a customer architecture or design team to apply the ADD method.

Additional Information:

Related SEI Products and Services:
Attribute Driven Design (ADD) Method Tutorial
Product Line Analysis
Product Line Analysis Tutorial
Framework for Software Product Line Practice
Product Line Technical Probe (PLTP)
Product Line Quick Look (PLQL)
Software Product Lines: Practices and Patterns

Keywords:
Software architecture design, quality goal attainment, product line architecture design.