You are on page 1of 30

Introducción a la Ingeniería de

Software
Presentación de los conceptos claves
de la Ingeniería de software

©Ian Sommerville 2000

Software Engineering, 6th edition. Chapter 1

Slide 1

Objetivos
• Introducir la ingeniería de software y explicar
su importancia
• Responder preguntas claves acerca de la
ingeniería de software

©Ian Sommerville 2000

Software Engineering, 6th edition. Chapter 1

Slide 2

Tópicos cubiertos
• Preguntas frecuentes (FAQs) sobre la
ingeniería de software

©Ian Sommerville 2000

Software Engineering, 6th edition. Chapter 1

Slide 3

en forma profesional. • A la ingeniería de software le concierne el desarrollo de teorías.Ingeniería de software • Las economías de TODOS los países desarrollados dependen del software • Más y más sistemas son controlados por software • Los sistemas son cada vez más grandes y complejos • Para desarrollar productos de software grandes. Chapter 1 Slide 4 . 6th edition. surgió la ingeniería de software. métodos y herramientas para producir software profesional. ©Ian Sommerville 2000 Software Engineering.

Los costos de software son frecuentemente mayores que el costo de su hardware • Mantener el software cuesta más que desarrollarlo. Para sistemas de larga vida. 6th edition.Costos de software • Frecuentemente el costo del software domina los costos del sistema. • A la ingeniería de software le concierne el desarrollo de software a un costo efectivo. ©Ian Sommerville 2000 Software Engineering. Chapter 1 Slide 5 . el costo de su mantención pueden ser varias veces su costo de desarrollo.

Chapter 1 Slide 6 .Preguntas frecuentes acerca de la ingeniería de software • ¿Qué es software? • ¿Qué es la ingeniería de software? • ¿Cuál es la diferencia entre ingeniería de software y la ciencia de la computación? • ¿Cuál es la diferencia entre la ingeniería de software y la ingeniería de sistema? • ¿Qué es un proceso de software? • ¿Que es un modelo de proceso? ©Ian Sommerville 2000 Software Engineering. 6th edition.

Preguntas frecuentes acerca de la ingeniería de software • ¿Cuales son los costos de la ingeniería de software? • ¿Que són los métodos de ingeniería de software? • ¿Qué es un CASE (Computer-Aided Software Engineering)? • ¿Cuales son los atributos de un buen producto de software? • ¿Cuales son los desafíos claves que enfrenta la ingeniería de software? ©Ian Sommerville 2000 Software Engineering. 6th edition. Chapter 1 Slide 7 .

Chapter 1 Slide 8 . 6th edition.¿Qué es software? • Programas de computador y documentación asociada • Los productos de software pueden ser desarrollados para un cliente en particular o para un mercado en general • Los productos pueden ser: – Productos genéricos (out of the Box) • Sistemas ‘stand-alone/web’ (paquetes de software) producidos por una organización desarrolladora y vendido al mercado abierto a cualquier comprador – Productos a pedido (a la medida) • Sistemas que son encargados por un cliente específico y desarrollados especialmente por algún contratista ©Ian Sommerville 2000 Software Engineering.

Chapter 1 Slide 9 . operación y mantención de software. cuantificable al desarrollo. 1990: La aplicación de un enfoque sistemático.¿Qué es la ingeniería de software? • Barry Boehm: La aplicación práctica del conocimiento científico al diseño y construcción de programas y la documentación asociada requerida para desarrollar. disciplinado. • IEEE Standard Computer Dictionary. esto es. ISBN 1-55937079-3. operar y mantenerlos. la aplicación de la ingeniería al software. 6th edition. 610. ©Ian Sommerville 2000 Software Engineering.

6th edition. Cubre no solamente los aspectos técnicos de la construcción de los sistemas de software sino también los problemas de administración tales como la dirección de los equipos de programación. Chapter 1 Slide 10 . la planeación y el presupuesto.¿Qué es la ingeniería de software? • Webopedia: Disciplina de la informática que se ocupa del desarrollo de aplicaciones grandes. ©Ian Sommerville 2000 Software Engineering.

una disciplina de la ingeniería. la operación y mantención de software. especialmente software grande. 6th edition.¿Qué es la ingeniería de software? • La ingeniería de software es un cuerpo de conocimientos. a un costo efectivo. ©Ian Sommerville 2000 Software Engineering. Chapter 1 Slide 11 . • Nos quedaremos con la siguiente definición: – La ingeniería de software es la disciplina que se encarga de (tiene como misión) crear y mantener todo el conocimiento relacionado con la producción de software de calidad.

