The HIPO chart is a tool used to analyze a problem and visualize a solution using the top down design approach. Starting at the global (macro) level, the chart is decomposed repeatedly at ever-greater levels of detail until the logical building blocks (functions) are identified. The general model is illustrated below in figure 1.
An example of an application of this model is shown in figure 2. The payroll process is first broken down into the first level processes. Any process may be broken down in the same way at this level. There will always be an input task, a process task, and an output task in a program.
The next step is to identify the sub-processes or functions for each of these tasks. In a typical payroll process, the hours worked by each employee during the payroll period are required as input. Each employee's rate of pay, number of dependents, insurance premiums (if any) and so on are also required as input.
The process consists fundamentally of a gross pay calculation, involuntary deductions (Federal tax, FICA, state tax, etc.), voluntary deductions (medical, dental, life insurance programs, United Way, etc.), and a net pay calculation.
The output will consist of a paycheck and stub for each employee. There will also be a check register for the company's records.
This is the basic process as broken down and illustrated in the example. The process can be much more complicated and detailed in reality, but the example was kept simple to illustrate the technique.
A unit is a sub-process rather than a function if it can logically and reasonably be further decomposed. It can be further decomposed if it obviously contains two or more identifiable distinctly separate units, each of which accomplishes a unique task independently. A sub-process unit should not be coded. A sub-process unit should cry out to be logically subdivided.
A function has been identified if there is a single coherent task being done. This then is the end point for this particular branch of the HIPO chart. Further subdivision would not make sense. The unit identified as a function cries out to be coded rather than subdivided. It is the units identified as logical functions in the HIPO Chart that will be implemented as coded functions in the program.
Keep in mind that the purpose of this tool is to aid in identifying the basic building blocks (logical functions) required in the solution to the given problem. It is a still picture, a snapshot. Unlike a program flowchart, which shows the order of processing (the relationship of the functions over a time line) in a moving picture fashion, the HIPO Chart is not concerned with order. It is concerned with modularity and structure.
A next step could be to render the identified functions in a program flowchart in preparation for coding. The flowchart is a moving picture of the problem solution for us. The coded program is a moving picture of the problem solution for the computer. The HIPO Chart is a family snapshot showing all the family members before we start making the moving picture.