9. Introducción al ciclo de vida del software

9.1 Introducción

El software no aparece de golpe ni termina su historia cuando se publica una primera versión. Normalmente atraviesa una serie de momentos: surge una necesidad, se analiza, se diseña una solución, se construye, se prueba, se entrega, se usa, se mantiene, evoluciona y, en algún momento, puede ser reemplazado o retirado.

A ese recorrido se lo conoce como ciclo de vida del software. Comprenderlo permite ver el desarrollo como un proceso completo, no como una actividad limitada a escribir código.

En este tema veremos una introducción general. El objetivo es entender las etapas principales y por qué cada una aporta valor. En el próximo tema compararemos modelos de proceso que organizan estas etapas de distintas maneras.

9.2 ¿Qué es el ciclo de vida del software?

El ciclo de vida del software es el conjunto de etapas por las que pasa un sistema desde que se identifica una necesidad hasta que deja de usarse. Incluye actividades técnicas, decisiones de negocio, coordinación de personas, gestión de cambios y mantenimiento continuo.

Una forma simple de resumirlo es:

Necesidad -> análisis -> diseño -> construcción -> pruebas -> entrega -> operación -> mantenimiento -> evolución -> retiro o reemplazo.

En proyectos reales, estas etapas no siempre ocurren de forma estrictamente lineal. A veces se repiten, se superponen o se realizan en ciclos. Por ejemplo, después de entregar una versión pueden aparecer nuevos requisitos que vuelven a iniciar parte del análisis y del diseño.

9.3 Por qué es importante conocerlo

Conocer el ciclo de vida ayuda a evitar una visión incompleta del desarrollo. Si solo pensamos en programar, podemos ignorar decisiones importantes que ocurren antes y después de escribir código.

El ciclo de vida permite:

  • Comprender qué actividades son necesarias en cada momento.
  • Planificar recursos, tiempos y responsabilidades.
  • Identificar riesgos temprano.
  • Definir puntos de revisión y validación.
  • Organizar entregas y versiones.
  • Preparar mantenimiento y soporte.
  • Tomar decisiones sobre evolución o retiro del sistema.
Idea clave: el ciclo de vida recuerda que el software debe pensarse antes de construirlo, verificarse antes de entregarlo y cuidarse después de publicarlo.

9.4 Inicio: identificación de la necesidad

Todo ciclo de vida comienza con una necesidad, problema u oportunidad. Puede ser una dificultad operativa, una oportunidad comercial, una obligación legal, una mejora de servicio o la modernización de un sistema existente.

En esta etapa se busca responder preguntas iniciales:

  • ¿Qué problema se quiere resolver?
  • ¿Quién lo tiene?
  • ¿Por qué es importante resolverlo?
  • ¿Qué ocurre si no se hace nada?
  • ¿Qué objetivos se esperan lograr?
  • ¿Existen restricciones de tiempo, presupuesto, tecnología o normativa?

Una necesidad mal entendida puede llevar a construir un sistema que no aporta valor, aunque esté bien programado.

9.5 Estudio de viabilidad

Antes de iniciar un desarrollo completo, muchas organizaciones realizan un estudio de viabilidad. Su objetivo es analizar si la solución propuesta tiene sentido desde distintos puntos de vista.

Tipo de viabilidad Pregunta principal Ejemplo
Técnica ¿Tenemos tecnología y conocimiento para construirlo? Verificar si una integración externa es posible.
Económica ¿El beneficio justifica el costo? Comparar costo de desarrollo con ahorro operativo esperado.
Operativa ¿La organización podrá usar y sostener el sistema? Evaluar capacitación, soporte y cambios de proceso.
Legal o regulatoria ¿Respeta normas aplicables? Analizar protección de datos personales o trazabilidad obligatoria.
Temporal ¿Puede lograrse en el plazo requerido? Definir si una primera versión es viable antes de una fecha límite.

La viabilidad no elimina todos los riesgos, pero ayuda a decidir si conviene avanzar, ajustar el alcance o descartar una iniciativa.

9.6 Análisis y definición de requisitos

Después de identificar la necesidad, se deben comprender y definir requisitos. Esta etapa busca transformar ideas generales en acuerdos más precisos sobre lo que el sistema debe cumplir.

Incluye actividades como:

  • Identificar actores interesados.
  • Relevar procesos actuales.
  • Analizar reglas de negocio.
  • Definir funcionalidades esperadas.
  • Reconocer requisitos no funcionales.
  • Establecer prioridades.
  • Definir criterios de aceptación.

Los requisitos no siempre quedan cerrados para siempre. En muchos proyectos evolucionan a medida que se aprende más sobre el problema y la solución.

9.7 Diseño y arquitectura

El diseño define cómo se organizará la solución. La arquitectura establece decisiones estructurales de mayor impacto: componentes principales, tecnologías, estilos de comunicación, almacenamiento, seguridad, despliegue y atributos de calidad.