¿Qué hace un ingeniero de software? • El ingeniero de software. debe adoptar en su trabajo un enfoque organizado y sistemático. en el ejercicio de su profesión. bajo las restricciones de desarrollo y los recursos que estén disponibles. 6th edition. usa las herramientas y técnicas apropiadas dependiendo del problema a resolver. ©Ian Sommerville 2000 Software Engineering. Chapter 1 Slide 12 .

• Las teorías de la ciencia de la computación son actualmente insuficientes para actuar como un soporte para la ingeniería de software ©Ian Sommerville 2000 Software Engineering. Chapter 1 Slide 13 .¿Cuál es la diferencia entre la ingeniería de software y la ciencia de la computación? • A la ciencia de la computación le concierne las teorías y los fundamentos. a la ingeniería de software le conciernen los aspectos prácticos del desarrollo y entrega de software útil. 6th edition.

integración. diseño arquitectural. La ingeniería de software es parte de este proceso. Chapter 1 Slide 14 . instalación y puesta en operación. software e ingeniería de proceso. ©Ian Sommerville 2000 Software Engineering.¿Cuál es la diferencia entre un ingeniero de software y un ingeniero de sistemas? • La ingeniería de sistema se encarga de todos los aspectos del desarrollo de sistemas basados en computador incluyendo hardware. • Los ingenieros de sistema están involucrados en la especificación. 6th edition.

6th edition. Chapter 1 Slide 15 . por lo tanto. no se sabía que actividades o procesos debían cumplirse. • Consenso actual: ciclo de vida del software ©Ian Sommerville 2000 Software Engineering.¿Qué es un proceso de software? • Es un conjunto de actividades cuyo objetivo es el desarrollo o evolución del software • Problema de la crisis del software (en los 60s): no había consenso sobre qué significaba hacer software.

Ciclo de vida del software • Hay cuatro actividades que son comunes a todos los procesos de software: – – – – Especificación (qué hacer). • Hay diferentes procesos. 6th edition. Validación (probarlo). que descomponen sus actividades en diferentes formas. Chapter 1 Slide 16 . Evolución (mejorarlo). Desarrollo ( producir el sistema software). pero todos tienen las cuatro actividades fundamentales ©Ian Sommerville 2000 Software Engineering.

• Los elementos que se representan en un modelo dependen de la perspectiva utilizada para presentarlos. Ejemplos: Wokflow. Rol/actión. ©Ian Sommerville 2000 Software Engineering. 6th edition. posiblemente. Chapter 1 Slide 17 .¿Qué es un modelo de proceso de software? • Es una representación simplificada que define explícitamente varios aspectos de un proceso tales como: actividades o fases. los resultados asociados a cada una de ellas y. transiciones entre las fases. Flujo de datos. una descripción de quién hace qué en cada una de ellas.

Modelos de proceso de software genéricos • El modelo cascada – Fases de especificación y desarrollo separadas y distintas. el desarrollo va a otra etapa. • Transformación formal – Un modelo matemático del sistema es transformado formalmente en una implementación • Desarrollo basado en re-uso – Es sistema es armado a partir de componentes existentes ©Ian Sommerville 2000 Software Engineering. • Desarrollo evolutivo – Las fases de especificación y desarrollo se alternan en el desarrollo. Chapter 1 Slide 18 . 6th edition. Una vez terminada una etapa.

6th edition. • Los costos varían dependiendo del tipo de sistema que se esté haciendo y los requisitos de los atributos del sistema tales como la eficiencia y la confiabilidad. el 60% de los costos corresponden al desarrollo y el 40% corresponden a las pruebas. Para el caso del software a pedido. los costos de evolución frecuentemente exceden los costos de desarrollo. Chapter 1 Slide 19 . • La distribución de los costos depende del modelo de desarrollo usado.¿Cuáles son los costos de la IS? • En términos gruesos. ©Ian Sommerville 2000 Software Engineering.

• Una metodología es un cuerpo de métodos. 6th edition. de software? (1) • Principio de la ingeniería de software: Cualquier proceso de desarrollo de software se debe poder definir y repetir. un método (o una técnica) es un procedimiento que indica cómo lograr algo. ©Ian Sommerville 2000 Software Engineering. • Método de desarrollo de software: Conjunto de principios y reglas cuyo propósito es hacer que el proceso de desarrollo del software sea definido y repetible. Mismo principio del método científico.¿Qué son los métodos de ing. • En general. Chapter 1 Slide 20 .

