Software Development Models
Software development methodology defines the workflows, processes and related structures necessary for achieving project’s aims and goals. In practice, software development methodology is a set of best practices that control the software development process.
The development process of a project has specific phases, collectively known as project lifecycle. Usually a project has five phases: Analysis, Development, Validation, Deployment and Integration and finally, Maintenance.
There are several popular software development models, each with its own advantages and shortfalls. Not all methodologies are created equal and are considered appropriate for a particular project. Each method is best known for suitability for a certain type of projects, organizational, technical or team considerations.
Selecting the appropriate model for the development of software is extremely important because of cost and development considerations. Following are the popular methodologies which are regularly used in software development:
This has the distinction of being the very first software development model. It is a linear sequential life cycle model. The strength of this model is ease of implementation.
In this model, each phase is completed fully, prior to the next phase. Thus, there is little or no overlap between the phases. It is basically used when the requirements are very clear, well known and fixed. The only requirement is that the development technologies must be well understood in order for the model to work.
- The model works best for small projects with clear requirements.
- This model generates a huge amount of documentation at each stage, which gives a better understanding of the project.
- It is easy to use and there is no need to spend inordinate amounts of time and efforts for the project.
- One drawback with this model is the late testing stage. It is difficult to go back to previous stage so there is no possibility for mistakes.
- It is not a good model for object-oriented projects.
- There is a high amount of risk and uncertainty.
V-model is a validation and verification model. It is also a linear sequential life cycle model. This model is perfect for small projects in which all the requirements are well understood. This model works best when there are sufficient technical resources available with pertinent technical expertise.
- It is easy to use and works better for small projects.
- Planning and test designing can be done well before the actual development. This saves a lot of time in the later phases of the project.
- All the defects in requirement gathering and implementation are usually found at the very beginning.
- The V-model is quite rigid in its implementation.
- This model requires a high cost and resources.
- There is no option for prototyping. All development is carried out in the implementation phase.
This model is actually divided into multiple modules of software development cycle. All these modules are further divided into more easily managed modules which made up the actual implementation of the requirements. This model is ideal when an early release of the product is desirable. Thus, this model is widely popular in web development where an early working prototype is one of the main requirements of the client.
- It is a more flexible and a low cost development model.
- It is easy to test and debug the product during iterations.
- Risk management is a string advantage of the model.
- This model usually has a long development timeline.
- It requires in-depth planning and design before actual development could begin.
RAD model is a rapid development model and is actually another implementation of incremental model. In this model, simultaneous development of all components is the key of short development cycle.
This model has five phases: business modeling, data modeling, process modeling, application modeling, testing and turnover. This model is preferred when there is a strict deadline for the delivery of the product.
- Integration from the beginning resolves a lot of issues early on.
- RAD model reduces development time.
- This model ideally incorporates client feedback into the final version of the product.
- It is highly depend on modeling skills of the team.
- The overall cost of modeling could be high.
- Successful implementation heavily relies on the correct identification, categorization and processing of business requirements.
Agile development model is also a type of incremental model. Agile model focuses on rapid development and testing so that the final version is as bug free as possible. Window XP is one of the most popular examples of agile development life cycle model.
- In agile model, the working software is delivered more frequently.
- Risk management is built-in as the development team is in constant contact with testing teams and the client.
- The continuous attention to a good design and technical excellence makes this model flexible.
- This model is only suitable for highly skilled and experienced teams.
- Documentation is often ignored in the rush of delivering the build.
- This model is starts to fail as the complexity rises above manageable limits.
The spiral model comprises of four phases: Planning, Risk Analysis, Engineering and Evaluation. The model focuses on early identification and reduction of project risks, making it suitable for large projects where cost and risk evaluation are important project success goals.
- One great advantage of this model is high level of risk analysis at every phase.
- This model is flexible as it allows changes to be implemented at several stages of the project.
- The overall project monitoring is quite simple and effective.
- This model is not suitable for small projects.
- It is a high cost model.
- The risk analysis in spiral model requires specific expertise and success of the project is very dependent on the risk analysis phase.