See discussions, stats, and author profiles for this publication at: [Link]
net/publication/327537074
Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de
software
Article in Espirales Revista Multidisciplinaria de Investigación · June 2018
DOI: 10.31876/re.v2i17.269
CITATIONS READS
10 15,564
3 authors, including:
Harry Vite Cevallos Jefferson Dávila Cuesta
Universidad Técnica de Machala Unidad Educativa Mundial
16 PUBLICATIONS 38 CITATIONS 2 PUBLICATIONS 11 CITATIONS
SEE PROFILE SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Proyecto Gobierno Electrónico y Administración de Salud Pública mediante la utilización de las Tecnologías Innovadoras View project
All content following this page was uploaded by Harry Vite Cevallos on 08 September 2018.
The user has requested enhancement of the downloaded file.
Espirales revista multidisciplinaria de investigación
ISSN: 2550-6862
Metodologías ágiles frente a las tradicionales en
el proceso de desarrollo de software
Agile methodologies against traditional methods in the software
development process.
Enviado marzo 2018 – Revisado abril 2018 – Publicado junio 2018
1
Bryan Molina Montero
2
Harry Vite Cevallos
3
Jefferson Dávila Cuesta
1
Ingeniero en Sistemas. Maestrante en Sistemas de Información Gerencial. bryanmolinamontero@[Link]
2
Ingeniero en Sistemas. Maestrante en Sistemas de Información Gerencial. hvite@[Link]
3
Ingeniero en Sistemas. Maestrante en Sistemas de Información Gerencial. jeffersondavila@[Link]
Espirales revista multidisciplinaria de investigación
ISSN: 2550-6862
Resumen
El proceso de desarrollo de software a través de los años se ha venido implementando una serie de
metodologías que facilitan a programación. La presente investigación realiza una revisión de
publicaciones sobre las metodologías llamadas ágiles, sus principios y fundamentos, estableciendo
definiciones y explicaciones detalladas de las más relevantes en la actualidad (Scrum y XP),
convirtiéndose en la más acertada para el desarrollo de los procesos de ingeniería de software.
Palabras clave
Ingeniería de software, metodologías de desarrollo, metodologías ágiles.
Abstract
The process of software development over the years has been implementing a series of methodologies
that facilitate programming. The present investigation makes a review of publications on the so-called
agile methodologies, their principles and foundations, establishing definitions and detailed
explanations of the most relevant at present (Scrum and XP), becoming the most successful for the
development of engineering processes of software.
Key words
Software engineering, development methodologies, agile methodologies.
1. Introducción
En la década de los 50 el desarrollo de sistemas estaba a cargo de programadores más
enfocados en la tarea de codificar, que en la de comprender y recoger las necesidades de los
usuarios, que muy a menudo no quedaban satisfechos con el resultado final, es decir no era
un software de calidad. La calidad no solo se refiere a la satisfacción del cliente, sino que
también puede referirse a su velocidad, estabilidad, flexibilidad, seguridad, usabilidad,
escalabilidad, entre muchos otros atributos.
Pero para poder hablar de calidad, se tuvo que generar un gran proceso histórico que sigue
en constante evolución, como son las Metodologías de Desarrollo de Software. Estas
proponen como objetivo principal presentar un conjunto de técnicas tradicionales, modernas
y ágiles de modelado de sistemas que permitirían desarrollar software con calidad,
incluyendo heurísticas de construcción y criterios de comparación de modelos de sistemas.
(Egas & Játiva, 2008)
La Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos
enfoques, es decir, la aplicación de la ingeniería al software.(Egas & Játiva, 2008)
El principal problema es que de las múltiples metodologías de desarrollo de software
existentes no se selecciona la adecuada o la que más convenga, y en el peor de los casos no
se selecciona ninguna (al menos de manera explícita), para desarrollar el software que se
requiere.
114
Para dar solución a lo anterior, en este trabajo se pretende brindar una descripción general
de las metodologías de desarrollo tradicionales, así como también una descripción de las
metodologías de desarrollo ágiles presentando algunas como: Scrum y XP. Además, un
análisis comparativo que permitirán tomar decisiones en la elección de una metodología de
desarrollo de software.
2. Metodología
En la presente investigación se realiza un recorrido bibliográfico de las principales corrientes
sobre las metodologías de desarrollo tradicional frente a las contemporáneas y sus
diferencias, presentando sus características y aspectos relevantes que se han ido
desarrollando en el tiempo de la sociedad del conocimiento.
Las metodologías desarrolladas se han ido modificando a las innovaciones requerida en cada
momento, evidenciando cambios pequeños en algunos casos y giros importantes en otros,
siendo importante su estudio.
3. Resultados
La revisión bibliográfica, facilito la establecer los cambios presentados y las consideraciones
que permitieron su implementación en el desarrollo de software, para lo cual se plantea el
recorrido de los principales autores en esta temática a fin de ir evaluando sus criterios de
trabajo, relacionados a desarrollo de las metodologías.
Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de software
En primer lugar, es sustancial conocer la definición de la palabra metodología, siendo una
palabra formada por tres vocablos griegos: metá que significa más allá, odós que significa
camino y logos que significa estudio; considerando lo anterior como ese estudio más allá del
camino. (Rivas, Corona, Gutiérrez José Fructuoso, & Henandez Lizeth, 2015) .
3.1 Metodologías de desarrollo tradicional
Según (Pressman, 2013), las metodologías de desarrollo tradicionales o clásicas son también
llamados modelos de proceso prescriptivo, y fueron planteadas originalmente para poner
orden en el caos del desarrollo de software que existía cuando se empezó a generar
masivamente. La historia revela que estos modelos tradicionales que fueron presentados en
la década de los 60, dieron cierta estructura útil al trabajo de la Ingeniería de software y
constituyen un mapa razonablemente eficaz para los equipos de desarrollo.
En las metodologías tradicionales se concibe al proyecto como uno solo de grandes
dimensiones y estructura definida; el proceso es de manera secuencial, en una sola dirección
y sin marcha atrás; el proceso es rígido y no cambia; los requerimientos son acordados de
una vez y para todo el proyecto, demandando grandes plazos de planeación previa y poca
comunicación con el cliente una vez ha terminado ésta.
En la década de los 70 aparece algo denominado el ciclo de vida de desarrollo de software,
como un consenso para la construcción centralizada de software, y daría las pautas de
manera general que logran establecer los estados por los que pasa el producto software
desde que nace a partir de una necesidad, hasta que muere. (Egas & Játiva, 2008)
El primer modelo publicado acerca del proceso de desarrollo de software, se originó por
procesos más generales de la ingeniería, debido al paso de una fase en cascada a otra,
Winston Royce define al modelo como modelo en cascada, que empezó a diseñarlo en el año
1966 y fue terminado alrededor de 1970. Este modelo propone un enfoque secuencial y
115
Espirales revista multidisciplinaria de investigación
ISSN: 2550-6862
sistemático para el desarrollo de software, conlleva más disciplina y se basa principalmente
en las etapas de análisis de requisitos, diseño, codificación, pruebas y mantenimiento.
(Sommervjlle, 2006)
A continuación, se presenta gráficamente (Figura 1) las fases del modelo en cascada.
Análisis de
Requisitos
Diseño
Codificación
Pruebas
Mantenimiento
Figura 1. Fases del modelo en cascada.
El modelo en cascada se define como una secuencia de fases, que al final de cada etapa reúne
toda la documentación para garantizar que cumple con los requerimientos y
especificaciones.
El modelo en cascada para la época se convirtió en un pilar fundamental de ejemplo de
proceso dirigido, donde se planificaría todas las actividades antes de comenzar a trabajar en
ellas.
Al pasar el tiempo se empieza a detectar los principales problemas tales como la dificultad
de responder a los requerimientos cambiantes del cliente.
3.2 Metodologías de desarrollo ágil
Hoy en día, el mundo empresarial opera en un entorno global que cambia rápidamente; por
ende, se debe responder a las nuevas necesidades y oportunidades del mercado, teniendo
en cuenta que el software es partícipe de casi todas las operaciones empresariales, se debe
desarrollar soluciones informáticas de manera ágil para poder dar una respuesta de calidad
a todo lo necesario. (Rivas et al., 2015)
Las metodologías ágiles presentan como principal particularidad la flexibilidad, los proyectos
en desarrollo son subdivididos en proyectos más pequeños, incluye una comunicación
constante con el usuario, son altamente colaborativos y es mucho más adaptable a los
cambios. De hecho, el cambio de requerimientos por parte del cliente es una característica
especial, así como también las entregas, revisión y retroalimentación constante. (Cadavid,
Fernández Martínez, & Morales Vélez, 2013)
Entre las más notables metodologías de desarrollo ágil, se encuentran:
Scrum (Muy popular en emprendimientos)
Programación extrema (XP)
Crystal Clear
Mobile-D (ágil y extrema para móviles)
116
Adaptive Software Development (ASD)
Lean Development
Entre las más populares actualmente se encuentran Scrum y XP, las cuales se detallas a
continuación:
3.3 Metodología Scrum
Scrum no corresponde a ningún acrónimo, su nombre proviene del deporte rugby, que es
una formación requerida para la recuperación rápida del juego ante una infracción
menor.(Cadavid et al., 2013)
Scrum es un marco de trabajo diseñado de tal forma que logra la colaboración eficaz del
equipo de trabajo, emplea un conjunto de reglas y se definen roles para generar una
estructura de correcto funcionamiento.
Scrum define tres roles, los cuales son: El Scrum master, el dueño del producto o Product
owner y el equipo de desarrollo o team. El scrum master es la persona que lidera el equipo
asegurándose que el equipo cumpla las reglas y procesos de la metodología. El dueño del
producto es el representante de los accionistas y clientes que usan el software. El equipo de
desarrollo es el grupo de profesionales encargados de convertir la lista de requerimientos o
también llamado Product Backlog en funcionalidades del software (Cadavid et al., 2013)
Scrum utiliza un elemento representativo llamado Sprint (figura 2) que corresponde a una
etapa de trabajo donde se crea una versión utilizable del producto. Cada sprint es
Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de software
considerado como un proyecto individual. Un Sprint está compuesto por los siguientes
elementos: reunión de planeación del Sprint, Daily Scrum o reunión diaria, trabajo de
desarrollo, revisión y retrospectiva del Sprint.
Figura 2. Fases del Sprint.
Fuente: Tomado de (Cohn, 2004)
3.4 Metodología XP
La metodología extreme programming o XP, es la metodología ágil más conocida (Sato, Bassi,
Bravo, Goldman, & Kon, 2006). Fue desarrollada por Kent Beck en la búsqueda por guiar
equipos de trabajo pequeños o medianos, entre dos y diez programadores, en ambientes de
requerimientos imprecisos o cambiantes
La principal particularidad de esta metodología son las historias de usuario, las cuales
corresponden a una técnica de especificación de requisitos; se trata de formatos en los cuales
el cliente describe las características y funcionalidades que el sistema debe poseer.(Beck,
1991)
En esta metodología se realiza el proceso denominado Planning game, que define la fecha de
cumplimiento y el alcance de una entrega funcional, el cliente define las historias de usuario
y el desarrollador con base en ellas establece las características de la entrega, costos de
implementación y número de interacciones para terminarla. Para cada iteración el cliente
117
Espirales revista multidisciplinaria de investigación
ISSN: 2550-6862
estipula cuales son las historias de usuario que componen una entrega funcional.(Cadavid et
al., 2013)
Se realizan entregas pequeñas que son el uso de ciclos cortos de desarrollo, llamado
iteraciones, que muestra al cliente una funcionalidad del software terminado y se obtiene
una retroalimentación de él.
Algo muy característico de esta metodología es la programación en parejas, indica que cada
funcionalidad debe de ser desarrollada por dos programadores, las parejas deben cambiar
con cierta frecuencia, para que el conocimiento no sea solo de una persona sino de todo el
equipo. (Cadavid et al., 2013)
Para terminar con lo relevante de esta metodología, se presenta una etapa muy importante
las cuales son las pruebas de aceptación, una vez que se ha desarrollado una funcionalidad,
entra a pruebas por parte del cliente, dando su aprobación.
3.5 Metodologías tradicionales versus metodologías ágiles
Las metodologías de desarrollo tradicionales imponen una disciplina de trabajo
fundamentada en la documentación sobre el proceso de desarrollo de software, se realiza
un hincapié en la planificación global y total de todo el trabajo a realizar, y una vez que esté
detallado, comienza el ciclo de desarrollo de software; caso contrario a lo que respecta a las
metodologías de desarrollo ágiles que muchas veces obvia la documentación y se centra en
el trabajo, busca el equilibrio entre proceso/esfuerzo. (Cáceres, Marcos, & Kybele, 2001)
La tabla 1 muestra los aspectos relevantes entre las metodologías de desarrollo tradicionales
y las metodologías ágiles.
Tabla 1. Metodologías tradicionales vs metodologías ágiles.
Metodologías Tradicionales Metodologías Ágiles
Predictivos Adaptativos
Orientado a procesos Orientado a personas
Proceso rígido Proceso flexible
Se concibe como un proyecto Un proyecto es subdividido en varios
proyectos más pequeños.
Poca comunicación con el cliente Comunicación constante con el cliente.
Entrega de software al finalizar el desarrollo Entregas constantes de software
Documentación extensa Poca documentación
Fuente: Tomada de (Cadavid et al., 2013)
De igual manera otros autores concuerdan y agregan más diferencias en esta comparación,
como se puede apreciar en la tabla 2.
118
Tabla 2. Comparación de metodologías
Metodologías Ágiles Metodologías Tradicionales
Se basan en heurísticas provenientes de Se basan en normas provenientes de
prácticas de producción de código estándares seguidos por el entorno de
desarrollo
Preparados para cambios durante el Cierta resistencia a los cambios
proyecto
Impuestas internamente por el equipo Impuestas externamente
Proceso menos controlado, con pocos Proceso muy controlado, numerosas
principios normas
Contrato flexible e incluso inexistente Contrato prefijado
El cliente es parte del desarrollo Cliente interactúa con el equipo de
desarrollo mediante reuniones
Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de software
Grupos pequeños (<10) Grupos grandes
Pocos artefactos Más artefactos
Menor énfasis en la arquitectura del La arquitectura del software es esencial
software
Fuente: Tomada de (Canós, Letelier, & Penadés, 2014)
119
Espirales revista multidisciplinaria de investigación
ISSN: 2550-6862
4. Conclusiones
Se puede determinar que no existe una metodología universal para hacer frente a cualquier
proyecto de desarrollo de software; toda metodología debe aplicada de acuerdo con el
contexto tales como recurso humano, documentación necesaria, tiempo, disponibilidad del
usuario.
Todas las metodologías tienen ventajas que se pueden aprovechar, así como también tienen
desventajas, lo importante es saber escoger una metodología apropiada en el desarrollo de
software.
Las metodologías de desarrollo ágil van destinadas para equipos de trabajo donde sus
integrantes sean menor a diez.
Para usar una metodología de desarrollo ágil es necesario la disponibilidad del cliente, ya que
se necesita su la retroalimentación de manera continua.
Las metodologías tradicionales presentan cierta resistencia a los cambios.
Muy independiente de la metodología que se emplee, hay que tener en cuenta que el
producto final de un desarrollo debe de ser un software de calidad.
120
Referencias bibliográficas
Beck, K. (1991). Extreme Programming Explained (2da ed.). Retrieved from
[Link]
[Link]
Cáceres, P., Marcos, E., & Kybele, G. (2001). Procesos ágiles para el desarrollo de aplicaciones
Web. Taller de Web Engineering de Las Jornadas de Ingeniería Del Software Y Bases de
Datos. Retrieved from [Link]
Cadavid, A. N., Fernández Martínez, J. D., & Morales Vélez, J. (2013). Revisión de
metodologías ágiles para el desarrollo de software. Retrieved from
[Link]
men-11-no-2/4_articulo_vol_11_2.pdf
Canós, J., Letelier, P., & Penadés, M. C. (n.d.). Metodologías Ágiles en el Desarrollo de
Software. Universidad Politécnica de Valencia. Retrieved from
[Link]
Cohn, M. (2004). User stories applied : for agile software development. Addison-Wesley.
Egas, L., & Játiva, J. (2008). Evolución de las Metodologías de Desarrollo de la Ingeniería de
Software en el Proceso la Ingeniería de Sistemas Software,
Creación:2008;Recuperado:9 mayo 2015. Retrieved from
[Link]
Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de software
Pressman, R. S. (2013). Ingeniería de Software un enfoque práctico. Journal of Chemical
Information and Modeling (7ma ed., Vol. 53). Mc Graw Hill.
[Link]
Rivas, C. I., Corona, V. P., Gutiérrez José Fructuoso, & Henandez Lizeth. (2015). Metodologías
actuales de desarrollo de software. Artículo Revista Tecnología E Innovación Diciembre,
2(5), 980–986. Retrieved from
[Link]
5/Tecnologia_e_Innovacion_Vol2_Num5_6.pdf
Sato, D., Bassi, D., Bravo, M., Goldman, A., & Kon, F. (2006). Experiences tracking agile
projects: an empirical study. Journal of the Brazilian Computer Society, 12(3), 45–64.
[Link]
121
View publication stats