Método científico • Observar e investigar. recopilar datos. (Ser específico. 6th edition.) • Establecer una posible respuesta a la pregunta. ©Ian Sommerville 2000 Software Engineering. • Plantearse una pregunta o problema. Chapter 1 Slide 21 .) • Realizar la investigación necesaria (experimentar. buscar información). que apoye o refute la hipótesis. • Llegar a una conclusión. (Mejor conocida como hipótesis.

consejos de diseño y orientaciones de proceso. Chapter 1 Slide 22 . 6th edition. • Descripciones de modelos – Descripciones de modelos gráficos que deberían producirse • Reglas – Restricciones aplicada a los modelos de sistemas • Recomendaciones – Consejos de buenas prácticas de diseño • Orientaciones de proceso – Qué actividades seguir ©Ian Sommerville 2000 Software Engineering. de software? (2) • Según Ian Sommerville. notaciones. un método (estructurado) está formado por modelos del sistema.¿Qué son los métodos de ing. reglas.

depuración y pruebas.¿Qué es CASE (Computer-Aided Software Engineering)? • Son sistemas de software cuyo propósito es dar apoyo automatizado a las actividades del proceso de software. tales como el análisis y el diseño • Lower-CASE – Herramientas que apoyar actividades finales de un proceso de desarrollo tales como la programación. 6th edition. ©Ian Sommerville 2000 Software Engineering. • Los sistemas CASE son usados frecuentemente para apoyar un método • Upper-CASE – Herramientas para apoyar la actividades más tempranas del proceso de desarrollo. Chapter 1 Slide 23 .

©Ian Sommerville 2000 Software Engineering. debería ser mantenible. Chapter 1 Slide 24 . 6th edition. usable. Mantenibilidad – El software debiera poder evolucionar para satisfacer cambios de requerimientos Confiabilidad – El software no debería causar daños ni pérdidas en casos de falla Eficiencia – El software no debería gastar en forma exagerada los recursos del sistema Usabilidad – El software debería ser facil de usar por los usuarios para los cuáles el sistema fue diseñado.¿Cuáles son los atributos de un buen producto de software? • • • • • El software debería entregar al usuario el desempeño y la funcionalidad requerida. confiable.

Confiabilidad Hay varios sentidos relacionados: • Seguro-inofensivo: El sistema no causa daños físicos ni económicos en el caso de una falla del sistema. Chapter 1 Slide 25 . 6th edition. ©Ian Sommerville 2000 Software Engineering. • Seguro-inviolable: El sistema ofrece un nivel de protección contra el uso de usuarios indebidos y un nivel de privacidad de la información. • Libre de fallas: Dice relación con el grado de perfección del producto.

6th edition.Importancia de las características de los productos • La importancia relativa de estas características depende del producto y del ambiente en que ha de ser usado • En algunos casos algunos atributos pueden dominar – En los sistemas de tiempo real críticos en seguridad los atributos claves pueden ser la confiabilidad y la eficiencia • Los costos tienden a subir exponencialmente si se requieren niveles muy altos para alguno de los atributos ©Ian Sommerville 2000 Software Engineering. Chapter 1 Slide 26 .

6th edition. Chapter 1 Slide 27 .Costo versus eficiencia Cost Ef ficiency ©Ian Sommerville 2000 Software Engineering.

•Sistemas heredados –Sistemas viejos y valiosos que deben ser mantenidos y actualizados.¿Cuáles son los desafíos que debe encarar un ingeniero de software? Lidiar con sistemas heredados. Chapter 1 Slide 28 . •Entrega –Hay una presión creciente por una entrega más rápida del software. 6th edition. con una creciente diversidad y con las demandas de entrega de los productos en tiempos reducidos. •Heterogeneidad –Sistemas distribuidos compuestos de una mezcla de hardware y software. ©Ian Sommerville 2000 Software Engineering.

métodos y herramientas para el desarrollo. • A la ingeniería de software le incumben las teorías. • Los productos de software consisten de programas y documentación ©Ian Sommerville 2000 Software Engineering. 6th edition.RESUMEN • La ingeniería de software es una disciplina de la ingeniería que se ocupa de todos los aspectos de la producción del software. administración y evolución de los productos de software. Chapter 1 Slide 29 .

Actividades básicas son: especificación de software. validación y evolución. ©Ian Sommerville 2000 Software Engineering. • Las herramientas CASE son sistemas de software diseñados para apoyar las actividades rutinarias en el proceso de software. 6th edition. Chapter 1 Slide 30 .RESUMEN • Atributos esenciales de los productos de software son: mantenibilidad. desarrollo. eficiencia y usabilidad • El proceso de software consiste de las actividades involucradas en el desarrollo de software. confiabilidad.