Capítulo 8 – Ingeniería Software 8.1 – Introducción Capítulo 8
Transcripción
Capítulo 8 – Ingeniería Software 8.1 – Introducción Capítulo 8
PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.1 – Introducción 8.2 – Ciclo de Vida del Software El concepto de ingeniería de software surgió debido a que había demasiados proyectos de software que experimentaban fallos, los cuales se atribuían al rápido aumento en la escala y complejidad del software en cuestión. Se reconoció que era necesario un planteamiento más sistemático en el desarrollo de software, que debía basarse en principios de ingeniería ya establecidos. La idea principal es controlar todas las actividades técnicas y de gestión necesarias para crear un producto de software que cumpla eficientemente con las necesidades del cliente ajustándose a unos límites de tiempo, costos y calidad. Desarrollado por Ricardo Soto De Giorgis PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software Desde el planteamiento de un problema hasta que se tiene el correspondiente programa en funcionamiento que lo soluciona, se sigue una serie de etapas que en conjunto se denomina ciclo de vida del software. Especificación de Requerimientos • Planteamiento del problema a solucionar • Captura de los requisitos Análisis • Estudio en detalle del problema • Análisis de la solución a implementar Diseño • Diseño de la solución • Construcción de diagramas de flujo, diccionario de datos y otros documentos de apoyo. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO INF 140 – Informática I Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.2 – Ciclo de Vida del Software 8.3 – Paradigmas para el proceso de desarrollo de Sw Implementación • Construcción de la aplicación (programación, compilación, manuales) Pruebas • Instalación de la aplicación en la plataforma final. • Corrección de errores. • Ultimos afinamientos. Probablemente, no es posible contar con un sólo proceso para el desarrollo de software. Por otra parte, distintos factores relacionados con el desarrollo de software conducen a diferentes tipos de procesos. Entre estos factores se incluye el tipo de software que se está desarrollando (tiempo real, sistema de información, producto para computador de escritorio), la escala (un solo desarrollador, un pequeño equipo, un equipo de más de cien personas), y así sucesivamente Mantención • Corrección de errores detectados tardíamente. • Mejoras • Agregar nuevas funcionalidades Mientras más temprano se comete un error y más tarde se descubre más caro resulta. Es conveniente apoyar cada una de las etapas con documentos, diagramas y herramientas. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO INF 140 – Informática I Escuela de Ingeniería Informática 8.3.2 – Modelo de desarrollo Incremental Es un modelo cuyas etapas consisten en expandir incrementos de un producto de software operacional, en el cual la dirección de la evolución es determinada por la experiencia operacional. Requerimientos del Sistema Especificación de Requerimientos de Software Los incrementos son mucho más útiles y fáciles de probar que los productos de nivel intermedio de un esquema top-down como el anterior, y pueden ser entregados al cliente a medida que son desarrollados mediante entregas incrementales. Diseño del Software Implementación del Software La entrega incremental, eso si, no es una exigencia del modelo, pero le agrega valor al permitir que se incorporen tempranamente la visión y experiencia del usuario en un producto refinado. Puede consistir en unidades funcionales autocontenidas de software que realizan algún objetivo útil para el cliente, y/o material de apoyo, como las especificaciones de requerimientos y de diseño, planes y casos de prueba, manuales y material de capacitación. Integración del Software Pruebas Formales Operación y Mantención Escuela de Ingeniería Informática Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.3.1 – Modelo Cascada Desarrollado por Ricardo Soto De Giorgis Desarrollado por Ricardo Soto De Giorgis INF 140 – Informática I Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I 1 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.3.3 – Paradigma de construcción de prototipos 8.3.3 – Paradigma de construcción de prototipos Recolección y Análisis de Requerimientos Un prototipo corresponde a una implementación parcial de un sistema, que se construye con el objetivo de aprender más acerca de un problema o de su solución. Diseño Rápido La construcción de prototipos ha sido una práctica estándar en muchas industrias de producción y de ingeniería, como por ejemplo en las fábricas de automóviles y aviones. Su principal ventaja es que no acarrea ningún tipo riesgo, que en el caso de la industria del software si lo puede ser al construirse un producto que satisface un conjunto de requerimientos inadecuado. Así, la construcción de prototipos permite conocer más sobre los verdaderos requerimientos y acerca de diseños alternativos que los podrían satisfacer. Construcción del prototipo Refinamiento del prototipo y diseño Evaluación del Prototipo por parte del Cliente Cliente Satisfecho En general, se pueden encontrar dos tipos principales de prototipos: desechables y evolutivos. Desarrollo a escala Completa Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.3.3 – Paradigma de construcción de prototipos – Prototipos Desechables 8.3.3 – Paradigma de construcción de prototipos – Prototipos Evolutivos Esta clase de prototipos se construyen lo más rápido posible, implementándose únicamente aquellos requerimientos que estén pobremente comprendidos. No tiene sentido considerar la implementación de los requerimientos totalmente entendidos, pues esto acarrea ningún tipo de conocimiento adicional y sí una pérdida de tiempo y recursos. Estos prototipos se construyen siguiendo un proceso de calidad, incluyendo especificación de requerimientos, documentación de diseño y pruebas rigurosas, e implementan únicamente requerimientos confirmados; de esta forma se evita el implementar aquellos requerimientos débilmente entendidos, cuando se sabe que después del prototipo se van a conocer mejor. Los prototipos desechables se usan experimentalmente, para estudiar cuáles requerimientos son reales y cuáles no, desechándose una vez que se ha obtenido la información deseada. Entonces, se escribe la especificación de requerimientos del software, incorporando lo que se aprendió, y se construye el sistema real basado en esa especificación. Los prototipos evolutivos también se usan experimentalmente, pero para determinar cuáles requerimientos existen y de los cuales no se había pensado en un comienzo. Entonces, este nuevo conocimiento debe ser usado para modificar la especificación de los requerimientos ya conocidos, y el sistema debe ser rediseñado, (probablemente) re-implementado en algunas partes y vuelto a probar. Bajo este enfoque, el proceso completo se puede repetir varias veces. Funcionan muy bien en forma aislada, para verificar partes relativamente pequeñas de problemas complejos. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software Desarrollado por Ricardo Soto De Giorgis Análisis de Riesgo Recolección de requisitos y planificación del proyecto iniciales Análisis de Riesgo basado en los requisitos iniciales Análisis de Riesgo basado en la reacción del cliente Se utilizan herramientas que facilitan el desarrollo de Sw. Estrategia de diseño Implementación en L4G Prueba Prototipo inicial de SW Evaluación del cliente Ingeniería Sistema de Ingeniería INF 140 – Informática I Generalmente generan el código fuente en forma automática. También pueden facilitar las consultas a las Bases de datos, generación de informes, manipulación de datos, definición de interfaces gráficas… Los defensores de esta técnica aducen reducciones de tiempo drásticas en el desarrollo de Sw. Los detractores aducen que las herramientas actuales no son más fáciles de ocupar que los lenguajes de programación, que el código fuente producido es “ineficiente” y que el mantenimiento es cuestionable. Prototipo del siguiente nivel Escuela de Ingeniería Informática Escuela de Ingeniería Informática 8.3.5 – Técnicas de cuarta generación (T4G) Decisión de seguir o no Evaluación del Cliente INF 140 – Informática I PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Recolección de requisitos Planificación basada en los comentarios del cliente Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática Capítulo 8 – Ingeniería Software 8.3.4 – Modelo espiral Planificación Los prototipos evolutivos funcionan bien cuando la mayoría de las funciones críticas están bien entendidas. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática INF 140 – Informática I 2