A software before comes to market undergoes several number of stages. These series of stages that a s/w product undergoes during its lifetime is called software life cycle. There are different models for descriptive and diagrammatic representation of software life cycle. The life cycle model forms a common understanding among the s/w engineers. It helps to develop s/w in a systematic and disciplined way.
Proper documentation of the life cycle model is a mandatory requirement for quality assurance. By documentation, inconsistencies, redundancies and omission in the development process can be identified easily. It also enhances the understanding of process among the developers. So, In each satge of development, everything is written in script format for future reference purpose.
Waterfall Model:
This model divides the life cycle into number of phases. The different phases are as follows:
1) Feasibility study
2) Requirement analysis and specification
3) Design
4) Coding and unit testing
5) Integration and system testing
6) Maintenance
Among all the phases, the maintenance phase requires the maximum effort. Each phase has well-defined starting and ending criteria which is documented. And it requires different amounts of effort for each phase.
1) Feasibility study:
The main aim of feasibility study is to determine financial and technical feasibility to develop the product. It involves properly analyzing the problem. Collecting relevant information related to the product like required input data, the processing required and the output data required.Different alternative solution strategies are compared for project development. In this stage the project can be abandoned if it is not feasible because of high cost, resource constraints or technical problems.
2) Requirement analysis and specification:
The goal of this stage is to understand the exact requirements of the customers. For this interviews and discussions are conducted with the customers. Any ambiguity or contradiction in the requirements must be resolved before proceeding further.Finally, all the user requirements are systematically organized into a Software Requirements Specifications (SRS) document. This document is reviewed and approved by the customer. It also serves as a contract between the developers and the customer
3) Design:
In this phase the requirements specified in the SRS document are given a structure that can be implemented in programming language. In other words the software architecture is developed.In traditional design approach the different functions to be supported by the system and the data flow among them are identified. All these information are represented diagrammatically in Data flow diagrams (DFD). Then the system is decomposed into modules. The data structure and algorithms of each module are also designed in this stage.
4) Coding and Unit Testing:
The goal of this stage is to translate the software design into source code. Each component of the design is implemented as a program module. The programming can be done using any language like C, C++, Java according to the project requirement.In this stage each module is tested separately to ensure correct working of all individual modules. Unit testing is done when a module has been coded and successfully reviewed.
5) Integration and system testing:
In this phase all the modules are integrated in a planned manner. The partially integrated system is tested and a set of previously planned modules are attached to it. At last system testing is carried out when all the modules have been successfully integrated.System testing ensures that the system conforms to all the user requirements specified in SRS document. Generally it consists of 3 kinds of activities.
α – testing is performed by the software development team. β - testing is performed by a friendly set of customers and acceptance testing is performed by the customer after product delivery.