Ingenieria De Software

4,156 views

Published on

Published in: Technology, Business

Ingenieria De Software

  1. 1. Ingeniería de Software Tecnologías de la Información Ricardo Mansilla Chávez
  2. 2. ¿Qué es Software? <ul><li>Los productos de software se pueden desarrollar para un cliente en particular o pueden ser desarrollados para un mercado general. </li></ul><ul><li>Productos de software pueden ser: </li></ul><ul><ul><li>Genéricos: desarrollados para ser vendidos a un tipo de clientes. </li></ul></ul><ul><ul><li>Específicos: desarrollado para un cliente de acuerdo a sus necesidades específicas. </li></ul></ul>
  3. 3. ¿Qué es Ingeniería de Software? <ul><li>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. </li></ul><ul><li>aplicación de los métodos de la ingeniería al proceso de desarrollo de software: </li></ul><ul><ul><li>Diseño </li></ul></ul><ul><ul><li>Construcción </li></ul></ul><ul><ul><li>Mantenimiento </li></ul></ul>
  4. 4. La disciplina – una analogía <ul><li>Diseñar y supervisar la construcción de un edificio de oficinas de varios pisos </li></ul><ul><ul><li>Recursos? Dinero, tiempo, otros </li></ul></ul><ul><ul><li>División del proyecto en partes manejables? </li></ul></ul><ul><ul><li>Asegurar que las partes sean compatibles? </li></ul></ul><ul><ul><li>Mecanismo de comunicación entre los encargados de las diversas partes? </li></ul></ul><ul><ul><li>Medición del grado de avance? </li></ul></ul><ul><ul><li>Muchas otras….. </li></ul></ul>
  5. 5. Diferencias con el software <ul><li>Métricas </li></ul><ul><ul><li>Sistemas de medición de la calidad. </li></ul></ul><ul><ul><li>Para un sistema electromecánico: Tiempo medio entre fallas </li></ul></ul><ul><ul><li>(el software no se desgasta)‏ </li></ul></ul><ul><ul><li>¿El número de líneas de un programa será una buena medida de su complejidad? </li></ul></ul>
  6. 6. 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)‏
  7. 7. La fase de desarrollo del ciclo de vida del software
  8. 8. Algunas herramientas <ul><li>CASE </li></ul><ul><ul><li>C omputer A ided S oftware E ngineering Ingeniería de software asistida por computador </li></ul></ul><ul><li>Colaboran con </li></ul><ul><ul><li>Elaboración de diagramas de flujo </li></ul></ul><ul><ul><li>Diagramas entidad relación </li></ul></ul><ul><ul><li>Diccionarios de datos </li></ul></ul><ul><ul><li>Generadores de código </li></ul></ul>
  9. 9. ¿Qué atributos tiene un buen Software? <ul><li>El software debería entregar la funcionalidad y desempeño requeridos por el usuario y debería ser mantenible, confiable y usable. </li></ul><ul><li>Mantenibilidad </li></ul><ul><ul><li>El software debe evolucionar para cubrir necesidades cambiantes. </li></ul></ul><ul><li>Confiabilidad </li></ul><ul><ul><li>El software debe ser confiable. </li></ul></ul><ul><li>Eficiencia </li></ul><ul><ul><li>El software no debe malgastar los recursos del sistema. </li></ul></ul><ul><li>Usabilidad </li></ul><ul><ul><li>El software debe ser usable por los usuarios para quienes se diseñó. </li></ul></ul>
  10. 10. Técnicas de desarrollo de software
  11. 11. Modelo de Cascada <ul><li>Inconveniente: dificultad para incorporar cambios después de que el proceso parte. </li></ul>Diseño de sistemas y software Definición de requerimientos Implementación y prueba de unidades Integración y prueba de sistema Operación y mantenimiento
  12. 12. Empleo de prototipos <ul><li>Desarrollo de versiones simplificadas </li></ul><ul><ul><li>Para ser analizadas antes de continuar el desarrollo </li></ul></ul><ul><ul><li>Facilitan el aprendizaje frente a situaciones nuevas o desconocidas </li></ul></ul><ul><ul><li>Elimina la necesidad de un desarrollo en cascada o secuencial, permite un desarrollo iterativo o en espiral </li></ul></ul><ul><ul><li>El prototipo puede ser desechable o evolutivo </li></ul></ul>
  13. 13. Desarrollo evolutivo <ul><li>Desarrollo exploratorio </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Prototipos desechables </li></ul><ul><ul><li>El objetivo es entender los requerimientos del sistema. Debería comenzar con requerimientos pobremente conocidos. </li></ul></ul>
  14. 14. Desarrollo evolutivo Actividades concurrentes Especificación Bosquejo de la descripción Desarrollo Validación Versión inicial Versiones intermedias Versión final
  15. 15. Desarrollo evolutivo <ul><li>Problemas </li></ul><ul><ul><li>Los sistemas a menudo resultan pobremente estructurados. </li></ul></ul><ul><ul><li>Puede ser necesario contar con habilidades especiales (por ejemplo, lenguajes para prototipos rápidos). </li></ul></ul><ul><li>Aplicabilidad </li></ul><ul><ul><li>Para sistemas interactivos pequeños o de mediano tamaño. </li></ul></ul><ul><ul><li>Para partes de sistemas grandes (por ejemplo, la interfaz del usuario). </li></ul></ul><ul><ul><li>Para sistemas de corta vida útil. </li></ul></ul>
  16. 16. Diseño descendente o top-down <ul><li>Refinamiento por pasos sucesivos </li></ul><ul><li>Sistema jerárquico de refinamientos </li></ul><ul><li>Como resultado puede tenerse directamente una estructura de módulos </li></ul>
  17. 17. Estructura de un sistema de sueldos simplificado Procesar Sueldos Procesar Sueldos Calcular impuestos Calcular descuentos Calcular ingresos Descuentos legales Otros descuentos
  18. 18. Diseño ascendente o bottom-up <ul><li>Identifica las tareas individuales </li></ul><ul><li>Utiliza las tareas individuales como herramientas abstractas para resolver problemas mas complejos. </li></ul><ul><li>Estos bloques o módulos individuales podrían ser reutilizados en otras aplicaciones </li></ul><ul><ul><ul><ul><li>Ej.: filtros de Sistemas operativos familia Unix (Linux)‏ </li></ul></ul></ul></ul>
  19. 19. Modelo en espiral del proceso de Software Prueba de aceptación Servicio Determinar objetivos, alternativas y restricciones Evaluar alternativas e identificar y resolver riesgos Planear la siguiente fase Desarrollo, verificar producto del siguiente nivel Análisis de riesgos Análisis de riesgos Análisis de riesgos Análisis de riesgos Prototipo 3 Prototipo 2 Proto-tipo 1 Prototipo operacional Simulaciones, modelos, pruebas comparativas Concepto 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 requerimientos Plan de ciclo de vida Plan de desarrollo Integración y plan de prueba
  20. 20. Sectores del modelo en espiral <ul><li>Fijación de Objetivo </li></ul><ul><ul><li>Se identifican objetivos específicos para la fase. </li></ul></ul><ul><li>Identificación de riesgo y reducción </li></ul><ul><ul><li>Riesgos son identificados y se realizan actividades para reducir los riesgos clave. </li></ul></ul><ul><li>Desarrollo y validación </li></ul><ul><ul><li>Se escoge un modelo de desarrollo para el sistema que puede ser cualquiera de los modelos genéricos. </li></ul></ul><ul><li>Planificación </li></ul><ul><ul><li>Se revisa el proyecto y se planifica la siguiente fase de la espiral. </li></ul></ul>
  21. 21. Diagramas de flujo de datos <ul><li>Representación gráfica de las trayectorias de los datos en un sistema . </li></ul>Hojas de asistencia Calcular ingresos Base de datos de empleados Tabla sueldo base Calcular descuentos Ingresos brutos ………………………
  22. 22. Diagramas entidad-relación <ul><li>Representación gráfica de los elementos de información o entidades manipulados por el sistema, y de sus relaciones </li></ul>Profesor imparte clase Asiste a alumno 1 n n n
  23. 23. Validación de Software <ul><li>Verificación es mostrar que un sistema adhiere a las especificaciones. </li></ul><ul><li>Validación : alcanza los requerimientos del cliente del sistema. </li></ul><ul><li>Involucra los procesos de chequeo y revisión, y las pruebas del sistema. </li></ul><ul><li>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. </li></ul>
  24. 24. Documentación <ul><li>La documentación se requiere para los siguientes fines: </li></ul><ul><ul><li>Aprender a utilizar el sistema </li></ul></ul><ul><ul><ul><li>Documentación del usuario </li></ul></ul></ul><ul><ul><li>Realizar modificaciones o mantención </li></ul></ul><ul><ul><ul><li>Documentación técnica </li></ul></ul></ul>

×