(1) decompose our system

  • value types
  • objects
decompose our system into value types and loosely coupled computational objects

(2) building blocks

  • lower-level objects into more capable objects
use lower-level objects as the building blocks of more capable objects

(src: Book: Growing Object Oriented Software, Guided By Tests - Steve Freeman & Nat Pryce)