Qu es la Ingeniera del Software 1 La






























- Slides: 30
¿Qué es la Ingeniería del Software? “(1) La aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software; es decir la aplicación de la Ingeniería al software. (2) El estudio de enfoques como (1). ” [IEEE, 1993] 1
Aspectos clave en la IS • • Escala del problema Calidad y productividad Consistencia Manejo del cambio • Desafío: Lograr consistentemente alta calidad y productividad en problemas cuya escala puede ser grande y donde pueden ocurrir cambios continuamente es el principal desafío de la Ingeniería del Software. 2
¿Qué es el Software? • Producto que construyen y diseñan los Ingenieros de Software. • Comprende: – Programas – Datos (texto, números, imágenes, sonidos, video) – Documentación. 3
Características del Software • • • Producto y vehículo. Lógico, no físico. Se desarrolla, no se fabrica. No se desgasta, se deteriora. Mayoría hecho a medida, tendencia a reusar. 4
Aplicaciones del Software • • SW de Sistemas SW de Tiempo Real SW de Negocio o Gestión SW de Ingeniería o Científico SW Embebido o Empotrado SW de PC SW de IA SW basado en la Web 5
Mitos del Software • Propagaron confusión e información errónea. Del administrador del proyecto Mitos del SW Del usuario final o cliente Del desarrollador 6
Mitos del Administrador • Los estándares y procedimientos son toda la guía que los Ing. de software necesitan. • Si contamos con la última generación de computadoras tenemos todas las herramientas necesarias. • Si fallamos en la planificación, podemos añadir más programadores y adelantar el tiempo perdido. 7
Mitos del Cliente • Una declaración general de los objetivos del cliente es todo lo necesario para empezar a programar. • Los requisitos cambian continuamente, pero los cambios pueden acomodarse fácilmente porque el software es flexible. 60 – 100 x C o s t e 1, 5 – 6 x 1 x Definición Desarrollo Después de la Entrega 8
Mitos del Desarrollador • Una vez que se escribió el programa y se lo hizo funcionar, el trabajo del Ing. de software está terminado. • No hay forma de comprobar la calidad del software hasta no poder ejecutarlo en alguna máquina. • Lo único que se entrega al terminar el proyecto es el programa funcionando. 9
El Proceso de Desarrollo de Software • ¿Qué es? Marco de trabajo de tareas a realizar para desarrollar SW de alta calidad. • ¿Es sinónimo de Ingeniería de Software? Define un enfoque para desarrollar software en forma ingenieril pero la Ing. de Soft. comprende, además, Métodos y Herramientas. 10
¿ Qué es la Ingeniería del Software? • Tecnología multicapa (Pressman) Herramientas Métodos Proceso Un enfoque de calidad Capa fundamental 11
El Proceso – Visión Genérica Ing. Sistemas Definición Planificación (QUE) Análisis de req. Diseño Desarrollo (COMO) G. de Código Prueba Mant. Correctivo Soporte Mant. Adaptativo (CAMBIOS) Mant. Perfectivo Mant. Preventivo o Reingeniería del Software 12
Modelo Lineal Secuencial • Ciclo de vida clásico, modelo en cascada • + antiguo, + usado • Enfoque sistemático secuencial 13
Modelo Lineal Secuencial • Críticas: – – – • Proyectos reales raras veces se ajustan al modelo. Raras veces cliente expone todos los req. de entrada. Producto operativo al final • Paciencia (cliente) alta. • Todo o nada. Consejo: Usar cuando todos los requerimientos han sido establecidos claramente de entrada o la organización está familiarizada con el dominio. 14
Modelo de Construcción de Prototipos • No están claros de entrada los requisitos. – Sistemas nuevos, poco conocimiento del dominio • Reduce el riesgo. • Iterativo. Hasta cuando se itera? • Working prototype, desechar y empezar con desarrollo de sistema. Escuchar al cliente Construir prototipo Validar prototipo 15
Modelo de Construcción de Prototipos • Críticas: – Producto de mala calidad. Cliente cree que es el sistema. – Peligro de familiarización con malas elecciones iniciales (quick and dirty). • Consejo: – Usar cuando inicialmente no están claros los requisitos. – Definir claramente al inicio las reglas de juego con el cliente. – No ceder a presión del cliente. 16
Modelo de Desarrollo Rápido de Aplicaciones (DRA) • Lineal secuencial con ciclo extremadamente corto. • Candidatos: sistemas que se pueden modularizar => equipos de desarrollo paralelos. • Basado en el uso de componentes y T 4 G. 17
Modelo DRA Equipo # n Modelo de Negocio Equipo # 2 Modelo de Datos Modelo de Negocio Equipo # 1 ¿Qué información? ¿Quién la genera? ¿A dónde va? Modelo de Negocio Modelo de Proceso Modelo de Datos Generación de Aplic. Modelo de Proceso Modelo de Datos Identificación de objetos y relaciones Descripciones de procesos de negocio para ABM de objetos de MD Prueba y Entrega Generación de Aplic. Modelo de Proceso T 4 G + Reusabilidad de Componentes Prueba de componentes nuevos e interfaces. Prueba y Entrega Generación de Aplicación Prueba y Entrega <----------------60 -90 días------------> Tiempo 18
Modelo DRA • Críticas: – Proyectos grandes => gran nro. de personas. – Alto compromiso en tiempo. – No apto para todo tipo de sistema (ej. no modularizable, bajo reuso de componentes). – Desaconsejable cuando existen riesgos tecnológicos altos. 19
Modelos Evolutivos • Se adaptan más fácilmente a los cambios introducidos a lo largo del desarrollo. • Iterativos • En cada iteración se obtienen versiones más completas del SW. • Modelos Evolutivos: – – Modelo Incremental Modelo en Espiral Modelo de Desarrollo Basado en Componentes … 20
Modelo Incremental • Combina lineal secuencial (aplicado repetidamente) con filosofía interactiva de construcción de prototipos. • Cada iteración devuelve un “Incremento” o versión operativa. • Útil cuando no se está seguro de cumplir con plazos de tiempo o se tiene una fecha imposible de cambiar. 21
Modelo Incremental Inc 1 Análisis Diseño Inc 2 Análisis Inc 3 Codif. Prueba Diseño Codif. Análisis Diseño Entrega 1 er Inc. Prueba Codif. Entrega 2 do Inc. Entrega 3 er Inc. Prueba Tiempo 22
Modelo en Espiral 23
Modelo en Espiral • Permite usar el prototipado en todas las etapas de la evolución para reducir el riesgo. • Mantiene el enfoque sistemático de los pasos sugeridos por el lineal secuencial, pero lo incorpora dentro de un marco iterativo más real. • Críticas: – Difícil de convencer a los clientes de que es controlable. – Requiere mucha habilidad para el análisis de riesgos y de esta habilidad depende su éxito. 24
Desarrollo Basado en Componentes • Basado en modelo en Espiral (evolutivo e iterativo) + Tecnologías de Objetos. • Enfatiza la Reusabilidad. Planificación Ident. Comps. candidatos Análisis de Riesgos Comunicación con el Cliente Buscar Comps. en biblioteca F Ingeniería, Construcción y Entrega Evaluación del Cliente Construir V Extraer Colocar en biblioteca Construir iteración 25
Modelo de Métodos Formales • • • Usan notación rigurosa. Especificaciones sin ambigüedades. Útiles para sistemas críticos. Demostraciones formales de propiedades. Dificulta validación con cliente => combinación con otras técnicas semi-formales. • Buen nivel de manejo de Lógica y Algebra. 26
Técnicas de Cuarta Generación (T 4 G) • • • Herramientas que facilitan la realización de especificaciones a alto nivel código fuente. Basadas en Lenguajes de 4 ta Generación (L 4 G). Ventajas: Reducción en tiempo de desarrollo. Lenguaje de Consulta a BD Generador de Pantallas Planillas de Cálculo Generador de Informes Generador de Código Sistema de Administración de Base de Datos Un entorno de desarrollo de software basado en Técnicas de 4 ta Generación 27
Técnicas de Cuarta Generación (T 4 G) • Críticas: – Código ineficiente. – No mas fáciles de usar que L 3 G. – Mantenimiento cuestionable. • Consejo: En sistemas grandes, aunque se usen T 4 G se debe hacer análisis, diseño y pruebas. 28
29
El Proceso Modelo de Madurez de Capacidad (CMM) http: //www. sei. cmu. edu • • • Nivel 1: Inicial Nivel 2: Repetible Nivel 3: Definido Nivel 4: Gestionado Nivel 5: Optimizado 30






























