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
More effective in the face of stable requirements