![Page 1: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/1.jpg)
Ingeniería de Software
![Page 2: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/2.jpg)
Referencias
• Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software
• Ian Sommerville: Ingeniería de software, 6ª Edición
![Page 3: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/3.jpg)
¿Qué es Software?
• Programas computacionales y documentación asociada.
• Los productos de software se pueden desarrollar para un cliente en particular o pueden ser desarrollados para un mercado general.
• Productos de software pueden ser:– Genéricos: desarrollados para ser vendidos a un tipo
de clientes.– Específicos: desarrollado para un cliente de acuerdo a
sus necesidades específicas.
![Page 4: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/4.jpg)
¿Qué es Ingeniería de Software?
• La Ingeniería de Sofware es una disciplina de la Ingeniería que se preocupa de todos los aspectos de la producción de software.
• aplicación de los métodos de la ingeniería al proceso de desarrollo de software:– Diseño– Construcción– Mantenimiento
![Page 5: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/5.jpg)
La disciplina – una analogía
• Diseñar y supervisar la construcción de un edificio de oficinas de varios pisos– Recursos? Dinero, tiempo, otros– División del proyecto en partes manejables?– Asegurar que las partes sean compatibles?– Mecanismo de comunicación entre los
encargados de las diversas partes?– Medición del grado de avance?– Muchas otras…..
![Page 6: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/6.jpg)
Diferencias con el software
• Tolerancias para aceptación– Una lavadora que difiere el 2% de su tiempo
de trabajo con el deseado vs– Sistema de contabilidad cuya exactitud difiere
en un 2% ……?
![Page 7: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/7.jpg)
Diferencias con el software
• Métricas – Sistemas de medición de la calidad.– Para un sistema electromecánico: Tiempo
medio entre fallas– (el software no se desgasta)
– ¿El número de líneas de un programa será una buena medida de su complejidad?
![Page 8: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/8.jpg)
El ciclo de vida del software
Modificación: para adaptarse a los cambios del entorno. (en otros productos se conoce como reparación o mantención)
![Page 9: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/9.jpg)
La fase de desarrollo del ciclo de vida del software
![Page 10: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/10.jpg)
Algunas herramientas
• CASE– Computer – Aided Software Engineering– Ingeniería de software asistida por
computador
• Colaboran con– Elaboración de diagramas de flujo– Diagramas entidad relación– Diccionarios de datos– Generadores de código
![Page 11: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/11.jpg)
¿Qué atributos tiene un buen Software?
• El software debería entregar la funcionalidad y desempeño requeridos por el usuario y debería ser mantenible, confiable y usable.
• Mantenibilidad– El software debe evolucionar para cubrir necesidades cambiantes.
• Confiabilidad– El software debe ser confiable.
• Eficiencia– El software no debe malgastar los recursos del sistema.
• Usabilidad– El software debe ser usable por los usuarios para quienes se diseñó.
![Page 12: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/12.jpg)
Técnicas de desarrollo de software
![Page 13: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/13.jpg)
Modelo de Cascada
Diseño de sistemas Diseño de sistemas y softwarey software
Definición de Definición de requerimientosrequerimientos
Implementación y Implementación y prueba de unidadesprueba de unidades
Integración y Integración y prueba de sistemaprueba de sistema
Operación y Operación y mantenimientomantenimiento
Inconveniente: dificultad para incorporar cambios después de que el proceso parte.
![Page 14: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/14.jpg)
Empleo de prototipos
• Desarrollo de versiones simplificadas
– Para ser analizadas antes de continuar el desarrollo– Facilitan el aprendizaje frente a situaciones nuevas o
desconocidas– Elimina la necesidad de un desarrollo en cascada o
secuencial, permite un desarrollo iterativo o en espiral– El prototipo puede ser desechable o evolutivo
![Page 15: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/15.jpg)
Desarrollo evolutivo
• Desarrollo exploratorio– El objetivo es trabajar con los clientes y evolucionar
hacia un sistema final desde una especificación inicial. Debería partir con requerimientos bien conocidos.
• Prototipos desechables– El objetivo es entender los requerimientos del sistema.
Debería comenzar con requerimientos pobremente conocidos.
![Page 16: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/16.jpg)
Desarrollo evolutivo
Actividades concurrentes
EspecificaciónEspecificación
Bosquejo de la Bosquejo de la descripcióndescripción
DesarrolloDesarrollo
ValidaciónValidación
Versión inicialVersión inicial
Versiones Versiones intermediasintermedias
Versión finalVersión final
![Page 17: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/17.jpg)
Desarrollo evolutivo
• Problemas– Los sistemas a menudo resultan pobremente estructurados.– Puede ser necesario contar con habilidades especiales (por
ejemplo, lenguajes para prototipos rápidos).
• Aplicabilidad– Para sistemas interactivos pequeños o de mediano tamaño.– Para partes de sistemas grandes (por ejemplo, la interfaz del
usuario).– Para sistemas de corta vida útil.
![Page 18: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/18.jpg)
Diseño descendente o top-down
• Refinamiento por pasos sucesivos• Sistema jerárquico de refinamientos• Como resultado puede tenerse directamente
una estructura de módulos
![Page 19: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/19.jpg)
Estructura de un sistema de sueldos simplificado
ProcesarProcesarSueldosSueldos
ProcesarProcesarSueldosSueldos
CalcularCalcularimpuestosimpuestos
CalcularCalculardescuentosdescuentos
CalcularCalcularingresosingresos
DescuentosDescuentoslegaleslegales
OtrosOtrosdescuentosdescuentos
![Page 20: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/20.jpg)
Diseño ascendente o bottom-up
• Identifica las tareas individuales• Utiliza las tareas individuales como
herramientas abstractas para resolver problemas mas complejos.
• Estos bloques o módulos individuales podrían ser reutilizados en otras aplicaciones
Ej.: filtros de Sistemas operativos familia Unix (Linux)
![Page 21: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/21.jpg)
Modelo en espiral del proceso de Software
Prueba de aceptación
Servicio
DeterminarDeterminarobjetivos, alternativas y objetivos, alternativas y
restriccionesrestricciones
Evaluar alternativas e Evaluar alternativas e identificar y resolver identificar y resolver
riesgosriesgos
Planear la siguiente fasePlanear la siguiente fase Desarrollo, verificar Desarrollo, verificar producto del siguiente producto del siguiente
nivelnivel
Análisis de Análisis de riesgosriesgos
Análisis de Análisis de riesgosriesgos
Análisis de Análisis de riesgosriesgos
Análisis Análisis de de
riesgosriesgos
Prototipo 3Prototipo 3
Prototipo 2Prototipo 2Proto-Proto-tipo 1tipo 1
Prototipo Prototipo operacionaloperacional
Simulaciones, modelos, pruebas comparativasConcepto
de operación
Validación de requerimientos
Requerimientos de software Diseño del
producto
Diseño de V&V
Diseño detallado
Código
Prueba de unidades
Prueba de integración
REVISIÓN
Plan de requerimientosPlan de ciclo de vida
Plan de desarrollo
Integración y plan de prueba
![Page 22: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/22.jpg)
Sectores del modelo en espiral
• Fijación de Objetivo– Se identifican objetivos específicos para la fase.
• Identificación de riesgo y reducción– Riesgos son identificados y se realizan actividades para reducir
los riesgos clave.
• Desarrollo y validación– Se escoge un modelo de desarrollo para el sistema que puede
ser cualquiera de los modelos genéricos.
• Planificación– Se revisa el proyecto y se planifica la siguiente fase de la espiral.
![Page 23: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/23.jpg)
Diagramas de flujo de datos
• Representación gráfica de las trayectorias de los datos en un sistema.
Hojas de asistenciaCalcularingresos
Base de datos de empleados
Tabl
a su
eldo
bas
e
Calculardescuentos
Ingr
esos
bru
tos
………………………
![Page 24: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/24.jpg)
Diagramas entidad-relación
• Representación gráfica de los elementos de información o entidades manipulados por el sistema, y de sus relaciones
Profesor imparte clase Asiste a alumno1 n nn
![Page 25: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/25.jpg)
Validación de Software
• Verificación es mostrar que un sistema adhiere a las especificaciones.
• Validación: alcanza los requerimientos del cliente del sistema.
• Involucra los procesos de chequeo y revisión, y las pruebas del sistema.
• Las pruebas del sistema consideran la ejecución del mismo con casos de prueba que se derivan desde la especificación de datos reales para ser procesados por el sistema.
![Page 26: Ingeniería de Software. Referencias Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software Ian Sommerville: Ingeniería](https://reader036.vdocumento.com/reader036/viewer/2022082212/5665b43a1a28abb57c902f20/html5/thumbnails/26.jpg)
Documentación
• La documentación se requiere para los siguientes fines:
– Aprender a utilizar el sistema• Documentación del usuario
– Realizar modificaciones o mantención• Documentación técnica