1. Conceptos Generales y Contexto
La Ingeniería del Software (IS) no es solo «programar». Según el IEEE (1993), es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software.
Hito histórico: El término nació en 1968 en una conferencia de la OTAN para abordar la llamada «crisis del software».
Dato de examen: Diferencia bien entre «proceso» (el qué se hace) y «metodología» (el cómo se hace).
2. Etapas del Ciclo de Vida (SDLC)
Casi todos los modelos comparten estas fases:
- Análisis de Requisitos: Es la fase más crítica. Se genera la ERS (Especificación de Requisitos del Sistema).
Estándar clave: IEEE Std. 830-1998 para la creación de la ERS.
Estimación: El modelo más famoso es COCOMO (Constructive Cost Model).
Diseño y Arquitectura: Se define el «cómo» se construirá. El Arquitecto usa diagramas (clases, secuencia, base de datos) y herramientas CASE (Computer Aided Software Engineering).
Programación/Codificación: Traducción del diseño a código fuente.
Pruebas (V&V): Verificación (¿estamos construyendo el producto correctamente?) y Validación (¿estamos construyendo el producto que el cliente quiere?).
Mantenimiento: ¡Atención aquí! Supone aproximadamente 2/3 del tiempo total del ciclo de vida. Existen 4 tipos:
Correctivo: Arreglar fallos.
Adaptativo: Cambios por el entorno (ej. nuevo SO).
Evolutivo: Nuevas funcionalidades.
Perfectivo: Mejora de calidad interna (refactorización).
3. Modelos de Desarrollo
Aquí es donde las oposiciones suelen profundizar más. Debes conocer las diferencias visuales y procedimentales.
Modelo en Cascada (Clásico): Rígido. Cada etapa debe terminar antes de que empiece la siguiente. Su mayor problema es que los errores se detectan muy tarde (en la fase de pruebas), disparando los costes de corrección.
Modelo de Prototipos: Ideal cuando el cliente no tiene claros los requisitos. Se crea una versión rápida para obtener feedback temprano.
Modelo en Espiral (Boehm, 1988): Su característica principal es el Análisis de Riesgos en cada iteración. Se divide en cuatro cuadrantes: Objetivos, Riesgos, Desarrollo y Planificación.
Desarrollo Incremental: Se entrega el software por partes funcionales (incrementos).
RUP (Rational Unified Process): Un marco de trabajo pesado, centrado en la arquitectura y dirigido por Casos de Uso. Se divide en 4 fases: Inicio, Elaboración, Construcción y Transición.
- Desarrollo Ágil: Basado en el Manifiesto Ágil (2001). Prioriza individuos e interacciones sobre procesos, y software funcionando sobre documentación extensiva.
4. El Estándar ISO/IEC 12207
Es el estándar internacional que regula los procesos del ciclo de vida del software. Se divide en tres tipos de procesos:
Principales: Adquisición, Suministro, Desarrollo, Operación y Mantenimiento.
De Apoyo: Documentación, Gestión de la Configuración, Verificación, Validación, etc.
Organizativos: Gestión, Infraestructura, Mejora y Formación.
