The software development lifecycle begins with the analysis stage, during which the participants discuss the requirements for the final product. The purpose is to define system requirements in detail. In addition, you need to make sure that all participants have a clear understanding of the assigned tasks and how exactly each requirement is going to be implemented in practice.
Often, testing specialists also participate in the discussion and can adjust the process.
Depending on the chosen development model, approaches to determining the transition from one stage to another may differ. For example, in a waterfall or V-model, the requirements analysis stage is described in a Software Requirement Specification (SRS) document, which must be completed before proceeding to the next stage.
Thus, this stage involves the collection of requirements for the software, their systematization, documentation, analysis, as well as the identification and resolution of contradictions.
At this stage (also known as the architecture stage) software developers and system architects develop a high-level system design according to specific requirements.
Various technical issues arising during the design process are discussed with all stakeholders, including the customer. The technologies that are used in the project, team workload, constraints, timeframes and budget are determined. The most suitable design solutions are selected according to the specified requirements.
The approved system design determines the list of developed software components, interaction with third parties, the functional characteristics of the program and the databases used. System design is usually described in a separate document which is called a Design Specification Document (DSD).
To simplify the visualization of the design process, so-called notations are used – schematic expressions of the characteristics of the system being developed. The main notations are:
Transition to the development stage takes place after the requirements and design of the product are approved. At this stage, the program code is written.
System administrators set up the software environment, front-end programmers develop the user interface of the program and the logic of its interaction with the server.
In addition, programmers write unit tests to check if the code of each system component works correctly, review the written code, create builds and deploy the finished software in the software environment. This cycle repeats until the code meets all system requirements.
There are four main stages in programming:
This stage is rather conventional since certain documents are created at all stages of the program lifecycle. However, in addition to the project documentation and development records, there are also other text documents describing, for example, the functions of the program and how to use it.
There are four levels of documentation in total:
Testers search for defects in software and compare the behavior of the system described in the requirements with the real one.
During the testing stage, bugs missed during development are discovered. If a defect is found, the tester makes up a bug report, which is sent to the developers who fix it. After this testing is repeated to make sure that the problem has been fixed, and the fix itself did not cause new bugs. This is discussed in detail in our online QA engineer classes.
Testing is repeated until the completion criteria are met.
When the program has been tested and no more has serious defects, it is time to release it.
After the release of a new version of the program, the technical support department starts working. Its employees provide user feedback, advice and support.
If users find some post-release bugs, information about them is sent in the form of bug reports to the development team. Depending on the bug severity they either immediately release a fix (the so-called hot-fix) or postpone it until the next version of the program.
Moreover, the technical support team helps to collect and organize metrics about the program’s performance.
All stages of the software lifecycle presented above apply to any development model, but their duration and order may differ.