Software Engineering-I : SOFTWARE DEVELOPMENT MODELS

  SOFTWARE DEVELOPMENT MODELS

     Software development is a layered technology which is based on its commitment to quality at bottom line. Software process is the way; the software is produced as a product. It uses tools and techniques to give high quality software product. Evolution of software development can be studied with the help of different software development models such as waterfall model, spiral model, prototyping and many more. Most of them are based on structured methodology such as SDLC and some are having totally different approach such as object oriented model. 

WATERFALL MODEL :

In waterfall model the process is structured as a cascade of phases, where the output of one phase is the input to the next one. Each phase in turn is structured as a set of activities that might be executed by different people concurrently. As waterfall model prescribes a sequential linear flow among phases, output each phase must be produced using standards. If output of any phase is wrong, it may affect the subsequent phases. Waterfall model is also useful to measure the progress of the project.

1. Preliminary investigation: - Preliminary investigation is done to find out the root cause of the problem for which the system is supposed to be developed. 
2. Requirement analysis:- Requirement of both system and software is documented and reviewed with the customer. 
3. System design: - It is multistep process which focuses on attributes such as 
                                    i] Data structure 
                                    ii] Software architecture
                                    iii] Interface representation 
                                    vi ]Procedural details
4. System coding: - At this step the logical aspect of the design is converted into machine readable form. Special focus of this step is on logical internals. 
5.System testing: - This step of the waterfall model is to uncover the errors and ensure that the defined input can generate expected results. 
6. Implementation: - In implementation phase proper schedule of the following aspects is done and then it is implemented. 
                                I. Procurement of hardware 
                                II. Installation of software 
                                III. Recruitment of human ware 
                                IV. Educating & Training the staff  
                                V. Conversion of data structure into required format 
                               VI. Finally operational implementation of the system. 
7. Maintenance: - Maintenance step of waterfall model takes care by implementing all types of maintenance of the system such as 
                                    I. Corrective maintenance for removal of residual errors. 
                                  II. Adaptive maintenance for hardware. 
                                  III. Perfective maintenance to enhance the quality of the software.

SPIRAL MODEL

When development of the project starts, it may be possible that the work may be stopped due to any reason whatever hurdles are there in future work must be studied initially and steps must be taken to solve such problems. The spiral model is useful in such situations, which guides the risk in the project. Risks are concerned with future. The spiral model is useful for identifying and eliminating high risk problems by careful process design.

The model represented by spiral (cycle) contains four stages and each stage is represented by one quadrant of the Cartesian diagram. The radius of the spiral represents the cost incurred so far in the process. 
The four major activities are
 i) Planning:- In this stage identification of the objectives, alternatives and constraints of the portion of the product under consideration is done.
ii) Risk Analysis:- The alternatives are evaluated and potential risks areas are identified and efforts are made to resolve the risks.
iii) Engineering:- Development and verification of the next level product is done using the activities like prototyping or simulation.
iv) Customer evaluation:- The customer evaluates the engineering work and makes suggestion for modification. 
The spiral model is an evolutionary model having most realistic approach to the development of the large system. This model enables the developer to apply the prototyping approach & customer evaluation is done after that. So whatever the final product is made it is as per customer specifications.

 PROTOTYPING

Prototyping is the system development methodology which enables the developer to construct a working model of the final system. Prototype gives just the idea about the final system and it does not contain all the features or perform all the necessary functions. Customer or user evaluates the prototype and they suggest, what is to be added or modified. Prototyping is an iterative process as it is revised to satisfy the needs of the customer until the satisfactory design is evolved.
Need of prototyping;- It is useful when 
 The requirements are difficult to specify in advance. 
 If there is possibility of changing the requirements significantly during the development. 
 A totally novel system is proposed. 
1] Requirement gathering & Refinement:- Both developer (system analyst & customer ( user ) work together and define the overall objectives for the software and identify the requirements to be satisfied. 2] Develop working model:- Developer and user jointly identify the data that are needed in the system and specify the output that the application must produce. Analyst estimates a prototyping cost and give idea to management about the expenditure that are incurred. Prototypes are prepared to represent input screens format and output formats. 
3] Customer evaluation of prototype:- User works on prototype to evaluate its features and operations. 4] Review prototype:- The prototype is reviewed after getting information from user to check their likes and dislikes. Developer should understand the need of the customer properly for making modifications in the prototype. 

5] Implementation:- The process is repeated till both the user and developer find that all the necessary features are fulfilled and there is no benefit in further repeating the steps. Once both are convinced then only prototype becomes ready for implementation.

BENEFITS OF PROTOTYPING:- 
 Saves time in system development. 
 Encourages the development team through ongoing communication with the user. 
 Missing user services and nonuser friendly services may be identified. 
 Helps to build the system as per customer’s satisfaction and avoid wrong system delivery. 
 If proper tools are used, low cost is required for development of prototype. This cost is affordable as compared to reworking when customer rejects the work. 
 System can be delivered in time and delays are minimized.