Fundamentos de Ingeniería de Software y Gestión de Proyectos: Modelos, Calidad y Casos Prácticos
Características del Software
- El software no se desgasta y no es sensible a los problemas ambientales.
- Un fallo en el software suele indicar un error de diseño o de aplicación.
- El mantenimiento de software es más complejo que el de hardware.
- Actualmente, el software se orienta a objetos y fomenta la reutilización, lo que reduce costos y mejora los diseños.
Componentes de un Sistema Informático
- Hardware
- Software
- Información
- Usuarios
- Tareas
- Documentación
Tipos de Aplicaciones de Software
- Software Básico
- Tiempo Real
- Comerciales
- Ciencia e Ingeniería
- Software Embebido
- Software para Computadoras Personales
- Inteligencia Artificial (IA)
Definición de Ingeniería de Software
La Ingeniería de Software es el establecimiento y uso de principios de ingeniería para poder obtener económicamente un software que sea confiable y funcione eficientemente en máquinas reales.
Paradigmas de la Ingeniería de Software
Cuatro paradigmas principales de la Ingeniería de Software:
- Ciclo de Vida Clásico (Modelo de Cascada)
- Prototipos
- Espiral
- Técnicas de Cuarta Generación (4GL)
Modelo de Cascada (Ciclo de Vida Clásico)
Basado en el diseño clásico de las fases de ingeniería.
Fases
- Ingeniería de Sistemas
- Análisis de Requisitos
- Definición
- Diseño
- Codificación
- Pruebas
- Mantenimiento
Problemas
- Los proyectos reales rara vez siguen el flujo secuencial propuesto por el modelo.
- Es difícil establecer todos los requisitos de forma explícita al comienzo del proyecto.
- Siempre hay una incertidumbre natural al inicio del proyecto, y el cliente debe tener paciencia.
- Una versión ejecutable del software solo está disponible en una etapa avanzada de desarrollo.
- Los desarrolladores a menudo están innecesariamente inactivos debido a estados de bloqueo.
Modelo de Prototipos
Proceso
- Obtención de los requisitos.
- Diseño rápido.
- Construcción del prototipo.
- Evaluación del prototipo.
- Refinamiento del prototipo.
- Iteración (el prototipo construido puede adaptarse a las necesidades del usuario, puede descartarse o formar parte del producto final).
Problema
- El cliente insiste en que, con ligeras modificaciones, las decisiones y soluciones improvisadas formen parte del producto final.
Modelo Espiral
Fases
- Definición de los objetivos: Especificación de los objetivos específicos de esta fase.
- Evaluación de riesgos: Identificación y resolución de los principales riesgos.
- Desarrollo y validación.
- Planificación.
Lenguajes de Cuarta Generación (4GL)
Herramientas de Alto Nivel de Especificación (4GL)
- Consulta de bases de datos.
- Generación de informes.
- Manipulación de datos.
- Definición e interacción con pantallas.
- Generación de código.
Dominio Predominante
- Sistemas de información empresarial.
- Sistemas de buena productividad para pequeñas y medianas empresas.
Problemas Específicos
- Para sistemas grandes, requiere mucho tiempo.
- Sigue siendo necesaria la gestión de proyectos.
Calidad y Productividad en Ingeniería de Software
Definiciones
- Calidad: La capacidad del producto para satisfacer las necesidades explícitas e implícitas, y las condiciones especificadas.
- Productividad: La capacidad de optimizar costos y rendimiento.
- La garantía de calidad es la medida de la madurez de la ingeniería de software, llevando a la organización a comprometerse con la calidad.
Causas de Inmadurez y Soluciones
- Causas de inmadurez: Problemas de presupuesto, tiempo excedido, problemas con la calidad del producto.
- Solución: La implementación de un método y un proceso con las herramientas adecuadas, y la evolución constante de este proceso de desarrollo.
CMM – Capability Maturity Model
El CMM (Capability Maturity Model) es un modelo para evaluar la madurez de los procesos de software de una organización y para identificar las prácticas clave que son necesarias para aumentar la madurez de estos procesos.
Niveles de Madurez
- 1 – Inicio: Proceso incontrolado e impredecible.
- 2 – Repetible: Procesos disciplinados.
- 3 – Definición: Proceso consistente y estandarizado.
- 4 – Gestionado: Proceso predecible y controlado.
- 5 – Optimización: Proceso de mejora continua.
CMMI Nivel 2
Acciones para la Implementación de la Metodología
- Capacitación en Gestión Conceptual de Proyectos.
- Definición de las herramientas que componen la metodología.
- Establecimiento de un calendario de aplicación de la metodología.
- Formación de gestores de proyectos.
- Implementación de la metodología.
Formas de Ajustar la Metodología
- Cronograma para la aplicación.
- Indicadores.