Heard about software? We are sure you have! Indeed, it is surprising if this modern world does not make you work with software at least once a day. So, this fact itself makes us understand about the number of software that are present in this world. Simply, hundreds of software come out each day, from some corner of this world. And guess what? A common set of steps are followed by each of these developers to come up with these software. This set of steps, that supports the systematic development of software, is what is called the Software Development Life Cycle, or SDLC in shortened form.
SDLC covers each and every process required to come up with a complete and successful software. In fact, it covers everything from planning the software product to designing it, developing it, testing it, and overlooking its maintenance. Besides, each phase of the SDLC has some sort of a deliverable or a target to be achieved, and thus, it helps a lot with risk management, and cost reduction. At the same time, it saves time and helps the team in coming up with a successful product efficiently. So, owing to all these reasons, SDLC has become a standard that almost all individuals, teams, and companies related to developing software follow. And yes, someone who has followed the SDLC knows how worth it is!
What are the Steps of the SDLC?
Generally, the SDLC consists of 7 steps. They are as follows.
- Requirement Gathering and Analysis
- Feasibility Study
- System Design
- System Development
- System Maintenance
Some of these steps can be further divided into sub-steps, and some steps can be combined into a single phase as well. Still, despite the fact that these steps are defined, all the processes related to each of these steps would be systematically covered by any of the software developers in the modern world.
So, now let us get to know in detail about each of these steps in the SDLC.
1. Requirement Gathering and Analysis
Simply, this is the most crucial part of the journey of developing software. The right product won’t come out unless the team identifies the right requirements. Hence, any of the software teams conduct this phase with much attention and care.
The work of this phase starts with communicating with the client. The main focus behind this phase is to understand the requirements of the client. In that case, a team would use several methods.
For example, if a team develops a library system for a school, the team will first visit the school, and discuss the requirements of the software with the librarian. Then, the team would walk around the library for a few hours, and observe how things are done at present. At the same time, the team would not forget to interview the stakeholders of this library system such as the students, teachers, parents, and the administrative staff of the school who are using this library. From these interviews, the team can identify the prevailing problems of the library system, as well as their suggestions and interests in coming up with a library system. Accordingly, the team would use various methods such as discussions, interviews, questionnaires, and observations to identify the exact requirements of the client.
Likewise, after getting the inputs from the client, the team can analyze them and define the requirements. Most probably, at the end of this phase, the team would come up with a document called the System Requirement Specification (SRS). This is one of the key documents of a software development project as it specifies all the functional and non-functional requirements of the proposed system, along with the software, hardware, and network requirements.
2. Feasibility Study
Then, the team would consider the feasibility of coming up with a system that fulfills the defined requirements. With regard, a team would consider the following factors.
- Technical Feasibility: Whether the company has the technical tools, resources, and expertise to support the proposed system.
- Economic Feasibility: Whether the company can complete the proposed system with the allocated budget.
- Operation Feasibility: Whether the company can provide the required operations of the client through the system.
- Schedule Feasibility: Whether the company can complete the proposed system within the allocated time frame.
- Legal Feasibility: Whether the company can come up with the proposed system while abiding by the legal framework of the company, and the country.
Upon completing the feasibility study, and making sure that the team can go ahead with the project, they would begin the designing phase.
3. System Design
Here, the team would consider the requirements of the system as the input, and define the architecture of the system as a whole.
In fact, it defines the following.
- Platforms such as Apple, Android, Windows, Linux, etc. to be focused on
- Programming Languages, industry practices, and the templates to be used
- Modules of the software and the functional logic behind them
- Dependencies of various modules
- Data flow between the modules
- Communication methods within the system
- Databases if required
- Details of the interfaces
- Security mechanisms
Likewise, a team focuses on every aspect of the system in this designing phase. Finally, they create a document called the System Design Specification (SDS). This would be the document that specifies the design considerations of the proposed system, and following the reviews and modifications, the team would step ahead to the development phase.
4. System Development
Indeed, this is the phase where the actual product comes up. Following the SDS, the developers will have to code the system.
They would use suitable programming tools, and high-level programming languages to make this development a success. However, at a glance, when someone reads this small description about this phase, he or she may think that there is nothing much to do within this phase. Still, believe us, this is the hardest and most challenging. Coming up with the proposed system, following the industry practices, and fulfilling each and every requirement of the client indeed requires so much effort. Thus, this is simply one of the most important phases of the SDLC.
5. Testing the System
Of course, developing a system won’t end the project. The team should test whether the system works fine as well. For this testing purposes, different companies use different testing methods such as follows.
In order to assess the functional performance of a software:
- Unit Testing: Testing each and every module of the system individually.
- Integration Testing: Integrating several modules together, and testing their performance.
- System Testing: Testing the whole system.
- User Acceptance Testing: The user tests the system.
In order to assess the functional performance of a software:
- Performance Testing: Includes stress testing, load testing, endurance testing, and spike testing
- Security Testing: Verifying integrity, confidentiality, authentication, authorization, availability, and non-repudiation
- Usability Testing: Tests the ease-of-use
- Compatibility Testing: Tests the performance of the system across desktops, mobiles, and web applications
Apart from all these testing methods, automated tests such as the following will also be conducted to validate a software product.
- Smoke Testing: Ensures that a system is stable and suitable for further testing.
- Regression Testing: Tests whether the system works fine after fixing a bug, or after adding new functionality.
However, a software developing team won’t conduct all these tests to validate the product. In fact, the Quality Assurance (QA) team analyzes the system design and decides upon what testing needs to be carried on to validate a specific product.
6. System Deployment
And finally, the system is ready to be released!
So, after the successful completion of the testing phase, the team would work on releasing the product. However, system development is possible in any of the following methods.
- Direct Deployment: The earlier system is completely removed, and the new one is installed.
- Parallel Deployment: The new system is released, but the earlier system will also parallelly run with the new system for a certain period of time.
- Pilot Deployment: The system is released only to a part of the client company (for a specific department) at first.
- Phased Deployment: The complete system is not released at first, instead the release is done module by module.
7. System Maintenance
The job of a software team won’t end even after releasing the product. They have to take care of the maintenance of the system as well.
In fact, if there are any bugs that have not been debugged, the team will have to work on them after the release. At the same time, if the users complain about any functions, or if any modules of the system go out of order, the team will have to look into them and resolve them. At the same time, adding new functionalities, and modifying interfaces are also common system maintenance tasks that come up. However, unless the maintenance task is related to a bug, the team can cost the maintenance tasks that they perform.
SDLC models, also known as SDLC process models, are different forms of SDLC that evolved with time. The exact same steps of the SDLC are involved in these process models. Still, the only difference lies with the order of their execution.
You can find below some of the most popular SDLC process models.
- Waterfall Model
- Incremental Model
- Spiral Model
- V-Shaped Model
- Agile Model
- Big Bang Model
Scroll down to know more about these SDLC models.
This is also well-known as the linear-sequential life cycle model. And yes, the name of this process model itself gives an idea about how it works. Its steps move forward as a waterfall flows down!
In fact, the steps of the SDLC execute one after another. In other words, without the completion of the previous step, the next step would not be started. The team would execute each step of the SDLC with a plan with end goals, and upon successfully achieving them, they would move to the next step, taking the outcome of the previous phase, as the input to the other.
Of course, this model is easy to understand and convenient to work with, since the phases are very specific. Still, as per the industry experts, this SDLC model is more suitable for less complex projects. Since there is no chance for a go-back in this model, it is hard to use this kind of model for a complex project, where there is a high chance for the requirements to change with time.
The incremental model works with small subsets of the system. In fact, the team first plans and designs for a specific part of the system. Then, they develop it, test it, and release it. Afterward, the team moves to the next iteration of this SDLC process model, where they add new functionalities to the earlier developed components of the system. Similarly, in this iterative round also, they plan for that specific part of the product, design it, develop it, test it and then release it. Again, they move to the next iterative round of the SDLC model. Likewise, they work in several iterative rounds to further enhance the functionalities of the product, and in each round, the design phase, development phase, testing phase, and deployment phase repeat. So, it is more like executing the waterfall model in each round of development.
This creates opportunities for the developing team to address the changing requirements of the clients. At the same time, it gives high chances to measure the progress periodically, and get an idea about the end product from time to time. So, this is an ideal SDLC model to cope with complex projects where the requirements tend to change a lot.
In this SDLC process mode, certain processes happen sequentially.
For example, the team plans the requirement analysis phase along with the user acceptance testing phase. Also, they plan the system design phase along with the system testing phase. Likewise, the development phase would remain in the center, and the rest of the parallel planning phases can be arranged on both sides, considering their normal flow. So, when graphically depicting this model, its structure looks like the letter ‘V’. So, that is why it has got this name!
However, this model is not suitable for complex projects. So, the developers can follow this SDLC process model to work on less-complex projects, where the requirements are very specific.
Many believe that this Spiral Model is a combination of the Waterfall Model and the Iterative System Development Approach. However, this SDLC model pays special attention to risk management.
What happens here is that each iteration of the system development is taken as a spiral. Then, the team divides each of these spirals into four main phases, mainly related to requirement analysis, alternative evaluation, product development, and the next spiral (iteration) planning. So, within an iteration round as such, the team executes the usual SDLC steps with regard to the product development phase. Moreover, the team conducts the next phase of planning based on the client’s feedback on their previous spiral’s end product.
This SDLC model is more suitable for medium – long-term complex projects, with high risk. At the same time, the end products of each spiral will act as prototypes, and thus, it creates an opportunity for the users to give constructive feedback, with an idea about the final product beforehand.
This is indeed the most popular SDLC process model at present. Many developers love to follow this process model as it encourages rapid deliveries, and creates space for changing requirements.
What exactly happens here is that the team first breaks down the project into small incremental builds. Then, they divide the available time frame into several small time frames that range from 1 – 3 weeks. Afterward, they take each of those small time frames for an incremental build. So, at each of the iterations, or at the end of each small time frame to be specific, the team would release the build that they worked on during that time period.
And the specialty here is that within the time frame, several cross-functional teams would be working focusing on areas like planning, requirement analysis, designing, development, testing, etc. So, it boosts team collaboration and easier management.
Big Bang Model
This is an SDLC process model suitable for very small projects with one or two developers. This model actually requires less or no planning at all. It provides limitless flexibility and supports projects where the client does not even have a specific idea of what the end product should be. Therefore, this is more like a process model that goes ahead with available resources and funds. However, this involves high risks, and thus, is not suitable for long-term projects.
Do Sri Lankan IT Companies Follow the SDLC?
Yes, of course! The SDLC is more like a worldwide accepted approach in software development. Thus, it is rare that a company ignores to follow it. Besides, SDLC helps an IT Company immensely for the successful completion of software products. Hence, almost all the Sri Lankan IT companies do follow the SDLC, and the official website of Lakmobile Technologies will provide proof to you with regard.
The Bottom Line
After all, the SDLC or the Software Development Life Cycle is one of the most crucial, and basic things that any person related to the IT field should know about. We hope that this article provided you with a good insight with regard. So, never forget to use this knowledge if you are ever planning to work on a system development project!