The SDLC aims to produce high-quality software that meets or exceeds customer expectations; reaches completion within the time and cost estimates.
Software life cycle models describe phases of the software cycle and the order in which those phases are executed. Each phase produces deliverables required by the next phase in the life cycle. Requirements are then translated into design. Code is produced according to that design which is called the development phase.
After coding and development, the testing verifies the deliverables of the implementation phase against requirements. The testing team follows a Software Testing Life Cycle (STLC) which is similar to the cycle that the development team also work too.
"If you fail to plan, you are planning to fail” - Benjamin Franklin
It’s very difficult to carry out a complex, team effort such as software development effectively without a plan. Each software development strategy is a planned framework for how to develop software.
Without some kind of structured plan, software development teams tend to devolve into a “clutter of cats.” Developers don’t know what they’re supposed to create. Project managers have no idea how much progress is being made towards the completion of a project. Without a plan, the business doesn’t even have a way to decide whether the final product meets their requirements.
A formally defined method for software development in the form of the SDLC achieves a number of benefits:
- A common vocabulary for each step.
- Defined communication channels between development teams and stakeholders.
- Clear roles and responsibilities among developers, designers, business analysts, and project managers.
- Clearly-defined inputs and outputs from one step to the next.
- A deterministic “definition of done” that can be used to confirm whether a step is truly complete
Software Development Lifecycle Model
There are the following six phases in every Software development life cycle model:
Requirement gathering and analysis
Implementation or coding
1) Requirement gathering and analysis:
Business requirements are gathered in this phase and it is the main focal point of the Solutions Architect and Project Managers. Meetings with managers, stakeholders, and users are held in order to determine the requirements such as;
- Who is going to use the system?
- How will they use the system?
- What data should be input into the system?
- What data should be output by the system?
These are examples of some of the general questions that are asked during a requirements gathering phase. Once those questions are answered and the requirements are outlined, their validity is then analysed and their incorporation into the development plan is also studied.
Finally, a Requirement Specification document is created with the purpose of outlining what's required for the next phase of the cycle. The testing team follows the Software Testing Life Cycle and starts the Test Planning phase after the requirements analysis is completed.
2) Design Workshop:
In this phase, the system and software design are prepared from the requirement specifications which were collated in the first phase. The Solutions Architect, Project Manager, and Designer meet with the client and spend a day working through to establish the needs for the company, what the management team wants and needs as well as what the users themselves need. We also work through with you from a technical perspective to ensure full efficiency throughout the entire process. System Design helps in specifying hardware and system requirements, and also helps in defining overall system architecture. The system design specifications serve as an input for the next phase of the model.
In this phase, the testers come up with the Test Strategy, where they mention what to test and how to test.
3) Implementation / Coding:
On receiving system design documents, the work is divided into modules/units and the actual coding is started. For the developer themselves, this phase is their main focus and arguably the most important as this is the phase where the code itself is produced. This is inevitably the longest phase of the software development lifecycle.
After the code is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the initial requirements phase. During this phase, all types of functional testing like unit testing, integration testing, system testing, acceptance testing are done as well as non-functional testing to ensure that we can iron out any potential issues before deployment.
After successful testing, the product is delivered/deployed to the customer for their use.
As soon as the product is given to the customers they will first do the beta testing. If any changes are required or if any bugs are caught, then they will report it to the engineering team. Once those changes are made or the bugs are fixed then the final deployment will happen.
Once the customers start using the developed system, potential issues may arise and will need solving from time to time. This process where the care is taken for the developed product is known as maintenance and is another vital part of the cycle to ensure that the system is functioning as intended.