© luis fernández sanz, 2000 is-1.1-1 ingeniería de software tema 1.1 ingeniería de software luis...

26
Ingeniería de software © Luis Fernández Sanz, 2000 IS-1.1-1 Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Upload: amaranto-moreno

Post on 27-Jan-2015

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-1

Tema 1.1Ingeniería de software

Luis Fernández SanzUniversidad Europea de Madrid

Page 2: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-2

Impacto de la información• Importancia creciente de los sistemas

informáticos económica y socialmente:• Dependencia tecnológica de muchos sectores• Incorporación en muchos productos y servicios:

– Gran parte de su coste

• Gran demanda de software y sistemas• Dependencia de gran porcentaje de la economía:

– Año 2000: 145 billones de pts. economía basada en Internet (766 billones de $).

– Año 2000: 350 millones de usuarios Internet: media: 29 mail– Año 2004: 873 billones de pts.; 376 billones en

infraestructura y 496 billones en comercio electrónico

Page 3: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-3

Grandes números

• Incremento del volumen de información comercial y de gestión– 120.000.000 cheques diarios en EE.UU.– 35.000 millones de documentos diarios en

EE.UU.– 10.000 millones de e-mails diarios

• Demanda creciente de software:– Más grande– Más complejo

Page 4: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-4

Software demandado

• Pero:– En la mayoría de los casos, sistemas grandes y

complejos• Meta4: 600.000 LOC aprox.• Windows 95: 11.000.000 LOC aprox.• UNIX V5: 6.250.000 LOC aprox.

– Sistemas abstractos:• Software no tiene forma física (Ley propiedad

intelectual RDL 1/1996 art. 95)• No restringido por materiales sujetos a leyes físicas

ni por procesos de fabricación

Page 5: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-5

Evolución histórica del software1968

1950 1960 1970 1980 1990 2000

1ª etapa 2ª etapa 3ª etapa 4ª etapa

• Lotes (batch)• Distribución limitada• A medida

• Multiusuario• Tiempo real• Bases de datos• Producto de software

• Sistemas distribuidos• Inteligencia• Hardware barato• Producto de consumo

• Redes de ordenadores• Orientación a objetos• Sistemas personales• Paralelismo, sistemas expertos, etc.

Complejidad y tamaño crecientes

IBM OS3601.000.000 LOC

Page 6: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-6

Repaso histórico

• 1967: Comité Científico de la OTAN: “crisis” del software

– tercera generación de hardware

– sistemas grandes y/o complejos

– ineficacia de métodos de desarrollo existentes

• 1967: F.Bauer propone “ingeniería del software”• 1968: Conferencia en Garmisch (RFA)• 1969 (Octubre): Conferencia en Roma. Definición

– Establecimiento y uso de principios de ingeniería robustos

Page 7: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-7

Crisis del software (I)

• Planificación y estimación de costes imprecisas– Retrasos, sobrecostes, etc. (> 50% proyectos)

• Baja productividad:– 3-6% anual, 12% demanda, hardware dobla en 3

años

• Baja calidad generalizada:– Insatisfacción de usuarios, fallos:

• Risks to the public

Resumen: Chaos Report

Page 8: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-8

Definición de ingeniería de software

• IEEE, 1990:– Aplicación de un enfoque sistemático, disciplinado y

cuantificable al desarrollo, operación y mantenimiento de software

La aplicación de la ingeniería al software• Fritz Bauer, 1969:

• El establecimiento y uso de principios de ingeniería robustos, para obtener software económico, fiable y que funciona de forma eficiente sobre máquinas reales

• D.L.Parnas, 1987:• Construcción multipersona de software multiversión

Page 9: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-10

Disciplina de ingeniería• Ingeniería pública frente a destreza o arte privado• Productos:

Bien diseñados y planteadosLos que terminan funcionando pero tras mucha prueba y

corrección

• Para objetivos de ingeniería de software:– Planear, seguir plan, esforzarse por calidad– Dominar complejidad:

• Modelos: simples pero reales• División de producto: componentes unipersonales• División de proceso: tareas, ciclo de vida

Page 10: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-11

Labor de ingeniero de software– Sistemas mayores de lo que abarca una persona

• Construye un componente, no todo el sistema• Otros pueden usar o modificar el componente• Obligado a trabajar en equipo

– Modelos del mundo real en el software• Sistemas grandes y complejos: modelos grandes,

abstractos y complejos– Visibles: uso de documentos (diseño, manuales,…)– Crear documentos: igual de ing. de software que

programar» Meta4 (260 en I+D: 120 en desarrollo)» 2 años de proyecto: análisis (4 meses), diseño (4,5),

implementación (7,5), integración (6,5)Perfiles de trabajo: Career-Space

