Fundamentos y Modelos de Desarrollo de Software: Calidad y Metodologías Esenciales
Enviado por Programa Chuletas y clasificado en Diseño e Ingeniería
Escrito el en español con un tamaño de 8,27 KB
Conceptos Fundamentales de Ingeniería de Software
Atributos de Calidad de Requisitos (ATREES)
Los requisitos de software deben poseer las siguientes características para ser considerados de alta calidad:
- Correctos: Reflejan fielmente las necesidades del usuario.
- No ambiguos: Tienen una única interpretación posible.
- Completos: Incluyen todas las funcionalidades y restricciones necesarias.
- Verificables: Es posible comprobar si el sistema los cumple.
- Consistentes: No presentan contradicciones internas ni con otros requisitos.
- Modificables: Permiten cambios de forma sencilla y controlada.
- Conciso: Expresados de manera clara y sin redundancias.
- Organizados: Estructurados lógicamente para facilitar su comprensión.
- Explorables: Fáciles de navegar y consultar.
- Entendibles por el cliente: Claros para los usuarios no técnicos.
- Independientes del diseño: Describen el qué, no el cómo.
Factores de Calidad del Software
La calidad del software se evalúa mediante diversos factores:
- Corrección: El grado en que el software cumple su especificación.
- Fiabilidad: La capacidad del software para funcionar sin fallos durante un período de tiempo.
- Eficiencia: El uso óptimo de los recursos del sistema.
- Integridad: La protección contra accesos no autorizados.
- Facilidad de uso: La sencillez con la que los usuarios pueden aprender y operar el software.
- Facilidad de mantenimiento: La facilidad para corregir errores, mejorar o adaptar el software.
- Flexibilidad: La facilidad para modificar el software para nuevos requisitos.
- Facilidad de prueba: La facilidad con la que se pueden probar los componentes del software.
- Portabilidad: La capacidad del software para ser transferido a diferentes entornos.
- Reusabilidad: La capacidad de los componentes del software para ser utilizados en otras aplicaciones.
- Facilidad de interoperación: La capacidad del software para interactuar con otros sistemas.
Ciclo de Vida del Software
El Ciclo de Vida del Software es la sucesión de etapas por las que pasa un producto de software durante su existencia. Su objetivo es determinar el orden de las etapas involucradas y los criterios de transición asociados entre estas etapas, desde la concepción hasta la retirada del sistema.
Ingeniería de Software
La Ingeniería de Software es la aplicación del conocimiento científico al diseño y construcción de programas de computador y la documentación asociada para su desarrollo, operación y mantenimiento.
Modelos de Desarrollo de Software
Los modelos de desarrollo de software definen los enfoques y las fases para la creación de sistemas, cada uno con sus propias ventajas y desventajas.
Modelo en Cascada
Descripción
El Modelo en Cascada es un enfoque secuencial lineal donde cada fase comienza solo cuando la fase anterior ha terminado. Se deben cumplir los objetivos de una etapa para pasar a la siguiente, y cada paso genera documentación y entradas para la fase subsiguiente.
Etapas
- Planificación
- Análisis de Requisitos
- Diseño
- Codificación
- Prueba
- Mantenimiento
Pros
- Estructura clara y fácil de entender.
- Énfasis en la documentación.
- Previene que se sobrepasen las fechas si los requisitos son estables.
Contras
- Poca flexibilidad secuencial.
- Dificultades para establecer todos los requisitos al comienzo del proyecto.
- Errores detectados tarde en el ciclo de vida, lo que aumenta el costo de corrección.
- Mantenimiento reactivo (parcheo) debido a la rigidez.
Modelo Clásico con Prototipado
Descripción
Este modelo implica la creación de una primera versión del producto (prototipo) que incorpora algunas características clave del sistema final. El prototipo se refina iterativamente con la retroalimentación del cliente.
Pros
- Ayuda a establecer y refinar los requisitos del sistema.
- Ayuda a los desarrolladores a mejorar la comprensión del producto.
- Reduce el riesgo de un mantenimiento costoso por parcheo.
Contras
- El cliente puede confundir el prototipo con el producto final.
- Requiere una inversión adicional de tiempo y recursos en la fase de prototipado.
- Puede llevar a malas decisiones de diseño si el prototipo no se gestiona adecuadamente.
Modelo de Programación Automática
Descripción
Este modelo busca introducir la automatización en el proceso de desarrollo de software, utilizando lenguajes formales de especificación que pueden servir como prototipo del producto. La validación y el mantenimiento recaen principalmente sobre la especificación formal.
Pros
- El mantenimiento mejora la calidad del software al centrarse en la especificación.
- Reduce los costes de desarrollo a largo plazo.
Contras
- Mayor implicación del cliente en la fase de especificación formal.
- Requiere un compromiso entre las ventajas obtenidas y el nivel de formalidad de la especificación.
- La tecnología para una automatización completa puede no estar completamente madura o disponible para todos los dominios.
Modelo Incremental
Descripción
El Modelo Incremental consiste en secuencias de aplicaciones del ciclo clásico, donde cada iteración produce un incremento funcional del producto. El software se construye y entrega en partes, añadiendo funcionalidad en cada incremento.
Pros
- Útil cuando no se dispone de personal suficiente para una implementación completa de una sola vez.
- Cada entrega permite la evaluación temprana por parte del usuario, facilitando la retroalimentación.
- Reduce el riesgo al entregar funcionalidades en etapas.
Contras
- La dificultad de determinar el incremento requerido en cada iteración y cómo integrar las partes.
- Puede requerir una planificación y arquitectura iniciales robustas para asegurar la coherencia.
Modelo Espiral
Descripción
El Modelo Espiral es un modelo iterativo, interactivo y evolutivo que combina elementos del modelo en cascada y del prototipado. El prototipo no es un simple modelo, sino que evoluciona hacia el producto final a través de ciclos repetitivos.
Fases
- Planificación
- Análisis de Riesgos
- Ingeniería (Desarrollo)
- Evaluación del Cliente
Pros
- El prototipo evoluciona hacia el producto final, lo que permite una adaptación continua.
- Gestión de riesgos integrada en cada fase.
- Adecuado para proyectos grandes y complejos con requisitos cambiantes.
Contras
- La evaluación de los riesgos puede ser muy difícil y requiere experiencia.
- Es un modelo complejo y menos común para equipos pequeños o proyectos con requisitos estables.
- Requiere una considerable experiencia en gestión de riesgos.
Otros Modelos y Enfoques
Modelo de Ensamblaje (Basado en Componentes)
Este modelo comparte características con el modelo espiral y es evolutivo con un enfoque interactivo, centrándose en la reutilización de componentes de software existentes para construir sistemas.
Programación Extrema (XP - eXtreme Programming)
XP es una metodología ágil que se enfoca en la entrega rápida y continua de software de alta calidad, adaptándose a los cambios de requisitos. Se caracteriza por prácticas como el desarrollo guiado por pruebas, programación en parejas, integración continua y ciclos de desarrollo cortos.