Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

35
Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012

Transcript of Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Page 1: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Tema 1: Introducción a la Ingeniería de Software

Ingeniería de Sistemas

2012

Page 2: 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

Page 3: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

IntroducciónQué es ingeniería?

Page 4: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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.

Page 5: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 6: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

IntroducciónQué es software?

Page 7: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 8: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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.

Page 9: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 10: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 11: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción ¿Qué es Ingeniería del Software?

• Proceso Software: procedimiento formal para producir algún resultado.

Page 12: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción ¿Qué es Ingeniería del Software?

• Herramienta: instrumento para realizar algo de mejor manera.

Page 13: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción ¿Qué es Ingeniería del Software?

• Paradigma: Representa una filosofía para la construcción de software

Page 14: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción ¿Quién hace Ingeniería del Software?

Page 15: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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.

Page 16: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 17: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Crisis del Software

• Diferencia entre error defecto y fallo.

Page 18: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre la gestión

Page 19: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre la gestión

Page 20: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre la gestión

Page 21: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre el cliente

Page 22: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre el cliente

Page 23: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre desarrolladores

Page 24: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Introducción Mitos del SW –Sobre desarrolladores

Page 25: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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.

Page 26: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 27: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 28: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 29: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 30: 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

Page 31: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 32: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Complejidad del SW

Page 33: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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!

Page 34: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

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

Page 35: Tema 1: Introducción a la Ingeniería de Software Ingeniería de Sistemas 2012.

Complejidad del SWDificultad de controlar el proceso de desarrollo