Desafíos Actuales en el Desarrollo de Software
El desarrollo de software enfrenta crecientes desafíos:
- Sobreexplotación del potencial del hardware.
- Incapacidad de atender la demanda.
- Incapacidad de mantener el software existente.
Responsabilidades de los Ingenieros de Software
Los ingenieros de software necesitan comprender:
- Ambiente de funcionamiento del sistema.
- Alternativas de sistemas.
- Técnicas y herramientas para construir modelos.
Solución de Problemas en el Desarrollo de Software
Pasos para solucionar problemas:
- Formular.
- Analizar.
- Buscar.
- Decidir adecuadamente.
- Especificar.
Objetivos, Requisitos y Restricciones
Los objetivos, requisitos y restricciones guían el proyecto, definen los atributos del sistema y pueden generar conflictos, aumentando la complejidad.
Tipos de Requisitos
- Funcionales: Definen el área funcional que debe soportar el sistema (ejemplos: emitir boleta, operar portón, registrar asientos).
- No funcionales: Establecen restricciones sobre el funcionamiento del sistema (ejemplo: demora en la emisión de boletas).
Casos de Uso
Un caso de uso es una secuencia de eventos que describe todas las posibles acciones entre los actores y el sistema para una función específica.
Diseño de Software
Diseño del Sistema
El diseño del sistema define los objetivos del sistema, descompone el sistema subjetivo y selecciona estrategias para la construcción.
Diseño de Objetos
El diseño de objetos define los objetos e interfaces de los subsistemas, reestructura el modelo para lograr los objetivos y optimiza el modelo.
Actividades de Desarrollo de Software
1. Implementación
Incluye la implementación de atributos y métodos de cada objeto e integra todos los objetos para que funcionen como un solo sistema.
2. Pruebas
- Pruebas de Unidad: Comparan el modelo de diseño con cada objeto y subsistema.
- Pruebas de Integración: Combinan los subsistemas y los comparan con el diseño.
- Pruebas de Sistema: Ejecutan casos típicos y excepcionales, y los comparan con el modelo de requerimientos.
- Objetivo: Descubrir errores que se puedan reparar antes de entregar el sistema.
3. Mantenimiento
Implica mejoras en el sistema, corrección de errores, adaptación a cambios de entorno. Es la actividad más costosa del ciclo de vida del producto de software.
Metodologías de Desarrollo de Software
Modelo Cascada
El modelo cascada sigue una secuencia lineal:
- Requerimientos y análisis.
- Diseño.
- Implementación.
- Pruebas.
- Mantenimiento.
Desarrollo Evolutivo
- Prototipo Evolutivo: Se basa en los requerimientos del cliente y se entrega el sistema.
- Prototipo Desechable: Se centra en la experimentación de los requisitos poco claros o complejos del cliente.
Desarrollo Incremental
Valida el incremento, integra incrementos y valida el sistema. Beneficio: sistema final muy probado y con pocos fallos.
Modelo Espiral
El modelo espiral incluye:
- Definición de objetivos.
- Evaluación y reducción de riesgos.
- Desarrollo y validación.
- Planificación (para determinar si se pasa a otro ciclo).
Proceso Unificado
Se repite a lo largo de cada ciclo y concluye con una versión del producto. Tiene cuatro etapas:
- Inicio.
- Elaboración.
- Construcción.
- Transición.