Contents
Models and the Phases of SDLC
Companies around the world depend on a number of factors for its smooth functioning. These factors vary from the right employees to the basic software installed in the working system of the company. Further to ensure a smooth functioning of the company, it is essential to build a strong Software Development Life Cycle.
Software Development Life Cycle is the software project management process which has several models. These are used to streamline the development and deployment process of the software. A basic software development life cycle comprises various phases.
Article Summary
Software plays a significant role in ensuring the smooth functioning of an organisation. This is the reason, it is very important for every company to have a properly developed and synchronised software system. This article explains the various Software Development Life Cycle models. The aim of this explanation is to introduce the reader with the advantages and disadvantages of each model. Further, the choice of the model depends on the needs of the user and in which way he wants to pursue the SDLC.
Different phases of SDLC
Planning
Planning is the initial phase of SDLC because in this the team needs to plan how to ensure the best quality of the product. Also, they need to make sure that there is no compromise in quality within a specified time period and budget. Thus, requirements are garnered from several sources using dependable information gathering techniques. Later, information collected from multiple sources is then analysed to formulate the best possible solution for the product.
The analysis of the information is majorly done by eminent and senior stakeholders including client, domain masters, project managers and system analysts. During this analytical process, both technical and economical aspects of the project are taken care of, while finalising the fundamental requirements for the project.
Defining
Based on all the finalized requirements from the planning phase, important points are appropriately documented and approved by the client. This is done to ensure that all the points finalised are in accordance to the agenda of the project. Further, upon getting an approval from the client, a Software Requirement Specification document is generated. This respective document is then circulated to the concerned departments to process the further procedures to guarantee the successful completion of the project.
Designing
Based on the Software Requirement Specification document, design approach is selected and documented in the form of Design Document Specification (DDS). The DDS is then reviewed by the significant stakeholders in order to analyse it with respect to various important aspects such as budget, design, robustness, risk, and time constraints. Upon assessing all the constraints, and comparing with all the design approaches, the best design approach is selected for further use.
Building
After the design is finalised for the product, the code is written by the development team. This basically comprehends that all the elements generated in the design phase are given their functionality, further to which connections with the database are developed. This database is created by the developer in the most suitable way and the software is programmed in the relevant language. However, the coding guidelines must be followed in both cases, so that if in future the need arises for project handover, the new team members can easily understand the code.
Testing
Testing is the most significant stage because it ensures the longevity of the software after being deployed at the client’s working environment. Testing is done by the tester after designing and development is completed. There are numerous ways in which testing of a product can be carried out. It can either be white box, or black box testing. In white box testing the code is analysed carefully to check for every error, bug, or vulnerability. Whereas, in case of black box testing, it is quite the opposite i.e. the tester is unaware of code and only tests the overall functionality of the system.
Deployment and Maintenance
Deployment phase is the installation of software at the client site after thorough testing, so that the software can be utilized for its intended purpose. However, after deployment it is the duty of the development team to keep the software in perfect shape. This includes releasing timely security patches and other updates to remove the errors which are encountered in regular working of the organization. Although in case the system gets down or needs some major repair, it must be done immediately so that the software might continue to deliver its intended purpose.
SDLC Models
There are different types of SDLC models, which vary on the basis of processes to be followed. Also, it largely depends on the client preferences and which procedure does the client wish to follow. Moreover, all the SDLC models have their own strengths and weaknesses. Therefore the type of model to be chosen mainly depends on the type of task to be performed. The various SDLC models are explained below.
Waterfall Model
Waterfall model, also known as linear-sequential life cycle model is the first model to be ever produced for software development purposes. It is one of the most popular SDLC approaches till date due to its waterfall design which allows to illustrate the development process in a linear and sequential manner.
The phases in the waterfall model are as below:
Requirement Gathering
In this phase all the possible and essential requirements are captured and documented. The final output of this phase is the requirement specification document.
System Design
Based on the requirement specification document, system design is prepared in which hardware and software requirements are specified which further help to formulate the system architecture.
Implementation
In the implementation phase, code is written and small programs are developed to formulate a single functionality, which are termed as units. Also, in this phase, each unit is tested for its functionality in order to ensure that all of them are standing true on their purpose.
Integration and Testing
The units developed in the previous phase are integrated into each other which eventually forms the system. After the successful integration, testing of the system is done to ensure its appropriate functioning.
Deployment
Upon completion of the integration and testing phase and in case the system has cleared the testing phase, it is released into the market or deployed at the client’s site.
Maintenance
After deployment, certain issues can arise in the real time environment. Thus, it is the job of the development team to release update patches to mitigate such issues.
Advantages of Waterfall Model
Waterfall model is extremely simple to understand and implement
Each stage of the waterfall model is distinct and serves a distinct purpose which adds up to form a common objective. Every stage is appropriately classified in an orderly manner for easy implementation.
Waterfall model is substantially easier to leverage because only one process is utilized at a time, thus reducing complexity. With this, it also gives time for reviewing the output attained.
Every phase of the model proceeds with a strict order, thus allowing departmentalization. This further accentuates the sense of easy implementation.
This model allows the team to have better control over several schedules and deadlines. In this manner it refines the experience and enables the project managers to finish the project on time within the specified constraints.
Disadvantages of waterfall model
Although the phases are distinctively classified and in a much orderly manner, there are substantially greater risks and several uncertainties in the development process of the waterfall model. Following are the points which detail the disadvantages of this model.
It does not prove to be beneficial for complex, long projects for implementing the object-oriented paradigm.
Despite providing an ease in implementation, the model is not fit to integrate into an ongoing project. It is due to its own set of procedures and moreover its each phase is dependent on the previous phase for input.
The model cannot accommodate alterations in requirements as well.
The scope once defined cannot be altered again, as it can lead to the end of the project's life cycle.
If any issue arises during the testing phase, it becomes relatively difficult to go back and make changes for the part which was not appropriately documented earlier.
Despite the popularity and familiarity, no live software has been produced using this model until late.
The model is not change friendly, thus in case the requirements are ought to change at any given point of time, this model can not be used. In fact, in case of change, it can lead to a much greater risk into the life cycle.
Iterative Model
Iterative model starts implementing the basic functionalities of the software and performs certain essential enhancements iteratively. It continues to evolve until the final software is developed. At every iteration, an operational product is delivered and based on which several modifications and alterations are made to the product. This further leads to the addition of new features in the next iteration. Basically, a product is generated at every iteration and it evolves in the next transition, rather than a completely new phase.
All the requirements are bifurcated into numerous builds. In each build the software undergoes, design & development, testing and implementation phases till the final product is produced. In order to successfully implement the iterative model, all the requirements must be validated before implementation. Also, testing must be performed according to the base requirements for the system.
Advantages of Iterative model
Iterative model is best suited for the mission-critical projects
It is relatively easier to manage the risk in this model, as portions with higher associated risk are dealt with in the early stages of the life cycle. Thus, it can be obtained that risk analysis is of high order.
It is more inclined towards the development of large-scale projects rather than small or medium scaled projects.
Portion of actual working functionality is done in the early stages of the life cycle.
As the working functionality is produced earlier, it eventually leads to the development of complete software in early stages. This results in completion of the project well before the defined time schedule. Thus, it helps the team to get customer feedback so that necessary modifications can be made.
One of the major benefits of this model is that scope or requirements once finalized, can easily be altered, or modified without affecting the final time schedule of the project.
Change of scope does lay an effect on budget, but it is not as expensive as other models.
With every increment in the life cycle, an operational product is delivered, thus results are attained periodically at regular intervals.
Debugging and testing of the system can easily be done in relatively smaller iterations which enable the programmers to deliver an error-free final product.
This model also supports parallel development, although it needs to be thoroughly and carefully planned.
The risk identified in each iteration is resolved which helps in managing the iterations as achievable milestones.
The technical demands of IT assignments often put you under great stress. These not only ask for your high concentration but also require you to put
Disadvantages of Iterative Model
The model leverages the team with risk analysis, although it requires a greatly skilled team to perform the operation. Thus, it gets difficult to find such a team. However, if found, it can get quite expensive.
With the output being generated at every iteration, the model commands more attention from the management.
The complexity of managing every iteration is much greater than any other model.
Also, each iteration performs a distinctive task and a lot of operations are included in a single iteration. Thus numerous resources are required for the completion of tasks.
Even though changes are not much expensive, still it is not suitable for the project and clients to get indulged in frequent changes.
With output at every phase, the final output is highly uncertain and primarily depends upon the risk analysis phase.
There are also greater chances of the identification of design issues. This is because not many requirements are gathered at the beginning of the project’s life cycle.
Spiral Model
A spiral model is kind of a hybrid model which is a collaboration of waterfall model and iterative model. Even though the Spiral Model is a combination of both the models, a great emphasis has been laid on the risk analysis. It is due to the fact that risk analysis is one of the significant factors for successful completion of the software.
The iterations from the iterative model have been carried forward to this model. It is because the product is released in each iteration of spiral. However, only controllers’ aspects have been inherited from the waterfall model. Spiral model comprises of four phases:
Identification
This phase refers to collection of all the requirements whether it is from client, end users or by analysing the previous system. The identification phase comprises the continuous exchange of information between system analyst and client in order to understand the requirement in a better manner.
Design
In this phase conceptual designs are prepared along with the architectural design, physical, logical and final design of the product.
Build
Build refers to the production of software in every iteration. It comprises design, development, testing and several other phases.
Evaluation and risk analysis
It is one of the most significant aspects of software development, as technical risks are analysed in this phase. The risks are identified, then they are monitored after which time and cost are estimated for their mitigation. Towards the end of this phase, testing for the user acceptance is done. Here the customer is made to test the functionality of the software. It is done to check whether the software matches the specific requirements or not.
Advantages of spiral model
This model allows the team to view the system quite early in its life cycle. This way, the team gets a fair idea about what and how the project is going to be.
With the combination of both iterative and waterfall models, the accuracy of the requirements captured increases by a substantial margin.
As with any other system, there can be numerous changes even within the lifecycle which can easily be accommodated in a spiral system. This is done without causing much affect to the timeline and the budget.
A modular approach can be adopted for the development. This enables the team to develop risky parts beforehand so that risks do not arise at later stages of the life cycle.
It eliminates the conflict of adding any new requirements, as new elements can be added whenever they are available.
This module allows a greater use of prototypes which further reduces the chances of errors.
Disadvantages of Spiral model
If the project is lengthy, the spiral can go on indefinitely which is one of the major disadvantages of this model.
With an indefinite spiral and combination of two models, the management is much more complex.
With every iteration, the final product may not be known till its last stages of the life cycle.
Majority of the stages require documentation so that a track of all the changes is kept for later alterations or in case the need arises for rollback.
Big Bang Model
The Big Band model is one of the most basic models which is implemented by the newcomers and the students as it is fairly easy to implement. This is because no prior planning for the project life cycle needs to be done which can however lead to certain risks.
For this, one can just start production of the project with capital and human resources. There is a much greater probability that the final product might not be in accordance to the requirements specified by the. This can drop the reputation of the organization among the clients. However, the requirements can easily be added into the project once it gets started and even while it is near completion and that too without much of analysis.
This model is best suited for relatively smaller projects which are not supposed to be used by larger organizations or for significant purposes. It is primarily used for academic purposes where timeline and budget are not specified and are solely being developed for practice purposes.
Advantages of Big Bang Model
It is a fairly simple model which makes it relatively easy to manage. Thus it does not drain out too much energy from the team.
Being a simple model, there is a requirement of less resources.
As it is easy to implement, it is the prime choice for the majority of students. Mostly, it is because of its as easy implementation as an SDLC model.
It gives a lot of flexibility to the developers, so that they can make certain changes which allows them to be innovative and do not make them stick to given guidelines only.
For the implementation of this model, a team does not need to plan the whole lifecycle prior to the beginning of the project.
Disadvantages of Big Bang Model
With almost no planning and not much experienced team members, there are much greater risks involved in this model. Along with this there is a lot of uncertainty with the completion of the project. In addition to this, there are many other disadvantages, few of which are listed below:
The model is not suitable for large projects by any means as it would not provide any sought of support that is required in such projects.
As the requirements are not determined at the initial stages, there can be greater chances that the requirements might be misunderstood. This gap can lead to greater financial and time losses.
This model is not at all suitable for object-oriented projects and otherwise complex projects. It is because such projects require fairly sought-after techniques and experienced staff members.
It is also not suitable for ongoing projects, as it can be the reason for scraping of the project.
Agile Model
This model is extensively used in software engineering because of its close association with real world entities and collaboration of iterative and incremental models. The major emphasis of this model is on customer satisfaction and how to adapt accordingly to deliver utmost customer experience. These parameters can be achieved by implementing smaller yet incremental builds in the form of iterations, which last from one to three weeks.
The final product attained at each iteration is then showcased to the clients and other essential stakeholders, in order to ensure the satisfactory achievement of all the requirements. In case, there are any other requirements to be added, they can be forwarded to the next iteration. This can be done by adding new functionalities in the next iteration. One major reason behind the success of agile methodology is the tailored experience. This helps in treating every model distinctively in order to obtain the best out of it. Thus, the agile approach uses a distinct set of operations and tasks for every project. This is to complete the project appropriately and within the specified time and budget.
Advantages of Agile Model
It is one of the most realistic approaches in software development. It provides extreme flexibility to developers thus enabling them to be innovative with the project.
The model when implemented is easier to manage as it promotes teamwork with appropriate bifurcation. Thus, it reduces the chances of deadlocks.
There are not many strict rules about implementation, which enable the developers to easily implement the documented concepts. Thus, the final product delivered is developed as per the appropriate standards.
The model when implemented requires considerably lesser resources whether human or technical.
Changes are welcome in this model; however, it is best suited for the environments which experience steady changes rather than undergoing abrupt and major changes. In complex cases, this model fails to deliver as per the expectations.
Even though there is no major planning required for implementation of this model, this model can deliver working partial solutions quite early in the life cycle. This enables the team to ensure what the product is turning out to be and helps them to estimate the adequacy of their path adopted.
Disadvantages of Agile Model
Although implementation of documentation is done, this model does not promote documenting the advancements. Thus, in case of project transfer to another team or new team member, it can become quite challenging for them.
With the lack of planning, this model does not handle complex dependencies appropriately.
The individual dependency in this model is considerably high, thus negligible documentation is generated.
There is a great risk of extensibility, sustainability and maintainability associated with the implementation of this model.
This model extensively depends on the customer interaction. So, in case the customer is not clear with their requirements, the team can move on to the wrong direction.
A major emphasis has been laid on the delivery under strict timelines which ensures the product is being delivered at the right time to their clients.
The success of the model cannot be assured without the notable contribution of project manager and agile leader.
RAD Model
RAD is the acronym used for Rapid Application Development which is a software developing methodology based on iterative and prototyping. This model does not require any peculiar and extensive planning before starting out due to its use for short duration projects. It focuses on garnering requirements from the customer so that prototypes can be developed and used in repetitive iterations for an effective delivery of the project. The teams which are used for this methodology are highly skilled yet small. Additionally, they ensure that the prototypes which are developed for the project can be reused. The RAD model undergoes several phases as below:
Advantages of RAD model:
The model is a rapid development model. It promotes customer feedback which helps to develop a better final product. In addition to this, there are many other advantages of Agile model as listed below:
As the methodology lays emphasis majorly on evolution of the product rather than developing it from scratch. This results in reducing the development time of the final product by a considerable margin.
As the name suggests, Rapid Application Development (RAD), the changes are welcome and easily accommodated without making much impact on the predefined timelines.
This model allows to measure the progress of the project easily and effectively.
There are several RAD tools available in the market, which can be used to relatively shorten the iteration time.
The model introduces the integration of modules at very initial stages, thus mitigating any issues at a smaller level. Also, there are a lot less chances of major issues arising at the time of final integrations.
Disadvantages of RAD
It is primarily suitable for the projects which are to be completed in a shorter period of time. Thus the projects must have considerably smaller development times in order to appropriately deliver results under RAD.
It has a high dependency on the user involvement which it requires for the majority of the life cycle.
The model being dynamic, requires highly skilled designers and developers to carry out the designated tasks.
It is only suitable for projects which have a generous budget and it cannot be implemented in low-budgeted projects. This is because the automated code and modelling are expensive tasks.
With the experienced designers, the model depends highly on generous modelling skills.
The fundamental necessity for any project is the requirement gathering, for which a technically strong team needs to be employed.
Conclusion
There are numerous SDLC models available, but each vary in terms of its usage and processes. Also, the selection of the model largely depends on the purpose of the organisation. Additionally, the time, cost and level of the project are imperative factors to consider before finalising the type of SDLC model. Moreover, the user should have a through knowledge about the advantages and disadvantages of each model, to be able to select the best of all.
FAQ
What is SDLC models?
These are the process-based models, which define the working system of the software industry in the development of the software. It includes the designing, development and testing of high-quality software which is why it is also called as the Software Development Process.
What are the 7 phases of SDLC?
The seven phases of SDLC model include, planning, feasibility, designing and prototyping, software development, testing, implementation, operation and recovery.
Which is the best SDLC model?
The Agile model is known to be the best SDLC model. It consists of a combination of incremental and iterative approach. It also focuses on suiting the requirements well with the option of flexibility.