25. April 2011 09:00
The characters in the fable of the Tortoise and the Hare can easily be used to demonstrate the similarities 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 an extremely fast but unreliable rabbit.
After closely comparing each character’s attributes in correlation with both software development models, a trend seems to appear in that the Waterfall closely resembles the Tortoise in that Waterfall Model is typically a slow moving process that is broken up in to multiple sequential steps that must be executed in a standard linear pattern. The Tortoise can be quoted several times in the story saying “Slow and steady wins the race.” This is the perfect mantra for the Waterfall Model in that this model is seen as a cumbersome and slow moving.
Waterfall Model Phases
- Requirement Analysis & Definition
- This phase focuses on defining requirements for a project that is to be developed and determining if the project is even feasible. Requirements are collected by analyzing existing systems and functionality in correlation with the needs of the business and the desires of the end users. The desired output for this phase is a list of specific requirements from the business that are to be designed and implemented in the subsequent steps. In addition this phase is used to determine if any value will be gained by completing the project.
- System Design
- This phase focuses primarily on the actual architectural design of a system, and how it will interact within itself and with other existing applications. Projects at this level should be viewed at a high level so that actual implementation details are decided in the implementation phase. However major environmental decision like hardware and platform decision are typically decided in this phase. Furthermore the basic goal of 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 desired output for this phase is a functional design document that states all of the architectural decisions that have been made in regards to the project as well as a diagrams like a sequence and class diagrams.
- Software Design
- This phase focuses primarily on the refining of the decisions found in the functional design document. Classes and interfaces are further broken down in to logical modules based on the interfaces and interactions previously indicated. The output of this phase is a formal design document.
- Implementation / Coding
- This phase focuses primarily on implementing the previously defined modules in to units of code. These units are developed independently are intergraded as the system is put together as part of a whole system.
- Software Integration & Verification
- This phase primarily focuses on testing each of the units of code developed as well as testing the system as a whole. There are basic types of testing at this phase and they include: Unit Test and Integration Test. Unit Test are built to test the functionality of a code unit to ensure that it preforms its desired task. Integration testing test the system as a whole because it focuses on results of combining specific units of code and validating it against expected results. The output of this phase is a test plan that includes test with expected results and actual results.
- System Verification
- This phase primarily focuses on testing the system as a whole in regards to the list of project requirements and desired operating environment.
- Operation & Maintenance
- his phase primarily focuses on handing off the competed project over to the customer so that they can verify that all of their requirements have been met based on their original requirements. This phase will also validate the correctness of their requirements and if any changed need to be made. In addition, any problems not resolved in the previous phase will be handled in this section.
The Waterfall Model’s linear and sequential methodology does offer a project certain advantages and disadvantages.
Advantages of the Waterfall Model
- Simplistic to implement and execute for projects and/or company wide
- Limited demand on resources
- Large emphasis on documentation
Disadvantages 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 client’s 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 moving
Learn more about the Major Process in the Sofware Development Life Cycle and Waterfall Model.
Conversely, the Hare shares similar traits with the prototyping software development model in that ideas are rapidly converted to basic working examples and subsequent changes are made to quickly align the project with customers desires as they are formulated and as software strays from the customers 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 initially designed 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 are developing exactly what they want in the application
This model also works well for determining the feasibility of certain approaches in regards to an application. Prototypes allow for quickly developing examples of implementing specific functionality based on certain techniques.
Advantages of Prototyping
- Active participation from users and customers
- Allows customers to change their mind in specifying requirements
- Customers get a better understanding of the system as it is developed
- Earlier bug/error detection
- Promotes communication with customers
- Prototype could be used as final production
- Reduced time needed to develop applications compared to the Waterfall method
Disadvantages of Prototyping
- Promotes constantly redefining project requirements that cause major system rewrites
- Potential for increased complexity of a system as scope of the system expands
- Customer could believe the prototype as the working version.
- Implementation compromises could increase the complexity when applying updates and or application fixes
When companies trying to decide between the Waterfall model and Prototype model they need to evaluate the benefits and disadvantages for both models. Typically smaller companies or projects that have major time constraints typically head for more of a Prototype model approach because it can reduce the time needed to complete the project because there is more of a focus on building a project and less on defining requirements and scope prior to the start of a project. On the other hand, Companies with well-defined requirements and time allowed to generate proper documentation should steer towards more of a waterfall model because they are in a position to obtain clarified requirements and have to design and optimal solution prior to the start of coding on a project.