Ten tips to establish clear boundaries between application tiers

June 25, 2010

  1. Talk about the user stories. Who is the user? What must the system do to serve the user?
  2. Base the system design on user stories rather than system requirements.
  3. Specify the tests (even if only in non-functional pseudo-code) before writing corresponding system components.
  4. Identify the differences between public and internal system behavior.
  5. Specify the public API. What information goes into and the comes out of the system?
  6. Lock the public API. This becomes the data contract and service contract.
  7. Specify the internal API. What information must system components share?
  8. Lock the internal API (to a reasonable extent). This becomes the internal data contract and service contract.
  9. Validate the system against the data and service contracts.
  10. Build only what is necessary to satisfy the user stories at hand.