Aim : To make a comparative study of various software process models.A software process model is a standardised format for planning, organising, and running a development project.Project Constraints:MoneySpecialist Technical StaffSupport e.g. salesManagementComputing ResourcesTime to market places.Types of Software modelsWaterfall ModelIncremental ModelPrototyping ModelSpiral ModelThese tasks are common to all the models:CommunicationPlanningModelingConstructionDeploymentWaterfall ModelBasic steps involved in waterfall model which were first given by Royce(original inventor) are as follows:Product Requirements Document and other necessary software requirements.Models, diagrams, schemas and other necessary analysis.Designing software architecture.Coding including development and integration.Testing of all prototypes and discovering of errors if any.Installation, migration, support, care and maintenance of whole system.The main point of waterfall model is that, it is not moved to next step until and unless the preceding one is completed and verified. A further argument for the waterfall model is that it places emphasis on documentation (such as requirements documents and design documents) as well as source code.Clients may not know exactly what their requirements are before they see working software and so change their requirements, leading to redesign, redevelopment, and retesting, and increased costs.Spiral Model The Spiral Model is widely used in the software industry as it is in sync with the natural development process of any product, i.e. learning with maturity which involves minimum risk for the customer as well as the development firms.The spiral model has four phases: PlanningRisk AnalysisEngineeringEvaluationOn the other side, it takes a very strict management to complete such products and there is a risk of running the spiral in an indefinite loop. So, the discipline of change and the extent of taking change requests is very important to develop and deploy the product successfully.Advantages:Requirements changing over time can be accomodated.Prototypes are used extensivelyMore scope to the requirements can be given.Users can use beta versions early.Risk Management can be reduced by developing riskier parts early.Disadvantages:Management is more complex.Project may run in indefinite loop.Could cost more for small projects.Large number of intermediate steps requires excessive documentation.Incremental ModelIn this model, each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle.Characteristics of this model:Requirements are broken down into multiple standalone modules of software development cycle.Partial systems are built to produce the final system.Such model is more in use for web application and product based companies.The requirement of a portion is frozen once the incremented portion is developed.Advantages:Errors are easy to be identified.Customer can respond to each built.It is flexible and less expensive to change requirements and scope.It is easier to test and debug during a smaller iteration.Disadvantages:It requires a good planning designing.Each iteration phase is rigid and does not overlap each other.Total cost is higher than waterfall.Rectifying a problem in one unit requires correction in all the units and consumes a lot of time.Prototyping ModelPrototype is a working model of software with some limited functionality. This model works best in scenarios where not all of the project requirements are known in detail ahead of time. It is an iterative, trial-and-error process that takes place between the developers and the users.Stepwise approach of Prototyping Model:Basic Requirement Identification.Developing the initial Prototype.Review of the Prototype.Revise and Enhance the Prototype.Software that involves too much of data processing and most of the functionality is internal with very little user interface does not usually benefit from prototyping.Advantages:Increased user involvement in the product even before its implementation.Reduces time and cost as the defects can be detected much earlier.Missing functionality can be identified easily.Disadvantages:Users may get confused in the prototypes and actual systems.Developers may try to reuse the existing prototypes to build the actual system, even when it is not technically feasible.Risk of insufficient requirement analysis owing to too much dependency on the prototype..