View
220
Download
0
Embed Size (px)
Citation preview
Tema 1: Introducción a la Ingeniería de Software
Ingeniería de Sistemas
2012
Índice
• Introducción• La complejidad inherente del software• Algunos principios de la ingeniería del
software• Sistemas de Información
IntroducciónQué es ingeniería?
Introducción¿Qué es ingeniería?
• Es el conjunto de conocimientos y técnicas científicas aplicadas a la invención, perfeccionamiento y utilización de la técnica industrial para la resolución u optimización de problemas.
Qué es ser Ingeniero?• Saber realizar de diseños y soluciones tecnológicas a
necesidades sociales, industriales o económicas.
• Saber identificar y comprender los obstáculos más importantes para poder realizar un buen diseño (limitaciones físicas o técnicas, de coste, de flexibilidad, estéticas y comerciales).
• Saber utilizar el conocimiento de la ciencia y la experiencia apropiada para encontrar las mejores soluciones a los problemas concretos
IntroducciónQué es software?
IntroducciónQué es software?
• Conjunto de programas que proporcionan una función y un rendimiento esperados.
• Conjunto de estructuras de datos que permiten a los programas manipular adecuadamente la información.
• Conjunto de documentos que describen el funcionamiento del SI (Sistema de Información).
• Tipos: • ◦Genéricos: Productos de uso genérico (procesadores, bases de datos,
etc.)• ◦A medida: Productos específicos para un cliente particular
IntroducciónQué es software?
Características:• No tiene forma física• Se desarrolla, no se fabrica.• Los costes del SW son de ingeniería. No de fabricación• El SW no se rompe, se deteriora.• La complejidad del mantenimiento del SW es mucho más grande
que la del HW.• Si el HW se rompe se cambia por otro y listo Hay piezas de
recambio.
• Si el SW se deteriora, con cada cambio que se realiza se deteriore aún más No hay piezas de recambio.
Introducción ¿Qué es Ingeniería del Software?
• Definición:“La Ingeniería del Software es la disciplina de ingeniería encargada de todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema, hasta el mantenimiento del sistema tras su puesta en marcha.”
Ingeniería del Software – Ian Sommerville
Introducción ¿Qué es Ingeniería del Software?
• Disciplina de ingenieríao Los ingenieros de software usan las métodos,
herramientas, procedimientos y paradigmas para solucionar los problemas que aparecen.
o Incluso teniendo en cuenta restricciones económicas y de organización
• Producción de softwareo Planificación de proyectoso Administración de proyectos softwareo Procesos técnicos de desarrollo de softwareo Dirección de proyectos
Introducción ¿Qué es Ingeniería del Software?
• Proceso Software: procedimiento formal para producir algún resultado.
Introducción ¿Qué es Ingeniería del Software?
• Herramienta: instrumento para realizar algo de mejor manera.
Introducción ¿Qué es Ingeniería del Software?
• Paradigma: Representa una filosofía para la construcción de software
Introducción ¿Quién hace Ingeniería del Software?
Introducción¿ Por qué surge la Ing. del Software?
• Para superar la crisis del software y terminar con los mitos del software hasta ahora existentes.
• Para acabar con las malas prácticas de desarrollo y mantenimiento de software llevadas a cabo por las empresas.
• Crear software de calidad.
Introducción Crisis del Software
• Dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables(Dijkstra–1968)
• Causas:
Los proyectos no terminaban en plazoLos proyectos no se ajustaban al presupuesto inicialSoftware que no cumplía las especificacionesCódigo inmantenible que dificultaba la gestión y evolución del proyecto
• Consecuencias:
Baja Calidad del SoftwareTiempo y Presupuesto ExcedidoConfiabilidad CuestionableAltos requerimientos del personal para el desarrollo y el mantenimiento
Introducción Crisis del Software
• Diferencia entre error defecto y fallo.
Introducción Mitos del SW –Sobre la gestión
Introducción Mitos del SW –Sobre la gestión
Introducción Mitos del SW –Sobre la gestión
Introducción Mitos del SW –Sobre el cliente
Introducción Mitos del SW –Sobre el cliente
Introducción Mitos del SW –Sobre desarrolladores
Introducción Mitos del SW –Sobre desarrolladores
IntroducciónMalas prácticas de desarrollo y mantenimiento
• Planificación y estimaciones imprecisas:No se recopilan datos de proyectos pasados.Se invierte más dinero en mantenimiento que en formación de los ingenieros en las nuevas tecnologías de desarrollo.No se documenta lo suficiente.Se pasa directamente a la codificación.
IntroducciónMalas prácticas de desarrollo y mantenimiento
• Procesos software improvisados– No se siguen rigurosamente las especificaciones
• No se hace planificación de riesgos.– Se resuelven crisis inmediatas Se apagan fuegos
• Se sacrifica funcionalidad y calidad del producto para cumplir plazos.– No se planifica debidamente.
• No se realizan pruebas, verificaciones o revisiones del SW
IntroducciónMalas prácticas de desarrollo y mantenimiento
• Síntomas:– Baja calidad del software desarrollado– Alto grado de desconfianza e insatisfacción en el cliente
• Empresas inmaduras En fase artesanal.
– Se exceden en los plazos y presupuestos previstos– 90% de los proyectos no consiguen los objetivos propuestos– 40% fracasan completamente– 29% nunca se entregan
Introducción¿Qué propone la IS? ¡ser Ingenieros!
• Artesano Ingeniero.
• Para ello se debe:– Aplicar métodos, técnicas y herramientas de
desarrollo– Adoptar estándares de desarrollo– Utilizar la experiencia acumulada– Documentación
Introducción¿Qué propone la IS? ¡usar Estándares!
• ¿Qué conseguimos adoptando estándares de desarrollo?• Mejorar el proceso:
– Reducción de costes– Reducción del tiempo de desarrollo– Reducción de riesgos
• Mejora de la calidad del producto• Protección del cliente• Protección de la organización Aumenta su
competitividad
Índice
• Introducción
• La complejidad inherente del software
• Algunos principios de la ingeniería del software
• Sistemas de Información
Complejidad del SW
• ¿Por qué es complejo el Software?
– Brooks (1987): “La complejidad del Software es una propiedad esencial y no accidental”
– Complejidad accidental: se debe a la manera en que intentamos solucionar el problema
– Complejidad esencial: es inherente al problema en sí mismo.
• Tres motivos:
– La complejidad del dominio del problema– La dificultad de controlar el proceso de desarrollo– Los problemas para caracterizar sistemas discretos
Complejidad del SW
Complejidad del SWComplejidad del dominio del problema
• Los problemas del mundo real son complejos (miles de requisitos compitiendo y quizás contradictorios)
• Se añaden requerimientos no funcionales: eficiencia, coste, fiabilidad, robustez...
• Diferente perspectiva del mismo problema entre los usuarios y los desarrolladores
• Modificación de los requisitos / Inserción de nuevos requisitos
• ¡Los requisitos cambian durante el desarrollo!
Complejidad del SWDificultad de controlar el proceso de desarrollo
• Surgen incidencias– Algunas previstas y otras no
• Miles de líneas de código– Intentar la reutilización
• Surgen diferentes versiones del producto• Disminuir la complejidad mediante el “divide y vencerás”
– División en módulos– Aún así, la creación de muchos módulos puede ser
inmanejable
Complejidad del SWDificultad de controlar el proceso de desarrollo