SDLC methods and their advantages and disadvantages…
What Is a Software Development Life Cycle (SDLC)?
Software development life cycle (SDLC) is a series of phases that provide a common understanding of the software building process. How the software will be realized and developed from the business understanding and requirements elicitation phase to convert these business ideas and requirements into functions and features until its usage and operation to achieve the business needs.
Shortly , it is a process of software development at the lowest cost with the highest quality in the shortest time possible. As such, it seeks to fulfill these three goals to the maximum extent.For this reason, numerous methodologies have appeared which propose different ways to achieve these goals.Therefore, it is required to choose the right SDLC methodology according to the specific concerns and requirements of the project to ensure its success.The good software engineer should have enough knowledge on how to choose the SDLC model based on the project context and the business requirements.
You can think of SDLC models as tools that you can use to better deliver your software project. Therefore, knowing and understanding each model and when to use it, the advantages and disadvantages of each one are important to know which one is suitable for the project context.
The most used, popular and important SDLC models are given below:
- Waterfall model
- Iterative model
- Spiral model
- V-shaped model
- Agile model
- Prototyping Model
- Scrum Methodolog
Waterfall Model
The Waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach and most widely known that was used for software development.
Use cases for the Waterfall SDLC model:
- The requirements are precisely documented
- Product definition is stable
- The technologies stack is predefined which makes it not dynamic
- No ambiguous requirements
- The project is short
Advantages
- Easy to explain to the users.
- Structures approach.
- Stages and activities are well defined.
- Helps to plan and schedule the project.
- Verification at each stage ensures early detection of errors/misunderstanding.
- Each phase has specific deliverables.
Disadvantages
- Assumes that the requirements of a system can be frozen.
- Very difficult to go back to any stage after it finished.
- A little flexibility and adjusting scope is difficult and expensive.
- Costly and required more time, in addition to the detailed plan.
- High risks and uncertainty
- The progress of the stage is hard to measure while it is still in the development
Iterative SDLC Model
The Iterative SDLC model does not need the full list of requirements before the project starts. The development process may start with the requirements to the functional part, which can be expanded later. The process is repetitive, allowing to make new versions of the product for every cycle. Every iteration (which last from two to six weeks) includes the development of a separate component of the system, and after that, this component is added to the functional developed earlier. Speaking with math terminology, the iterative model is a realization of the sequential approximation method; that means a gradual closeness to the planned final product shape.
Use cases for the Iteration model:
- The requirements to the final product are strictly predefined
- Applied to the large-scale projects
- The main task is predefined, but the details may advance with the time
Advantages
- Some functions can be quickly developed at the beginning of the development lifecycle
- The paralleled development can be applied
- The progress is easy measurable
- The shorter iteration is — the easier testing and debugging stages are
- It is easier to control the risks as high-risk tasks are completed first
- Problems and risks defined within one iteration can be prevented in the next sprints
- Flexibility and readiness to the changes in the requirements
Disadvantages
- Iterative model requires more resources than the waterfall model
- Constant management is required
- Issues with architecture or design may occur because not all the requirements are foreseen during the short planning stage
- Bad choice for the small projects
- The process is difficult to manage
- The risks may not be completely determined even at the final stage of the project
- Risks analysis requires involvement of the highly-qualified specialists
Spiral SDLC Model
Spiral model — is SDLC model, which combines architecture and prototyping by stages. It is a combination of the Iterative and Waterfall SDLC models with the significant accent on the risk analysis. The main issue of the spiral model — is defining the right moment to make a step into the next stage. The preliminary set time frames are recommended as the solution to this issue. The shift to the next stage is done according to the plan, even if the work on the previous stage isn’t done yet. The plan is introduced basing on the statistic data, received during the previous projects even from the personal developer’s experience.
Use cases for the Spiral model
- Customer isn’t sure about the requirements
- Major edits are expected during the development cycle
- The projects with mid or high-level risk, where it is important to prevent these risks
- The new product that should be released in a few stages to have enough of clients feedback
advantages
- Lifecycle is divided into small parts, and if the risk concentration is higher, the phase can be finished earlier to address the treats
- The development process is precisely documented yet scalable to the changes
- The scalability allows to make changes and add new functionality even at the relatively late stages
- The earlier working prototype is done — sooner users can point out the flaws
Disadvantages
- Can be quite expensive
- The risk control demands involvement of the highly-skilled professionals
- Can be ineffective for the small projects
- Big number of the intermediate stages requires excessive documentation
V-shaped SDLC Model
V-shaped SDLC model is an expansion of classic waterfall model and it’s based on associated test stage for the every development stage. This is a very strict model and the next stage is started only after the previous phase. This is also called “Validation and verification” model. Every stage has the current process control, to make sure that the conversion to the next stage is possible.
Use cases for the V-shaped model:
- For the projects where an accurate product testing is required
- For the small and mid-sized projects, where requirements are strictly predefined
- The engineers of the required qualification, especially testers, are within easy reach.
Advantages
- Every stage of V-shaped model has strict results so it’s easy to control
- Testing and verification take place in the early stages
- Good for the small projects, where requirements are static and clear
Disadvantages
- Lack of the flexibility
- Bad choice for the small projects
- Relatively big risks
Agile SDLC Model
In the agile methodology after every development iteration, the customer is able to see the result and understand if he is satisfied with it or he is not. This is one of the advantages of the agile software development life cycle model. One of its disadvantages is that with the absence of defined requirements it is difficult to estimate the resources and development cost. Extreme programming is one of the practical use of the agile model. The basis of such model consists of short weekly meetings — Sprints which are the part of the Scrum approach.
Use cases for the Agile model:
- The users’ needs change dynamically
- Less price for the changes implemented because of the many iterations
- Unlike the Waterfall model, it requires only initial planning to start the project
Advantages
- Corrections of functional requirements are implemented into the development process to provide the competitiveness
- Project is divided by short and transparent iterations
- Risks are minimized thanks to the flexible change process
- Fast release of the first product version
Disadvantages
- Difficulties with measuring the final cost because of permanent changes
- The team should be highly professional and client-oriented
- New requirements may conflict with the existing architecture
- With all the corrections and changes there is possibility that the project will exceed expected time
Prototyping Model
It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development and It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in the waterfall approach and hard to be implemented due to the inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.It has some types, such as ;
as some types, such as:
- Throwaway prototyping: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software
- Evolutionary prototyping: prototypes that evolve into the final system through an iterative incorporation of user feedback.
- Incremental prototyping: The final product is built as separate prototypes. In the end, the separate prototypes are merged in an overall design.
- Extreme prototyping: used in web applications mainly. Basically, it breaks down web development into three phases, each one based on the preceding one. The first phase is a static prototype that consists mainly of HTML pages. In the second phase, the screens are programmed and fully functional using a simulated services layer. In the third phase, the services are implemented
The usage
- This process can be used with any software developing life cycle model. While this shall be chosen when you are developing a system has user interactions. So, if the system does not have user interactions, such as a system does some calculations shall not have prototypes.
Advantages
- Reduced time and costs, but this can be a disadvantage if the developer loses time in developing the prototypes.
- Improved and increased user involvement.
Disadvantages
- Insufficient analysis. User confusion of prototype and finished system.
- Developer misunderstanding of user objectives.
- Excessive development time of the prototype.
- It is costly to implement the prototypes
Scrum Methodology
Scrum is a framework for projects. It falls under the agile methodology and defines roles, procedures, tools, processes to make sure to deliver an efficient and effective project well on time through iterative development cycles. As per a report, there are almost 70% of the software teams who use scrum or scrum hybrid.
This methodology is basically followed where there is the demand of high development process, high involvement of stakeholders. Scrum methodology repeatedly monitors software development while the project is being developed.
Scrum Software Development Methodology has a major focus on the responsibility, teamwork, and iterative progress towards a well-defined business goal.
Advantages:
- Transparent system pushes developers to comply with their assignments and deliver it on time
- Defined deadline at every step keep developers motivated and empowered at every step
- Feedback at every level of the project ensures that quality project is delivered in the end
Disadvantages:
- Difficult to plan, structure and organize a project with no clear mission and vision
- Frequent changes in the project lead to a delay in the delivery time of the project
- Utilizes more resources and stakeholder’s involvement in every small detail change and discussion