Program Design is the phase of computer program development in which the hardware and software resources needed by the program are identified and the logic to be used by the program is determined. Program Design consists of the steps a programmer should do before they start coding the program in a specific language. These steps when properly documented will make the completed program easier for other programmers to maintain in the future.
The programming process is similar in approach and creativity to writing a paper. In composition, you are writing to express ideas; in programming you are expressing a computation. Both the programmer and the writer must adhere to the syntactic rules (grammar) of a particular language. In prose, the fundamental idea-expressing unit is the sentence; in programming, two units – statements and comments – are available.
An important difference between programming and composition is that in programming you are writing for two audiences: people and computers. As for the computers, what you write is “read” by interpreters and compilers specific to the language you used. They are very rigid about syntactic rules, and perform exactly the calculations you say.
Humans demand even more from programs. This audience consists of two main groups, whose goals can conflict. The larger of the two groups consists of users. Users care about how the program presents itself, its user interface, and how quickly the program runs, how efficient it is. To satisfy this audience, programmers may use statements that are overly terse because they know how to make the program more readable by the computer’s compiler, enabling the compiler to produce faster, but less human-intelligible program. This approach causes the other portion of the audience, i.e. programmers, to boo and hiss. The smaller audience, of which you are also a member, must be able to read the program so that they can enhance and/or change it.
A characteristic of programs is that you and others will seek to modify your program in the future. The program’s meaning is conveyed by statements, and is what the computer interprets. Humans read this part, which in virtually all languages bears a strong relationship to mathematical equations, and also read comments. Comments are not read by the computer at all, but are there to help explain what might be expressed in a complicated way by programming language syntax. The document or program you write today should be understandable tomorrow, not only by you, but also by others. The program’s organization should be easy to follow and the way you write the program, using both statements and comments, should help you and others understand how the computation proceeds. The existence of comments permits the writer to directly express the program’s outline in the program to help the reader comprehend the computation.
As a consequence, program design must be extremely structured, having the ultimate intentions of performing a specific calculation efficiently with attractive, understandable, efficient programs. Achieving these general goals means breaking the program into components, writing and testing them separately, then merging them according to the outline.