Fases del ciclo de vida del software desde requerimientos hasta mantenimiento
← RECURSOS

Fundamentos del Diseño de Software y Modelos del Ciclo de Vida

Principios del diseño arquitectónico de software: modelos en cascada, evolutivos y metodologías ágiles, y transición de análisis a diseño.

📌 En síntesis: Principios del diseño arquitectónico de software: modelos en cascada, evolutivos y metodologías ágiles, y transición de análisis a diseño.

Guía técnica desarrollada por el equipo de Proyecto Luna para formación profesional y consulta técnica abierta.


El desarrollo de software en el siglo XXI es un pilar fundamental de la innovación y un motor de cambio en todas las industrias. Desde aplicaciones móviles que nos conectan globalmente hasta complejos sistemas de gestión que optimizan la producción, el software está en el corazón de la modernidad. Sin embargo, la creación de sistemas robustos, escalables y mantenibles no es un acto de magia, sino el resultado de un proceso de ingeniería rigurosamente planificado. Esta , , es la clave para transitar de la programación a la verdadera ingeniería de software. Aquí no solo aprenderemos a escribir código, sino a concebir y estructurar soluciones. En esta primera unidad, nos sumergiremos en los cimientos de este proceso. Exploraremos el ciclo de vida del desarrollo de software (SDLC), una hoja de ruta esencial que nos guiará desde la idea inicial hasta la entrega final del producto. Analizaremos los modelos de desarrollo más influyentes —como el de cascada, el iterativo/incremental y el ágil—, comprendiendo sus ventajas, desventajas y el contexto en el que cada uno brilla. Finalmente, definiremos el desarrollo de software bajo la mirada de la gestión de proyectos, un enfoque aplicado que nos permitirá entender la importancia de la planificación, los recursos y los roles en un entorno real. Prepárense para cuestionar la forma en que ven la programación. El objetivo es que, al final de esta clase, no solo conozcan las etapas del proceso, sino que desarrollen el pensamiento crítico para elegir la mejor estrategia y construir soluciones que trasciendan la simple funcionalidad.


🚀 Introducción

Figura 1: Tipos de requisitos Figura 1: Tipos de requisitos

Requisitos funcionales Describen lo que el sistema debe hacer. Por ejemplo, “el sistema debe permitir al usuario registrarse con su correo electrónico y una contraseña”. Tipos de requisitos Requisitos no funcionales Describen cómo debe ser el sistema. Esto incluye características de rendimiento (ej., “el sistema debe cargar la página en menos de 3 segundos”), seguridad (ej., “el sistema debe encriptar la información sensible del usuario”), usabilidad y fiabilidad. Una vez definidos, se documentan formalmente en un documento de especificación de requisitos. Análisis de requisitos: esta es la fase más crítica y fundamental. Aquí, el equipo de desarrollo, en colaboración estrecha con el cliente, el usuario final y otros interesados, define los “qué” del sistema. Se busca responder a preguntas como: ¿Qué funcionalidades debe tener el software? ¿Qué problemas resolverá? ¿Quiénes lo usarán y de qué manera? Se distinguen dos tipos de requisitos: ●


📌 1. El ciclo de vida del desarrollo de software (SDLC)

El desarrollo de software es una disciplina de ingeniería. No se trata de un arte sin estructura, sino de un proceso planificado y organizado que, como cualquier otro, se lleva a cabo en una serie de etapas secuenciales o iterativas. Este conjunto de fases, que abarcan desde la concepción de una idea hasta la completitud de un sistema, se conoce como el ciclo de vida del desarrollo de software (SDLC, cuya sigla está en inglés: Software Development Life Cycle). Comprender el SDLC es el primer paso para diseñar software de manera efectiva y eficiente.

🔹 1.1. Las etapas fundamentales del SDLC

Si bien la nomenclatura y el orden pueden variar, la mayoría de los modelos de desarrollo de software incluyen las siguientes fases clave:

