Chapter 20: Attribute-Driven Design – Creating Architecture

Loading audio…

ⓘ This audio and summary are simplified educational interpretations and are not a substitute for the original text.

If there is an issue with this chapter, please let us know → Contact Us

The complex activity of architectural design, traditionally reserved for senior engineers, is made systematic, repeatable, and teachable through the Attribute-Driven Design (ADD) method, which is discussed in detail. ADD is a systematic approach where decisions regarding architectural drivers—comprising architecturally significant requirements (ASRs), functionality, constraints, and the design purpose—are transformed into essential architectural structures that guide subsequent project analysis and construction. The design process is broken down into structured rounds, each containing one or more design iterations (Steps 2–7). An iteration begins with Step 1: Review Inputs, where drivers are validated and prioritized, forming an architectural design backlog. Next, the team establishes the iteration goal by selecting a subset of drivers (Step 2) and identifying the system elements to refine (Step 3), which may involve decomposing existing parts or combining them into coarser-grained elements. The most challenging stage is Step 4: Choosing design concepts, which involves identifying and selecting appropriate pre-existing solutions like patterns, tactics, reference architectures, or external components. When facing high uncertainty regarding new technologies or critical QA satisfaction, the team may justify building "throwaway" prototypes by using the Value of Information (VoI) technique to quantify the cost-benefit of experimentation. Once concepts are selected, the architect instantiates architectural elements (Step 5), allocating specific responsibilities to these resulting structures (Module, Component and Connector, or Allocation structures). This instantiation requires defining the properties and relationships between elements and specifying internal and external interfaces, which serve as contractual specifications for collaboration and information exchange. To preserve the work, Step 6 requires sketching views and recording design decisions, capturing preliminary diagrams and rationale for analysis and communication, emphasizing the discipline of documenting element responsibilities early. Finally, in Step 7, the team performs analysis of the current design, often through peer review, and determines whether the iteration goal and overall design purpose have been achieved. Progress tracking tools, such as the Design Kanban Board, help visualize which drivers have been "Not Yet Addressed," "Partially Addressed," or "Completely Addressed," guiding the decision to proceed to implementation or perform additional iterations to satisfy high-priority drivers. This systematic approach, especially in its updated form (ADD 3.0), includes explicit guidance on documentation, analysis, and implementation technology selection, making it applicable even in Agile development contexts.