Hero image for Proceso y Actividades Fundamentales del Desarrollo de Software

Proceso y Actividades Fundamentales del Desarrollo de Software


La construcción de software se organiza a través de un conjunto de actividades sistemáticas que conforman lo que en ingeniería de software se denomina el ciclo de vida del software. Este conjunto de procesos permite transformar necesidades organizacionales, problemas del mundo real o requerimientos de negocio en soluciones tecnológicas funcionales, verificables y mantenibles.

flowchart LR

A[Requerimientos]
B[Planeación]
C[Diseño]
D[Desarrollo]
E[Implementación]

A --> B
B --> C
C --> D
D --> E

Figura 1. Etapas fundamentales del ciclo de vida del software.

A lo largo de la evolución de la disciplina, se han propuesto múltiples modelos de proceso para estructurar estas actividades. Sin embargo, la mayoría de los enfoques coinciden en un núcleo común de etapas fundamentales que guían el desarrollo del sistema desde su concepción inicial hasta su implementación y mantenimiento operativo.

Especificación de Requerimientos

La especificación de requerimientos constituye la base sobre la cual se edifica todo el proyecto de software. Según Sommerville (2005)1, una definición ambigua o incompleta de los requisitos representa una de las principales causas de fallos en los sistemas informáticos.

Esta fase implica identificar y documentar las necesidades del sistema desde la perspectiva de los distintos actores involucrados, comúnmente denominados stakeholders. Los requerimientos suelen clasificarse en dos categorías principales:

  • Requerimientos funcionales, que describen los servicios o comportamientos que el sistema debe proporcionar.
  • Requerimientos no funcionales, que establecen restricciones o cualidades del sistema, tales como rendimiento, seguridad, disponibilidad, usabilidad o escalabilidad.

El proceso de ingeniería de requisitos suele involucrar diversas actividades complementarias como la obtención de requisitos, el análisis de viabilidad, la especificación formal y la validación con los interesados. Estas actividades permiten asegurar que los requerimientos sean completos, consistentes y verificables.

flowchart TD

A[Ingeniería de Requisitos]

A --> B[Obtención de requisitos]
A --> C[Análisis]
A --> D[Especificación]
A --> E[Validación]

B --> C
C --> D
D --> E

Figura 2. Actividades principales del proceso de ingeniería de requisitos.

Pressman (2010)2 enfatiza que una adecuada ingeniería de requisitos reduce significativamente los costos de corrección en fases posteriores, dado que los errores detectados tardíamente generan un mayor impacto económico y organizacional.

Planeación

La planeación constituye la fase en la que se establece la viabilidad del proyecto y se define la estrategia para alcanzar los objetivos planteados. Durante esta etapa se estiman los recursos necesarios, se identifican los riesgos potenciales y se construye un cronograma que orientará el desarrollo del sistema.

En el Software Engineering Body of Knowledge (SWEBOK), Bourque y Fairley (2014)3 describen la gestión de proyectos de software como una disciplina que integra planificación, seguimiento y control con el propósito de garantizar el cumplimiento de los objetivos técnicos, temporales y económicos del proyecto.

Una planeación rigurosa permite anticipar contingencias, optimizar la asignación de recursos humanos y tecnológicos, y establecer estrategias de mitigación frente a posibles riesgos. En entornos organizacionales complejos, esta fase también implica la coordinación entre equipos multidisciplinarios y la alineación del proyecto con los objetivos estratégicos de la organización.

Diseño

El diseño del software transforma los requisitos previamente definidos en una arquitectura técnica estructurada que servirá como guía para la construcción del sistema. En esta fase se establecen los componentes del software, las estructuras de datos, las interfaces entre módulos y los patrones de diseño que permitirán implementar la solución de manera coherente.

flowchart TD

A[Diseño del Software]

A --> B[Diseño arquitectónico]
A --> C[Diseño detallado]

B --> D[Subsistemas]
B --> E[Interfaces]

C --> F[Algoritmos]
C --> G[Estructuras de datos]

Figura 3. Niveles de abstracción en el diseño del software.

El diseño puede analizarse en distintos niveles de abstracción. En primer lugar, el diseño arquitectónico define la organización general del sistema y la interacción entre sus subsistemas principales. Posteriormente, el diseño detallado describe los algoritmos, estructuras de datos y mecanismos internos que permitirán implementar cada componente.

Un diseño sólido facilita propiedades fundamentales del software moderno como la modularidad, la mantenibilidad, la escalabilidad y la reutilización de componentes.

Desarrollo e Implementación

Durante la fase de construcción o desarrollo se materializa el sistema mediante la escritura de código fuente en uno o varios lenguajes de programación. Sin embargo, esta etapa no se limita únicamente a la programación. También incluye actividades esenciales como pruebas unitarias, integración progresiva de componentes y validación continua del comportamiento del sistema.

Las prácticas modernas de ingeniería de software promueven el uso de herramientas de control de versiones, integración continua y pruebas automatizadas para mejorar la calidad del software y reducir el riesgo de defectos en producción.

Una vez finalizada la construcción del sistema, se procede a la fase de implementación o despliegue, en la cual el software se instala en el entorno operativo donde será utilizado por los usuarios finales. Esta fase puede incluir actividades adicionales como migración de datos, capacitación de usuarios y monitoreo inicial del sistema.

La Crisis del Software

El surgimiento de estas metodologías estructuradas está estrechamente relacionado con un fenómeno histórico conocido como la crisis del software. Durante las décadas de 1960 y 1970, muchos proyectos informáticos experimentaron retrasos significativos, sobrecostos y productos finales que no cumplían con los requisitos esperados.

Pantaleo (2010)4 señala que esta crisis evidenció la necesidad de aplicar principios de ingeniería al desarrollo de software, promoviendo la adopción de metodologías formales, estándares de calidad y procesos sistemáticos de desarrollo.

Como consecuencia de este contexto, surgió la ingeniería de software como disciplina científica orientada a mejorar la calidad, la predictibilidad y la eficiencia en la construcción de sistemas informáticos complejos.

En la actualidad, los modelos de desarrollo continúan evolucionando, integrando enfoques iterativos, ágiles y basados en componentes que buscan responder a los desafíos de un entorno tecnológico cada vez más dinámico y cambiante.


Footnotes

  1. Sommerville, I. (2005). Ingeniería de software (7ª ed.). Addison-Wesley. ↩

  2. Pressman, R. S. (2010). Ingeniería del software: Un enfoque práctico (7ª ed.). McGraw-Hill. ↩

  3. Bourque, P., & Fairley, R. E. (Eds.). (2014). Guide to the Software Engineering Body of Knowledge (SWEBOK Guide) (Version 3.0). IEEE Computer Society. ↩

  4. Pantaleo, G. (2010). La crisis del software y su impacto en la ingeniería informática. Revista Latinoamericana de Ingeniería de Software, 2(1), 15–28. ↩