Implementación (codificación): los desarrolladores toman los diseños y las especificaciones y escriben el código fuente del software. Es la fase de construcción tangible. Es en este punto donde la correcta aplicación de los principios de la Programación Orientada a Objetos (POO) se vuelve crucial para lograr un código legible, modular y mantenible. Pruebas (Testing): esta etapa busca asegurar la calidad del producto. Se ejecutan diversas pruebas para detectar errores (bugs) y verificar que el software cumple con los requisitos definidos. ● ● Tabla 1. Subdivisión del diseño Fuente: Open AI (2023) Tabla 2. Pruebas para detectar errores (bugs) Fuente: Open AI (2023) Subdivisión Descripción Diseño arquitectónico Define la estructura global del sistema, sus componentes principales y las interacciones entre ellos. Diseño detallado Se enfoca en la lógica interna de cada componente, incluyendo el diseño de clases, bases de datos y la interfaz de usuario. Diseño de la Interfaz de Usuario (UI/UX) Asegura que la interacción del usuario con el sistema sea intuitiva y eficiente. Diseño: en esta etapa, se pasa del “qué” al “cómo”. El equipo de diseño crea una representación detallada de la arquitectura del software. En nuestra , nos centraremos en el diseño, basado en el paradigma, orientado a objetos y utilizaremos el Lenguaje Unificado de Modelado (UML) como nuestra herramienta principal. El diseño se subdivide en: ● Tipo de pruebas Descripción Pruebas unitarias Se prueban los componentes individuales o “unidades” del código. Pruebas de integración Se verifica que los módulos del software funcionen correctamente cuando se combinan. Pruebas de sistema Se prueba el sistema completo para asegurar que cumple con todos los requisitos. Pruebas de aceptación El cliente o usuario final verifica que el sistema cumple con sus expectativas.

Tabla 3. Mantenimiento Fuente: Open AI (2023) Despliegue: una vez que el software ha pasado las pruebas de calidad, se instala y se pone en funcionamiento en su entorno operativo. Esto puede implicar la configuración de servidores, bases de datos y la distribución de la aplicación a los usuarios finales. Mantenimiento: el ciclo de vida del software no termina con el despliegue. El mantenimiento es una fase continua que puede prolongarse por muchos años. Incluye: ● ● Tipos de mantenimiento Descripción Mantenimiento correctivo Solución de errores no detectados durante la fase de pruebas. Mantenimiento adaptativo Modificaciones para adaptar el software a cambios en el entorno (ej., una nueva versión del sistema operativo). Mantenimiento perfectivo Mejoras en las funcionalidades o el rendimiento del software.

Secuencialidad y rigidez: no se puede avanzar a la siguiente etapa hasta que la anterior esté completamente terminada y aprobada. Documentación exhaustiva: cada fase genera una gran cantidad de documentación y artefactos que sirven como entrada para la siguiente. ● ●

Figura 2. Ejemplo diagrama del Modelo de Cascada Figura 2. Ejemplo diagrama del Modelo de Cascada (Fuente: Open Ai (2023))


📌 2. Modelos del ciclo de desarrollo de software

Un modelo de desarrollo de software es una representación conceptual del proceso del SDLC, una estrategia que organiza las fases en un orden específico. La elección del modelo es una decisión de proyecto crítica que impacta en la planificación, la ejecución y el éxito final.

🔹 2.1. Modelo de desarrollo en cascada (Waterfall Model)

Este es el modelo más tradicional y rígido, conceptualizado por Winston Royce en 1970. Las etapas se ejecutan en estricta secuencia, de manera descendente, como una cascada. Principios clave:

🔹 2.2. Modelo de desarrollo iterativo e incremental

Este modelo surge como una respuesta a la rigidez del modelo en cascada. En lugar de un solo ciclo largo, el proyecto se divide en ciclos más pequeños y manejables, llamados iteraciones. En cada iteración se produce un incremento funcional del software. Esto significa que el producto crece y evoluciona en cada ciclo, permitiendo una entrega de valor continua. El Proceso Unificado de Desarrollo de Software (RUP), desarrollado por los autores de nuestra bibliografía de referencia (Jacobson, Booch y Rumbaugh, 2000), es un ejemplo robusto de un modelo iterativo e incremental. RUP define cuatro fases principales (concepción, elaboración, construcción y transición), que se ejecutan a través de múltiples iteraciones, permitiendo una gestión de riesgos activa y la adaptación a cambios. Tabla 4. Ventajas y desventajas Fuente: Open AI (2023) Ventajas Desventajas

  • Simple de entender y gestionar.

  • Ideal para proyectos pequeños con requisitos bien definidos y estables.

  • La documentación rigurosa facilita el trabajo de equipos grandes y el reemplazo de personal.

  • Inflexibilidad al cambio: los cambios en los requisitos en etapas avanzadas son extremadamente costosos y difíciles de implementar, lo que lo hace poco práctico para proyectos con alta incertidumbre.

  • Riesgo elevado: los errores de diseño o requisitos solo se descubren en las fases finales de pruebas, cuando la corrección es más cara.

  • Falta de visibilidad temprana: el cliente no tiene un producto funcional para ver o probar hasta la fase de pruebas, lo que puede generar insatisfacción si el resultado no coincide con sus expectativas.

