tema i introduccion.ppt [modo de compatibilidad]is-l… · introducción la complejidad inherente...

16
28/09/2009 1 Tema 1: Tema 1: Introducción a la Ingeniería del Introducción a la Ingeniería del Software Software Marcos López Sanz Ingeniería del Software de Gestión - 2009/2010 Índice Índice Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información Ingeniería del Software de Gestión - 2009/2010 Introducción: Introducción: ¿Qué es Software? ¿Qué es Software?

Upload: others

Post on 28-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

1

Tema 1:Tema 1:Introducción a la Ingeniería del Introducción a la Ingeniería del

SoftwareSoftware

Marcos López Sanz

Ingeniería del Software de Gestión - 2009/2010

ÍndiceÍndice

�Introducción

� La complejidad inherente del software

� Algunos principios de la ingeniería del software

� Sistemas de Información

Ingeniería del Software de Gestión - 2009/2010

Introducción: Introducción:

¿Qué es Software?¿Qué es Software?

Page 2: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

2

Ingeniería del Software de Gestión - 2009/2010

� 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ón: Introducción:

¿Qué es Software?¿Qué es Software?

Ingeniería del Software de Gestión - 2009/2010

� 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: Introducción:

¿Qué es Software?¿Qué es Software?

Ingeniería del Software de Gestión - 2009/2010

� 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: Introducción:

¿Qué es Ingeniería del Software?¿Qué es Ingeniería del Software?

Page 3: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

3

Ingeniería del Software de Gestión - 2009/2010

� Disciplina de ingeniería◦ Los ingenieros de software usan las herramientas,

métodos y teorías para solucionar los problemas que aparecen◦ Incluso teniendo en cuenta restricciones

económicas y de organización

� Producción de software◦ Planificación de proyectos◦ Administración de proyectos software◦ Procesos técnicos de desarrollo de software◦ Dirección de proyectos

Introducción: Introducción:

¿Qué es Ingeniería del Software?¿Qué es Ingeniería del Software?

Ingeniería del Software de Gestión - 2009/2010

� 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: Introducción:

¿Por qué surge la Ing. del Software?¿Por qué surge la Ing. del Software?

Ingeniería del Software de Gestión - 2009/2010

Introducción: Introducción:

Crisis del SoftwareCrisis del Software� Dificultad en escribir programas libres de defectos, fácilmente

comprensibles, y que sean verificables(Dijkstra – 1968)

� Causas:◦ Los proyectos no terminaban en plazo◦ Los proyectos no se ajustaban al presupuesto inicial◦ Software que no cumplía las especificaciones◦ Código inmantenible que dificultaba la gestión y evolución del proyecto

� Consecuencias:◦ Baja Calidad del Software◦ Tiempo y Presupuesto Excedido◦ Confiabilidad Cuestionable◦ Altos requerimientos del personal para el desarrollo y el mantenimiento

Page 4: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

4

Ingeniería del Software de Gestión - 2009/2010

“La empresa ya dispone de unos estándares de trabajo y unos procedimientos de desarrollo establecidos y son

conocidos por todos nuestros empleados”

En realidad muchas empresas no disponen de estándares ni procedimientos de trabajo y si los disponen, éstos son incompletos, no utilizan prácticas modernas de desarrollo, no todo el personal los conoce y nadie controla que éstos se apliquen.

RealidadRealidad

MitoMito

Introducción: Introducción:

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

Ingeniería del Software de Gestión - 2009/2010

“El equipo de trabajo dispone de las más modernas herramientas de desarrollo y trabaja con las

máquinas más potentes”

No sirve de nada trabajar con las mejores máquinas o utilizar las herramientas más modernas si el equipo no tiene los conocimientos necesarios para utilizarlas eficazmente (cursos de formación, soporte profesional externo…)

RealidadRealidad

MitoMito

Introducción: Introducción:

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

Ingeniería del Software de Gestión - 2009/2010

“Por qué hacer una planificación exhaustiva, si cometemos algún error, siempre podemos añadir

gente”

