Antes de entrar en materia es necesario saber qué son las metodologías de desarrollo de software, las cuales se definen como un conjunto de técnicas y métodos organizativos, los cuales se utilizan para diseñar soluciones de software informático.
Estas metodologías de desarrollo de software tienen como objetivo organizar los equipos de trabajo para que estos desarrollen y amplíen las funciones de un programa de manera óptima.
Estas metodologías han venido sufriendo cambios a lo largo del tiempo, pasando de ser un mero trámite de organización, a ser la base primordial para desarrollar software de una manera productiva y eficaz.
Las metodologías de desarrollo de software se dividen en dos grandes grupos, las tradicionales (Waterfall o Cascada, Incremental, Evolutivo Espiral, Prototipos y desarrollo Rápido de aplicaciones) y las ágiles (Kanban, Scrum, Lean y la Programación extrema (XP)
Metodología tradicional
Las metodologías tradicionales o rígidas en el desarrollo del software, son aquellas que establecen una disciplina de trabajo sobre el proceso de desarrollo del software, con el propósito de alcanzar un software más eficiente.
Se caracterizan por definir y establecer total y rígidamente todos y cada uno de los requisitos al inicio de los proyectos de ingeniería de software. Estas metodologías son poco flexibles y no permiten realizar cambios.
El método tradicional funciona aplicando un enfoque lineal donde las etapas del transcurso de desarrollo del software deben complementarse secuencialmente. Es decir, una etapa debe completarse antes de que comience la siguiente, dichas etapas reúnen la recopilación de requisitos y documentación.
Tipos de metodología clásicas
Las metodologías de desarrollo de software se caracterizan por definir total y rígidamente los requisitos al comienzo de los proyectos de ingeniería de software. Los ciclos de desarrollo son poco flexibles y no permiten realizar cambios, al contrario que las metodologías ágiles; lo que ha propiciado el incremento en el uso de las segundas.
En Cascada
El nombre de cascada de esta metodología se deriva de cómo se organizan las etapas (de arriba a abajo), desarrollando las funciones en etapas diferenciadas y en estricto orden. En esta metodología se debe revisar el producto antes de cada etapa para ver si está listo para pasar a la siguiente fase.
En el modelo en cascada las actividades el desarrollo fundamental de este modelo se derivan en las siguientes etapas: Análisis y definición de requerimientos, Diseño del sistema hardware, Implementación y prueba de unidades, Integración y prueba del sistema, Funcionamiento y mantenimiento.
Las ventajas del modelo en cascada son que la documentación se produce en cada fase y este cuadra con otros modelos del proceso de ingeniería. La principal desventaja es su inflexibilidad en dividir el proyecto en distintas etapas.
Incremental
En esta metodología de desarrollo de software se va elaborando el producto final de manera progresiva. En cada etapa se añade una nueva funcionalidad, con la finalidad de ver resultados de una forma más rápida en comparación con el modelo en cascada.
Una de las características de este modelo de desarrollo es que el software se puede empezar a utilizar incluso antes de que se complete totalmente y, en general, es mucho más flexible que las demás metodologías.
En otras palabras el modelo de desarrollo incremental es la duración de vida de desarrollo software, el mismo descompone un proyecto en una serie de incrementos, los cuales suministran una porción de la funcionalidad respecto de la totalidad de los requisitos del proyecto. Los requisitos tienen asignada una prioridad y son entregados según el orden de prioridad en el incremento correspondiente.
Prototipo
La metodología de desarrollo de software prototipo, se fundamenta en la elaboración de un prototipo que se construye rápidamente, para que el cliente o usuario lo pruebe y proporcione su feedback, lo que permite detectar y arreglar lo que está mal, e introducir requerimientos que puedan presentarse, este modelo se fundamenta en el método de ensayo y error para entender las especificidades del producto.
Espiral
El nombre de esta metodología se debe a su funcionamiento, ya que las etapas se procesan en forma de espiral. Cuanto más cerca del centro se está, más avanzado está el proyecto.
Esta metodología se caracteriza por combinar dos modelos, el incremental y el prototipo, que agrega la idea de análisis de riesgo. La misma se divide en cuatro etapas: planificación, análisis de riesgo, desarrollo de prototipo y evaluación del cliente.
Otra característica del desarrollo en espiral es la minimización de los riesgos en el desarrollo de software. Estos riesgos se enfrentan al enfoque incremental, realizando primero prototipos, que luego pasan por las fases de desarrollo de software.
El desarrollo o modelo en espiral es un enfoque de desarrollo de software que puede ser considerado como una respuesta a los inconvenientes del desarrollo en cascada. El modelo en espiral explica las etapas de vida de un software por medio de espirales, que se repiten hasta entregar el producto terminado.
El desarrollo en espiral es universal y se combina con otros métodos de desarrollo clásicos y ágiles, es por ello que también se le llama modelo o desarrollo de segundo orden.
Desarrollo Rápido de aplicaciones
En español Modelo de Desarrollo Rápido de Aplicaciones (DRAI), y por sus siglas en inglés RAD, (Rapid Application Development) y es un procedimiento ágil de desarrollo de software, el cual da prioridad a las entregas y repeticiones rápidas de prototipos. Cabe destacar que las repeticiones rápidas reducen el periodo de desarrollo y agilizan la entrega.
Este modelo se caracteriza por sus equipos compuestos por alrededor de seis personas, incluyendo desarrolladores y usuarios de tiempo completo del sistema así como aquellas personas involucradas con los requisitos.
Cuando se toma la decisión de adoptar la metodología DRA, se debe tener en cuenta las ventajas y desventajas de su uso y saber por qué utilizar RAD. A continuación se mencionan algunos de los beneficios principales del uso de la metodología RAD: Avances medibles, Productivos más pronto, Separación de los componentes del sistema, Comentarios constantes de los usuarios, Integración temprana de sistemas, Adaptabilidad, entre otros.