Ventajas Desventajas

  • Mayor flexibilidad y adaptabilidad a los cambios.

  • Los riesgos son gestionados de manera proactiva.

  • Se entrega software funcional de forma temprana, permitiendo al cliente dar retroalimentación.

  • La planificación es más compleja, ya que se debe definir qué se incluirá en cada iteración.

  • Los costos iniciales de la fase de concepción y elaboración pueden ser altos. Repetición y progresión: las fases de diseño, implementación y pruebas se repiten en cada iteración. Crecimiento del producto: en cada iteración se añade una nueva funcionalidad, construyendo el sistema capa por capa. Gestión de riesgos: los riesgos principales se abordan en las primeras iteraciones, permitiendo mitigarlos de manera temprana. ● ● ● Principios clave:

Figura 3. Ejemplo modelo de desarrollo iterativo e incremental Figura 3. Ejemplo modelo de desarrollo iterativo e incremental (Fuente: Open AI (2023))

Tabla 5. Ventajas y desventajas Fuente: Open AI (2023)

Roles: Product owner: representa al cliente y define el Product Backlog (lista de funcionalidades deseadas). Scrum master: facilita el proceso y elimina impedimentos. Equipo de desarrollo: construye el software. ● Eventos: Sprint planning: planificación del trabajo para el sprint. Daily scrum: reunión diaria corta para sincronizar al equipo. Sprint review: demostración del incremento de software al cliente. Sprint retrospective: el equipo reflexiona sobre cómo mejorar el proceso. ●

🔹 2.3. Modelo de desarrollo ágil (Agile)

El desarrollo ágil no es un modelo, sino una filosofía o un conjunto de valores y principios que guían el proceso de desarrollo. El Manifiesto Ágil, creado en 2001, prioriza: 1. Individuos e interacciones sobre procesos y herramientas. 2. Software funcionando sobre documentación exhaustiva. 3. Colaboración con el cliente sobre negociación de contratos. 4. Respuesta al cambio sobre seguir un plan. Modelos como Scrum y Kanban son implementaciones de la filosofía ágil. Scrum: un framework de desarrollo ágil scrum organiza el trabajo en ciclos cortos y fijos llamados sprints (generalmente de 2 a 4 semanas). En cada sprint, el equipo se compromete a entregar un incremento de software funcional.

Ventajas Desventajas

  • Extrema flexibilidad y rapidez para responder a cambios en el mercado.

  • Entrega de valor de manera continua y temprana al cliente.

  • Mejora la colaboración y la comunicación en el equipo.

  • Puede ser difícil de escalar a proyectos muy grandes.

  • Requiere un equipo muy disciplinado y autoorganizado.

  • La falta de documentación exhaustiva puede ser un problema si el equipo cambia.

Figura 4. Esquema con Scrum (ejemplo práctico) Figura 4. Esquema con Scrum (ejemplo práctico) (Fuente: Open AI (2023))

Tabla 6. Ventajas y desventajas Fuente: Open AI (2023)

1 ¿Qué se va a construir y por qué? (alcance) 3 ¿Quiénes estarán involucrados y qué roles tendrán? (roles y responsabilidades) 5 ¿Qué podría salir mal? (gestión de riesgos) 4 ¿Cuánto tiempo tomará y cuáles son los hitos clave? (calendario) 2 ¿Qué herramientas y tecnologías se utilizarán? (recursos)


📌 3. El desarrollo de software como un proyecto: planificación y


📌 gestión

Entender los modelos del SDLC es solo una parte de la ecuación. En la práctica, el desarrollo de software es un proyecto que debe ser gestionado, y el éxito depende de una planificación y ejecución adecuadas.

🔹 3.1. Planificación: el mapa de ruta

La planificación es la fase inicial donde se define el alcance, los objetivos, el cronograma y los recursos. Una buena planificación responde a las siguientes preguntas:

Figura 5. Preguntas para una buena planificación Figura 5. Preguntas para una buena planificación (Fuente: Open AI (2023))

Tabla 7. Tipos de recursos Fuente: Open AI (2023) Recursos Descripción Humanos El equipo de desarrollo es el recurso más importante. Roles como analista de negocio, diseñador UX/UI, arquitecto de software, desarrollador (Frontend, Backend), y Tester son esenciales. Técnicos Incluyen hardware (servidores, equipos de desarrollo), software (sistemas operativos, IDEs, bases de datos), y herramientas de colaboración. Financieros El presupuesto del proyecto debe cubrir salarios, licencias de software, hardware y otros gastos operativos.

🔹 3.2. Recursos: personas, herramientas y finanzas

Un proyecto de software necesita tres tipos de recursos:

🔹 3.2. Recursos: personas, herramientas y finanzas

Un cronograma bien definido es crucial para el seguimiento del progreso. Se pueden usar herramientas como diagramas de Gantt o tableros de Kanban para visualizar las tareas, los plazos y las dependencias.

🔹 3.4. Roles y responsabilidades clave

