Agil vs Waterfall - Desarrollo de Software

Agil vs Waterfall - Desarrollo de Software

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.

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.
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 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)

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)
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 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.

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 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.

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 normas
principios

Contrato flexible e incluso inexistente Contrato prefijado
El cliente es parte del desarrollo Cliente interactúa con el equipo de
desarrollo mediante reuniones

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) 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 elcontexto 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.
Fuente: “Metodologías ágiles frente a las tradicionales en el proceso de desarrollo de software” Bryan Molina Montero ISSN: 2550-6862

31 Reviews

  1. Spot on with this write-up, I seriously think this amazing site needs
    a great deal more attention. I’ll probably be back again to read more, thanks for the info!

  2. Wow, fantastic blog format! How long have you been blogging
    for? you made running a blog glance easy. The full
    look of your site is wonderful, let alone the content!

  3. It’s perfect time to make some plans for the future and
    it is time to be happy. I have read this post and if I could I want to
    suggest you few interesting things or suggestions. Perhaps you can write next articles referring to
    this article. I desire to read more things about
    it!

  4. Excellent post however , I was wanting to know if you could
    write a litte more on this topic? I’d be very grateful if you could elaborate a little bit more.

    Thanks!

  5. Thank you a lot for sharing this with all folks you actually realize what you’re talking about!

    Bookmarked. Kindly also talk over with my website =). We may have a hyperlink trade arrangement
    between us

  6. Hey! This is kind of off topic but I need some guidance from an established blog.
    Is it difficult to set up your own blog? I’m not very techincal
    but I can figure things out pretty fast. I’m thinking about
    setting up my own but I’m not sure where to start.
    Do you have any ideas or suggestions? Thanks
    Click: https://www.flickr.com/people/187300497@N04/

  7. whoah this weblog is excellent i really like studying your posts.
    Stay up the great work! You know, lots of people
    are searching round for this information, you could aid them greatly.

  8. Hey I am so delighted I found your blog, I really found you by error,
    while I was browsing on Askjeeve for something else,
    Regardless I am here now and would just like to say cheers for
    a remarkable post and a all round interesting blog (I also love the theme/design), I don’t have time to read through it all at
    the minute but I have book-marked it and also added in your
    RSS feeds, so when I have time I will be back to read more, Please do keep
    up the great b.
    https://vbscan.fisica.unimib.it/snippets/1349

  9. Hi, this is Leonrad.

    Today I have good news for you, witch you can get $30 free bonus in a minute.

    All you have to do is to register Vera & John online casino link below and that’s it.
    You can register by free e-mail and no need kyc.

    Registration form
    https://www3.samuraiclick.com/go?m=28940&c=34&b=926&l=1

    After you get your free bonus, play casino and make money!
    Many people sent me thanks mail because they won more than $2,000-$10,000
    by trusting me.

    Don’t miss this chance and don’t for get that your chance is just infront of you.
    Get free bonus and win your life!

    You can with draw your prize by Bitcoin, so If you need best crypto debit card, try Hcard.
    https://bit.ly/31zTBD0

    It is Mastercard brand and you can exchange your crypto by Apps.
    Hcard cost you $350 + shipping, but it will definitely worth.

    This is how rich people always get their profits.
    So, if you wanna win your life for free, do not miss your last chance.

    Thank you
    Leonrad Garcia.

  10. Propecia Billig RicyNomi [url=https://acialisd.com/#]Cialis[/url] unmaks viagra contra cialis slotly Cialis claimi Propecia Trama

  11. Are you struggling to optimize your website content?
    Wednesday at 12 PM (Pacific Time) I will teach you how to ensure you have SEO friendly content with high search volume keywords.
    Learn tips, tricks, and tools that work in 2020 that the Google algorithm loves.
    Signup here to get the webinar link https://www.eventbrite.com/e/113229598778

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *