1 Concepto General del Ciclo de Vida
🎯 Introducción al Ciclo de Vida del Software
Section titled “🎯 Introducción al Ciclo de Vida del Software”El ciclo de vida del software (Software Development Life Cycle - SDLC) es un marco conceptual que define las fases, actividades y entregables necesarios para desarrollar, implementar y mantener un sistema de software desde su concepción hasta su retiro. Constituye la columna vertebral de la ingeniería de software, proporcionando estructura y disciplina al proceso de desarrollo.
🔍 Contexto Histórico
Section titled “🔍 Contexto Histórico”🎯 Propósito del Ciclo de Vida
Section titled “🎯 Propósito del Ciclo de Vida”El ciclo de vida del software cumple múltiples propósitos fundamentales que garantizan el éxito de los proyectos de desarrollo.
📋 Objetivos Principales
Section titled “📋 Objetivos Principales”-
Estructurar el Proceso de Desarrollo
Proporcionar un marco ordenado y predecible para transformar requerimientos en software funcional.
Beneficios:
- Reduce la complejidad mediante división en fases manejables
- Establece puntos de control y revisión
- Facilita la planificación y estimación
- Permite la asignación eficiente de recursos
-
Garantizar la Calidad del Software
Integrar actividades de verificación y validación en cada fase del desarrollo.
Mecanismos:
- Revisiones técnicas en cada fase
- Pruebas continuas y sistemáticas
- Validación con stakeholders
- Cumplimiento de estándares de calidad
-
Gestionar Riesgos Efectivamente
Identificar, evaluar y mitigar riesgos de manera proactiva durante todo el proyecto.
Estrategias:
- Detección temprana de problemas
- Prototipado para validar conceptos
- Revisiones de arquitectura
- Planes de contingencia
-
Facilitar la Comunicación
Establecer un lenguaje común entre todos los participantes del proyecto.
Stakeholders:
- Cliente y usuarios finales
- Equipo de desarrollo
- Gerencia y patrocinadores
- Equipos de soporte y mantenimiento
-
Optimizar Recursos
Maximizar la eficiencia en el uso de tiempo, personal y presupuesto.
Aspectos:
- Planificación realista de cronogramas
- Asignación adecuada de personal
- Control de costos
- Reutilización de componentes
-
Asegurar Mantenibilidad
Producir software que pueda ser mantenido y evolucionado eficientemente.
Prácticas:
- Documentación completa
- Código limpio y bien estructurado
- Arquitectura modular
- Transferencia de conocimiento
📊 Etapas Principales del Desarrollo
Section titled “📊 Etapas Principales del Desarrollo”El ciclo de vida del software se compone de etapas fundamentales que, aunque pueden variar en nombre y alcance según la metodología, representan actividades esenciales en todo proyecto de software.
🔄 Fases Universales del SDLC
Section titled “🔄 Fases Universales del SDLC”📋 Descripción de Etapas Principales
Section titled “📋 Descripción de Etapas Principales”Planificación y Análisis
Section titled “Planificación y Análisis”Objetivo: Comprender el problema, definir el alcance y establecer la viabilidad del proyecto.
Actividades Clave:
| Actividad | Descripción | Entregables |
|---|---|---|
| Estudio de Viabilidad | Evaluar factibilidad técnica, económica y operacional | Documento de viabilidad |
| Análisis de Requerimientos | Capturar y documentar necesidades del cliente | Especificación de Requerimientos (SRS) |
| Planificación del Proyecto | Definir cronograma, recursos y presupuesto | Plan de Proyecto |
| Análisis de Riesgos | Identificar amenazas y oportunidades | Registro de Riesgos |
Participantes:
- Stakeholders del negocio
- Analistas de sistemas
- Gerente de proyecto
- Arquitecto de software
Criterios de Salida:
- ✅ Requerimientos aprobados por el cliente
- ✅ Plan de proyecto validado
- ✅ Presupuesto aprobado
- ✅ Riesgos identificados y priorizados
Diseño
Section titled “Diseño”Objetivo: Transformar requerimientos en una arquitectura de software detallada y especificaciones de diseño.
Niveles de Diseño:
Diseño de Alto Nivel (Arquitectónico):
- Arquitectura del sistema
- Componentes principales
- Interfaces entre módulos
- Tecnologías a utilizar
Diseño Detallado:
- Diseño de clases y objetos
- Diseño de base de datos
- Diseño de interfaces de usuario
- Algoritmos y estructuras de datos
Entregables:
- Documento de Arquitectura de Software (SAD)
- Diagramas UML (clases, secuencia, componentes)
- Modelo de datos (ER diagrams)
- Prototipos de UI/UX
- Especificaciones de interfaces (APIs)
Principios de Diseño:
- Modularidad y cohesión
- Bajo acoplamiento
- Abstracción y encapsulamiento
- Reutilización
- Escalabilidad
Implementación (Desarrollo)
Section titled “Implementación (Desarrollo)”Objetivo: Construir el software según las especificaciones de diseño mediante codificación.
Actividades:
Codificación:
- Implementación de módulos y componentes
- Desarrollo de interfaces de usuario
- Integración con sistemas externos
- Implementación de lógica de negocio
Estándares y Prácticas:
- Convenciones de codificación
- Revisiones de código (code reviews)
- Control de versiones (Git)
- Documentación inline
Entregables:
- Código fuente
- Bibliotecas y componentes
- Scripts de base de datos
- Documentación técnica
- Pruebas unitarias
Herramientas:
- IDEs (Visual Studio, IntelliJ, VS Code)
- Sistemas de control de versiones (Git, SVN)
- Gestores de dependencias (npm, Maven, pip)
- Frameworks y librerías
Pruebas
Section titled “Pruebas”Objetivo: Verificar que el software cumple los requerimientos y está libre de defectos.
Niveles de Pruebas:
| Nivel | Alcance | Responsable | Objetivo |
|---|---|---|---|
| Unitarias | Funciones/métodos individuales | Desarrolladores | Verificar lógica de código |
| Integración | Interacción entre módulos | Desarrolladores/QA | Validar interfaces |
| Sistema | Sistema completo | QA | Verificar requerimientos |
| Aceptación | Desde perspectiva del usuario | Cliente/Usuario | Validar valor de negocio |
Tipos de Pruebas:
- Funcionales (caja negra)
- No funcionales (rendimiento, seguridad, usabilidad)
- Regresión
- Humo (smoke tests)
- Estrés y carga
Entregables:
- Plan de pruebas
- Casos de prueba
- Reportes de defectos
- Métricas de calidad
- Certificación de pruebas
Despliegue (Implementación)
Section titled “Despliegue (Implementación)”Objetivo: Poner el software en producción y hacerlo disponible para usuarios finales.
Actividades:
Preparación:
- Configuración de ambientes
- Migración de datos
- Capacitación de usuarios
- Preparación de documentación
Despliegue:
- Instalación en servidores de producción
- Configuración de seguridad
- Activación de servicios
- Monitoreo inicial
Estrategias de Despliegue:
- Big Bang: Todo de una vez
- Faseado: Por módulos o regiones
- Paralelo: Nuevo y viejo sistema simultáneamente
- Piloto: Grupo reducido primero
Entregables:
- Software en producción
- Manuales de usuario
- Documentación de operación
- Plan de rollback
- Reporte de despliegue
Mantenimiento y Evolución
Section titled “Mantenimiento y Evolución”Objetivo: Mantener el software operativo, corregir defectos y agregar mejoras.
Tipos de Mantenimiento:
Correctivo:
- Corrección de bugs
- Parches de seguridad
- Resolución de incidentes
Adaptativo:
- Cambios por nuevas regulaciones
- Compatibilidad con nuevas plataformas
- Integración con nuevos sistemas
Perfectivo:
- Mejoras de rendimiento
- Optimización de código
- Refactoring
Preventivo:
- Actualización de dependencias
- Mejoras de seguridad
- Optimización proactiva
Actividades:
- Monitoreo del sistema
- Gestión de incidentes
- Gestión de cambios
- Actualizaciones periódicas
Métricas:
- MTBF (Mean Time Between Failures)
- MTTR (Mean Time To Repair)
- Tasa de defectos
- Satisfacción del usuario
🎯 Importancia en la Planificación del Proyecto
Section titled “🎯 Importancia en la Planificación del Proyecto”El ciclo de vida del software es fundamental para la planificación efectiva de proyectos, proporcionando la base para estimaciones, asignación de recursos y gestión de riesgos.
📊 Impacto en la Planificación
Section titled “📊 Impacto en la Planificación”🔍 Elementos Clave de Planificación
Section titled “🔍 Elementos Clave de Planificación”-
Definición de Hitos (Milestones)
Los hitos son puntos de control que marcan la finalización de fases importantes.
Ejemplos de Hitos:
- ✅ Aprobación de requerimientos
- ✅ Finalización de diseño arquitectónico
- ✅ Completitud de desarrollo
- ✅ Certificación de pruebas
- ✅ Go-live en producción
Beneficios:
- Puntos de revisión formales
- Validación de progreso
- Toma de decisiones go/no-go
- Comunicación con stakeholders
-
Gestión de Dependencias
Identificar y gestionar relaciones entre actividades y fases.
Tipos de Dependencias:
- Finish-to-Start (FS): La más común, una tarea debe terminar antes que otra comience
- Start-to-Start (SS): Dos tareas comienzan simultáneamente
- Finish-to-Finish (FF): Dos tareas terminan simultáneamente
- Start-to-Finish (SF): Poco común, una tarea debe comenzar antes que otra termine
Herramientas:
- Diagramas de Gantt
- Ruta crítica (CPM)
- PERT (Program Evaluation and Review Technique)
-
Asignación de Recursos Humanos
Planificar qué roles y cuántas personas se necesitan en cada fase.
Matriz de Roles por Fase:
Fase Analista Arquitecto Desarrollador QA DevOps Análisis ●●● ●● ○ ○ ○ Diseño ●● ●●● ● ○ ○ Desarrollo ○ ● ●●● ● ● Pruebas ○ ○ ● ●●● ● Despliegue ○ ● ● ●● ●●● Mantenimiento ○ ● ●● ●● ●● Leyenda: ●●● Alto | ●● Medio | ● Bajo | ○ Mínimo
-
Estimación de Esfuerzo
Calcular el trabajo necesario para completar cada fase.
Técnicas de Estimación:
- Juicio de Expertos: Basado en experiencia
- Analogía: Comparación con proyectos similares
- Paramétrica: Uso de métricas (COCOMO, puntos de función)
- Bottom-up: Sumar estimaciones de tareas individuales
- Planning Poker: Estimación colaborativa (ágil)
Factores que Afectan:
- Complejidad técnica
- Experiencia del equipo
- Tecnologías utilizadas
- Calidad de requerimientos
- Restricciones del proyecto
-
Control de Calidad Integrado
Planificar actividades de aseguramiento de calidad en cada fase.
Puntos de Control:
- Revisiones de requerimientos
- Revisiones de diseño
- Revisiones de código
- Pruebas en cada nivel
- Auditorías de proceso
Métricas de Calidad:
- Densidad de defectos
- Cobertura de pruebas
- Complejidad ciclomática
- Deuda técnica
- Satisfacción del cliente
-
Gestión del Cambio
Establecer procesos para manejar cambios durante el proyecto.
Proceso de Control de Cambios:
- Solicitud formal de cambio
- Análisis de impacto
- Aprobación por comité (CCB)
- Actualización de plan
- Comunicación a stakeholders
Impacto en Planificación:
- Reestimación de esfuerzo
- Ajuste de cronograma
- Reasignación de recursos
- Actualización de riesgos
📈 Métricas de Planificación
Section titled “📈 Métricas de Planificación”MÉTRICAS CLAVE DE PLANIFICACIÓN DEL PROYECTO
┌────────────────────────────────────┬──────────┬──────────┬──────────┐│ Métrica │ Planeado │ Real │ Variación│├────────────────────────────────────┼──────────┼──────────┼──────────┤│ Duración Total (semanas) │ 24 │ 26 │ +8.3% ││ Esfuerzo Total (persona-mes) │ 48 │ 52 │ +8.3% ││ Costo Total ($) │ 240,000 │ 255,000 │ +6.3% ││ │ │ │ ││ FASE: Análisis y Diseño │ │ │ ││ Duración (semanas) │ 6 │ 7 │ +16.7% ││ Esfuerzo (persona-mes) │ 12 │ 14 │ +16.7% ││ │ │ │ ││ FASE: Desarrollo │ │ │ ││ Duración (semanas) │ 10 │ 11 │ +10.0% ││ Esfuerzo (persona-mes) │ 24 │ 26 │ +8.3% ││ │ │ │ ││ FASE: Pruebas │ │ │ ││ Duración (semanas) │ 5 │ 5 │ 0.0% ││ Esfuerzo (persona-mes) │ 8 │ 8 │ 0.0% ││ │ │ │ ││ FASE: Despliegue │ │ │ ││ Duración (semanas) │ 3 │ 3 │ 0.0% ││ Esfuerzo (persona-mes) │ 4 │ 4 │ 0.0% │└────────────────────────────────────┴──────────┴──────────┴──────────┘
INDICADORES DE DESEMPEÑO:
SPI (Schedule Performance Index) = EV / PV = 0.92→ Proyecto ligeramente retrasado
CPI (Cost Performance Index) = EV / AC = 0.94→ Proyecto ligeramente sobre presupuesto
EAC (Estimate at Completion) = BAC / CPI = $255,319→ Costo final proyectado
Variación de Cronograma (SV) = EV - PV = -$19,200→ Trabajo pendiente equivalente a $19,200
Variación de Costo (CV) = EV - AC = -$15,000→ Sobrecosto de $15,000