The Software Development Lifecycle (SDLC, Software Life Cycle) is a conditional series of a set of phases that any software goes through; describes all the stages of software life from birth to death, and what happens to it at each stage.
A typical software development life cycle consists of the following phases:
- Analysis of the client's request. The analysis is the most important and fundamental phase in the SDLC. It is carried out by a project manager with input from clients, sales, and industry experts. This information is then used to conduct product feasibility studies and planning. During this phase, the goals of the project, the resources needed, and possible problems are determined.
- Design. You need to move to this phase only when there is a clear understanding of the project goals, and requirements are formed. Several approaches to product architecture design are usually proposed based on requirements. The internal design of all modules of the proposed architecture should be clearly defined and described in great detail.
- Implementation or coding. This is the very process of developing a system - writing code.
- Testing. This phase is accompanied by checking the system's performance, identifying and fixing bugs until the product reaches the required quality standards.
- Deployment. Once a product is tested and ready for deployment, it is officially released to the relevant market. Sometimes a product is deployed gradually in accordance with the organization's business strategy. The product may first be released in a limited segment and tested in a real business environment, then based on feedback, the product may be released as is or with suggested improvements in the targeting segment.
- Maintenance. In this phase, periodic technical support of the system is carried out to ensure that the system is not out of date. This includes continually evaluating performance, updating specific components to make sure the system meets the right standards and the latest technology, etc.
Software product development knows a lot of good methodologies - in other words, well-established best practices. The choice depends on the specifics of the project, the budgeting system, subjective preferences, and even the temperament of the manager.
1. «Waterfall Model»
One of the oldest models which involves the sequential passage of stages, each of which must be completed before the start of the next. Project management is easy with the Waterfall model. Due to its rigidity, development is fast, cost and time are predetermined. But this is a double-edged sword. The Waterfall model will only give excellent results in projects with clear and pre-defined requirements and ways to implement them. There is no way to take a step back, testing only begins after the development is completed or almost completed. Products developed according to this model without an informed choice may have flaws (the list of requirements cannot be adjusted at any time), which becomes known only at the end due to the strict sequence of actions. The cost of making a change is high because it has to wait for the entire project to complete to initialize. However, the fixed cost often outweighs the cons of the approach. Correcting the deficiencies recognized during the creation process is possible, and, in our experience, requires from one to three additional agreements to the contract with a small technical task.
When is it optimal to use the Waterfall methodology model?
- Only when the requirements are known, understood, and recorded. No conflicting requirements detected.
- There are no problems with the availability of programmers of the required qualifications.
- In relatively small projects.
Inherited the step-by-step structure from the Waterfall model. The V-model applies to systems for which smooth operation is especially important. For example, clinical applications for patient monitoring, integrated software for vehicle airbag control, and so on. A feature of the model can be considered the fact that it is aimed at thorough checking and testing of a product that is already at the initial stages of design. The testing phase occurs concurrently with the corresponding development phase, for example, unit tests are written during coding.
When is it optimal to use the V-model?
- If thorough testing of the product is required, then the V-model will justify the underlying idea: validation and verification.
- For small and medium-sized projects where the requirements are clearly defined and fixed.
- In conditions of availability of engineers with the necessary qualifications, especially testers.
3. «Incremental Model»
In an Incremental model, the overall system requirements are divided into different assemblies. The terminology is often used to describe the phased assembly of software. Several development cycles take place and together they constitute the multi-waterfall life cycle. The loop is split into smaller, easy-to-create modules. Each module goes through the requirements definition, design, coding, implementation, and testing phases. The development procedure based on the Incremental model assumes the release at the first large stage of the product in the basic functionality, and then the sequential addition of new functions, the so-called "increments". The process continues until a complete system is created. Incremental models are used where individual change requests are clear and can be easily formalized and implemented.
When is it optimal to use an Incremental model?
- When the basic system requirements are clearly defined and understood. At the same time, some details can be improved over time.
- Requires early market launch.
- There are several risky features or goals.
4. «RAD Model» (Rapid application development model)
The RAD model is a kind of Incremental model. In a RAD model, components or functions are developed by several highly qualified teams in parallel, like several mini-projects. The time frame for one cycle is strictly limited. The created modules are then integrated into one working prototype. Synergy allows to very quickly provide a client for reviewing something working to get feedback and make changes.
The RAD model includes the following phases:
- Business modeling: defining a list of information flows between different departments.
- Data Modeling: The information gathered in the previous step is used to define the objects and other entities needed to circulate the information.
- Process modeling: information flows link objects to achieve design goals.
- Build Application — Uses auto assembly tools to convert CAD models to code.
- Testing: new components and interfaces are tested.
When is it optimal to use the RAD model?
It can only be used with highly qualified and highly specialized architects. The project budget is large to pay for these specialists along with the cost of ready-made automated assembly tools. The RAD model can be chosen with confident knowledge of the target business and the need for urgent production of the system within 2-3 months.
5. «Agile Model»
In an Agile methodology, after each iteration, the customer can observe the result and understand whether it satisfies them or not. This is one of the advantages of the Agile model. Its disadvantages include the fact that, due to the lack of specific formulations of the results, it is difficult to estimate the labor and cost required for the development. Extreme Programming (XP) is one of the best-known practical uses of the Agile model.
This type is based on short daily meetings called "Scrum" and regularly recurring meetings (once a week, once every two weeks, or once a month) called "Sprint". In daily meetings, team members discuss:
- A report on the work done since the last Scrum.
- A list of tasks that the employee must complete before the next meeting.
- Difficulties encountered in the course of work.
The methodology is suitable for large or long-term projects that are constantly adapting to market conditions. Accordingly, requirements change during implementation. It is worth remembering the class of creative people who tend to generate, issue, and try new ideas weekly or even daily. Agile development is best suited for this type of leader.
When is it optimal to use the Agile model?
- When user needs are constantly changing in a dynamic business flow and environment.
- Agile changes are implemented at a lower cost due to frequent increments.
- Unlike a Waterfall model, in an Agile model, only a little planning is enough to start a project.
6. «Iterative Model»
An Iterative lifecycle model does not require a complete specification of requirements to start. Instead, creation begins with the implementation of a piece of functionality, which becomes the basis for defining further requirements. This process is repeated. The version may not be ideal, the main thing is that it works. Understanding the ultimate goal, we strive for it so that every step is effective, and each version is workable.
The diagram shows the iterative "development" of the Mona Lisa. As you can see, in the first iteration, there is only a sketch of the Mona Lisa, in the second, colors appear, and the third iteration adds details, saturation and completes the process. In the Incremental model, the functionality of the product is built up piece by piece, the product is composed of parts. Unlike the Iterative model, each piece is a coherent element.
An example of iterative development is voice recognition. The first research and preparation of the scientific apparatus began long ago, in the beginning - in thoughts, then - on paper. With each new iteration, the recognition quality has improved. However, perfect recognition has not yet been achieved, therefore, the problem has not yet been fully solved.
When is it optimal to use an Iterative model?
- The target system requirements in advance clearly defined and understood.
- Large or very large project.
- The main objective should be defined, but implementation details may evolve.
7. «Spiral Model»
The Spiral model is similar to the Incremental model, but with an emphasis on risk analysis. It works well for solving critical business problems when failure is incompatible with the company's activities when new product lines are released when research and practical testing is necessary.
The spiral model assumes 4 stages for each loop:
- Risk analysis;
- Result evaluation and, if the quality is satisfactory, the transition to the next loop.
This model is not suitable for small projects, it is reasonable for complex and expensive projects, such as the document management system for a bank development, when each next step requires more analysis to assess the consequences than programming.
The slide shows the differences between the two most common methodologies: Waterfall and Agile
In modern practice, software development models are multivariate. There is no one true predetermined approach for all projects, starting conditions, and payment models. Even Agile, being more favorable by the developers, cannot be applied universally due to the unavailability of some customers or the impossibility of flexible financing. Methodologies partially overlap in means and are somewhat similar to each other. Some other concepts were used only to promote their compilers and did not bring anything new into practice.