Functional decomposition
Divide-and-conquer based on functions
Then proceed to decompose compute
This is stepwise refinement (Wirth, 1971)
There is an enormous body of work in this area, including many formal calculi to support the approach
- Closely related to proving programs correct
More effective in the face of stable requirements