Añadir gente nueva en un proyecto que está atrasado, lo hace atrasar aún más. Los nuevos integrantes deben integrarse, recibir formación y aprender la manera de comunicarse en el grupo.

RealidadRealidad

MitoMito

Introducción: Introducción:

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

Page 5: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

5

Ingeniería del Software de Gestión - 2009/2010

RealidadRealidad

MitoMito

“Una declaración general de los objetivos es suficiente “Una declaración general de los objetivos es suficiente para comenzar a escribir los programas, podemos dar para comenzar a escribir los programas, podemos dar

los detalles más adelante”los detalles más adelante”

Una mala definición inicial es la principal causa del trabajo inútil en software. Es esencial una descripción formal y detallada del ámbito de la información. Es necesaria una exhaustiva comunicación entre el cliente y el analista.

Introducción: Introducción:

Mitos del SW Mitos del SW –– Sobre el clienteSobre el cliente

Ingeniería del Software de Gestión - 2009/2010

RealidadRealidad

MitoMito

“Los requisitos del proyecto cambian continuamente, “Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente ya pero los cambios pueden acomodarse fácilmente ya

que el software es flexible”que el software es flexible”

Es verdad que los requisitos del software cambian, pero el impacto del cambio varia según en el momento que se presenten (Definición: Bajo Impacto / Desarrollo: Alto Impacto / Después de la entrega: Crítico Impacto)

Introducción: Introducción:

Mitos del SW Mitos del SW –– Sobre el clienteSobre el cliente

Ingeniería del Software de Gestión - 2009/2010

RealidadRealidad

MitoMito““No es necesaria ninguna metodología, cuanto antes No es necesaria ninguna metodología, cuanto antes

empecemos a programar, antes acabaremos”empecemos a programar, antes acabaremos”

Cuando más pronto se comience a escribir código, más se tardará

en terminarlo. Entre el 50% y el 70% de todo el esfuerzo dedicado

a un programa se realizará después de que se la haya entregado al

cliente por primera vez.

Introducción: Introducción: Mitos del SW Mitos del SW –– Sobre desarrolladoresSobre desarrolladores

Page 6: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

6

Ingeniería del Software de Gestión - 2009/2010

RealidadRealidad

MitoMito““Lo único que realmente importa, cuando se termina un Lo único que realmente importa, cuando se termina un

proyecto, es que la aplicación funcione. La proyecto, es que la aplicación funcione. La documentación nadie la utiliza”documentación nadie la utiliza”

La documentación es la base de un desarrollo y, lo que es más

importante, proporciona guías para la tarea de mantenimiento del

software.

Introducción: Introducción: Mitos del SW Mitos del SW –– Sobre desarrolladoresSobre desarrolladores

Ingeniería del Software de Gestión - 2009/2010

� 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ónIntroducción: : Malas prácticas de desarrollo y mantenimientoMalas prácticas de desarrollo y mantenimiento

Ingeniería del Software de Gestión - 2009/2010

� 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ónIntroducción: : Malas prácticas de desarrollo y mantenimientoMalas prácticas de desarrollo y mantenimiento

Page 7: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

7

Ingeniería del Software de Gestión - 2009/2010

� 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ónIntroducción: : Malas prácticas de desarrollo y mantenimiento Malas prácticas de desarrollo y mantenimiento

Ingeniería del Software de Gestión - 2009/2010

� 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ónIntroducción: : ¿Qué propone la IS? ¿Qué propone la IS? �� ser Ingenieros!ser Ingenieros!

Ingeniería del Software de Gestión - 2009/2010

� ¿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

IntroducciónIntroducción: : ¿Qué propone la IS? ¿Qué propone la IS? �� usar Estándares!usar Estándares!

Page 8: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

8

Ingeniería del Software de Gestión - 2009/2010

ÍndiceÍndice

� Introducción

�La complejidad inherente del software

� Algunos principios de la ingeniería del software

� Sistemas de Información

Ingeniería del Software de Gestión - 2009/2010

� ¿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 SWComplejidad del SW

Ingeniería del Software de Gestión - 2009/2010

