Elaborado por: German Tejada
Introducción
La metodología de desarrollo de software se describe como el conjunto de herramientas, técnicas, procedimientos y soporte documental para el diseño de sistemas, por lo que se considera como una tarea la cual se debe ejecutar en una serie de fases o etapas para obtener un programa que funcione de acuerdo a métodos establecidos en disciplinas de la ingeniería.
Hoy en día hay muchas metodologías que han surgido, las más nuevas como scrum o programación extrema que son metodologías ágiles, que consisten en periodos cortos de desarrollo constantes y una alta participación del cliente y también están las metodologías tradicionales como la metodología en cascada y kanban, las cuales consisten en un proceso lineal, no un ciclo como lo son las ágiles, además de que en las tradicionales no hay tanta participación del cliente.
En este escrito se hablará de lo que son las metodologías de desarrollo, su clasificación, algunos ejemplos y sus pasos o fases para aplicarlas.
Metodologías y gestión de proyectos en el desarrollo de software
La metodología, hace referencia al conjunto de procedimientos racionales utilizados para alcanzar el objetivo o la gama de objetivos que rige una investigación científica, una exposición doctrinal o tareas que requieran habilidades, conocimientos o cuidados específicos. Desarrollo de Software significa construir programas; es el conjunto de procedimientos, técnicas y soporte documental utilizados para el diseño de sistemas de información. La metodología de desarrollo de software, en ingeniería de software, es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información.
Tipos de Metodologías de Desarrollo de Software
En la actualidad se pueden diferenciar dos tipos de metodologías de desarrollo de software: Metodologías Ágiles y Metodologías Tradicionales.
Metodologías de desarrollo de software tradicionales
Las metodologías de desarrollo de software tradicionales se caracterizan por definir total y rígidamente los requisitos al inicio 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. La organización del trabajo en esta metodología es lineal, es decir, las etapas suceden una tras otra y no se puede empezar la siguiente sin terminar la anterior. Tampoco se puede volver hacia atrás una vez se ha cambiado de etapa. Las principales metodologías tradicionales son:
Waterfall (cascada):
Metodología donde las etapas se organizan de arriba a abajo, de ahí el nombre. Se desarrollan diferentes funciones en etapas diferenciadas y obedeciendo un riguroso orden. Antes de cada etapa se debe revisar el producto para ver si está listo para pasar a la siguiente fase.
Fases Cascada:
Requisitos del Software: es donde hacemos un análisis de las necesidades del cliente para determinar las características del software a desarrollar.
Diseño: es donde describimos la estructura interna del software y las relaciones entre las entidades que lo componen. Esta etapa organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo.
Implementación: fase donde se programan los requisitos especificados haciendo uso de las estructuras de datos diseñadas en la fase anterior.
Verificación: esta fase entra en acción cuando se termina la fase de implementación ya que esta fase verifica que todos los componentes del sistema funcionen correctamente de acuerdo a los requisitos especificados en la primera fase.
Instalación y Mantenimiento: fase donde instalamos la aplicación en el sistema y comprobamos que funcione correctamente en el entorno donde será utilizada. Es entonces cuando la entregamos al cliente y el mantenimiento consiste en modificar el producto después de entregarlo para corregir errores o mejorar el rendimiento.
Prototipado:
se basa en la construcción de un prototipo de software que se construye rápidamente para que los usuarios puedan probarlo y aportar feedback. Es un modelo iterativo que se basa en el método de prueba y error para comprender las especificidades del producto.
Etapas:
· Recolección y refinamiento de requisitos
· Modelado, diseño rápido
· Construcción del Prototipo
· Desarrollo, evaluación del prototipo por el cliente
· Refinamiento del prototipo
· Producto de Ingeniería
Espiral:
Es una combinación de los dos modelos anteriores, que añade el concepto de análisis de riesgo. Se divide en cuatro etapas: planificación, análisis de riesgo, desarrollo de prototipo y evaluación del cliente. Funciona de tal forma en que se van procesando las etapas en forma de espiral. Cuanto más cerca del centro se está, más avanzado está el proyecto.
Ciclos del Espiral:
Objetivo y determinación alternativa: se determinan objetivos conjuntamente con el cliente, al igual que posibles alternativas y se especifican las condiciones marco (por ejemplo, sistemas operativos, entornos y lenguajes de programación).
Análisis y evaluación de riesgos: se identifican y evalúan los riesgos potenciales y las alternativas existentes. Los riesgos son registrados, evaluados y luego reducidos utilizando prototipos, simulaciones y softwares de análisis.
Desarrollo y prueba: los prototipos se amplían y se añaden funcionalidades. El código real es escrito, probado y migrado a un entorno de prueba varias veces hasta que el software pueda ser implementado en un entorno productivo.
Planificación del siguiente ciclo: el siguiente ciclo se planifica al final de cada etapa. Si se producen errores, se buscan soluciones, y si una alternativa es una mejor solución, se prefiere en el siguiente ciclo.
Metodologías de desarrollo de software ágiles
Agile es un proceso que ayuda a los equipos a proporcionar respuestas rápidas a los cambios que se reciben sobre su proyecto. ¿Esto qué significa? Pues que crea oportunidades para evaluar la dirección de un proyecto durante el ciclo de desarrollo del mismo. Los equipos evalúan el proyecto en reuniones regulares llamadas sprints o iteraciones.
Son las metodologías de desarrollo de software más utilizadas hoy en día debido a su alta flexibilidad y agilidad. Los equipos de trabajo que las utilizan son mucho más productivos y eficientes, ya que saben lo que tienen que hacer en cada momento. Además, la metodología permite adaptar el software a las necesidades que van surgiendo por el camino, lo que facilita construir aplicaciones más funcionales. Las metodologías ágiles se basan en la metodología incremental, en la que en cada ciclo de desarrollo se van agregando nuevas funcionalidades a la aplicación final. Sin embargo, los ciclos son mucho más cortos y rápidos, por lo que se van agregando pequeñas funcionalidades en lugar de grandes cambios.
Este tipo de metodologías permite construir equipos de trabajo autosuficientes e independientes que se reúnen cada poco tiempo para poner en común las novedades. Poco a poco, se va construyendo y puliendo el producto final, a la vez que el cliente puede ir aportando nuevos requerimientos o correcciones, ya que puede comprobar cómo avanza el proyecto en tiempo real.
Manifiesto por el desarrollo ágil del software
Es un documento redactado en 2001 por diecisiete expertos en programación que supuso un cambio radical en la forma de desarrollar software. Frente a los modelos tradicionales excesivamente rígidos y alejados de las necesidades de los clientes. Este manifiesto consta de doce principios del software Ágil, los cuales son:
- Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
- Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
- Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
- Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
- Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.
- El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
- El software funcionando es la medida principal de progreso.
- Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
- La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
- La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
- Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
- A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.
Las principales metodologías ágiles son:
Scrum:
La metodología Scrum es un marco de trabajo o framework que se utiliza dentro de equipos que manejan proyectos complejos. Es decir, se trata de una metodología de trabajo ágil que tiene como finalidad la entrega de valor en períodos cortos de tiempo y para ello se basa en tres pilares: la transparencia, inspección y adaptación.
En esta metodología existen tres roles:
1. Product Owner: persona que tiene asignado el proyecto, es básicamente el responsable (el que da la cara) del mismo. Se encarga de maximizar el valor del trabajo del equipo de desarrollo.
2. Scrum Master: es el manager de Scrum, pero en ningún momento se le puede considerar un jefe. Líder servil que se encarga de eliminar impedimentos o inconvenientes que tenga el equipo dentro de un sprint.
3. Development Team Member: Son los encargados de realizar las tareas priorizadas por el Product Owner. Es un equipo multifuncional y auto-organizado. Son los únicos que estiman las tareas del product backlog, sin dejarse influenciar por nadie.
Kanban:
Se define comoun sistema de producción altamente efectivo y eficiente, ha contribuido a generar un panorama manufacturero óptimo y competitivo. Su objetivo es gestionar de manera general cómo se van completando las tareas. Kanban es una palabra japonesa que significa “tarjetas visuales”, donde Kan es “visual”, y Ban corresponde a “tarjeta”.
Pasos para configurar la estrategia Kanban:
1. Definir el flujo de trabajo: crear un tablero accesible para todos los miembros del equipo donde cada columna indica el estado de las tareas.
2. Visualizar las fases del ciclo de producción: dividir las tareas en pasos para agilizar el proceso de producción.
3. Stop starting, Stop finishing: esto es priorizar el trabajo que está en curso en lugar de iniciar nuevas tareas.
4. Control de Flujo: mantener a los trabajadores en un flujo de trabajo constante donde se realizan primero las tareas más importantes siguiendo una cola para no interrumpirlos en cada momento.
Programación extrema (XP):
metodología basada en las relaciones interpersonales, que se consideran la clave del éxito. Su principal objetivo es crear un buen ambiente de trabajo en equipo y que haya un feedback constante del cliente. El trabajo se basa en 12 conceptos: diseño sencillo, testing, refactorización y codificación con estándares, propiedad colectiva del código, programación en parejas, integración continua, entregas semanales e integridad con el cliente, cliente in situ, entregas frecuentes y planificación.
Ciclo de vida XP:
· Entender lo que el cliente necesita – Fase de Exploración
· Estimar el esfuerzo – Fase de Planificación
· Crear la solución – Fase de Iteraciones
· Entregar el producto final al cliente – Fase de puesta en producción
Lean:
está configurado para que pequeños equipos de desarrollo muy capacitados elaboren cualquier tarea en poco tiempo. Los activos más importantes son las personas y su compromiso, relegando así a un segundo plano el tiempo y los costes. El aprendizaje, las reacciones rápidas y potenciar el equipo son fundamentales. La idea principal de la filosofía Lean es aplicar un método sistemático consistente en eliminar los desperdicios, o lo que es lo mismo, el trabajo que no aporta valor al resultado final.
Su estrategia se fundamenta en tres bases:
· Construir sólo lo necesario.
· Eliminar todo aquello que no añade valor.
· Parar si algo no va bien.
Principios de Lean:
· Eliminar desperdicios/restos
· Amplificar el aprendizaje
· Tomar decisiones lo más tarde posible
· Entregar lo antes posible
· Potencial el equipo
· Crear integridad
· Visualizar todo el conjunto
Herramientas que ayudan a las metodologías ágiles
La gestión ágil de proyectos ha supuesto una auténtica revolución como respuesta a la gran demanda existente dentro de las organizaciones para ofrecer el mejor servicio en un tiempo récord, la aplicación de metodologías Agile o la gamificación en la empresa son algunas de las herramientas más utilizadas para satisfacer las necesidades de los consumidores. Empresas como Amazon, Spotify o Apple utilizan diversas metodologías para mantenerse en la cresta de la ola. Hay muchas herramientas que ayudan el desarrollo de estas aplicaciones, herramientas para la gestión ágil de proyectos y existen muchas maneras de apostar por ellas. La cuestión es tener ganas de cambiar las cosas para conseguir dinamizar el equipo de trabajo y rentabilizar el negocio.
Conclusiones
- Las metodologías de desarrollo son un estilo de trabajo que nos permiten organizarnos de una mejor manera, haciendo nuestro flujo de trabajo más organizado y dinámico.
- Las metodologías nos permiten obtener muchos beneficios como: reducción de costos, reducción de tiempos de entrega, capacidad de mostrar avances por el hecho de la división de las tareas hasta una relación más íntima con el cliente.
- En general, no existen metodologías “buenas” y metodologías “malas”. Cada una de ellas tiene características únicas y diferenciadas que pueden hacer que encaje mejor en un proyecto concreto o en otro. Algunas metodologías funcionarán de forma excelente en un proyecto, y sin embargo algunas podrán ser un lastre más que una ayuda para otros proyectos particulares.
- Las metodologías de desarrollo ágil buscan entregar software a medida y en el tiempo o plazo establecido sin importar que los requerimientos cambien en cualquier etapa del proyecto ya que utiliza el principio de la agilidad que es la respuesta efectiva al cambio.
Bibliografía
A. (2017, 7 septiembre). Método Kanban: principios, características y ventajas. Apiumhub. https://apiumhub.com/es/tech-blog-barcelona/metodo-kanban-ventajas/
Abellán, E. (2020, 5 marzo). Scrum: qué es y cómo funciona esta metodología. We Are Marketing. https://www.wearemarketing.com/es/blog/metodologia-scrum-que-es-y-como-funciona.html
Beck. Beedle. Van. Bennekum. Cockburn. Cunningham. Fowler. James. Grenning. Highsmith. Hunt. Jeffries. Kern. Marick. C Robert. Martin. Mellor. Schwaber. Sutherland. Thomas. (2001). Manifiesto por el desarrollo ágil del software. https://agilemanifesto.org/iso/es/manifesto.html
Cevallos, K. (2015, 31 mayo). Metodología de Desarrollo Ágil: XP y Scrum. INGENIERÍA DEL SOFTWARE. https://ingsotfwarekarlacevallos.wordpress.com/2015/05/08/metodologia-de-desarrollo-agil-xp-y-scrum/
Domínguez, P. (2020, 2 junio). En qué consiste el modelo en cascada. OpenClassrooms. https://openclassrooms.com/en/courses/4309151-gestiona-tu-proyecto-de-desarrollo/4538221-en-que-consiste-el-modelo-en-cascada
Ortiz, M. (2017, 16 junio). Modelo Incremental. Ingeniería de Software. http://isw-udistrital.blogspot.com/2012/09/ingenieria-de-software-i.html
XP – Extreme Programing Ingenieria de Software. (s. f.). Ingeniería de Software. Recuperado 24 de abril de 2021, de http://ingenieriadesoftware.mex.tl/52753_xp—extreme-programing.html