Upload
tomasa-gramajo
View
54
Download
2
Embed Size (px)
Citation preview
Ingeniería de Software IConceptos Básicos de la Ingeniería de Software
Objetivos
Introducir los conceptos fundamentales de la disciplina
Conocer las características del Software
Fundamentar el desarrollo de software a partir de la Ingeniería de Software
Contenido
Generalidades de la Ingeniería de Software
Grandes proyectos de Software
Características del producto de software
Principios, métodos, herramientas y metodologías
Generalidades de la IS
Qué es la Ingeniería de Software ??
Es el área de las ciencias de la computación que trata con la construcción de sistemas de software, los cuales son tan grandes y complejos que se construyen con equipos de ingenieros [Ghezzi 91].
El establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales (Fritz Bauer)[NAU69].
Es un conjunto de tres elementos claves – métodos, herramientas y procedimientos – que facilitan el control del proceso de desarrollo del software para obtener un producto de calidad de una forma productiva (Pressman) [PRE25].
Generalidades de la IS
Porqué la Ingeniería de Software ??
En los inicios, el desarrollo de sistemas basados en computador ponía énfasis en el Hardware más que en el Software.
El desarrollo de software se veía más bien como un “arte”
Hoy, el mayor costo y riesgo del desarrollo de sistemas basados en computador no están en el Hardware, sino que en el Software.
El desarrollo de Software ya no implica sólo el desarrollo de algunos programas, si no que sistemas cada vez más complejos de millones de líneas de código, interfaces e interacción con sistemas de Bases de Datos.
El componente SOFTWARE es cada día más crítico para el negocio
Generalidades de la IS
Historias de terror
El Bank of America gastó US$23 M en un proyecto a 5 años. Se terminó gastando mas de US$60 M para finalmente abandonar el proyecto. Pérdidas totales estimadas en mas de US$1000 M.
El bombardero B1 requirió US$ 1000 M más de lo proyectado para mejorar sus sistema de defensa
AllState (seguros) comenzó en 1982 un proyecto de automatización integral de sus operaciones de 5 años de duración y US$8 M de presupuesto. Fue abandonado en 1993 después de gastar US$100 M.
Blue Cross (isapre norteamericana) perdió más de US$60 M en pagos incorrectos debido a un error en el software por el que habían pagado mas de US$200 M.
Generalidades de la IS
Porqué la Ingeniería de Software ??
Porqué lleva tanto tiempo terminar los Sistemas ?
Porqué tiene un costo tan elevado ?
Porqué no podemos encontrar todos los errores antes de liberar el Software ?Porqué no cumplimos los plazos de entrega ?
Porqué no entregamos un software de buena calidad ?
Son algunas de las preguntas que motivan el desarrollo de la Ingeniería de Software, como la disciplina que permite desarrollar un producto de software en un tiempo prudente, con costos razonables, que sea fiable y de buena calidad.
Grandes proyectos de software
Qué es un proyecto grande de software ?
Cuántas líneas de código tiene Windows NT ?Entre 6 y 10 Millones
El software del Bombardero B2 tiene 3.5 Millones
Un switch telefónico típico tiene 2 Millones
Como referencia, 1 Millón de líneas de código (1MLOC) equivale a:
13.000 páginas (75 líneas por página)
26 tomos de 500 páginas cada uno
22 horas para imprimir (10 pp/min)
Medio día para recompilar
Particularidades de estos sistemas
ESCALA: Una sola persona no puede entenderlo todo
COMPLEJIDAD: Requiere trabajo en equipo problemas humanos, coordinación, motivación, etc.CAMBIO: Durante y después del desarrollo
VIDA: Años, décadas
IMPRECISIÓN: Requerimientos, Diseños, programas, resultados
Grandes proyectos de software
Cuál es el problema ?
Problemas de mantenimiento
Altísimas probabilidades de errores sólo en ESCRIBIR el código
Enorme cantidad de tiempo para incorporar modificaciones o nuevos requerimientos
Atrasos (Eje: Windows95 liberado recién en 1996)
Excesivo gasto en mantenimiento (En promedio, se gasta el 60% de los recursos en mantenimiento)
Altos costos
Recurso Humano: Difícil cuantificación; A veces muy escaso o simplemente no existe
Metodologías: Variadas y difíciles de comparar entre si; El avance en el desarrollo o generación de nuevas metodologías es tremendamente lento respecto al avance tecnológico
Herramientas de productividad: No existe gran variedad, aunque si gran cantidad; productos propietarios; son caras; no siempre son útiles.
Planificación: Siempre se hace Nunca se cumple; Se sacrifica rápidamente las actividades planificadas debido a las urgencias del negocio.
Grandes proyectos de software
Qué es Software ?
1) Instrucciones, o programas de computador, que cuando se ejecutan proporcionan la función y el comportamiento deseado
Características del Software
2) Estructuras de datos que facilitan a los programas manipular adecuadamente la información
3) Documentos que describen la operación y el uso de los programas
Software es 1) , 2) y 3)
El Software se desarrolla, no se fabrica, no se manufactura
Características del Software
El Software no se desgasta, pero sufre de envejecimiento
El Software no se desgasta, pero se estropea
Durante la vida del software, se incorporan cambios que provocan nuevos erroresNo hay piezas de repuestos para el SW, como en el HW el mantenimiento del SW tiene una complejidad mayor que el mantenimiento del HW
Los diferentes tipos de SW contemplan:
Características del Software
SW de Sistemas: SW que sirve para otros SW
SW de Tiempo Real: SW orientado a medir, analizar y controlar sucesos del mundo real, conforme suceden en la realidad
SW de Gestión: SW orientado al procesamiento de información comercial y administrativo. (SW transaccional – SW de Gestión)
SW Científico y de Ingeniería: SW para la astronomía, vulcanología, biología molecular, CAD, CASE, simuladores, fabricación automática, etc.
SW Empotrado: SW residente en ROM que se utiliza para controlar productos y sistemas de los mercados industriales y de consumo: Microondas, automóvil, etc.
SW de PC : Procesadores de texto, planillas electrónicas, etc.
SW de IA (Inteligencia Artificial): Sistemas expertos, Sistemas basados en el conocimiento, etc.
Cualquier producto de Software debe contar con las siguientes características
Características del Software
Correctitud: Grado en que el producto de SW satisface los requerimientos para lo cual fue concebido. Es el mínimo nivel de calidad exigible
Confiabilidad: Grado en que se puede esperar que el producto de SW realice las funciones esperadas, con la precisión requerida
Robustez: Capacidad del SW para comportarse de manera “razonable” ante situaciones inesperadas.
Portabilidad: Capacidad (Esfuerzo que se debe hacer para...) del SW para operar en diferentes ambientes (HW y SO)
Reusabilidad:Grado en que el SW, o partes del SW, se pueden utilizar en otras aplicaciones, distintas al propósito original por el que fueron concebidos
Eficiencia: La cantidad de recursos de computadora y de código requerido por el SW para llevar a cabo sus funciones (HW más poderoso v/s Algoritmos de Orden n2, n o constante)
QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ?????
Principios, métodos, herramientas y metodología
La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo
Qué significa “dar un enfoque de ingeniería” ???
Significa construir productos de SW....
Basándonos en los principios de la Ingeniería de Software
Aplicando los métodos adecuados a cada una de las etapas del proceso de desarrollo
Utilizando las herramientas adecuadas, que nos permitirán aplicar los métodos de manera correcta
Principios, métodos, herramientas y metodología
• Manejo formal del proceso de desarrollo
• Documentación formal
• Trazabilidad
• Manejo de configuración y control de versiones
QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ?????
La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo
• Análisis cuidadoso del problema
• Diseño cuidadoso usando los principios del diseño (Abstracción, ocultamiento, etc.)
• Implementación cuidadosa
• Pruebas rigurosas
• Planificación y control del proyecto
Principios, métodos, herramientas y metodología
En un proyecto de SW se genera, además del código, muchos otros documentos....
QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ?????
La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo
• Requerimientos formales
• Diseño de alto nivel y diseño detallado
• Plan y casos de pruebas
• Documentación de usuarios
• Informes de errores y correcciones
• Plan de mantenimiento
Principios, métodos, herramientas y metodologíaLa Ingeniería en general ataca problemas prácticos REALES
Genera soluciones razonables en términos de costos, uso de recursos, etc.
Tiene su base en la ciencia: Resultados repetibles, usa modelos matemáticos (es formal)
Principios, métodos, herramientas y metodologíaLa IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas
Principios
Proposiciones o verdades que rigen el desarrollo
Ej: Principios del análisis de requisitos, principios del diseño
Rigor y formalidad
• Grados de rigurosidad
• Sistematicidad
• Fundamentos matemáticos (métricas, medición de objetivos, estimaciones, etc.)
Separación de intereses
• División del problema en partes
• Generación de las partes que conforman el todo
Principios, métodos, herramientas y metodologíaLa IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas
Principios
Proposiciones o verdades que rigen el desarrollo
Ej: Principios del análisis de requisitos, principios del diseño
Modularidad
• Tratar cada parte del todo como una entidad independiente de las otras partes
• Posibilidad cierta de integrar las partes para formar el todo
• Cohesión y acoplamiento
Abstracción
• Formulación de modelos que representen la realidad
• Identificación entre lo relevante y lo desechable
Principios, métodos, herramientas y metodologíaLa IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas
Principios
Proposiciones o verdades que rigen el desarrollo
Ej: Principios del análisis de requisitos, principios del diseño
Anticipación al cambio
• Proyección de futuro
• Incorporación de cambios
• Mantención y Evolución
Generalidad
• Descubrir los detalles que pueden ser generalizables
• Potencial de reutilización
Principios, métodos, herramientas y metodologíaLa IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas
Principios
Proposiciones o verdades que rigen el desarrollo
Ej: Principios del análisis de requisitos, principios del diseño
Incrementalidad
• Desarrollo step by step
• Desarrollo de versiones incrementales
Principios, métodos, herramientas y metodologíaLa IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas
Métodos
Indican el COMO construir técnicamente el SW.
Los métodos abarcan la planificación, estimación de proyectos, análisis, diseño, arquitectura, codificación, prueba y mantenimiento.
Ej:Análisis orientado a objetos, Análisis estructurado moderno
Herramientas
Las herramientas soportan la aplicación de la metodología
Ej: Herramientas CASE
Conclusiones
POR LO TANTO....
Ingeniería de Software
Disciplina que relaciona métodos, metodologías y herramientas necesarias para la construcción de grandes y complejos productos de Software, pero de alta calidad
Software
Producto del proceso de desarrollo (aplicaciones ejecutables) y TODA la información necesaria para su implementación y utilización
Conclusiones
En general el proceso de construcción de un producto de SW comprende las etapas de...
• Análisis y especificación de requisitos
Queremos SW que se use. Queremos usuarios contentos (Correctitud)
• Diseño del SW
Queremos diseños de acuerdo a los requisitos. Queremos diseños realistas
• Construcción
Programación eficiente y de acuerdo a las especificaciones de diseño
• Verificación y Validación
Queremos productos confiables, que satisfagan las especificaciones de diseño
• Apoyo en el computador
Queremos hacer todo esto de la manera más eficiente posible