� 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

¡Los requisitos cambian durante el desarrollo!

Complejidad del SW:Complejidad del SW:

Complejidad del dominio del problemaComplejidad del dominio del problema

Page 9: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

9

Ingeniería del Software de Gestión - 2009/2010

Complejidad del SW:Complejidad del SW:Dificultad de controlar el proceso de desarrolloDificultad 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

Ingeniería del Software de Gestión - 2009/2010

� El software trabaja con sistemas de estados discretos.◦ Variables

◦ Flujos de control estado del sistema

◦ Eventos externos

� Cada evento externo puede cambiar el estado del sistema, pero ¿se trata de un estado válido?◦ Necesidad de pruebas � Complejo, costoso y en ocasiones imposible que sean exhaustivas.

Complejidad del SW:Complejidad del SW:Problemas para caracterizar sistemas discretosProblemas para caracterizar sistemas discretos

Ingeniería del Software de Gestión - 2009/2010

ÍndiceÍndice

� Introducción

� La complejidad inherente del software

�Algunos principios de la ingeniería del software

� Sistemas de Información

Page 10: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

10

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

1. Entregar el producto al cliente cuanto antes◦ Se debe dedicar esfuerzo en la captura de las necesidades del cliente � Captura de Requisitos

◦ Involucrar al cliente en el proceso de desarrollo� Uso de Prototipos

◦ Respetar los plazos acordados con el cliente. Quedará satisfecho ☺

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

2. Determinar el problema antes de escribir especificaciones◦ Elegir la solución que mejor se adapte a las necesidades del cliente

◦ Analizar todas las posibles soluciones. Costes, esfuerzo, etc.

◦ No dar soluciones precipitadas. Explorar todas las alternativas

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

3. Minimizar la distancia intelectual◦ Distancia intelectual: “distancia entre el problema del mundo real y la solución computerizada del problema” (Dijkstra)

◦ Cuanto menor sea la distancia intelectual, más mantenible será el software.

◦ La estructura del SW debería ser cercana a la estructura del mundo real

Page 11: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

11

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

4. Evaluar las alternativas de diseño◦ Una vez establecidos los requisitos, ¿qué arquitecturas o algoritmos elegir?

◦ Según por el diseño que optemos tendremos:� Unos tiempos de respuesta u otros

� Más portabilidad

� Mayor seguridad

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

5. La técnica es más importante que las herramientas◦ Un ingeniero software indisciplinado con una potente herramienta se puede convertir en un ingeniero peligroso

◦ Antes de seguir una herramienta, se debe comprender y seguir una técnica apropiada

= PELIGRO+

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

6. Hazlo bien antes de hacerlo rápido◦ Es más fácil hacer que un programa que funciona bien sea más rápido, que hacer que un programa rápido que funciona mal funcione bien.

◦ No preocuparse en optimizar en la fase inicial.

Page 12: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

12

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

7. La inspección de código es mejor que la ejecución◦ La inspección de código:� Permite descubrir el 82% de los errores

� Consume cerca del 15% de los recursos disponibles para el desarrollo

� Reduce los costes de desarrollo entre un 25% y un 30%

� Reduce el tiempo de pruebas entre un 50% y un 90%

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS8. El personal es la clave del éxito◦ Personal cualificado con herramientas insuficientes se puede llegar al éxito◦ Personal NO cualificado con las más potentes herramientas, NO llegamos al éxito

◦ Importante trabajar en equipo◦ Todo el personal debe conocer los estándares de trabajo◦ Alguien debe controlar la aplicación de estos estándares◦ Deberá haber una persona encargada de mantenerlos, adaptarlos y ampliarlos

◦ El equipo debe recibir cursos de formación

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS

9. Un diseño sin documentación, NO es un diseño◦ Los ingenieros de SW no competentes suelen decir: “Ya he terminado el diseño, sólo falta la documentación”.

◦ ¿Os imagináis a un arquitecto que diga: “ el diseño del nuevo edificio ya está listo, sólo faltan los planos”?

