La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

© 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.

Presentaciones similares


Presentación del tema: "© 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."— Transcripción de la presentación:

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

2 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

3 © Luis Fernández Sanz, 2000 IS Ingeniería de software Grandes números Incremento del volumen de información comercial y de gestión – cheques diarios en EE.UU. – millones de documentos diarios en EE.UU. – millones de s diarios Demanda creciente de software: –Más grande –Más complejo

4 © Luis Fernández Sanz, 2000 IS Ingeniería de software Software demandado Pero: –En la mayoría de los casos, sistemas grandes y complejos Meta4: LOC aprox. Windows 95: LOC aprox. UNIX V5: 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

5 © Luis Fernández Sanz, 2000 IS Ingeniería de software Evolución histórica del software ª etapa 2ª etapa3ª etapa4ª 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 OS LOC

6 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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 robustosingeniería

7 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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 ReportChaos Report

8 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

9 © Luis Fernández Sanz, 2000 IS Ingeniería de software Evolución de ingeniería en software Situación: –ciclos de vida, metodología rutinarias, estimación de costes, aseguramiento de calidad Producción estandarizada Artesanía Producción Comercial Ciencia Ingeniería profesional Años ochenta: Metodologías de desarrollo : algorítmica, estructuras de datos Ejemplos aislados: construcción compiladores

10 © Luis Fernández Sanz, 2000 IS Ingeniería de software Disciplina de ingeniería Ingeniería pública frente a destreza o arte privado Productos: Bien diseñados y planteados Los 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

11 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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-SpaceCareer-Space

12 © Luis Fernández Sanz, 2000 IS Ingeniería de software Trabajo en proyectos

13 © Luis Fernández Sanz, 2000 IS Ingeniería de software Á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, TVs, 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.

14 © Luis Fernández Sanz, 2000 IS Ingeniería de software Ejemplos de complejidad Obras completas de Shakespeare 2Km. 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ón de Red Telefónica LOC = 1Km. 44Km. Windows

15 © Luis Fernández Sanz, 2000 IS Ingeniería de software Categorías de software

16 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

17 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

18 © Luis Fernández Sanz, 2000 IS Ingeniería de software Cifras de España SEDISI

19 © Luis Fernández Sanz, 2000 IS Ingeniería de software Resumen del enfoque de ingeniería para el software Complejos: una persona no puede abarcarlos Una persona puede comprender y abarcar todos sus detalles Pueden especificarse y diseñarse de manera informal La especificación y el diseño debe ser formal Debe documentarse adecuada- mente en cada fase y tener una gestión eficaz El efecto de las modificaciones es inmediato Pequeños programasGrandes sistemas Los problemas NO son una simple versión a gran escala

20 © Luis Fernández Sanz, 2000 IS Ingeniería de software Características de ingeniería Permite a personas normales crear sistemas sofisticados que funcionan Diseño rutinario vs originalidad Tratar todos los problemas como nuevos Contraste con química o ingeniería civil –Diferencias: rapidez de evolución, estados discretos, mantenimiento

21 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

22 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

23 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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)

24 © Luis Fernández Sanz, 2000 IS Ingeniería de software Algunas referencias R.Pressman, Ingeniería del Software Futuro de la Ingeniería del SoftwareIngeniería del Software J.Dolado, Profesión de Ingeniero de SoftwareProfesión Versión preliminar de SWEBOKSWEBOK Risks to the public NeumannNeumann

25 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

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

27 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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

28 © Luis Fernández Sanz, 2000 IS Ingeniería de software 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


Descargar ppt "© 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."

Presentaciones similares


Anuncios Google