Precisely Annotated Hierarchial Pictures of Programs

Dr. David Lorge Parnas

and Mr. Ashley Lawton

Software Engineering Research Group
CRL, McMaster University,
Hamilton, Ontario, Canada L8S 4K1


Pictures help people to get an understanding of the basic structure of complex products. However, often pictures of programs are not very helpful. Flowcharts and other diagrams for real programs can be quite complex. Moreover, many diagrammatic representations of programs do not have a precise meaning because pictures do not provide a way of summarising the behaviour of software components. This paper presents an approach to diagramming programs that combines the best features of pictures and mathematical documentation. Our approach, "program blueprints", was inspired by other areas of engineering, where hierarchically structured pictures are combined with precise mathematical descriptions of the components to yield documents that provide both an overview and precise details. At first glance, blueprints look much like flow charts. The principal distinguishing characteristics are:

- All arrows flow from left to right - no "arrowheads" are needed.
- Loops are represented explicitly rather than implicitly by "backward" arrows,
- Boxes that represent a program contain precise summaries of that program's behaviour.
- Each blueprint can be understood and checked without referring to other blueprints.