How is the software development process managed?
The software development process has important differences with the manufacturing process of other products or services that can be industrialized. For instance, the phases in which the project is structured can be planned to be executed in parallel, with the purpose of finishing the product as soon as possible as well as making the most of the capacity of the project team that is developing it, achieving a greater occupation of each one of the team members. An important aspect to highlight is that the product being developed may require changes during its construction process, since it is increasingly necessary for organizations and their products to adapt flexibly to the highly changing environments they face.
Depending on the type of product being developed, the model adopted should allow for constant iteration between the members of the development team and the company's environment, which is what determines the route to be followed. This iteration allows: that the product fits the organizational requirements and that its quality is higher each time, since it allows in short time cycles: planning, executing, reviewing and adjusting. That is, constant iteration achieves flexible, innovative and high quality products.
Considerations to be taken into account when adopting a model for the software development process may include: the environment in which the organization operates (constant, stable or moderate change), the time required to bring the product to market, available budget, project team, expected quality, and opportunities and threats.
Waterfall
Perhaps the most famous of all, because it has been used for many years. In this model, the stages and processes of software development are structured in a structured way to first determine the product requirements, before starting the software programming process. It is the life cycle that corresponds to: Requirements gathering, analysis, development, testing, deployment, implementation and production support.
This model is still in force and is recommended for organizations and products that have: a stable environment, that the product to be developed can be easily determined from the beginning of the project, that the total development time is in accordance with the needs of the organization and its operational and/or commercial strategy, among other considerations.
Prototyping
The model based on prototypes, to allow end users to perceive what their final product will be like, without having to wait until the final delivery. It seeks to reduce the uncertainty that arises because software products are intangible and do not exist in the physical world, but in the digital one. They can only be appreciated through their functionalities and iteration with users.
It is also a traditional model, but little used. It can be recommended for use in companies that are focused on validating innovative products and are willing to invest in research and development.
Incremental
As its name suggests, it consists of achieving the construction of the final product over several and, if desired, many iterations. That is, in each iteration a new version of the product is delivered that adds value to the organization through new functionalities, components and/or elements. This is the basis used for agile methodologies such as: scrum, extreme programming and Kanban, among others.
The idea is to determine a minimum viable product that allows the organization to quickly benefit from the investment made. This first version of the product must be usable and exploitable by the end users in a short time and new versions with new components and/or functionalities can be generated on it, whose main objective will be to deliver value in a short time.
It is recommended to keep this model and methodologies in mind in order to the organization moves in an environment with permanent changes, where it is not known for sure what the final product will be, but if you have an initial idea of what you are looking for with it, the budget that is available is flexible and can grow according to the results obtained by bringing the product to market, opportunities and threats must be controlled in a short time and thus maximize their impacts in case of being opportunities or reduce them in case of being threats.
In the end, the success of a software development factory must be structured in such a way that allows it to plan, execute, monitor and control and deliver products to customers, according to the required model, according to the circumstances.
Bibliography consulted:
Clifford F. Gray y Erik W. Larson, Administración de proyectos (cuarta edición)
Collen Garton y Erika McCulloch, Fundamentals of Technology Project Mangement (sexta edición)
Projetc Management Body of Knowledge (MPBOK), Project Management Institute (PMI) (Sexta edición)