8. Actividades principales del proceso de software

8.1 Introducción

Un proceso de software es una forma organizada de transformar una necesidad en una solución que pueda usarse, probarse, mantenerse y evolucionar. No se trata solo de programar: incluye entender el problema, definir requisitos, diseñar, construir, verificar, desplegar, operar y mejorar.

Distintos equipos pueden usar procesos diferentes. Algunos trabajan con etapas muy definidas, otros con ciclos cortos e iterativos, y otros combinan prácticas según el contexto. Sin embargo, muchas actividades aparecen en casi todos los proyectos de software.

En este tema veremos esas actividades principales sin atarlas todavía a un modelo específico. Más adelante estudiaremos modelos de proceso como cascada, iterativo, incremental y ágil.

8.2 ¿Qué es un proceso de software?

Un proceso de software es el conjunto de actividades, prácticas, roles, artefactos y decisiones que permiten desarrollar y mantener un sistema. Su propósito es dar orden al trabajo para reducir improvisación, mejorar comunicación y aumentar la probabilidad de entregar valor.

Un proceso puede definir:

  • Qué actividades se realizan.
  • Quién participa en cada actividad.
  • Qué información se necesita para comenzar.
  • Qué resultados se esperan.
  • Cómo se revisa la calidad.
  • Cómo se gestionan cambios y riesgos.
  • Cómo se comunica el avance.
Idea clave: un proceso de software no debe ser burocracia vacía; debe ayudar al equipo a construir mejor, comunicarse mejor y tomar mejores decisiones.

8.3 Comprensión del problema

La primera actividad es entender el problema que se quiere resolver. Antes de hablar de pantallas, bases de datos o tecnologías, el equipo debe comprender qué necesidad existe, quién la tiene y qué impacto tendría resolverla.

Algunas preguntas iniciales son:

  • ¿Qué situación actual se quiere mejorar?
  • ¿Qué personas o áreas están afectadas?
  • ¿Qué objetivos de negocio existen?
  • ¿Qué restricciones deben respetarse?
  • ¿Qué riesgos aparecen desde el comienzo?
  • ¿Qué resultado permitiría decir que el proyecto tuvo éxito?

Si esta actividad se omite, el equipo puede construir una solución técnicamente correcta pero poco útil.

8.4 Relevamiento y análisis de requisitos

Los requisitos describen qué debe cumplir el sistema. Pueden referirse a funcionalidades, restricciones, reglas de negocio, rendimiento, seguridad, usabilidad, integración, operación o mantenimiento.

El relevamiento busca obtener información de usuarios, clientes, documentos, procesos existentes y sistemas relacionados. El análisis transforma esa información en requisitos más claros, consistentes y priorizados.

Esta actividad puede producir distintos artefactos:

  • Lista de requisitos.
  • Historias de usuario.
  • Casos de uso.
  • Criterios de aceptación.
  • Reglas de negocio.
  • Modelos de procesos.
  • Prototipos iniciales.

El objetivo no es escribir documentos extensos sin utilidad, sino lograr acuerdos claros sobre lo que se necesita construir.

8.5 Priorización y planificación

Una vez que se entienden las necesidades, el equipo debe decidir qué se hará primero, qué puede esperar y qué no forma parte del alcance actual. Esta decisión depende de valor, riesgo, costo, urgencia, dependencias y capacidad del equipo.

La planificación no consiste en adivinar el futuro con exactitud. Consiste en organizar el trabajo de manera razonable y revisar el plan cuando aparece nueva información.

Algunas actividades de planificación son:

  • Dividir el trabajo en tareas o funcionalidades.
  • Estimar esfuerzo de forma inicial.
  • Identificar dependencias.
  • Ordenar prioridades.
  • Definir entregas parciales.
  • Asignar responsabilidades.
  • Detectar riesgos y bloqueos.

8.6 Diseño de la solución

El diseño define cómo se organizará la solución antes o durante la construcción. Incluye decisiones sobre estructura, módulos, interfaces, datos, flujos, responsabilidades, tecnologías y experiencia de usuario.

El diseño puede ser de distintos niveles:

Nivel de diseño Qué define Ejemplo
Diseño de experiencia Cómo interactúan los usuarios con el sistema. Flujo para registrarse, pagar y recibir confirmación.
Diseño funcional Cómo se comportan las funcionalidades. Reglas para aprobar o rechazar una solicitud.
Diseño de datos Cómo se organizan y relacionan los datos. Entidades como cliente, pedido, producto y pago.
Diseño técnico Cómo se estructuran componentes, servicios y módulos. Separar interfaz, lógica de negocio y acceso a datos.
Arquitectura Decisiones estructurales de alto impacto. Aplicación monolítica, servicios, colas, APIs o nube.

Diseñar no significa intentar prever cada detalle, sino tomar decisiones que guíen la construcción y reduzcan riesgos.

8.7 Construcción o implementación

