Contract-First Design

From Open Source Ecology
Jump to navigation Jump to search

About

http://www.scrum-breakfast.com/2013/06/xm-principle-4-contract-first-design.html

This means design the interface between modules first - not the modules themselves.

When designing a solution:

  • Design the interfaces based on outside parameters, e.g. load factors, or communication and power requirements.
  • Only architect the connections up front, not the individual components.
  • Leave room to grow, i.e. over engineer these interfaces, because changing these fundamental contracts may be expensive.

Challenge

Challenge: emergence. Some interfaces may not be recognized. That is, it may not be recognized that a specific interface exists or is needed. Thus, interface design may be an iterative process within the design process.

Indeed, at the limit of specificity of interface design - the actual design emerges. When an interface is designed in practice, the result is a 'complete design.' If we start with the 'complete design' - then interfaces can be extracted, and documented.

Thus, the interface design and design-proper design processes can be highly iterative.

Links