The activity of breaking a high-level system architecture into
distinct functional modules or entities is called functional decomposition.
When preparing to decompose a software system, the design team must decide
what strategy they will use. Many decomposition strategies have been written
about and are advocated; most the variations of the widely used top-down or
bottom-up approaches. (Ref.
Top-down design is the process of moving from a global
functional view of a system to a more specific view. Stepwise refinement is
one technique used in top-down design. With this method, design begins with
the statement of a few specific functions that together solve the entire
problem. Successive steps for refining the problem are used, each adding more
detail to the functions until the system has been completely decomposed.
A bottom-up design strategy for a software system is often used
when system performance is critical. In this method, the design team starts by
identifying and optimizing the most fundamental or primitive parts of the
system, and then combining those portions into the more global functions. (Ref.  and ).