Types of SDLC Models (Software Development Life Cycle Models)
The first development life cycle model was the Waterfall Model. Winston Royce is typically credited with it from a 1970 paper. Each phase of the cycle is completed before continuing on until the next phase. The flow is downward, from one phase to the next, like a waterfall. Obviously this can become problematic, which is why it has largely been replaced by other models. However, it is probably the easiest to understand and a naive approach to development, which has its benefits when starting out.
The initial phase of the Waterfall Model is Requirement Analysis. This is where all of the conceivable requirements are derived and recorded in a formal “requirements document”.
The next phase is System Design. This is where the architecture is created in the form of models, flowcharts, schemas, etc.
After that is the Implementation Phase. This is where the coding occurs (or “the fun part” as many programmers would call it.)
The Testing Phase is next. Focus has shifted from coding to testing. Nobody is writing new features anymore, only testing is allowed. This is where bugs are (hopefully) uncovered.
Then comes the Deployment Phase. The product is rolled out to the customer site (or released to the public.)
Finally, there is the Maintenance Phase. This is where bugs are addressed as they are uncovered in production. Software “patches” are created and deployed.
The obvious downside to this model is that bugs aren’t found until late into the cycle. This could prove hard to fix without major could revisions. Also, adding features late in the game isn’t allowed. This could be detrimental in a competitive environment.
The Spiral Method adds risk awareness to the development process. It is credited to Barry Boehm in his paper from 1986. The phases are Objective Determination and Possible Solutions, Identify and Resolve Risks. Develop the next version of the Product. Review and plan for next phase. The strength of this model is that it makes you assess risk and be flexible enough to deal with it. Prototyping is often used to figure out issues and test quickly.
The V Model is considered by some to be a modified waterfall model. It starts with a Verification Phase. It has a Requirements Analysis, similar to the Waterfall Model, that has a requirements document. System Design is where the engineers design the product through analysis and weighing alternative solutions. Architecture design is the high level design, and Module design is the indiviudal sub-compenents.
TheValidation Phase has a stage associated with each stage of the Verification Phase. Unit Test Plans are created during the Module Design Phase to uncover bugs. Integration Test Plans are designed during the Architectural Design Phase. System Test Plans are designed during the System Design Phase. User Acceptance Tests are developed during the Requirements Analysis phase.
The prototyping model allows for the creation of smaller, incomplete versions of the final product. The goal is to provide the customer with a subset of functionality quickly, so as to obtain feedback sooner. This provides the benefit of alerting the development team before expending too much time going down the wrong development path. It offers the development team insight as well as to the original expectations and time estimates, allowing for adjustments.
The Incremental Method allows for the design, implementation and testing to be done incrementally. The project is divided into various components, which are build separately. Each build is delivered to the client for assessment. This model allows the client to “start playing with something” quickly to provide feedback, and offer less of a “shock” to their employees, than they would get having to adopt an entirely new system all at once. When all requirements are satisfied, it’s considered finished.
Agile Development is without a doubt the model that gets all the glory today. While it didn’t invent all of the methodologies, it uses the best of the other models, and solidifies their goals to make software development more flexible, cost-effective and offering a higher degree of customer satisfaction.
Iteration and prototyping are important to get software into the hands of customers sooner, providing much valuable feedback.