10ma Edición | DICIEMBRE 2022 | ISSN 2618-1894 | Artículos científicos
HACIA OTRO MODELO DE PROCESO DE DESARROLLO
DE SOFTWARE
TOWARDS ANOTHER SOFTWARE DEVELOPMENT
PROCESS MODEL
Fontela, Carlos
1
Paez, Nicolás
2
Fontela, C. y Paez, N. (2022). Hacia otro modelo de proceso de desarrollo de software.
Revista INNOVA, Revista argentina de Ciencia y Tecnología, 10.
RESUMEN
Existe la noción de que en la industria del software lo que cambia es la tecnología: hardware,
dispositivos, software de base, lenguajes y herramientas. Sin embargo, también vienen
cambiando, desde hace décadas, los paradigmas, la organización de los equipos de trabajo,
los roles en los mismos, la manera de entregar el producto y la forma en que se gestiona el
desarrollo. En este artículo exploramos cómo se ha ido abandonando el modelo de desarrollo
propio de las industrias manufactureras, utilizado en la industria del software durante mucho
tiempo. En ese modelo, un producto se concibe, se construye y llega a los clientes a través de
una serie de pasos que se realizan en forma sucesiva, en los cuales trabajan roles diferentes,
incluso con intereses contrapuestos. Hoy se ha pasado a un modelo en que las distintas
actividades se desarrollan de manera simultánea, con equipos plurifuncionales, mientras que
el producto se entrega de manera incremental y continua, con los clientes y usuarios
trabajando codo a codo con los desarrolladores a lo largo de todo el proceso. También
analizamos por qué ocurre esto, qué impacto tiene en la forma de trabajo y presentamos
evidencia de que esta evolución implica una mejora.
ABSTRACT
There is a notion that in the software industry what changes is the technology: hardware,
devices, system software, languages and tools. However, for decades, the paradigms, the
1
Laboratorio de Métodos de Desarrollo y Mantenimiento de Software, Universidad de Buenos Aires, Argentina
Universidad Nacional de Tres de Febrero, Argentina / cfontela@fi.uba.ar / ORCID 0000-0002-0286-9100
2
Universidad de Buenos Aires, Argentina Universidad Nacional de Tres de Febrero, Argentina /
nicopaez@ieee.org / ORCID 0000-0002-0453-4259
10ma Edición | DICIEMBRE 2022 | ISSN 2618-1894 | Artículos científicos
organization of work teams, their roles, the way of delivering the product and the way in
which development is managed have also been changing. In this article we explore how the
development model of manufacturing industries, used in the software industry for a long
time, has been abandoned. In that model, a product is conceived, built and reaches customers
through a series of successive steps, in which different roles work, even with conflicting
interests. Today we have moved to a model in which the different activities are carried out
simultaneously, with cross-functional teams, while the product is delivered incrementally and
continuously, with customers and users working side by side with developers throughout the
process. We also analyze why this is happening, what impact it has on the way of working and
we present evidence that this evolution implies an improvement.
PALABRAS CLAVE
Ingeniería de Software/ modelos de procesos de desarrollo/ evolución/ DevOps/ entrega
continua.
KEY WORDS
Software Engineering/ development process models/ evolution/ DevOps/ continuous
delivery.
10ma Edición | DICIEMBRE 2022 | ISSN 2618-1894 | Artículos científicos
INTRODUCCIÓN
Ingeniería y desarrollo de software
La Ingeniería de Software, en su acepción más tradicional, es la disciplina que estudia el
desarrollo, mantenimiento y operación del software, sus técnicas, herramientas y
metodología (IEEE, 1990). Una definición más moderna dice que “es la aplicación de un
enfoque empírico y científico para encontrar soluciones eficientes y económicas a problemas
prácticos de software” (Farley, 2022)
La noción de una “ingeniería” del software surge a fines de la década de 1960 en respuesta a
lo que en ese entonces se denominaba la “crisis del software”(Naur, 1968), cuando el
desarrollo de software era visto solamente como sinónimo de una práctica mecánica de
codificación. Uno de los supuestos básicos en la génesis de esta disciplina era que los costos
crecientes del desarrollo y el mantenimiento del software se debían a la falta de procesos
sistemáticos como los de las ingenierías. Por eso, una de las principales preocupaciones de
ese momento fue definir formalmente procesos de desarrollo y mantenimiento.
En el marco de este artículo nos quedamos con la acepción más general del desarrollo. Por
ello, llamamos desarrollo de software a todas las actividades que van desde el contacto inicial
con un cliente que necesita una solución de software o desde una necesidad percibida de
negocio que debe ser abordada desde el software, hasta que el producto está instalado en
un ambiente productivo disponible para el usuario (en otras palabras, el producto está
agregando valor a partir de solucionar el problema para el cual fue concebido). Dicho de
manera más sucinta, a los fines de este artículo, incluimos como parte del desarrollo a todas
las actividades necesarias desde la concepción del producto hasta su despliegue en los
equipos en los que se va a ejecutar. Adquisición y gestión de requisitos, diseño, programación,
gestión de equipos y personas, pruebas, despliegue, etc., son todas disciplinas que
englobamos dentro del desarrollo de software.
El cambio en el proceso de desarrollo
Los métodos y procesos de desarrollo de software están en constante cambio. Esto se debe,
no sólo al avance tecnológico, sino también a que los procesos de negocio que soporta el
software lo demandan.
Además, como el software está cada vez más presente en la economía, en los artefactos que
usamos, en los usos del día a día, cada vez son más los procesos de negocio que demandan
software, y cada vez sus necesidades son más perentorias, con cualidades crecientes de
seguridad, usabilidad, confiabilidad, resiliencia y otros atributos de calidad (Forsgren et al
2018; Kelly, 2017; Andreessen, 2011).
En definitiva, no es el avance de la “tecnología” lo que hace cambiante a esta disciplina, sino
la propia evolución de los métodos de construcción, que por su frecuencia de cambio la hacen
única entre las ingenierías.
En este artículo analizaremos cuáles son los últimos avances en cuanto al proceso de
desarrollo de software, y explicaremos qué hace que ese proceso esté en cambio constante,
qué implica a nivel de equipos y personas, de gestión del desarrollo, de arquitectura, y
mostraremos la evidencia existente de que realmente implica una mejora sobre modelos
anteriores.
10ma Edición | DICIEMBRE 2022 | ISSN 2618-1894 | Artículos científicos
OBJETIVOS
Este artículo tiene como objetivos:
Establecer las razones por las cuales el proceso de desarrollo de software continúa
evolucionando.
Explicar las principales características del modelo de proceso que se está imponiendo
en la última década y su impacto en las diferentes disciplinas de la Ingeniería de
Software.
Dar a conocer la evidencia empírica que existe sobre las ventajas que el modelo actual
ofrece sobre los enfoques anteriores.
Dejar en claro que el nuevo modelo de proceso, si bien destaca favorablemente en la
mayor parte de los escenarios, sigue coexistiendo con modelos anteriores en ciertos
tipos de software.
BREVE RESEÑA DE ENFOQUES METODOLÓGICOS
Familias de métodos en el tiempo
Muy groseramente, las familias de métodos de desarrollo que han prevalecido en las distintas
épocas son los que se muestran en la Tabla I.
Tabla I: familias de métodos y épocas de predominio
Familia de métodos o procesos
Otra manera de referirnos
Época en que fue el
método más corriente
Sin metodología
Sólo programación y pruebas al
azar
Hasta mediados de los
1960
Cascada (Royce, 1987)
Desarrollo basado en etapas-
actividades disjuntas
1960s - 1970s
Cascada flexibilizada
Cascada con vuelta atrás
1970s - 1990s
Primeros métodos iterativos
Iterativos basados en planes
~1995 - ~2005
Ágiles de primera generación
Iterativos - incrementales basados
en el manifiesto ágil
~2000 -
De flujo continuo
Lean-Continuo (ver luego)
2014 -
No todos los cambios fueron igualmente importantes. La Fig. 1 muestra una evolución de los
modelos según el autor.