Software is a collection of programs and a program is a collection of instructions given to the computer. Development of software is a stepwise process which consists of following steps:
- Requirement phase: This is the first step in which the user requirements are understood. Problem analysis is done during this stage to determine the input and output of the program.
- Algorithm design phase: For solving the problem determined in the requirement phase an “algorithm” is implemented. Algorithm is a sequence of steps that gives the method of solving a problem. This algorithm creates the logic of the program.
- Program coding phase: On the basis of algorithm designed, program code is written.
- Testing and debugging phase: After coding the program is tested rigorously to test its functionality and reliability. Experimental debugging is done to improve the quality of code.
- Program documentation phase: Program is documented with care so that it is easier to modify or enhance the program whenever required.
Designing involves conceptualizing the problem, thinking creatively about the solution and expressing the solution clearly and concisely. Various trade-offs are evaluated during the design stage to realize an efficient and effective solution.
It’s difficult to design a large system because of its complexity. Thus various methods have evolved for designing the software. Broadly they can be classified into following methods.
- Top-Down Design
Every system consists of hierarchy of components. Top-down design method starts from the top-level component to the lowest level(bottom) component. This method involves dividing the system into its major components. Then each major component is divided into lower level components which are further divided to the lowest level component. The lowest level component is determined by the ease with which it can be comprehended and represented at the system level.
- Bottom-Up Design
It’s the reverse of Top-Down approach. It starts from the lowest level component to the highest level component. It first designs the basic components and from these components higher level components are designed.
- Modular Approach In this method the large system is divided into modules. Unlike in other two methods the division is based on the functionality rather that simplicity. Each module is offers a service with consistent interface. It’s easy to modify a program written with modular approach because changes in one module don’t affect the other modules of the program. And it’s also easy to debug the program as each module defines a specific function.