En todo proyecto de software, la correcta definición de los roles y responsabilidades del equipo de trabajo es un factor crítico para el éxito. Cada miembro cumple una función específica que garantiza que el producto final cumpla con los requisitos técnicos, funcionales y de calidad esperados. Tal como plantea el Proceso Unificado de Desarrollo de Software, es necesario establecer con claridad quiénes son los responsables de la planificación, el análisis, el diseño, la implementación y las pruebas. El siguiente esquema resume los principales roles que intervienen en un proyecto típico de desarrollo de software, destacando sus responsabilidades clave y cómo se relacionan con la entrega de valor en cada etapa del ciclo de vida:

Figura 6: Esquema de Roles y responsabilidades en el desarrollo de software Figura 6: Esquema de Roles y responsabilidades en el desarrollo de software

Jefe de proyecto (Project manager) Es el responsable de la planificación, la ejecución y el cierre del proyecto. Gestiona el equipo, los recursos, el cronograma y la comunicación con los interesados.


📌 01

Analista de requisitos/negocio Sirve como enlace entre el cliente y el equipo técnico. Su labor es traducir las necesidades del negocio en requisitos técnicos claros y concisos.


📌 02

Arquitecto de software Define la estructura de alto nivel del sistema, asegurando que sea robusta, escalable y mantenible.


📌 03

Desarrollador (ingeniero de software) Implementa el diseño en código. Su tarea es crear software funcional y de alta calidad.


📌 04

Tester (ingeniero de calidad) Se encarga de diseñar y ejecutar pruebas para garantizar que el software no tenga errores y cumpla con los requisitos.


📌 05

Al finalizar esta primera lectura, hemos sentado las bases para la comprensión del como una disciplina ingenieril. Has explorado el SDLC como el esqueleto de todo proyecto, has diferenciado entre los paradigmas de desarrollo que existen en la industria y, a su vez, has podido comprender que la gestión de proyectos es tan importante como el código en sí mismo. A partir de ahora, tu visión del software debe ir más allá de la sintaxis y la lógica de programación. Debes comenzar a pensar en la arquitectura, en la eficiencia del proceso y en la entrega de valor al cliente. El no es un paso aislado, sino el pensamiento estratégico que permea todo el ciclo de vida. Es la planificación la que nos permite construir sistemas sólidos y adaptables, listos para enfrentar los desafíos de un mercado tecnológico en constante evolución.


💡 Conclusión



🚀 Potencia tus proyectos tecnológicos con Proyecto Luna

En Proyecto Luna desarrollamos arquitectura de software de alto rendimiento, optimización de bases de datos críticas y soluciones aplicadas de inteligencia artificial y automatización para empresas y profesionales.

  • 💼 Soluciones de ingeniería: Conoce nuestras capacidades y casos de estudio en proyectoluna.com/work/.
  • 🛡️ Seguridad y auditoría: Orientación técnica y respuesta ante incidentes en ¿Te han hackeado?.
  • 📩 Contacto directo: Escríbenos a través de nuestro formulario de contacto o a contacto@proyectoluna.com.

📚 Fuentes y lecturas recomendadas

  • ● Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J., y Thomas, D. (2001). Manifiesto por el desarrollo ágil de software. Agile Alliance. https://agilemanifesto.org/iso/es/manifesto.html ● Open AI. (2023). Chat GPT [Modelo de lenguaje modelado]. ● Jacobson, I., Booch, G. y Rumbaugh, J. (2000). El proceso unificado de desarrollo de software. Pearson/Addison Wesley. ● Jacobson, I., Booch, G. y Rumbaugh, J. (2006). El lenguaje Unificado de Modelado: Guía del usuario. Pearson/Addison Wesley. ● Barclay, K. y Savage, J. (2004). Object-Oriented Design with UML and Java. Butterworth-Heinemann.

Diagrama explicativo

CONTINÚA EXPLORANDO

ARTÍCULOS SUGERIDOS

Dilema ético en la toma de decisiones tecnológicas e informáticasInformática

Actos Humanos, Libertad y Dilemas Éticos en la Tecnología

Análisis de decisiones éticas: actos del hombre vs actos humanos voluntarios, consentimiento, privacidad de datos y dilemas en algoritmos de IA.

Representación conceptual de la dignidad de la persona y la ética del trabajoInformática

Dignidad de la Persona, Ética de las Virtudes y Excelencia Profesional

La persona como centro de la actividad técnica: dignidad intrínseca, virtudes cardinales y búsqueda de la excelencia en el ejercicio del trabajo.

Representación simbólica de la balanza de la justicia y la éticaInformática

Fundamentos de la Ética: Moral, Leyes y Responsabilidad Social

Distinción conceptual entre ética y moral: el origen de las normas de convivencia, relación con el ordenamiento jurídico y responsabilidad ciudadana.

VER TODOS LOS RECURSOS →

HABLEMOS DE TU CASO

¿Necesitas ayuda? Contáctanos y te contestamos!

SERVICIOS →