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. [cite_start]Cada etapa debe terminar antes de que empiece la siguiente. [cite_start]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. [cite_start]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.