The Object-Oriented (OO) approach has been highly touted for its ability to support the development of reusable software systems. However, practice has shown that it can be hard to manage the complexity of large projects using purely OO techniques.
For example, the developers of the now infamous Mars Pathfinder Mission testified that when they followed "text-book" OO methodologies they immediately encountered problems because of the large number of identified classes. They concluded that OO's bottom-up approach was impractical in relation to their project's size and complexity, and so chose an approach that combined top-down functional decomposition's ability to compartmentalize the problem with OO's ability to identify and model the behavior within each compartment.
Function-Class Decomposition (FCD) describes such a systematic approach to integrating top-down functional decomposition with OO decompovsition of classes within the functional modules.