SDLC methods and their advantages and disadvantages
Waterfall model
What is The Waterfall Model?
WATERFALL MODEL is a sequential model that divides software development into pre-defined phases. Each phase must be complete before the next phase can begin with no overlap between the phases. Each phase designed for performing specific activity during the SDLC phase.
Different Phases of Waterfall Model
Requirement Gathering stage
- During this phase, detailed requirements of the software system to be developed are gathered from client
Design Stage
- Plan the programming language, for Example Java, PHP , .net.
- Or database like Oracle, MySQL, etc.
- Or other high-level technical details of the project
Built Stage
- After design stage, it is built stage, that is nothing but coding the software
Test Stage
- In this phase, you test the software to verify that it is built as per the specifications given by the client.
Deployment stage
- Deploy the application in the respective environment
Maintenance stage
- Once your system is ready to use, you may later require change the code as per customer request
Waterfall model can be used when
· Project is short
· Requirements is very clear
· Resources are available and trained
· Requirements re not changing frequently
Advantages and Disadvantages of Waterfall-Model
Advantages
- Before the next phase of development, each phase must be completed
- Suited for smaller projects where requirements are well defined
- They should perform quality assurance test (Verification and Validation) before completing each stage
- Elaborate documentation is done at every phase of the software’s development cycle
- Project is completely dependent on project team with minimum client intervention
- Any changes in software is made during the process of the development
Dis-Advantages
- Error can be fixed only during the phase
- It is not desirable for complex project where requirement changes frequently
- Testing period comes quite late in the developmental process
- Documentation occupies a lot of time of developers and testers
- Clients valuable feedback cannot be included with ongoing development phase
- Small changes or errors that arise in the completed software may cause a lot of problems
Agile-model
What is The Agile Model?
AGILE methodology is a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. In the Agile model, both development and testing activities are concurrent, unlike the Waterfall model.
Agile Process
Advantages and Disadvantages of Agile-Model
Advantages
- Customer satisfaction by rapid, continuous delivery of useful software.
- People and interactions are emphasize rather than process and tools. Customers, developers and testers constantly interact with each other.
- Working software is deliver frequently.
- Face-to-face conversation is the best form of communication.
- Continuous attention to technical excellence and good design.
- Regular adaptation to changing circumstances.
- Even late changes in requirements are welcomed
Disadvantages
- In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
- There is lack of emphasis on necessary designing and documentation.
- The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
- Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
When to use Agile model:
- When new changes are needed to be implemented. The freedom agile gives to change is very important. New changes can be implemented at very little cost because of the frequency of new increments that are produced.
- To implement a new feature the developers need to lose only the work of a few days, or even only hours, to roll back and implement it.
- Unlike the waterfall model in agile model very limited planning is required to get started with the project. Agile assumes that the end users’ needs are ever changing in a dynamic business and IT world. Changes can be discussed and features can be newly effected or removed based on feedback. This effectively gives the customer the finished system they want or need.
- Both system developers and stakeholders alike, find they also get more freedom of time and options than if the software was developed in a more rigid sequential way. Having options gives them the ability to leave important decisions until more or better data or even entire hosting programs are available; meaning the project can continue to move forward without fear of reaching a sudden standstill.
Waterfall vs Agile Key Difference
- Waterfall is a Liner Sequential Life Cycle Model whereas Agile is a continuous iteration of development and testing in the software development process.
- In Agile vs Waterfall difference, the Agile methodology is known for its flexibility whereas Waterfall is a structured software development methodology.
- Comparing the Waterfall methodology vs Agile which follows an incremental approach whereas the Waterfall is a sequential design process.
- Agile performs testing concurrently with software development whereas in Waterfall methodology testing comes after the “Build” phase.
- Agile allows changes in project development requirement whereas Waterfall has no scope of changing the requirements once the project development starts.
V-model
When we use V-Model
· Small to medium sized projects where requirements are clearly defined and fixed
· Sample technical resources are available with needed technical expertise
Advantages
· Easy to use
· Testing activities like planning, test designing happens well before coding
· Higher chance of success over the waterfall model
· Proactive defect tracking
· Works well for small projects where requirements are easily understandable
· Avoids the download flow of the defects
Disadvantages
· Least flexible
· Software is developed during the implementation phase, so no early prototypes of the software are produced
· If any changes happen in midway, then the test documents along with requirement documents has to updated
· Risky
Spiral-model
Spiral Model is a combination of a waterfall model and iterative model. Each phase in spiral model begins with a design goal and ends with the client reviewing the progress. The development team in Spiral-SDLC model starts with a small set of requirement and goes through each development phase for those set of requirements. The software engineering team adds functionality for the additional requirement in every-increasing spirals until the application is ready for the production phase.
When to use Spiral Methodology?
- When project is large
- When releases are required to be frequent
- When creation of a prototype is applicable
- When risk and costs evaluation is important
- For medium to high-risk projects
- When requirements are unclear and complex
- When changes may require at any time
- When long term project commitment is not feasible due to changes in economic priorities
Advantages and Disadvantages of Spiral Model
Advantages
- Additional functionality or changes can be done at a later stage
- Cost estimation becomes easy as the prototype building is done in small fragments
- Continuous or repeated development helps in risk management
- Development is fast and features are added in a systematic way
- There is always a space for customer feedback
Disadvantages
- Risk of not meeting the schedule or budget
- It works best for large projects only also demands risk assessment expertise
- For its smooth operation spiral model protocol needs to be followed strictly
- Documentation is more as it has intermediate phases
- It is not advisable for smaller project, it might cost them a lot
incremental-model
What is Incremental Model?
Incremental Model is a process of software development where requirements are broken down into multiple standalone modules of software development cycle. Incremental development is done in steps from analysis design, implementation, testing/verification, maintenance.
When to use Incremental models?
- Requirements of the system are clearly understood
- When demand for an early release of a product arises
- When software engineering team are not very well skilled or trained
- When high-risk features and goals are involved
- Such methodology is more in use for web application and product based companies
Advantages and Disadvantages of Incremental Model
Advantages
- The software will be generated quickly during the software life cycle
- It is flexible and less expensive to change requirements and scope
- Throughout the development stages changes can be done
- This model is less costly compared to others
- A customer can respond to each building
- Errors are easy to be identified
Disadvantages
- It requires a good planning designing
- Problems might cause due to system architecture as such not all requirements collected up front for the entire software lifecycle
- Each iteration phase is rigid and does not overlap each other
- Rectifying a problem in one unit requires correction in all the units and consumes a lot of time