Program Design
Program design The activity of progressing from a specification of some required program to a description of the program itself. Most phase models of the software life cycle recognize program design as one of the phases. The input to this phase is a specification of what the program is required to do. During the phase the design decisions are made as to how the program will meet these requirements, and the output of the phase is a description of the program in some form that provides a suitable basis for subsequent implementation.
Frequently the design phase is divided into two subphases, one of coarsearchitectural design and one of detailed design. The architectural design produces a description of the program at a gross level; it is normally given in terms of the major components of the program and their interrelationships, the main algorithms that these components employ, and the major data structures. The detailed design then refines the architectural design to the stage where actual implementation can begin.
Frequently the design phase is divided into two subphases, one of coarsearchitectural design and one of detailed design. The architectural design produces a description of the program at a gross level; it is normally given in terms of the major components of the program and their interrelationships, the main algorithms that these components employ, and the major data structures. The detailed design then refines the architectural design to the stage where actual implementation can begin.
Program design language (PDL) A language, used for expressing program designs, that is similar to a conventional high-level programming language but emphasizes structure and intention rather than the ability to execute programs expressed in the language. PDLs are often employed in conjunction with structured programming. When not executable they are termed pseudolanguages.
Typically the formal syntax of a PDL would cover data definition and overall program structure. Facilities in the latter area would include the basic control-flow constructs – sequential, conditional, and iterative – plus those for the definition and invocation of subroutines. These facilities would be used to define the overall framework of the program, but individual actions within the framework would be expressed using pseudolanguage – natural English mixed with a more formal semantically rich language. Correspondingly, the PDL facilities for data definition may be expected to be richer than those of a typical programming language, encompassing a broader range of basic types and a more extensive set of data-structuring facilities. A wide variety of PDLs have been defined; normal practice is to select one that is well-matched to the target programming language.
Typically the formal syntax of a PDL would cover data definition and overall program structure. Facilities in the latter area would include the basic control-flow constructs – sequential, conditional, and iterative – plus those for the definition and invocation of subroutines. These facilities would be used to define the overall framework of the program, but individual actions within the framework would be expressed using pseudolanguage – natural English mixed with a more formal semantically rich language. Correspondingly, the PDL facilities for data definition may be expected to be richer than those of a typical programming language, encompassing a broader range of basic types and a more extensive set of data-structuring facilities. A wide variety of PDLs have been defined; normal practice is to select one that is well-matched to the target programming language.