3.1 The Need for a Principled Method3.2 Attribute-Driven Design 3.03.2.1 Step 1: Review Inputs3.2.2 Step 2: Establish the Iteration Goal by Selecting Drivers3.2.3 Step 3: Choose One or More Elements of the System to Refine3.2.4 Step 4: Choose One or More Design Concepts That Satisfy the Selected Drivers3.2.5 Step 5: Instantiate Architectural Elements, Allocate Responsibilities, and Define Interfaces3.2.6 Step 6: Sketch Views and Record Design Decisions3.2.7 Step 7: Perform Analysis of Current Design and Review Iteration Goal and Achievement of Design Purpose3.2.8 Iterate If Necessary3.3 Following a Design Roadmap According to System Type3.3.1 Design of Greenfield Systems for Mature Domains3.3.2 Design of Greenfield Systems for Novel Domains3.3.3 Design for an Existing System (Brownfield)3.4 Identifying and Selecting Design Concepts3.4.1 Identification of Design Concepts3.4.2 Selection of Design Concepts3.5 Producing Structures3.5.1 Instantiating Elements3.5.2 Associating Responsibilities and Identifying Properties3.5.3 Establishing Relationships Between the Elements3.6 Defining Interfaces3.6.1 External Interfaces3.6.2 Internal Interfaces3.7 Creating Preliminary Documentation During Design3.7.1 Recording Sketches of the Views3.7.2 Recording Design Decisions3.8 Tracking Design Progress3.8.1 Use of an Architectural Backlog3.8.2 Use of a Design Kanban Board3.9 Summary3.10 Further Reading