En esta etapa se toman decisiones como:

  • Cómo se dividirá el sistema en módulos o componentes.
  • Qué datos se almacenarán y cómo se relacionarán.
  • Qué interfaces tendrá el sistema.
  • Cómo se integrará con otros servicios.
  • Qué restricciones de seguridad deben considerarse.
  • Cómo se facilitará el mantenimiento futuro.

Un buen diseño no busca complicar el proyecto. Busca dar estructura para que la construcción, las pruebas y los cambios futuros sean más manejables.

9.8 Construcción

La construcción es la etapa en la que se implementa el software. Incluye código, configuración, base de datos, interfaces, integraciones, scripts, automatizaciones y ajustes técnicos.

Durante la construcción se debe cuidar:

  • Claridad y mantenibilidad del código.
  • Cumplimiento de requisitos definidos.
  • Integración con otros componentes.
  • Control de versiones.
  • Revisión de código.
  • Pruebas tempranas.
  • Gestión de defectos y cambios.

La construcción no debería aislarse del resto del ciclo de vida. Debe responder a requisitos, respetar decisiones de diseño y generar una base mantenible.

9.9 Pruebas y evaluación de calidad

Las pruebas permiten obtener información sobre el comportamiento del sistema. Ayudan a detectar defectos, validar requisitos y reducir riesgos antes de entregar una versión.

La evaluación de calidad puede incluir:

  • Pruebas unitarias.
  • Pruebas de integración.
  • Pruebas de sistema.
  • Pruebas de aceptación.
  • Revisión de seguridad.
  • Pruebas de rendimiento.
  • Validación de usabilidad y accesibilidad.
  • Revisión de documentación.

La calidad no debe evaluarse solo al final. Cuanto antes se revisa una decisión, un requisito o un componente, menor suele ser el costo de corregir problemas.

9.10 Entrega y despliegue

La entrega consiste en poner una versión del software a disposición de usuarios, clientes o evaluadores. El despliegue es la acción técnica y operativa de instalar o publicar esa versión en un ambiente.

Una entrega puede requerir:

  • Preparar ambiente de producción o pruebas.
  • Configurar variables, permisos y servicios.
  • Migrar datos.
  • Ejecutar pruebas posteriores al despliegue.
  • Comunicar cambios a usuarios.
  • Capacitar personas afectadas.
  • Definir un plan de reversión si algo falla.

Un sistema no está realmente entregado si nadie puede usarlo de manera adecuada o si no existe una forma responsable de operarlo.

9.11 Operación

Durante la operación, el software se usa en condiciones reales. Esta etapa permite observar problemas que no siempre aparecen en ambientes de desarrollo o prueba: carga real, datos reales, comportamiento de usuarios, integraciones inestables y errores de configuración.

La operación incluye tareas como:

  • Monitorear disponibilidad y rendimiento.
  • Atender incidentes.
  • Revisar logs y métricas.
  • Gestionar accesos y permisos.
  • Realizar respaldos.
  • Aplicar actualizaciones.
  • Responder consultas de usuarios o soporte.

Cuando el software funciona como servicio, la operación es una parte central de su valor.

9.12 Mantenimiento

El mantenimiento es la etapa en la que se corrige, adapta y mejora el sistema después de su entrega. No debe verse como un trabajo menor: muchos sistemas pasan más tiempo siendo mantenidos que siendo desarrollados inicialmente.

El mantenimiento puede ser:

Tipo Objetivo Ejemplo
Correctivo Corregir defectos. Arreglar un error en el cálculo de intereses.
Adaptativo Ajustar el sistema a cambios del entorno. Actualizar una integración porque cambió una API externa.
Perfectivo Mejorar funcionalidades o experiencia. Agregar nuevos filtros a un reporte.
Preventivo Reducir riesgos futuros. Refactorizar un módulo antes de que sea más difícil modificarlo.

9.13 Evolución del software

La evolución es el conjunto de cambios que permiten que el software siga siendo útil a lo largo del tiempo. Puede incluir nuevas funciones, adaptación a nuevos mercados, integración con otros sistemas, rediseño de interfaces o cambios de arquitectura.

Un sistema evoluciona porque su entorno cambia:

  • Cambian las necesidades de los usuarios.
  • Cambian las reglas de negocio.
  • Aparecen nuevas tecnologías.
  • Aumenta la cantidad de usuarios o datos.
  • Surgen requisitos legales o de seguridad.
  • Se modifican procesos de la organización.

La evolución debe gestionarse. Si cada cambio se hace sin cuidar diseño, pruebas y documentación, el sistema puede acumular deuda técnica y volverse cada vez más difícil de modificar.

9.14 Retiro o reemplazo

En algún momento, un sistema puede dejar de ser conveniente. Tal vez la tecnología queda obsoleta, el costo de mantenimiento es demasiado alto, el negocio cambió, existe una solución mejor o el sistema ya no cumple requisitos de seguridad.

