You write a specification of what the system is
supposed to do. You then implement that specification as a set of
components, showing that if each of the components satisfies its
specification, then their combination satisfies the system's
specification. You then implement each component, knowing that if
each component meets its specification, then the system meets its
specification.