Page 11: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-12

Trabajo en proyectos

Tamaño Gestión,soporte, etc.

Codificación Papel(análisis,diseño,…)

Eliminardefectos

500 11% 68% 5% 16%1000 11% 65% 7% 17%4000 11% 58% 12% 19%8000 11% 54% 15% 20%32000 12% 40% 22% 26%120000 14% 30% 26% 30%500000 15% 21% 30% 34%1000000 16% 18% 31% 35%

Page 12: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-13

Áreas tecnológicas

• Desarrollo de aplicaciones y software– Operating systems (PC, Workstations and Consumer Devices)– Programming languages (Assembler, C, JAVA, etc.)– Embedded Systems (e.g. in Disc-players, TV’s, Game-players)– Enterprise IT systems (e.g. Enterprise Resource planning)– Internet applications (like E-commerce– Administrative and Financial systems– Technical systems for machine control and industrial automation– Development tools for system and application software– Database systems for data-exchange with the applications– Network technology in real-time systems and multi-site environm.– Software engineering– Software components technology– Enhance and maintain the application

Knowledge of the software technologies on which modern systems are based (e.g. operating systems, programming languages). Able to architect, design and develop individual components or major products. Understands the theories underlying these components.Understand how applications use the services of operating systems and concepts such as processors, working storage, message passing, and transactions processing.

Knowledge of the software technologies on which modern systems are based (e.g. operating systems, programming languages). Able to architect, design and develop individual components or major products. Understands the theories underlying these components.Understand how applications use the services of operating systems and concepts such as processors, working storage, message passing, and transactions processing.

Page 13: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-14

Ejemplos de complejidad

Obras completas de Shakespeare2Km.

12Km.

10Km.

8Km.

6Km.

4Km.

Sistema pequeño de telefonía

Software de a bordo de la Space Shuttle

Gran sistema de telefonía

Sistema de gestiónde Red Telefónica

250.000 LOC = 1Km.

44Km. Windows

Page 14: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-15

Categorías de software

Programadores Plazo TamañoTrivial <1 1-4 semanas <1KPequeño 1-2 1-6 meses 1K-5KMedio 2-5 1-2años 5K-50KGrande 5-50 2-3 años 50K-500KMuy grande 50-200 3-5 años 500K-5MExtragrande

200+ 5-10 años 5M+

Page 15: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-16

Complicación del desarrollo

• Sistemas grandes y complejos:– Mundo real cambia con frecuencia

• El software y los modelos deben cambiar• La IS también contempla para satisfacer

necesidades y requisitos cambiantes– IBM: 25% de volatilidad de requisitos– Esfuerzo de mantenimiento: > 50% en muchas

empresas

–No basta con que “funcione” el software•Facilitar el cambio y el mantenimiento

•Cumplir con ciertas características

Page 16: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-17

Construir productos• Objetivo de IS: crear productos (de software)

• IEEE Std. 610: software, datos y documentación• Productos:

– Genéricos (paquetes): venta en mercado abierto• Más barato: distribuir coste entre muchas copias

– A medida (personalizados): cliente concreto• Mucho mercado: s.empotrados, controladores

• IS se aplica a ambos:• Genéricos: especificación interna (marketing con estudios

de clientes…). Flexible y no obligatorio• A medida (contrato): negociar detalles y cambios

Page 17: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-18

Cifras de España1.997 % 1.998

Incremento respecto 1997 1.999

Incremento respecto 1998

Facturación total 1.345.593 MIB+IVA(16%) 1.592.034 MIB+IVA(16%) 18,31% 1.708.676 MIB+IVA(16%) 7,33%Mercado Interior Bruto 1.153.592 % sobre MIB 1.827.315 % sobre MIB 58,40% 2.225.847 % sobre MIB 21,81%Hardware 639.224 55,41% 723.985 39,62% 13,26% 828.746 37,23% 14,47%Software 134.166 11,63% 170.632 9,34% 218.955 9,84% 28,32%

Herramientas de Desarrollo 26.688 26.807 0,45%

Soft. Bases de datos 28.803 35.045 21,67%

SW Comunicaciones 8.043 10.931 35,91%

Aplicaciones Verticales 20.542 28.062 36,61%

Aplicaciones Horizontales 30.044 49.894 66,07%

Servicios 267.897 23,22% 349.472 19,12% 30,45% 444.203 19,96% 27,11%Consultoría 50.030 64.018 27,96%

Explotación 66.155 90.216 36,37%

Desarrollo e implantación 158.198 205.183 29,70%

Soporte 47.202 60.156 27,44%

Formación 13.432 14.550 8,32%

Otros 14.455 10.080 -30,27%

Mant.Hardware 79.599 6,90% 79.249 4,34% -0,44% 85.224 3,83% 7,54%Consumibles 32.706 2,84% 40.385 2,21% 23,48% 53.777 2,42% 33,16%Mercado Interior Neto 864.138 74,91% 1.010.930 55,32% 16,99% 1.010.930 45,42% 0,00%Actividad endógena 289.454 25,09% 352.793 19,31% 21,88% 449.572 20,20% 27,43%Exportaciones 192.001 16,64% 228.311 12,49% 18,91% 248.174 11,15% 8,70%Importaciones 566.026 637.685 12,66% 712.680 11,76%Balanza comercial 374.025 - 409.374 - 9,45% 464.506 - 13,47%Valor añadido 555.338 672.070 21,02% 773.956 15,16%Producción 506.863 590.647 16,53% 709.426 20,11%

SEDISI

Page 18: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-19

Resumen del enfoque de ingeniería para el software

Complejos: una personano puede abarcarlos

Una persona puede comprendery abarcar todos sus detalles

Pueden especificarse y diseñarse de

manera informal

La especificación y el diseñodebe ser formal

Debe documentarse adecuada-mente en cada fase y tener una

gestión eficaz

El efecto de las modificaciones es inmediato

Pequeños programas Grandes sistemas

Los problemas NO son una simple versión a gran escala

Page 19: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-21

Software

• Definición de IEEE:– Programas de ordenador y procedimientos– Posiblemente:

• la documentación asociada y los datos relacionados con la operación del sistema informático

• Software:– de aplicación: satisfacer necesidades de usuario– de apoyo: ayuda a desarrollo o mantenimiento– de sistemas: facilitar operación de sistema

Page 20: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-22

Peculiaridad del software

• Características diferenciales:– Producto lógico, no físico

– Se desarrolla, no se fabrica en sentido clásico

– No se degrada con el uso.

– Reparar no es devolver al estado original.

– Otros productos: sin errores o rechazados

– A medida (artesanal), no ensamblado

– Reutilizable

– Muy flexible

No es posible trasladar sin más las técnicas de otras

ingenierías al software

No es posible trasladar sin más las técnicas de otras

ingenierías al software

Page 21: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-23

Resumen de aportaciones

• Idea de programación estructurada (1968 Dijkstra)• Concepto de ciclo de vida (Royce 1970)• Metodologías de programación (1974/75)• Métodos para diseño modular (1977/78)• Métodos para análisis estructurado (1979/85)• Métodos híbridos (1985/1992)• Métodos Orientados a Objetos y UML (1993/2001)

Page 22: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-24

Algunas referencias

• R.Pressman, Ingeniería del Software

• Futuro de la Ingeniería del Software

• J.Dolado, Profesión de Ingeniero de Software

• Versión preliminar de SWEBOK

• Risks to the public Neumann

Page 23: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-25

Test

1) Ingeniería del software es:

