- 1. Comparison Between Waterfall Model and Spiral ModelWhile developing a software, developers are often confused about the waterfall model vs spiral model.It is because they are not able to decide, which of these models is better for the software they aredeveloping.Software development on a broader level includes all the activities, between the manifestation of theidea for the software to the maintenance of the said software. Sometimes, it may also be referred tothe actual task of writing the software code, and also maintaining it over a period of time. Over aperiod of time, there are different software development models, that have been used for the saidpurpose. The first of the software model to be used was the waterfall model. The other model, whichis commonly used is the spiral model. Both these models are among the most popular models in thefield of software development. The older of the two models is the waterfall model. There is often thewaterfall model vs spiral model debate, which can be heard in the corridors, when a new softwaredevelopment process is undertaken. Understanding the difference between the two models will makeit easier to decide, which is the right model to be used for software development. However, it isequally important to understand each of these models, which will help in better understanding ofdifference between both of them.Waterfall ModelThe waterfall model is often also referred to as the linear and sequential model, for the flow ofactivities in this model are rather linear and sequential as the name suggests. In this model, thesoftware development activities move to the next phase only after the activities in the current phaseare over. However, like is the case with a waterfall, one cannot return to the previous stage. Thephases of this model are:
2. Requirement Gathering and Analysis Phase Design Phase Coding Phase System Integration Phase Testing and Debugging Phase Delivery Phase Maintenance PhaseAdvantagesThe most important advantage of the waterfall model lies in the fact, that there is minimum planningoverhead for the steps that are to follow, since the activities in each of the phase is carried outupfront, it is feasible that one does not have to plan for the entire phase. There is certain amount ofdiscipline that is enforced as one has to only look into one phase of the process at any given point oftime. In other models it is often difficult to nail the start and end of the said phase, which is not thecase with the waterfall model. The most important of the advantage is that the project does not slipon its schedule. The number of resources working on the project does not keep on increasing witheach passing day, as the planning for the same is done at the start of the phase itself.DisadvantagesAs there are advantages of the waterfall model, there are also some disadvantages of the said model.The first and the foremost disadvantage of this model is the inability of making changes to the system,once the system requirements have been frozen. It is not uncommon to see the requirementschanging in the initial phases. In other words, one cannot go back to the previous stage. This is adisadvantage, due to which this model was relegated to the back. The same happens to be the casewith the hardware and the software requirement for the software. If the software developmentprocess extends for a longer period of time, there are chances that the hardware and the softwareoptions chosen for the software may become obsolete at the end of the development process.Spiral Model 3. The spiral model was introduced, due to the shortcomings in the waterfall and prototype models ofsoftware engineering. It is a combination of the said two models of software development. From thename of the model, it can be derived that the activities of software development are carried out like aspiral. To explain the model further, the entire software development process is broken down intosmall projects. The phases of the spiral model are as follows: Planning Phase Risk Analysis Phase Engineering Phase Coding and Implementation Phase Evaluation PhaseAdvantagesThe disadvantage of the waterfall model is the advantage of the spiral model. It is a realistic model,which is often used in the development of large software. There is a systematic approach used in thespiral model, which is integrated into the iterative framework. This helps in ensuring there is noproblems in the software. Since changes to the software can be made at any point of time in thesoftware development process.DisadvantagesIn the spiral model, it is important to have a member in the team, who is an expert at riskassessment. Without correct risk assessment, there are chances that the software can utterly be afailure. The client may have to spend a lot of time with the development team to fix the issues thathave cropped up in the software. This may at times become like a overhead for the both the client as 4. well as the software development company. This also leads to the over involvement of the customer inthe process of software development, which may cause the customer to ignore certain risks and causeharm to the project.Difference Between Waterfall Model and Spiral ModelWhile in the spiral model, the customer is made aware of all the happenings in the softwaredevelopment, in the waterfall model the customer is not involved. This often leads to situations, wherethe software is not developed according to the needs of the customer. In the spiral model, thecustomer is involved in the software development process from the word go. This helps in ensuringthat the software meets the needs of the customer.In the waterfall model, when the development process shifts to the next stage, there is no going back.This often leads to roadblocks, especially during the coding phase. Many times it is seen that thedesign of the software looks feasible on paper, however, in the implementation phase it may bedifficult to code for the same. However, in the spiral model, since there are different iterations, it israther easier to change the design and make the software feasible.In the spiral model, one can revisit the different phases of software development, as many times asone wants, during the entire development process. This also helps in back tracking, reversing orrevising the process. However, the same is not possible in the waterfall model, which allows no suchscope.Often people have the waterfall model or spiral model confusion due to the fact, that the spiral modelseems to be a complex model. It can be attributed to the fact that there are many iterations, which gointo the model. At the same time, often there is no documentation involved in the spiral model, whichmakes it difficult to keep a track of the entire process. On the other hand, the waterfall model hassequential progression, along with clear documentation of the entire process. This ensures one has abetter hold over the entire process.From the above discussion on spiral model vs waterfall model, it is clear that both the models havetheir own advantages and shortcomings. While one is stuck between the waterfall model vs spiralmodel debate, it is best to evaluate the software that is being developed and then decide the rightapproach. The size of the project and the urgency of the software will have to be taken intoconsideration for the same. At the same time, the resources available will have an important role toplay in the software development process. 5. The characters in the fable of the Tortoise and the Hare can easily be used to demonstrate thesimilarities and differences between the Waterfall and Prototyping software development models.This children fable is about a race between a consistently slow moving but steadfast turtle and anextremely fast but unreliable rabbit.After closely comparing each characters attributes in correlation with both software developmentmodels, a trend seems to appear in that the Waterfall closely resembles the Tortoise in thatWaterfall Model is typically a slow moving process that is broken up in to multiple sequential stepsthat must be executed in a standard linear pattern. The Tortoise can be quoted several times in thestory saying Slow and steady wins the race. This is the perfect mantra for the Waterfall Model inthat this model is seen as a cumbersome and slow moving.Waterfall Model Phases Requirement Analysis & Definition o This phase focuses on defining requirements for a project that is to be developedand determining if the project is even feasible. Requirements are collected byanalyzing existing systems and functionality in correlation with the needs of thebusiness and the desires of the end users. The desired output for this phase is a listof specific requirements from the business that are to be designed andimplemented in the subsequent steps. In addition this phase is used to determine ifany value will be gained by completing the project. System Design o This phase focuses primarily on the actual architectural design of a system, and howit will interact within itself and with other existing applications. Projects at this levelshould be viewed at a high level so that actual implementation details are decided inthe implementation phase. However major environmental decision like hardwareand platform decision are typically decided in this phase. Furthermore the basic goalof this phase is to design an application at the system level in those classes,interfaces, and interactions are defined. Additionally decisions about scalability,distribution and reliability should also be considered for all decisions. The desiredoutput for this phase is a functional design document that states all of thearchitectural decisions that have been made in regards to the project as well as adiagrams like a sequence and class diagrams. Software Design o This phase focuses primarily on the refining of the decisions found in the functionaldesign document. Classes and interfaces are further broken down in to logicalmodules based on the interfaces and interactions previously indicated. The outputof this phase is a formal design document. Implementation / Coding o This phase focuses primarily on implementing the previously defined modules in tounits of code. These units are developed independently are intergraded as thesystem is put together as part of a whole system. Software Integration & Verification o This phase primarily focuses on testing each of the units of code developed as wellas testing the system as a whole. There are basic types of testing at this phase and 6. they include: Unit Test and Integration Test. Unit Test are built to test thefunctionality of a code unit to ensure that it preforms its desired task. Integrationtesting test the system as a whole because it focuses on results of combining specificunits of code and validating it against expected results. The output of this phase is atest plan that includes test with expected results and actual results. System Verification o This phase primarily focuses on testing the system as a whole in regards to the list ofproject requirements and desired operating environment. Operation & Maintenance o his phase primarily focuses on handing off the competed project over to thecustomer so that they can verify that all of their requirements have been met basedon their original requirements. This phase will also validate the correctness of theirrequirements and if any changed need to be made. In addition, any problems notresolved in the previous phase will be handled in this section.The Waterfall Models linear and sequential methodology does offer a project certain advantagesand disadvantages.Advantages of the Waterfall Model Simplistic to implement and execute for projects and/or company wide Limited demand on resources Large emphasis on documentationDisadvantages of the Waterfall Model Completed phases cannot be revisited regardless if issues arise within a project Accurate requirement are never gather prior to the completion of the requirement phase due to the lack of clarification in regards to clients desires. Small changes or errors that arise in applications may cause additional problems The client cannot change any requirements once the requirements phase has been completed leaving them no options for changes as they see their requirements changes as the customers desires change. Excess documentation Phases are cumbersome and slow movingConversely, the Hare shares similar traits with the prototyping software development model in thatideas are rapidly converted to basic working examples and subsequent changes are made to quicklyalign the project with customers desires as they are formulated and as software strays from thecustomers vision.The basic concept of prototyping is to eliminate the use of well-defined project requirements.Projects are allowed to grow as the customer needs and request grow. Projects are initiallydesigned according to basic requirements and are refined as requirement become more refined.This process allows customer to feel their way around the application to ensure that they aredeveloping exactly what they want in the application 7. This model also works well for determining the feasibility of certain approaches in regards to anapplication. Prototypes allow for quickly developing examples of implementing specific functionalitybased on certain techniques.Advantages of Prototyping May provide the proof of concept necessary to attract funding Early visibility of the prototype gives users an idea of what the final system looks like Encourages active participation among users and producer Enables a higher output for user Cost effective (Development costs reduced). Increases system development speed Assists to identify any problems with the efficacy of earlier design, requirements analysis and codingactivities Helps to refine the potential risks associated with the delivery of the system being developed Various aspects can be tested and quicker feedback can be gained from the user Helps to deliver the product in quality easily User interaction available during development cycle of prototypeDisadvantages of Prototyping Producer might produce a system inadequate for overall organization needs User can get too involved whereas the program can not be to a high standard Structure of system can be damaged since many changes could be made[verification needed] Producer might get too attached to it (might cause legal involvement) 8. Not suitable for large applications Over long periods, can cause loss in consumer interest and subsequent cancellation due to a lack ofa market (for commercial products) May slow the development process, if there are large number of end users to satisfy.When companies trying to decide between the Waterfall model and Prototype model they need toevaluate the benefits and disadvantages for both models. Typically smaller companies or projectsthat have major time constraints typically head for more of a Prototype model approach because itcan reduce the time needed to complete the project because there is more of a focus on building aproject and less on defining requirements and scope prior to the start of a project. On the otherhand, Companies with well-defined requirements and time allowed to generate properdocumentation should steer towards more of a waterfall model because they are in a position toobtain clarified requirements and have to design and optimal solution prior to the start of coding ona project.Characteristics and limitations of prototypesEngineers and prototyping specialists seek to understand the limitations of prototypes to exactly simulatethe characteristics of their intended design. A degree of skill and experience is necessary to effectivelyuse prototyping as a design verification tool.It is important to realize that by their very definition, prototypes will represent some compromise from thefinal production design. Due to differences in materials, processes and design fidelity, it is possible that aprototype may fail to perform acceptably whereas the production design may have been sound. Acounter-intuitive idea is that prototypes may actually perform acceptably whereas the production designmay be flawed since prototyping materials and processes may occasionally outperform their productioncounterparts.In general, it can be expected that individual prototype costs will be substantially greater than the finalproduction costs due to inefficiencies in materials and processes. Prototypes are also used to revise thedesign for the purposes of reducing costs through optimization and refinement.It is possible to use prototype testing to reduce the risk that a design may not perform acceptably,however prototypes generally cannot eliminate all risk. There are pragmatic and practical limitations to theability of a prototype to match the intended final performance of the product and some allowances andengineering judgement are often required before moving forward with a production design.Building the full design is often expensive and can be time-consuming, especially when repeated severaltimesbuilding the full design, figuring out what the problems are and how to solve them, then buildinganother full design. As an alternative, "rapid-prototyping" or "rapid application development" techniquesare used for the initial prototypes, which implement part, but not all, of the complete design. This allowsdesigners and manufacturers to rapidly and inexpensively test the parts of the design that are most likelyto have problems, solve those problems, and then build the full design.