software blueprints
The process of developing a software product is analogous to the process by which a building concept becomes a reality. Reliability is insured in both processes by validation of the design with a blueprint prior to construction. Just as the architect relies on blueprints to validate his plans for construction of a building, so may the software developer rely on software blueprints to validate his plans for construction of a software product. The sequence of steps in software development include determination of requirements, specification of the various modules or subprograms to be developed, preparation of the module blueprints, peer review of the blueprints, construction or coding of the modules, module testing, and system testing. The module blueprint is the focal point of the process. Utilizing the structured flowcharting techniques of Nassi and Shneiderman, the blueprint is prepared as a working design document. It contains the complete coding requirements of the module and includes a graphical representation of the detailed logic performed, an English description of the action performed, and the actual source code of the programming language employed. Currently recognized benefits of peer review are refined and expanded when the procedure is applied to validation of software blueprints. The degree of understanding, and thus error detection, is superior to that obtained from applying the review technique to source code listings. The blueprint review introduces an apprenticeship environment in which learning is quickened and the time required for a novice to obtain the capability of mature design is lessened. The procedures used provide a prototype for future software design applications.
software process product concept reliability design software development sequence determinism requirements module review code test systems point structured flowcharts structure documentation completeness graphics representation logic action programming language procedure understandability error detection environments learning timing novice prototype future software design applications stepwise refinement peer-review nassi-shneiderman charts iterative refinement requirements specification structured code chapin charts structured walkthrough structured programming team structured design program design language structured programming source-code