◦ Se debe ir documentando durante todo el proceso de desarrollo

Page 13: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

13

Ingeniería del Software de Gestión - 2009/2010

Algunos principios de ISAlgunos principios de IS10. El código difícil de leer es difícil de mantener.

11. La encapsulación crea SW fácil de probar y mantener � “Divide y vencerás”

12. No probar tu propio SW. Los desarrolladores no deben probar el SW que han generado

13. La entropía de los sistemas aumenta. Cuanto más se modifica y crece un sistema SW, más complejo y desorganizado se vuelve

Ingeniería del Software de Gestión - 2009/2010

ÍndiceÍndice

� Introducción

� La complejidad inherente del software

� Algunos principios de la ingeniería del software

�Sistemas de Información

Ingeniería del Software de Gestión - 2009/2010

¿Qué es un Sistema?¿Qué es un Sistema?� Es un conjunto de dos o más elementos interrelacionados que satisfacen las 3 propiedades siguientes:◦ Cada elemento tiene influencia sobre el conjunto. No podemos quitar ninguno◦ El comportamiento de cada elemento depende de los otros elementos del conjunto◦ No hay un elemento aislable dentro del sistema

� La complejidad es una función que depende de:◦ Nº elementos◦ Nº de relaciones entre elementos

Page 14: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

14

Ingeniería del Software de Gestión - 2009/2010

Ejemplos de Sistemas:Ejemplos de Sistemas:

Sistema operativoSistema operativo

Ingeniería del Software de Gestión - 2009/2010

Ejemplos de Sistemas:Ejemplos de Sistemas:

Sistema de transporteSistema de transporte

Ingeniería del Software de Gestión - 2009/2010

Ejemplos de Sistemas:Ejemplos de Sistemas:

Sistema planetarioSistema planetario

Page 15: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

15

Ingeniería del Software de Gestión - 2009/2010

¿Qué es un Sistema?¿Qué es un Sistema?

TiposTipos� Naturales◦ Físicos:� Estelares: sistema solar� Geológicos: sistema ibérico.� Biológicos: sistema nervioso.

◦ Vivientes:� Animales: manadas.

� Creados por el hombre:◦ Sociales: leyes, costumbres.◦ De transporte: redes viales, líneas aéreas.◦ De comunicación: Internet, teléfono, lengua.◦ Financieros: Contabilidades, personal.

Ingeniería del Software de Gestión - 2009/2010

¿Qué son los Datos?¿Qué son los Datos?

� Son los registros de los hechos, los acontecimientos o las transacciones

� Son la materia prima para obtener la información

� Son series de números, de caracteres que por si solos no quieren decir nada

Ingeniería del Software de Gestión - 2009/2010

¿Qué es Información?¿Qué es Información?

� Son los datos procesados de tal forma que resultan útiles o significativos en un cierto contexto.

� Según el proceso y según el contexto, la información puede resultar diferente

Page 16: TEMA I INTRODUCCION.ppt [Modo de compatibilidad]IS-L… · Introducción La complejidad inherente del software Algunos principios de la ingeniería del software Sistemas de Información

28/09/2009

16

Ingeniería del Software de Gestión - 2009/2010

¿Qué es un Sistema de Información?¿Qué es un Sistema de Información?

� Es un conjunto formal de procesos que operando sobre una colección de datos estructurados, según las necesidades de la empresa, recopilan, elaboran y distribuyen la información necesaria para las operaciones de esta empresa, y para las actividades de dirección y control correspondientes. De esta manera, la empresa puede llevar a cabo su actividad según su estrategia de negocio. (Andreu et al., 1991)

Ingeniería del Software de Gestión - 2009/2010

Elementos a tener en cuenta en un Elementos a tener en cuenta en un Sistema de InformaciónSistema de Información� Procedimientos de trabajo

� La información: es la parte principal del sistema.

� Las personas o usuarios: son los que tratan la información.

� El equipo de soporte, para la comunicación, el procesamiento y el almacenaje de la información � La parte física y tangible (HW, papel, servidores, soportes digitales…)