Structured decomposition is a technique for decomposing large complex problems into a series of smaller related problems. We seek to do this for the reasons discussed earlier.
We are interested in an organized or systematic approach for doing this because we wish to make sure we solve the right problem and solve it completely. We wish to avoid, late in the development effort, finding that we failed to account for part of the problem that forces us to spend additional time and money to correct and brings into question the validity of our current solution.
We wish to avoid avoidable errors because they cost so much in time, money, and credibility. This cost rises sharply the further into the development process we proceed before the problem is discovered.
The understanding is that the problems we seek to solve are very complex and that their solution will require many people, each specialized in a particular technical discipline.
Further, we understand that we must encourage these specialists to work together to attain a condition of synergism of their knowledge and skill and apply that to the solution of the complex problem.
This is not a field of play for rugged individuals except in the leadership of these bands of specialists. They need skilled and forceful leadership by a person possessed of great knowledge applicable to the development work and able to make sound decisions when offered the best evidence available.
During the development of several intercontinental ballistic missile (ICBM) systems by the U.S. Air Force, a very organized process called functional analysis came to be used as a means to thoroughly understand the problem, reach a solution that posed the maximum threat to our enemies consistent with the maximum safety for the United States, and make the best possible choices in the use of available resources.
We could argue whether this process was optimum and successful in terms of the money spent and public safety, but we would have difficulty arguing with the results following the demise of the Soviet Union as a threat to the future of the United States.
At the time these systems were in development, computer and software technology were also in a state of development. The government evolved a very organized method for accumulating the information upon which development decisions were made involving computer capture and reporting of this information.
Specifications were prepared on the organized systems that contractors were required to respect for preparing this information. Generally, these systems were conceived by people with a paper mindset within an environment of immature computer capability.
Paper forms were used based on the Hollerith 80-column card input-output and intended as data entry forms. These completed forms went to a key punch operator. The computer generated poorly crafted report forms. But, this was a beginning and very successful in its final results.
This process included at its heart a modeling technique called functional flow diagramming, discussed briefly above. The technique uses a simple graphical image created from blocks, lines, and combinatorial flow symbols to model or illustrate needed functionality.
It was no chance choice of a graphical approach to do this. It has long been well known that we humans can gain a lot more understanding from pictures than we can from text. It is true that a picture is worth 103 words. Imagine for a moment the amount of information we take in from a road map glanced at while driving in traffic and the data rate involved.
All of the structured decomposition techniques employ graphical methods that encourage analytical completeness as well as minimizing the time required to achieve the end result.
While functional flow diagramming was an early technique useful in association with the most general kind of problem, computer software analysis has contributed many more recent variations better suited to the narrower characteristics of software.
U.S. Air Force ICBM programs required adherence to a system requirements analysis standard and delivery of data prepared in accordance with a data item description for functional flow diagramming. While functional flow diagramming is still a very effective technique for grand systems and hardware, it is not as effective for computer software analysis as other techniques developed specifically for it. So, our toolbox of analytical techniques should have several tools in it including functional flow diagramming and several others.