La construcción es la actividad en la que se implementa el software. Incluye escribir código, configurar herramientas, crear bases de datos, integrar servicios, construir interfaces, preparar scripts y resolver problemas técnicos.

Durante la construcción se aplican prácticas como:

  • Uso de control de versiones.
  • Codificación siguiendo estándares del equipo.
  • Separación de responsabilidades.
  • Revisión de código.
  • Pruebas unitarias o de integración.
  • Integración frecuente con el trabajo de otras personas.
  • Refactorización cuando el código lo necesita.

La implementación no debe verse como una actividad aislada. Debe mantenerse conectada con requisitos, diseño, pruebas y objetivos del producto.

8.8 Verificación y validación

La verificación y la validación ayudan a comprobar que el software cumple lo esperado. Aunque suelen relacionarse con pruebas, también pueden incluir revisiones, inspecciones, prototipos, demostraciones y análisis de documentación.

Concepto Pregunta que responde Ejemplo
Verificación ¿Construimos correctamente lo especificado? Revisar que una regla se implementó según el requisito.
Validación ¿Construimos lo que el usuario realmente necesita? Mostrar un prototipo al usuario y confirmar que resuelve su tarea.

Ambas son necesarias. Un sistema puede cumplir la especificación y aun así no resolver bien el problema real si la especificación era incompleta o incorrecta.

8.9 Pruebas de software

Las pruebas son actividades orientadas a obtener información sobre la calidad del sistema. Ayudan a detectar defectos, reducir riesgos y generar confianza antes de entregar o publicar una versión.

Según el nivel y el objetivo, pueden existir:

  • Pruebas unitarias sobre partes pequeñas del código.
  • Pruebas de integración entre componentes.
  • Pruebas de sistema sobre flujos completos.
  • Pruebas de aceptación con criterios del usuario o del negocio.
  • Pruebas de rendimiento, seguridad, usabilidad o compatibilidad.
  • Pruebas de regresión para verificar que cambios nuevos no rompan lo existente.

Las pruebas no deberían quedar solamente para el final. Cuanto antes se detecta un problema, más fácil suele ser corregirlo.

8.10 Gestión de configuración y versiones

La gestión de configuración permite controlar los elementos que forman parte del sistema: código, dependencias, scripts, parámetros, documentación, ambientes y versiones. Sin esta actividad, resulta difícil saber qué se entregó, qué cambió o cómo reproducir un comportamiento.

Incluye prácticas como:

  • Control de versiones del código fuente.
  • Identificación de versiones entregadas.
  • Gestión de ramas y cambios.
  • Registro de dependencias y configuraciones.
  • Separación de ambientes de desarrollo, prueba y producción.
  • Automatización de compilación y despliegue.

Esta actividad es fundamental para trabajar en equipo y mantener trazabilidad entre cambios, entregas y problemas reportados.

8.11 Despliegue y entrega

Desplegar significa poner el software en un ambiente donde pueda ser usado o evaluado. Puede ser un ambiente de pruebas, preproducción, producción o una tienda de aplicaciones.

Una entrega puede incluir más que código:

  • Aplicación o servicios actualizados.
  • Base de datos migrada.
  • Configuraciones necesarias.
  • Documentación de cambios.
  • Instrucciones de uso o capacitación.
  • Plan de reversión si algo falla.
  • Comunicación a usuarios o áreas afectadas.

Un despliegue bien gestionado reduce interrupciones, errores de configuración y sorpresas en producción.

8.12 Operación y monitoreo

Después de entregar el software, comienza su uso real. En esta etapa importa observar cómo se comporta el sistema en condiciones de producción: usuarios reales, datos reales, carga real e integraciones reales.

El monitoreo permite detectar problemas como:

  • Caídas del servicio.
  • Errores frecuentes.
  • Tiempos de respuesta altos.
  • Uso excesivo de recursos.
  • Fallos en integraciones externas.
  • Comportamientos inesperados de usuarios.
  • Intentos de acceso no autorizado.

Operar software significa asumir que el sistema debe mantenerse disponible, seguro y observable mientras genera valor.

8.13 Mantenimiento y evolución

El mantenimiento incluye correcciones, mejoras, adaptaciones y prevención de problemas futuros. Es una actividad normal y necesaria, no una señal de fracaso del desarrollo inicial.

Algunas tareas de mantenimiento son:

  • Corregir defectos.
  • Agregar funcionalidades.
  • Adaptar el sistema a cambios legales o de negocio.
  • Actualizar dependencias.
  • Mejorar seguridad o rendimiento.
  • Refactorizar código para facilitar cambios futuros.
  • Eliminar funcionalidades obsoletas.

Gran parte del costo total de un sistema ocurre después de su primera entrega. Por eso, mantener bien el software es tan importante como construirlo.

8.14 Documentación y comunicación

La documentación y la comunicación atraviesan todo el proceso. No deberían considerarse una actividad final ni separada del trabajo real. Documentar bien significa conservar información útil para tomar decisiones, usar el sistema, mantenerlo y transferir conocimiento.

