The second stage in software development or problem solving using computer cycle is program design. This stage consists of preparing algorithms, flowcharts and pseudocodes. Generally, this stage intends to make the program more user friendly, feasible and optimized. Programmer just requires a pen and pencil in this step in which the tasks are first converted into a structured layout without the involvement of computer. In structured programming, a given task is divided into number of sub-tasks which are termed as modules. Each process is further divided until no further divisions are required. This process of dividing a program into modules and then into sub-modules is known as “top down” design approach. Dividing a program into modules (functions) breaks down a given programming task into small, independent and manageable tasks.
In program design we are mainly interested in designing: