SOFTWARE LIFE CYCLE: EVERYTHING YOU NEED TO KNOW
The development process (or software life cycle), which at first might seem like a simple task, consists of a series of mandatory steps that seek to ensure that the programs created are efficient, reliable, safe and respond to the needs of end users.
What is the software life cycle
The software development life cycle (also known as SDLC or Systems Development Life Cycle ) contemplates the necessary phases to validate the software development and thus guarantee that it meets the requirements for the application and verification of the development procedures, ensuring that that the methods used are appropriate.
Its origin lies in the fact that it is very expensive to rectify the possible errors that are detected late in the implementation phase. Using appropriate methodologies, it could be detected in time so that developers can focus on software quality, meeting deadlines and associated costs.
Although there are different software development cycles, the ISO/IEC/IEEE 12207:2017 standard establishes:
“A common framework for software life cycle processes, with well-defined terminology, to which the software industry can refer. It contains processes, activities and tasks applicable during the acquisition, supply, development, operation, maintenance or disposal of computer systems, products and services. These life cycle processes are carried out through the participation of stakeholders, with the ultimate goal of achieving customer satisfaction.
Software development phases
The methodology for software development is a systematic way of carrying out, managing and administering a project to carry it out with great possibilities of success. This systematization indicates how a project is divided into smaller modules to standardize how it is managed.
Thus, a methodology for software development is the processes to systematically follow to devise, implement and maintain a software product from the moment the need for the product arises until the objective for which it was created is fulfilled.
In this way, the stages of software development are as follows:
Before starting an information system development project, it is necessary to carry out certain tasks that will decisively influence its success. These tasks are known as the fuzzy front-end of the project, since they are not subject to deadlines.
Some of the tasks in this phase include activities such as determining the scope of the project, carrying out a feasibility study, analyzing the associated risks, estimating the cost of the project, its time planning and allocating resources to the different project stages.
Of course, you have to figure out what exactly the software has to do. Therefore, the analysis stage in the software life cycle corresponds to the process through which one tries to discover what is really needed and arrives at an adequate understanding of the system requirements (the characteristics that the system must have). own).
In this phase, possible implementation options for the software to be built are studied, as well as deciding on its general structure. Design is a complex stage and its process must be carried out iteratively.
It is possible that the initial solution is not the most suitable, so in this case it must be refined. However, there are very useful design pattern catalogs that collect mistakes that others have made so as not to fall into the same trap.
In this phase, it is necessary to choose the appropriate tools, a development environment that facilitates the work and an appropriate programming language for the type of software to be built. This choice will depend on both the design decisions made and the environment in which the software must function.
When programming, try to make sure that the code is not indecipherable by following different guidelines such as the following:
- Avoid unstructured control blocks.
- Correctly identify the variables and their scope.
- Choose algorithms and data structures suitable for the problem.
- Keep the application logic as simple as possible.
- Properly document and comment on program code.
- Facilitate the visual interpretation of the code using code format rules previously agreed upon by the development team.
It is also necessary to take into account the acquisition of necessary resources for the software to work, in addition to developing test cases to verify its operation as it is programmed.
Since it is human to err, the testing phase of the software life cycle seeks to detect the mistakes made in the previous stages in order to correct them. Ideally, of course, do so before the end user encounters them. A test is said to be successful if any errors are detected.
Installation or deployment
The next phase is to put the software into operation, so the environment must be planned taking into account the existing dependencies between the different components of the same.
There may be components that work fine on their own, but combine them to cause problems. Therefore, it is necessary to use known combinations that do not cause compatibility problems.
Use and maintenance
This is one of the most important phases of the software development life cycle. Since the software neither breaks nor wears out with use, its maintenance includes three different points:
- Eliminate defects detected during its useful life (corrective maintenance).
- Adapt it to new needs (adaptive maintenance).
- Add new functionalities (perfective maintenance).
Although it sounds contradictory, the better the software, the more time you have to invest in its maintenance. The main reason is that it will be used more (even in ways that were not anticipated) and therefore there will be more proposals for improvements.
Software life cycle models
In order to facilitate a common methodology between the client and the software company, the life cycle models (or software development paradigms such as object-oriented programming ) have been updated to capture the development stages involved and the documentation necessary, so that each phase is validated before continuing with the next.
In the waterfall life cycle model, the previous phases will work one after the other in a linear way. In this way, only when a phase ends can you continue with the next one, and so on progressively.
This model guides the software development process in iterations. Thus, it projects the development process in a cyclical way repeating each step after each cycle in the software life cycle process.
The spiral model is a combination of the previous models where risk is taken into account. In this way, you begin by setting the goals and limitations at the beginning of each repetition. In the next stage, the prototype models of the software are created, which includes the risk analysis. A standard model is then used to build the software and finally the plan for the next iteration is prepared.
One of the big problems with the waterfall model is that you only go to the next phase if the previous one is complete and you cannot go back if there are errors in later stages. Thus, the V-model gives more software evaluation options at each stage.
In each phase, the test plan and test cases are created to verify and validate the product against the test requirements. In this way, verification and validation go in parallel.
big bang model
This is probably the simplest model, as it requires little planning, a lot of programming, and a lot of funding. This model has as its main concept the creation of the universe; thus, if funds and programming are put together, the best software product is achieved.
Solutions for software development life cycles
Continuous integration and development (CI/CD) incorporates continuous automation and permanent control of the software life cycle, a set of practices that is supported by DevOps in Azure , a service that of course we offer at Intelequia.