•a) La disciplina para programar software de gestión

•b) Un método de análisis y de especificación de requisitos del software

•c) Un enfoque de desarrollo de software basado en la aplicación de algoritmos formales

•d) Ninguna de las anteriores

•2) Señalar cuáles de las siguientes afirmaciones es coherente con una filosofía de desarrollo basada en ingeniería de software (*):

•a) Dividir el proyecto en tareas sencillas y el producto en componentes abordables por una sola persona

•b) Confiar el éxito del desarrollo a la habilidad personal de los buenos programadores

•c) Coordinación del trabajo en equipo

•d) Documentar para comunicar a otros miembros del equipo

•e) Codificar cuanto antes para disminuir el riesgo de retrasos

Page 24: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-26

Page 25: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-27

Principios de ingeniería

• Ingeniería:

“arte o ciencia de hacer práctico el conocimiento de las ciencias puras”– Crear soluciones eficaces en coste– Aplicar a problemas prácticos– Aplicar conocimientos científicos– Construir productos– Al servicio de las personas

Page 26: © Luis Fernández Sanz, 2000 IS-1.1-1 Ingeniería de software Tema 1.1 Ingeniería de software Luis Fernández Sanz Universidad Europea de Madrid

Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-28

Evolución de la ingeniería

Artesanía

Producción

Comercial

Ciencia

Ingeniería profesional•Virtuosos•Intuición y fuerza bruta•Progreso fortuito•Transmisión casual•Uso extravagante•Fabricar para usar más que para vender

•Artesanos cualificados•Procedimiento establecido•Refinamiento práctico•Entrenamiento matemático•Análisis de coste y suministro de materiales•Fabricar para vender

•Profesionales formados•Análisis y teoría•Progreso basado en ciencia•Clase de profesionales•Permitir nuevas aplicaciones a través de análisis•Segmentar mercado