Course Outline
-
Understanding
Flexibility
-
Customers and Product
Requirements
-
Modular Product
Architecture
-
Experimentation
-
Set-Based Design
-
Development Teams and People
Factors
-
Decision-Making
-
Project Management
-
Product Development
Processes
-
Implementing Flexibility
I.
Understanding Flexibility
II.
Customers and Product
Requirements
-
The Fallacy of Frozen Requirements
-
The Value of Customer Feedback
-
The MacCormack and Boehm Studies
-
The Overspecification Trap
-
The Principles of Iteration and
Customer Feedback
-
Lowering the Cost of Iteration
-
Specify at a Higher Level
-
Product Vision
-
Personas
-
Use Cases
-
User Stories
-
Anticipate Customer Needs
-
The Pitfalls of Customer Feedback
-
Summary
III.
Modular
Product Architectures
-
Modular vs Integral
Architectures
-
Examples of Architectural Choices
-
Automobile Design
-
Cordless Screwdriver
-
CD-ROM Drive
-
Architectural Approaches
-
Four Steps in Designing an
Architecture
-
Architectural Decisions
-
Placement of Functions
-
Interfaces
-
Providing for Growth
-
Architecture at the Design Level
-
Shifting the Hardware-Software
Boundary
-
Summary
IV.
Experimentation
V.
Set-Based Design
-
What is "Set-Based Design"?
-
Benefits of Set-Based Design
-
Managing Set-Based Design
-
Delaying Decisions
-
The Difficulties
-
Summary
VI.
Development
Teams and People Factors
VII.
Decision-Making
VIII.
Project Management
IX.
Product
Development Processes
-
Emergent Processes
-
Standardize in the Lower
Layers
-
Build, Do Not Scale Down,
Processes
-
The Essentials of Flexible
Processes
-
Balancing Structure with
Flexibility
-
Balancing Opposing Risks
-
Shifting the Balance
-
Bottlenecks and Queues
-
Useful Concepts from Agile
Software Development
-
Summary
X.
Implementing
Flexibility
-
Five Paradoxes
-
Top-Down or Bottom-Up?
-
Start Small or Start Big?
-
Start with a Piece or with the
Whole Package?
-
Gradual or Ambitious?
-
Exposed or Sheltered Project?
-
Transitions are the Crux
-
Top-Down Change
-
Bottom-Up Change
-
Summary and
Closing
|