CodeGym /Blog Java /Random-ES /Metodologías de desarrollo de software
Autor
Alexey Yelenevych
Co-Founder at CodeGym

Metodologías de desarrollo de software

Publicado en el grupo Random-ES
En muchas entrevistas, probablemente le preguntarán acerca de las metodologías. Esta no es la pregunta más importante o difícil, pero sería bueno tener una hoja de trucos. En este artículo intentaremos transmitir qué es una metodología de desarrollo y compararlas. Una metodología de desarrollo de software es un proceso utilizado para desarrollar un producto en particular, es decir, es una forma de organizar el desarrollo por parte de un equipo de desarrolladores. Hay muchos modelos de desarrollo diferentes, cada uno de los cuales define su propio enfoque. No se puede decir que cualquiera de ellos deba usarse para todos los proyectos. El enfoque correcto depende completamente de la situación. Tengo la intención de considerar tres de ellos con mayor detalle.

Cascada

La metodología en cascada es una de las más antiguas e implica una implementación estrictamente secuencial: cada etapa debe completarse antes de que comience la siguiente. En otras palabras, una transición a la siguiente etapa significa que el trabajo de la etapa anterior está completo al 100%. La imagen muestra cómo funciona: primero, analizamos el problema (documentamos tareas, discutimos desafíos), luego diseñamos (la estructura del proyecto toma forma en esta etapa), y luego codificamos y probamos. No se permite volver a etapas anteriores. Este enfoque se recomienda para proyectos pequeños donde los requisitos se conocen de antemano y es poco probable que cambien. Metodologías de desarrollo de software - 2ventajas:
  • Documentación completa y consistente en cada etapa
  • Facilidad de uso
  • Requisitos estables
  • Los presupuestos y plazos están predefinidos
Desventajas:
  • Una gran cantidad de documentación.
  • no muy flexible
  • El cliente no puede ver una versión demo del producto
  • No hay opción para retroceder

Melé

Scrum es una metodología de desarrollo de software que divide todo el proceso en iteraciones. Al final de cada interacción, el equipo está listo para proporcionar una versión de demostración del producto. La imagen muestra que el equipo avanza a través de todas las etapas de desarrollo en paralelo, lo que hace posible tener una parte terminada del proyecto al final de cada iteración. Metodologías de desarrollo de software - 3Intentaré explicar brevemente la esencia de la metodología usando palabras simples, pero hay mucha terminología. Creo que lo más importante es entender la esencia. Recordarás la terminología con la experiencia. Todo el desarrollo se divide en sprints (a menudo 2-3 semanas). hay un atraso(lista de tareas) para todo el período de desarrollo y para cada sprint por separado. Cada tarea tiene su propio punto de historia (clasificación de dificultad). Cada participante en el proceso tiene un rol:
  • El equipo Scrum está formado por profesionales (desarrolladores, evaluadores, diseñadores) que trabajan en un proyecto.
  • El scrum master es la persona que se asegura de que se respeten los principios de scrum.
  • El propietario del producto es el cliente.
Esta metodología se basa en la comunicación, por lo que hay un gran número de reuniones:
  • Stand-up – Esta es una reunión breve, que se realiza todos los días, en la que participan todos los miembros del equipo. Cada participante responde 3 preguntas: ¿Qué hice? ¿Que haré? ¿Y qué problemas de bloqueo hay?
  • Reunión de planificación: esta reunión se lleva a cabo al comienzo del sprint. En esta reunión se identifican las tareas que se deben realizar en el siguiente sprint.
  • Retrospectiva: esta reunión se lleva a cabo al final del sprint y su propósito es identificar qué se hizo bien y qué se podría mejorar.
ventajas:
  • El cliente puede ver los resultados durante el proceso de desarrollo.
  • Seguimiento diario del proceso de desarrollo
  • Capacidad para hacer ajustes durante el desarrollo.
  • Comunicación establecida con todos los miembros del equipo.
  • Una pequeña cantidad de documentación.
Desventajas:
  • Difícil de evaluar la mano de obra y otros costos necesarios para el desarrollo
  • Dificultad para identificar cuellos de botella antes de que comience el desarrollo
  • La necesidad de involucrar a todos en el trabajo de otros miembros del equipo.

Kanban

Kanban es un método basado en visualizar el progreso realizado en la realización de las tareas del equipo. La idea principal es reducir la cantidad de tareas que se están realizando actualmente (en la columna "En progreso"). En scrum, el equipo se enfoca en completar con éxito los sprints. En Kanban, la tarea ocupa la posición preeminente. Esto es bueno para proyectos en la etapa de mantenimiento, donde la funcionalidad básica ya se ha implementado y quedan mejoras mínimas y corrección de errores. En Kanban, las tareas se asignan individualmente. Una tarea pasa por todas las etapas en el tablero, independientemente de otras tareas, y una vez que se completa, se puede mostrar al cliente. Un tablero Kanban consta de columnas, cada una de las cuales representa un proceso de desarrollo independiente. Algunas columnas (por ejemplo, "En progreso" ) limitan el número de tareas que pueden realizar. Esto ayuda a encontrar rápida y fácilmente áreas problemáticas en la distribución de tareas. La imagen muestra un ejemplo de tal tablero. El número de columnas y sus nombres pueden variar. Voy a presentar los más comunes: Metodologías de desarrollo de software - 4
  • Para hacer: la lista de tareas que se deben hacer
  • En curso: tareas en las que se está trabajando actualmente
  • Revisión de código: tareas que se han realizado y se han enviado para su revisión
  • En prueba: tareas listas para probar
  • Listo – Tareas terminadas
ventajas:
  • Facilidad de uso
  • Visibilidad (ayuda a localizar cuellos de botella, simplifica la comprensión)
  • Alta implicación del equipo en el propio proceso
  • Desarrollo altamente flexible
Desventajas:
  • Una lista de tareas inestable
  • Difícil de aplicar a proyectos a largo plazo.
  • Falta de plazos estrictos

Una palabra final sobre las metodologías de desarrollo de software

Las personas que ocupan o aspiran a puestos gerenciales deben comprender a fondo las metodologías de desarrollo de software, pero todos deben comprender al menos los conceptos básicos. Las metodologías son una parte integral del proceso de desarrollo y se utilizan no solo en el ámbito de TI. Gracias por tomarse el tiempo de leer mi artículo. Espero que te haya sido útil. Traté de describir solo los puntos clave de la manera más accesible y concisa posible. Como resultado, este artículo no es exhaustivo. Estaré encantado de escuchar tu opinión al respecto y responder a tus preguntas. ¡Mis mejores deseos!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION