Oposiciones · Ingeniería del Software

Ciclo de Vida del Software
y Metodologías Ágiles

Temario completo para oposiciones — Scrum, modelos de ciclo de vida, artefactos y ceremonias

Índice de contenidos

  1. 1. Ingeniería del Software: concepto
  2. 2. Ciclo de vida del software (CVDS)
  3. 3. Modelos de ciclo de vida
  4. 4. Metodologías de desarrollo
  5. 5. Manifiesto Ágil
  6. 6. Scrum: marco de trabajo
  7. 7. Roles en Scrum
  8. 8. Artefactos de Scrum
  9. 9. Ceremonias / Eventos
  10. 10. Métricas y conceptos clave
  11. 11. Comparativa Ágil vs Tradicional
  12. 12. Otras metodologías ágiles

Ingeniería del Software

Definición IEEE (Std 610.12): Aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software.

La Ingeniería del Software surge en la Conferencia de la OTAN de 1968 (Garmisch, Alemania) como respuesta a la denominada "crisis del software": proyectos que se entregaban tarde, superaban el presupuesto y tenían una calidad deficiente.

Objetivos principales

🎯

Calidad

Producir software fiable, mantenible, eficiente y usable.

📅

Plazo

Entregar el producto dentro del tiempo estimado.

💰

Coste

Ajustarse al presupuesto previsto.

📋

Requisitos

Satisfacer las necesidades reales del cliente.

Características del software (diferencias con hardware)

Ciclo de Vida del Desarrollo del Software (CVDS)

CVDS (Software Development Life Cycle — SDLC): Marco que describe las fases, actividades, tareas, entregables y responsabilidades involucradas en el desarrollo, operación y mantenimiento de un sistema software. Normalizado en la ISO/IEC 12207.

El CVDS proporciona un marco común de referencia para planificar, controlar y gestionar el desarrollo de software. No es un modelo de proceso único; es el concepto que abarca todos los modelos posibles.

Fases genéricas del CVDS

1

Planificación

Definición del alcance, viabilidad técnica y económica, estimación de recursos, cronograma y análisis de riesgos. Produce el Plan de Proyecto.

2

Análisis de Requisitos

Elicitación, especificación y validación de los requisitos funcionales y no funcionales. Herramientas: entrevistas, casos de uso, ERS (IEEE 830). Produce la Especificación de Requisitos del Software (ERS/SRS).

3

Diseño

Arquitectura del sistema (diseño de alto nivel) y diseño detallado de módulos, interfaces y estructuras de datos. Uso de UML, patrones de diseño (GoF), arquitecturas (MVC, microservicios).

4

Implementación / Codificación

Traducción del diseño en código fuente. Se aplican estándares de codificación, revisiones de código, control de versiones (Git) y principios SOLID.

5

Pruebas (Testing)

Verificación y validación del software: pruebas unitarias, de integración, de sistema y de aceptación (UAT). Cobertura de código, TDD, pruebas de regresión.

6

Despliegue / Implantación

Instalación en el entorno de producción, migración de datos, formación de usuarios y puesta en marcha. Estrategias: despliegue blue-green, canary release.

7

Mantenimiento

Corrección de defectos (correctivo), adaptación a cambios del entorno (adaptativo), mejora de funcionalidades (perfectivo) y prevención de fallos futuros (preventivo). Representa hasta el 60–80 % del coste total.

Modelos de Ciclo de Vida

Modelo en Cascada (Waterfall)

Propuesto por W. Royce (1970). Las fases se ejecutan de forma secuencial y cada una debe completarse antes de iniciar la siguiente. Es el modelo clásico prescriptivo.

✔ Ventajas: Documentación exhaustiva, fácil de gestionar, adecuado para requisitos estables y bien definidos.
✖ Inconvenientes: Poca flexibilidad ante cambios, el cliente no ve el producto hasta el final, los errores se detectan tarde y resultan caros.

Modelo en V (Verificación y Validación)

Extensión del cascada donde cada fase de desarrollo tiene asociada una fase de pruebas correspondiente. Facilita la trazabilidad entre requisitos y pruebas.

Modelo Incremental

El sistema se desarrolla y entrega en incrementos funcionales sucesivos. Cada incremento añade nuevas funcionalidades sobre las anteriores. Permite entregas tempranas de valor.

Modelo en Espiral (Boehm, 1988)

Combina el modelo cascada con el prototipado. Cada ciclo (vuelta de espiral) pasa por cuatro cuadrantes:

El modelo espiral es orientado al riesgo: los riesgos se identifican y mitigan en cada iteración.

Prototipado

Se construye un prototipo (desechable o evolutivo) para validar requisitos antes del desarrollo completo. Útil cuando los requisitos son difusos o el interfaz de usuario es crítico.

Modelos ágiles / iterativos e incrementales

Basados en iteraciones cortas (sprints) con entregas frecuentes de software funcionando. Scrum, Kanban, XP, SAFe. Se detallan en las secciones siguientes.

Modelo Iterativo Gestión del riesgo Tipo de proyecto ideal
CascadaNoBajaRequisitos estables, contratos fijos
Modelo en VNoMedia (testing)Críticos (seguridad, defensa, médico)
IncrementalParcialMediaEntrega por fases, cliente disponible
EspiralAltaProyectos grandes con alto riesgo
Scrum / ÁgilAltaRequisitos cambiantes, innovación

Metodologías de Desarrollo

Una metodología es un conjunto de métodos, técnicas, herramientas y notaciones aplicadas al desarrollo del software de forma sistemática. Define el qué hacer, el cómo hacerlo y el cuándo hacerlo.

Clasificación

Metodologías Tradicionales (Predictivas / Plan-driven)

RUP (Rational Unified Process), MSF (Microsoft Solutions Framework), MÉTRICA v3 (España). Se basan en planificación exhaustiva y documentación rigurosa. Adecuadas cuando los requisitos son estables y el contrato es fijo.

MÉTRICA Versión 3

Metodología oficial del Ministerio de Administraciones Públicas de España (actualmente MPTFP). Basada en RUP y estándares ISO/IEC. Define tres procesos de desarrollo: ASI (Análisis del Sistema de Información), DSI (Diseño) y CSI (Construcción). Muy preguntada en oposiciones de la Administración General del Estado.

Metodologías Ágiles (Adaptativas / Value-driven)

Scrum, Extreme Programming (XP), Kanban, Crystal, DSDM, FDD. Se basan en iteraciones cortas, colaboración con el cliente y adaptación al cambio. Detalladas a partir de la sección 5.

El Manifiesto Ágil (2001)

Firmado en febrero de 2001 en Snowbird (Utah) por 17 expertos —entre ellos Kent Beck, Jeff Sutherland, Ken Schwaber y Martin Fowler—. Define 4 valores y 12 principios.

Los 4 Valores

✅ Individuos e interacciones
sobre
procesos y herramientas
✅ Software funcionando
sobre
documentación exhaustiva
✅ Colaboración con el cliente
sobre
negociación contractual
✅ Respuesta ante el cambio
sobre
seguir un plan
Aunque se valora más el lado izquierdo, los elementos del lado derecho también tienen valor. El manifiesto no los descarta.

Los 12 Principios del Manifiesto Ágil

  1. Satisfacción del cliente mediante entrega temprana y continua de software con valor.
  2. Bienvenida a los cambios de requisitos, incluso en etapas tardías del desarrollo.
  3. Entrega de software funcionando frecuentemente (semanas, no meses).
  4. Los responsables de negocio y los desarrolladores trabajan juntos diariamente.
  5. Proyectos construidos en torno a individuos motivados, con el entorno y el apoyo necesarios.
  6. La conversación cara a cara es el método más eficiente de comunicación.
  7. El software funcionando es la medida principal de progreso.
  8. Los procesos ágiles promueven el desarrollo sostenible (ritmo constante indefinidamente).
  9. La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
  10. La simplicidad —el arte de maximizar la cantidad de trabajo no realizado— es esencial.
  11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
  12. El equipo reflexiona regularmente sobre cómo ser más efectivo y ajusta su comportamiento.

Scrum: Marco de Trabajo Ágil

Scrum (término tomado del rugby) es un marco de trabajo ágil e iterativo para el desarrollo de productos complejos. Creado por Jeff Sutherland y Ken Schwaber en los años 90 y formalizado en la Scrum Guide (última edición: noviembre 2020). No es una metodología completa, sino un marco ligero que intencionalmente deja incompletos algunos pasos.

Scrum se basa en tres pilares empíricos (teoría del control de procesos empírico o empirismo):

🔍

Transparencia

Todos los aspectos significativos del proceso deben ser visibles para los responsables del resultado.

🔬

Inspección

Los artefactos y el progreso deben inspeccionarse con frecuencia para detectar variaciones indeseadas.

🔧

Adaptación

Si el proceso se desvía de los límites aceptables, debe ajustarse cuanto antes para minimizar la desviación.

Valores de Scrum

Compromiso Coraje Foco Apertura Respeto

El Scrum Team se compromete a alcanzar sus objetivos y a apoyarse mutuamente. Tiene el coraje de hacer lo correcto y trabaja en los problemas difíciles con foco en el Sprint y en los objetivos del equipo, con respeto entre sus miembros y apertura al trabajo y a los desafíos.

Flujo general de Scrum

📋
Backlog
Product Backlog
🗓️
Planificación
Sprint Planning
Sprint (1–4 semanas)
📋
Sprint
Backlog
⚙️
Daily
Scrum
Incremento
Potencialmente
Entregable
📊
Revisión
Sprint Review +
Retrospectiva

Roles en Scrum

El Scrum Team es la unidad fundamental de Scrum. Es pequeño (generalmente 10 personas o menos), auto-gestionado y multifuncional. No hay subequipos ni jerarquías. Está formado por exactamente tres roles:

🎯

Product Owner (PO)

Propietario del producto
  • Representa los intereses del cliente y stakeholders
  • Maximiza el valor del producto
  • Gestiona y prioriza el Product Backlog
  • Único responsable de ordenar el backlog
  • Acepta o rechaza el trabajo completado
  • Puede ser una persona, no un comité
  • Sus decisiones son respetadas por la organización
🛡️

Scrum Master (SM)

Facilitador del proceso
  • Responsable de la correcta aplicación de Scrum
  • Elimina impedimentos que bloquean al equipo
  • Servant leader (líder servidor) del Scrum Team
  • Facilita los eventos de Scrum
  • Protege al equipo de interferencias externas
  • Ayuda al PO a gestionar el Product Backlog
  • Promueve la mejora continua
💻

Developers (Equipo de Desarrollo)

Equipo técnico
  • Crean cualquier aspecto del Incremento usable
  • Auto-organizados: deciden cómo hacer el trabajo
  • Multifuncionales: poseen todas las habilidades necesarias
  • Responsables colectivamente del Sprint Backlog
  • Adaptan el plan en el Daily Scrum
  • Definen la Definición de Hecho (DoD)
  • Sin títulos jerárquicos dentro del equipo
⚠️ Desde la Scrum Guide 2020, el rol "Development Team" se renombra simplemente a "Developers" y el Scrum Master puede ser parte del equipo de Developers. Ya no se distingue "Scrum Team" de "Development Team"; todo es el Scrum Team.

Artefactos de Scrum

Los artefactos representan trabajo o valor y están diseñados para maximizar la transparencia de la información clave. Cada artefacto contiene un compromiso para garantizar que aporta información que mejora la transparencia y el foco.

1. Product Backlog

Compromiso asociado: Product Goal (Objetivo del Producto)

Lista ordenada de todo lo necesario para mejorar el producto. Es la única fuente de trabajo del Scrum Team. El PO es el único responsable de su contenido, disponibilidad y ordenación.

2. Sprint Backlog

Compromiso asociado: Sprint Goal (Objetivo del Sprint)

Compuesto por: el Sprint Goal, los PBIs seleccionados para el Sprint y el plan para entregar el Incremento. Es propiedad de los Developers y se actualiza a lo largo del Sprint.

3. Incremento

Compromiso asociado: Definición de Hecho (DoD — Definition of Done)

Un Incremento es un paso concreto hacia el Product Goal. Cada Incremento se suma a todos los anteriores y es exhaustivamente verificado, asegurando que todos funcionan conjuntamente. Debe ser potencialmente entregable (usable) al final del Sprint.

Historias de Usuario (User Stories)

Formato estándar de descripción de PBIs desde la perspectiva del usuario:

Como [tipo de usuario],
quiero [funcionalidad],
para [beneficio/valor].

Criterios de calidad de una historia: INVEST (Independent, Negotiable, Valuable, Estimable, Small, Testable).

Cada historia de usuario incluye criterios de aceptación que definen cuándo se considera completada.

Ceremonias / Eventos de Scrum

Scrum define 5 eventos formales. Todos tienen una duración máxima fija (time-box) para crear regularidad y minimizar la necesidad de reuniones no definidas en Scrum.

El Sprint

El Sprint es el corazón de Scrum. Es un contenedor de los demás eventos. Duración fija de 1 a 4 semanas (máximo un mes). Un nuevo Sprint comienza inmediatamente después de concluir el anterior. Durante el Sprint no se realizan cambios que pongan en peligro el Sprint Goal.
Día 1
Sprint Planning
Planificación del Sprint. Máx. 8 h (sprint de 1 mes).
Días 2–N
Daily Scrum
Reunión diaria de 15 min. Inspección y adaptación del Sprint Backlog.
Día N
Sprint Review
Revisión del Incremento con stakeholders. Máx. 4 h.
Día N
Retrospectiva
Mejora del proceso del equipo. Máx. 3 h. El último evento del Sprint.

1. Sprint Planning — Planificación del Sprint

Time-box: máx. 8 horas para un Sprint de un mes (proporcional).

Responde a tres preguntas:

2. Daily Scrum — Reunión diaria

Time-box: 15 minutos. Mismo lugar y hora cada día. Solo para los Developers.

Su propósito es inspeccionar el progreso hacia el Sprint Goal y adaptar el Sprint Backlog. El Scrum Guide 2020 ya no obliga a las tres preguntas clásicas (qué hice ayer, qué haré hoy, qué impedimentos tengo), dejando libertad de estructura al equipo.

3. Sprint Review — Revisión del Sprint

Time-box: máx. 4 horas para un Sprint de un mes.

El Scrum Team presenta el resultado de su trabajo a los stakeholders y se discute el progreso hacia el Product Goal. No es solo una demo: es una sesión de trabajo donde se revisa y actualiza el Product Backlog.

4. Sprint Retrospective — Retrospectiva del Sprint

Time-box: máx. 3 horas para un Sprint de un mes. Es el último evento del Sprint.

El equipo reflexiona sobre cómo mejorar su eficacia: personas, interacciones, procesos, herramientas y DoD. Se identifican al menos una mejora de alta prioridad para incorporar en el siguiente Sprint. Promueve la kaizen (mejora continua).

5. Refinamiento del Product Backlog (no es evento oficial)

Aunque no es un evento formal de Scrum, es una actividad recurrente donde se divide y ordena el backlog, añadiendo más detalles. No debería consumir más del 10 % de la capacidad del equipo.

EventoDuración máx. (1 mes)Quién participaArtefacto que inspecciona
Sprint Planning8 horasTodo el Scrum TeamProduct Backlog → Sprint Backlog
Daily Scrum15 minutosDevelopers (SM opcional)Sprint Backlog
Sprint Review4 horasScrum Team + StakeholdersIncremento → Product Backlog
Retrospectiva3 horasScrum TeamPlan de mejora
Sprint (contenedor)≤ 4 semanasScrum TeamTodos los artefactos

Métricas y Conceptos Clave

Velocity (Velocidad)

Cantidad media de Story Points completados por el equipo en cada Sprint. Usada para planificar sprints futuros. No es una métrica de rendimiento individual ni de productividad.

Burndown Chart

Gráfico que muestra el trabajo restante en el Sprint Backlog (eje Y) en función del tiempo transcurrido del Sprint (eje X). Permite visualizar si el equipo va a completar el trabajo en plazo.

Burnup Chart

Similar al Burndown pero muestra el trabajo completado (eje Y) vs. tiempo. Más útil para visualizar el alcance total y los cambios en el backlog.

Cumulative Flow Diagram (CFD)

Muestra el número de elementos en cada estado del flujo de trabajo a lo largo del tiempo. Permite detectar cuellos de botella.

WIP (Work In Progress)

Número de elementos en proceso simultáneamente. Limitar el WIP mejora el flujo y reduce el tiempo de ciclo (principio de Kanban también aplicable en Scrum).

Lead Time vs. Cycle Time

Definición de Ready (DoR)

Criterios que debe cumplir un PBI para poder ser seleccionado en un Sprint Planning: suficientemente entendido, estimado, priorizado y sin dependencias bloqueantes.

Deuda Técnica (Technical Debt)

Consecuencias de decisiones de diseño o implementación rápidas que sacrifican calidad para ganar velocidad a corto plazo. Si no se gestiona, ralentiza el desarrollo futuro. Debe hacerse visible en el Product Backlog.

Spike

Historia de usuario técnica o de investigación cuyo objetivo es adquirir conocimiento para reducir la incertidumbre. Su resultado es información, no software entregable.

Épica (Epic)

Historia de usuario de gran tamaño que no cabe en un Sprint y debe descomponerse en historias más pequeñas antes de ser implementada.

Comparativa: Metodologías Ágiles vs. Tradicionales

🏛 Metodología Tradicional (Cascada/RUP)

  • Requisitos fijos al inicio
  • Entrega única al final del proyecto
  • Documentación exhaustiva
  • Contrato rígido (precio fijo)
  • El cliente interviene al inicio y al final
  • Roles especializados y separados
  • Planificación detallada por adelantado
  • Cambios = costoso proceso de control
  • El plan guía el proyecto
  • Adecuada para proyectos estables y predecibles

🚀 Metodología Ágil (Scrum/XP)

  • Requisitos emergentes y cambiantes
  • Entregas incrementales y frecuentes
  • Documentación suficiente y útil
  • Contrato flexible (Time & Material)
  • El cliente colabora continuamente
  • Equipos multifuncionales y auto-organizados
  • Planificación adaptativa y continua
  • El cambio es bienvenido en cualquier momento
  • El software funcionando guía el proyecto
  • Adecuada para entornos complejos e inciertos

Framework Cynefin (contexto de aplicación)

Propuesto por Dave Snowden, ayuda a elegir el enfoque de gestión según el tipo de problema:

Scrum está diseñado para dominios complejos, donde el conocimiento se va descubriendo iterativamente.

Otras Metodologías Ágiles

Extreme Programming (XP)

Creada por Kent Beck (1999). Orientada a la excelencia técnica y la calidad del código. Prácticas clave:

Kanban

Método de gestión del flujo de trabajo originado en Toyota (producción lean). Visualiza el trabajo en un tablero con columnas (Pendiente / En Progreso / Hecho). Principios fundamentales:

A diferencia de Scrum, Kanban no tiene roles, sprints ni backlog obligatorio. Es más adecuado para equipos de mantenimiento o soporte.

SAFe (Scaled Agile Framework)

Marco para escalar Scrum y otras prácticas ágiles en organizaciones grandes. Define niveles: Team, Program, Large Solution y Portfolio. Introduce conceptos como el PI Planning (Program Increment Planning), los Agile Release Trains (ART) y los Big Room Planning.

LeSS (Large-Scale Scrum)

Escala Scrum con la mínima complejidad adicional. Un único Product Backlog y un único Product Owner para múltiples equipos Scrum (hasta 8 en LeSS; más de 8 en LeSS Huge).

Crystal

Familia de metodologías de Alistair Cockburn, clasificadas por color según el tamaño del equipo y criticidad: Crystal Clear (≤8 personas), Crystal Yellow, Crystal Orange, Crystal Red.

DSDM (Dynamic Systems Development Method)

Marco ágil con mayor énfasis en la gobernanza. Fija el tiempo y el coste y varía el alcance (Timeboxing). Muy usado en el sector público del Reino Unido.

MetodologíaFoco principalRoles definidosIteraciones
ScrumGestión del productoPO, SM, DevelopersSprints (1–4 sem.)
XPCalidad técnicaCoach, Cliente, ProgramadoresSemanas
KanbanFlujo continuoNinguno (opcional)No (flujo continuo)
SAFeEscalado empresarialRTE, PO, SM, SA, PM...PI (8–12 semanas)
Crystal ClearComunicación y entregaLead Designer, UsuarioSemanas a meses

DevOps y CI/CD

Aunque no es una metodología ágil en sí misma, DevOps es la cultura y conjunto de prácticas que une desarrollo (Dev) y operaciones (Ops) para acortar el ciclo de vida del software y entregar con alta calidad: