Fundamentos de Ingeniería de Software: Ciclo de Vida, UML y Gestión de Proyectos
Ingeniería de Software
Es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente software fiable y que funcione eficientemente sobre máquinas reales.
Capas de la Ingeniería del Software
- Enfoque de calidad: Base fundamental de todo desarrollo.
- Procesos: Es la unión que mantiene juntas las capas de tecnología y que permite un desarrollo racional y oportuno de la ingeniería del software.
- Métodos: Indican «cómo» construir técnicamente el software. Abarcan una gran gama de tareas que incluyen especificación de requisitos, diseño, construcción de programas, pruebas y mantenimiento.
- Herramientas: Proporcionan un enfoque automático o semiautomático para el proceso y los métodos.
Ciclo de Vida Clásico del Desarrollo de Software
- Investigación preliminar
- Revisión de requisitos
- Diseño
- Programación
- Pruebas
- Puesta en operación
- Mantenimiento
Fase Inicial del Proyecto
Dinámica: Discusión y estudio de las etapas del ciclo de vida clásico del desarrollo del software.
Meta de la etapa: Presentación de la propuesta al cliente y firma del contrato de trabajo.
Actividades primarias:
- Investigación del problema.
- Definición de alternativas.
- Estudio de costo-beneficio.
- Elaboración de la propuesta.
- Presentación al cliente.
- Negociación y firma de contratos.
Investigación del Problema
- ¿Qué interesa relevar?: Requerimientos, datos de volúmenes y cargas de trabajo, procesos, tiempos, problemas existentes, inventarios (equipo, infraestructura, personal), herramientas estadísticas, entre otros.
- Técnicas de obtención de datos: Entrevistas, cuestionarios, observaciones y recopilación de documentación.
- Documentos útiles del cliente: Manual de métodos y procedimientos, manual de puestos y funciones, y organigramas.
- Sugerencias para el cliente: Evaluar la estructura de la empresa para sugerirle el esquema adecuado que le permita tomar decisiones relativas al proyecto, así como revisar y aceptar o rechazar todos los entregables.
Costos, Beneficios y Elaboración de la Propuesta
- Costos y beneficios: Identificación (tangibles e intangibles), balance de costo-beneficio (retornos de inversión, flujos de efectivo), herramientas de cálculo y determinación del costo de desarrollo.
- Elaboración de la propuesta: Involucra a la empresa proveedora, al cliente, la negociación y la presentación formal.
- Dificultades en la elaboración: Experiencia requerida para la estimación de tiempos y costos relativos al sistema planteado, adecuada definición del problema, comprensión profunda del proceso de negocio actual y negociación final con el cliente.
Modelado con UML (Lenguaje Unificado de Modelado)
El UML prescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos. Describe la semántica esencial de lo que estos diagramas y símbolos representan.
- Casos de uso: Representan la funcionalidad del sistema desde el punto de vista del usuario y definen las fronteras del sistema. Se componen de:
- Texto: Descripciones narrativas de los procesos.
- Gráficos: Representación gráfica de los procesos e interacciones.
- Modelo conceptual: Identificación de componentes, atributos y asociaciones del dominio que se juzgan importantes.
- Diagrama de colaboración: Muestra la asignación de responsabilidades entre los objetos y su interacción a través del paso de mensajes.
- Diagrama de secuencia: Representa el comportamiento del sistema en términos de interacciones temporales entre un conjunto de objetos. Se utiliza para identificar objetos en los dominios de la aplicación e implementación.
- Diagramas de diseño de clases: Se usan para modelar la estructura estática de un sistema en términos de objetos con sus atributos, métodos y relaciones. Muestran formalmente las definiciones de las clases.
Personal y Participantes del Proyecto
- Gestores superiores: Definen los aspectos de negocio que a menudo tienen una significativa influencia en la dirección del proyecto.
- Gestores (técnicos) del proyecto: Deben planificar, motivar, organizar y controlar a los profesionales que realizan el trabajo de software.
- Profesionales: Proporcionan las capacidades técnicas necesarias para la ingeniería de un producto o aplicación.
- Clientes: Especifican los requisitos para la ingeniería del software y otros elementos con impacto en el alcance global.
- Usuarios finales: Interactúan directamente con el software una vez que este ha sido entregado para su fase de producción.