Retirar o reemplazar software también requiere planificación. No se trata simplemente de apagarlo. Puede ser necesario:

  • Migrar datos a un sistema nuevo.
  • Conservar información histórica por motivos legales.
  • Capacitar usuarios en la nueva solución.
  • Desactivar integraciones.
  • Comunicar fechas y cambios.
  • Mantener ambos sistemas durante una transición.
  • Definir respaldo y recuperación de información.

El retiro responsable forma parte del ciclo de vida porque protege datos, continuidad operativa y conocimiento organizacional.

9.15 Relación entre etapas

Las etapas del ciclo de vida están conectadas. Una mala definición de requisitos afecta el diseño. Un diseño confuso complica la construcción. Una construcción sin pruebas dificulta la entrega. Una entrega sin monitoreo complica la operación. Un mantenimiento sin refactorización puede aumentar la deuda técnica.

La siguiente tabla muestra algunas relaciones importantes:

Decisión temprana Impacto posterior
Requisitos poco claros Retrabajo, cambios tardíos y discusiones sobre alcance.
Diseño demasiado acoplado Mantenimiento difícil y alto riesgo al modificar funcionalidades.
Pruebas insuficientes Defectos en producción y miedo a cambiar el sistema.
Despliegue manual sin control Errores de configuración y versiones inconsistentes.
Documentación inexistente Pérdida de conocimiento y dependencia de personas específicas.

9.16 Ciclo de vida no significa proceso rígido

Hablar de ciclo de vida no significa que todos los proyectos deban seguir una secuencia fija y pesada. Algunos proyectos requieren más análisis previo; otros avanzan mediante versiones pequeñas e incrementales. Algunos tienen requisitos muy estables; otros cambian con frecuencia.

Lo importante es que el equipo reconozca las actividades necesarias y las adapte al contexto. Un sistema crítico de salud no debería gestionarse igual que un prototipo experimental. Un producto masivo en línea no tiene las mismas necesidades que una herramienta interna usada por pocas personas.

El ciclo de vida es una guía para no olvidar dimensiones importantes del software, no una receta única.

9.17 Ejemplo: aplicación de pedidos para un restaurante

Imaginemos una aplicación para que clientes hagan pedidos a un restaurante.

  • Necesidad: reducir llamadas telefónicas y organizar pedidos.
  • Viabilidad: evaluar costos, dispositivos disponibles y conexión a internet.
  • Requisitos: ver menú, elegir productos, confirmar pedido y recibir estado.
  • Diseño: definir pantallas, datos de pedidos, estados y roles.
  • Construcción: implementar aplicación, panel de cocina y base de datos.
  • Pruebas: verificar pedidos simultáneos, productos agotados y cancelaciones.
  • Entrega: publicar la primera versión y capacitar al personal.
  • Operación: monitorear errores, tiempos de respuesta y pedidos no procesados.
  • Mantenimiento: corregir errores, agregar promociones y mejorar notificaciones.
  • Evolución: integrar pagos en línea o delivery externo.
  • Retiro: migrar pedidos históricos si se reemplaza por una nueva plataforma.

Este ejemplo muestra cómo el ciclo de vida acompaña toda la historia del sistema, no solo su construcción inicial.

9.18 Errores comunes

Al no considerar el ciclo de vida completo, suelen aparecer errores como:

  • Creer que el proyecto termina cuando se escribe el código.
  • No planificar mantenimiento ni soporte.
  • Omitir la viabilidad y descubrir tarde que la solución no es posible o no conviene.
  • Entregar sin preparar usuarios, operación o documentación.
  • No considerar migración de datos.
  • No prever monitoreo ni respuesta ante incidentes.
  • Acumular cambios sin cuidar diseño y pruebas.
  • Reemplazar un sistema sin plan de transición.

9.19 Qué debes recordar de este tema

  • El ciclo de vida del software abarca desde la necesidad inicial hasta el retiro o reemplazo del sistema.
  • Incluye análisis, diseño, construcción, pruebas, entrega, operación, mantenimiento y evolución.
  • Las etapas están relacionadas: decisiones tempranas afectan costos y riesgos futuros.
  • El mantenimiento es una parte normal y muy importante de la vida del software.
  • El software puede evolucionar durante años después de su primera versión.
  • El retiro o reemplazo también debe planificarse.
  • El ciclo de vida es una guía adaptable, no una secuencia rígida obligatoria para todos los proyectos.

9.20 Conclusión

El ciclo de vida del software permite comprender el recorrido completo de un sistema. Ayuda a mirar más allá de la programación y a considerar decisiones que afectan valor, calidad, operación, mantenimiento y evolución.

Para quien comienza, la idea principal es esta: un sistema de software vive antes, durante y después de su primera entrega; por eso debe pensarse como algo que nace, cambia, se mantiene y eventualmente se reemplaza.

En el próximo tema estudiaremos modelos de proceso como cascada, iterativo, incremental y ágil, que son distintas formas de organizar las actividades del ciclo de vida.