Puede documentarse:

  • Objetivos del producto.
  • Requisitos y criterios de aceptación.
  • Reglas de negocio.
  • Decisiones de arquitectura.
  • Contratos de APIs.
  • Guías de instalación y despliegue.
  • Procedimientos de soporte.
  • Historial de cambios relevantes.

La documentación debe ser proporcional al proyecto y mantenerse lo suficientemente actualizada para ser confiable.

8.15 Mejora continua del proceso

Los equipos también deben revisar su forma de trabajar. Un proceso no es algo fijo que nunca cambia. Si una práctica no ayuda, debe ajustarse; si aparece un problema repetido, conviene analizarlo; si una herramienta mejora la colaboración, puede incorporarse.

La mejora continua puede incluir:

  • Revisar defectos frecuentes y sus causas.
  • Mejorar criterios de aceptación.
  • Automatizar tareas repetitivas.
  • Reducir tiempos de despliegue.
  • Mejorar comunicación entre roles.
  • Ajustar estimaciones y planificación.
  • Eliminar pasos burocráticos sin valor.

Un equipo maduro no solo mejora el producto; también mejora su manera de construirlo.

8.16 Resumen de actividades

Actividad Pregunta principal Resultado esperado
Comprensión del problema ¿Qué necesidad debemos resolver? Objetivos y contexto claros.
Requisitos ¿Qué debe cumplir el sistema? Acuerdos funcionales y no funcionales.
Planificación ¿Cómo organizaremos el trabajo? Prioridades, tareas, riesgos y entregas.
Diseño ¿Cómo se organizará la solución? Estructura, flujos, datos e interfaces definidos.
Construcción ¿Cómo implementamos la solución? Código, configuración e integraciones.
Pruebas ¿El sistema cumple lo esperado? Evidencia de calidad y defectos detectados.
Despliegue ¿Cómo ponemos el software en uso? Versión instalada o publicada correctamente.
Operación ¿Cómo se comporta en uso real? Servicio monitoreado y atendido.
Mantenimiento ¿Cómo corregimos y evolucionamos? Sistema adaptado a nuevas necesidades.

8.17 Ejemplo: sistema de reservas

Supongamos que se desarrolla un sistema de reservas para un centro deportivo. El proceso podría incluir:

  • Comprender cómo se reservan turnos actualmente.
  • Identificar usuarios: socios, recepcionistas, administradores y entrenadores.
  • Definir requisitos: consultar horarios, reservar, cancelar, pagar y recibir avisos.
  • Priorizar una primera versión sin pagos en línea, si el tiempo es limitado.
  • Diseñar pantallas, base de datos y reglas de disponibilidad.
  • Implementar funcionalidades por partes.
  • Probar reservas simultáneas, cancelaciones y límites de horario.
  • Desplegar en un ambiente de prueba y luego en producción.
  • Monitorear errores y recibir comentarios de usuarios.
  • Agregar mejoras, como recordatorios o integración con pagos.

Este ejemplo muestra que el desarrollo avanza mediante varias actividades conectadas, no mediante una sola tarea de programación.

8.18 Errores comunes

Al gestionar el proceso de software suelen cometerse errores como:

  • Comenzar a programar sin entender el problema.
  • Confundir requisitos con ideas sueltas o pedidos informales.
  • No priorizar y tratar todo como urgente.
  • Diseñar demasiado tarde, cuando el código ya está desordenado.
  • Dejar las pruebas para el final.
  • No registrar decisiones importantes.
  • Desplegar sin plan de verificación o reversión.
  • Ignorar operación, soporte y mantenimiento.
  • Mantener un proceso pesado que no aporta valor.

8.19 Qué debes recordar de este tema

  • El proceso de software organiza el trabajo necesario para construir y mantener un sistema.
  • Las actividades principales incluyen comprender el problema, definir requisitos, planificar, diseñar, construir, probar, desplegar, operar y mantener.
  • Estas actividades no siempre ocurren de forma estrictamente lineal.
  • La documentación y la comunicación atraviesan todo el proceso.
  • Las pruebas y la validación deben aparecer temprano, no solo al final.
  • El mantenimiento forma parte normal de la vida del software.
  • Un buen proceso debe ayudar al equipo, no agregar burocracia sin sentido.

8.20 Conclusión

El proceso de software permite ordenar actividades que, de otra manera, quedarían libradas a la improvisación. No existe un único proceso válido para todos los proyectos, pero sí existen actividades fundamentales que ayudan a transformar una necesidad en una solución útil, verificable y sostenible.

Para quien comienza, la idea principal es esta: desarrollar software profesionalmente implica recorrer un conjunto de actividades conectadas, donde cada una aporta información y reduce riesgos para las demás.

En el próximo tema veremos una introducción al ciclo de vida del software, para comprender cómo estas actividades se organizan desde la idea inicial hasta el retiro o reemplazo del sistema.