Software Development Phases
The software development process or software lifecycle is the process of organizing the phased development project to improve the productivity and quality of the project. There are different models to plan the process that will follow the development of software; each of these models has characteristics that make them better adapted to some types of the project than to others.
We can include models to manage the software development process, in two major groups: sequential methodologies and agile methodologies.
Sequential methodologies that we might call “traditional” have distinct, well-defined phases that are developed in an orderly way, one after the other. They were the first methodologies used in software development projects, and are still widely used. On the contrary, agile methodologies advance iteratively, repeating short stages where small parts of the project are developed. In each of these small steps, all product phases are worked: analysis, design, implementation, and verification.
Within the sequential methodologies, in this course, we will focus on the so-called Cascade model, while from the Agile methods, we will focus on understanding the philosophy on which they are inspired, and we will see Scrum, one of the most used agile models in software development today.
- The Cascade model and new development methodologies
The Cascade model is a way of organizing a development process that includes a set of phases that are traveled in an orderly way, one after the other.
This model is based on having a firm overview, carefully planning the project, deadlines, budget, and implementation of the entire system at the same time.
The 5 phases in which the Cascade model is divided the following:
- Definition of requirements
- Installation and maintenance
Each party is exhaustively documented, and the next phase does not begin until the previous phase has been completed in its entirety. In the Cascade model, it is not necessary to return to a phase that has already been overcome, being, therefore, an inflexible system. Critics of this system argue that in a software development process, unlike a construction project or industrial, to make changes to a product is not so expensive, since it is not a physical product, and that this model encorseta the development process. Later on, we will see that this system has advantages, especially in projects where the requirements are visible and there is no need for a high degree of adaptability.
- Development with Agile methodologies such as Scrum
The basis of Agile development methodologies is the iteration and feedback of the client. Most agile development methodologies divide the project into small parts that minimize the amount of planning and design hours needed at the beginning of a sequential plan. Iterations usually last between 1 and four weeks, and at the end of each iteration, the developed part of the product is shown to the customer. In this way, the product adapts to the changes, as the customer as he sees the software develop, is incorporating new ideas of what the final product should be. It may take several iterations to get a product that can be used or to integrate new features.
- Fundamental differences in the Cascade and agile model
Adaptive methodologies focus on enabling quick solutions to changes in the project, but in such a project, it is difficult to know what will be done in the future.
On the contrary, predictive methodologies focus on the analysis and planning of the entire project. Virtually the whole project is planned from the beginning, and you can know when or how long it will take to develop software functionalities well before the time comes to get to work on it. If the project analysis fails, the consequences can be very harmful.
Iterative methodologies compared to sequential methods – One of the most significant differences between agile methods and the subsequent and the life cycle in the cascade is how you pose the stages of the project.
Iterate means repeat. In the Cascade model, all application requirements will be developed in the implementation phase. Instead, in an iterative model, in a first iteration, the development team can create a basic form for users to register. Later, in a future iteration, the team is instructed to implement a design change and a system to verify that the selected passwords have more than eight characters.
This is why we say that this model is iterative and incremental. The application develops gradually, through repetitions that add value to the form. With each iteration, new parts of the software are added, and regions that have already been done are refined.
What is the best option for this project?
Several factors can tell you what kind of development process can best be adapted to your project. One of the main factors is the knowledge of the requirements to be implemented. If the conditions are very clear from the start, and there is no forecast that they will change, the Cascade model may be appropriate. If, on the contrary, the requirements are not precise, it will be more convenient to use a flexible methodology that allows flexibility to change and add new elements.
Another critical factor is a novelty. If the developer group has carried out similar projects before, and they are very clear about what they need to do to make the project successful, there is no need for so many iterations or feedback. In this case, the Agile methodology may not be the most efficient.
One of the main reasons why Agile methodologies are not often used is because of the price and time of development. When the requirements have been established a priori, and a budget has been accepted, the customer fears that changing the conditions may prolong the deadlines and increase the final price of the product. Therefore, it prefers the safety of obtaining the product with the agreed amount to the flexibility and adaptability of a quick project.
In conclusion, each project is developed in a particular context, and the different factors that condition the project will make one methodology more favorable than another. It is up to the team and project managers to choose the appropriate development methodology for each project.