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
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
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
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
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
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
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
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
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
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
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%
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.
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
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+
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
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
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
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
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
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
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)
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
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
Ingeniería de software© Luis Fernández Sanz, 2000 IS-1.1-26
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
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
Top Related