Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA
Ingeniería de Software Es una disciplina de Ingeniería de Sistemas: se ocupa de la aplicación de teorías, métodos, herramientas para hacer que las cosas funcionen: Software que sea fiable y trabaje en maquinas reales. Teniendo en cuenta restricciones financieras, organizacionales y técnicas que comprende todos los aspectos de la producción de software. Desde la especificación inicial al mantenimiento del sistema. Administración y gestión del proceso de producción Principios y metodologías para desarrollo y mantenimiento de sistemas de software.
¿Qué es la Ingeniería de Sistemas? Calculo matemático Almacenamiento y manejo de datos Realización de algoritmos Almacenamiento y manejo de informacion Ejecución de tareas consideradas inteligentes La informática como una ingeniería de software: para la creación de instrumentos que sustituyan o imiten al ser humano. ¿Qué es la Ingeniería de Sistemas? Es el estado actual de la evolución del trabajo de sistemas, desde un clásico concepto artesanal, hacia el logro de la producción industrial de sistemas.- Hacer los planos del Sistemas(Análisis) Sobre los planos aprobados por sus usuarios, generar las instrucciones de fabricación(Diseño) Sobre esas instrucciones aprobadas por los usuarios, proceder a construir el sistema(Desarrollo e implementación) Entregar el sistema funcionando, a sus usuarios. Prepararse a dar apoyo al sistema durante su vida útil(mantenimiento)
¿Cómo construir un Sistema de Información? Identificar a los usuarios Definir la arquitectura del sistema Definir el software a desarrollar Cada vez mas complejo Desarrollarlo rápidamente Se necesitan métodos mejores de desarrollo Proceso de desarrollo de software Requerimientos de Usuarios Sistema de Software Ofrece un marco de trabajo genérico LOS SISTEMAS INFORMATICOS ESTÁN COMPUESTO DE: SOFTWARE Componente lógico intangible HARDWARE Componente físico tangible Es la mente Es el pensamiento La capacidad de inferencia Es la resolución psíquica Es el cerebro humano
¿Qué es el Software? ACTIVIDADES DE LA INGENIERIA DE SOFTWARE Analizar el problema hasta su total comprensión Diseñar el sistema software que cumpla las expectativas Programarlo, probarlo y mantenerlo hasta que se decida su retiro ¿Qué es el Software? Instrucciones(programa de computadora) que cuando se ejecuta proporcionan la función y el rendimiento deseado Estructura de datos que permiten a los programas manipular adecuadamente la información.- Documentos que describen la construcción y uso de programas. Pressman Programas de ordenador y documentación asociada Los productos de software puede ser Genéricos: desarrollados para clientes muy diversos Hechos a medida: para un cliente particular de acuerdo a su especificación.- Sommerville
Ingeniería de Software e Ingeniería de Sistemas La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo de sistemas basados en computadora. La Ingeniería de software es solo parte de este proceso. Los especialistas de sistemas se encargan de especificar el sistema, definir su arquitectura, integrar sus partes. Al ser el software muchas veces la parte mas importante, las técnicas de ingeniería de software se aplican en el proceso de ingeniería de sistemas.-
Principios de la Ingeniería de Software Principios de la gestión de Proyectos La calidad debe ser siempre primero, se debe cuantificar Es posible desarrollar software de alta calidad Una buena gestión es mas importante que una buena calidad Las personas y el tiempo no son intercambiables.- Principios técnicos: Seleccionar el modelo de ciclo de vida adecuado Entregar productos al usuario lo antes posible Determinar el problema antes de escribir los requisitos Evaluar la alternativa de diseño Nunca diseñar sin documentación Minimizar la distancia intelectual entre el problema y el mundo real Inspeccionar el código antes de probarlo Principios de actitud y de filosofía profesional: Usar formalismos distintos para las distintas fases Las técnicas son anteriores a las herramientas Primero hazlo correcto, después hazlo rápido La gente es la clave el éxito Introduce las mejoras con cuidado Asunción de responsabilidades de hacerlo bien, o no hacerlo Las complejidad del software es creciente.
Evolución en la construcción de software Años 70 De la programación al ciclo de vida Salto conceptual del programa al producto Ciclo de vida es el conjunto de ESTADOS por los que pasa el producto desde su nacimiento. El programa es un estado mas en el conjunto del desarrollo de software.- Se definieron los demás estados Descripción del problema: Análisis y especificación Diseño: de la arquitectura, de funciones, de datos Codificación e integración Años 80 Del ciclo de vida al Proceso de Software Salto conceptual del producto al proceso. El proceso de software es el conjunto de tareas que realiza el equipo de desarrollo. Definición de la IEEE de un estándar de proceso de proceso de software con la descripción de tareas, independiente del modelo de ciclo de vida.
Proceso de software Años 90 Del Proceso de Software a la evaluación de su madurez. Centro de investigaciones: fiabilidad y calidad del software. Condición necesaria para un Buen Producto Proceso de software Un proceso de software es un conjunto de actividades y resultados asociados que conducen a la creación de un producto de software Proceso de resolución de problema: Decidir que hacer Decidir como hacerlo Hacerlo Probar el resultado Usar el resultado Análisis de requerimientos Diseño de sistema Codificación Pruebas Instalación
Obtención de requisitos Diseñar el sistema Programar el código El Proceso Software Básico debe estar formado por las siguientes 6 etapas: Obtención de requisitos Diseñar el sistema Programar el código Probar el sistema Instalar el sistema Mantener y ampliar. Conjunto de actividades interrelacionadas por diversas estrategias que transforman el producto software Proceso Software Proveen un esquema necesario para planificar, organizar, coordinar, asignar personal, presupuestar y dirigir las actividades de construcción de software Conjunto de estados por los que pasa el producto. Ciclo de transformaciones que el producto sufre a lo largo de su vida. Ciclo de Vida
Ciclo de vida: Determina el orden de las fases del proceso Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de requisitos hasta la finalización de su uso. ISO 12207-1 Determina el orden de las fases del proceso Establece los criterios de transición de una fase a otra Probar el sistema Obtención de requisitos Diseñar el sistema Programar el código Instalar, mantener ampliar Actividades del Proceso Necesidad Especific. de requisitos Diseño Programa Sistema a Software Estados del Producto
Modelos de ciclos de vida Tradicional Desarrollo incremental Desarrollo con prototipado Espiral Alternativos Cascada Refinamiento sucesivo Cascada Refinamiento sucesivo
Modelo de ciclo de vida en cascada Requisitos Diseño Codificación Prueba Operación Características: Obliga a especificar lo que el sistema debe hacer antes de construir el sistema Obliga a definir como van a interactuar los componentes. Permite detectar y resolver desviaciones sobre la planificación inicial Requiere que el proceso de desarrollo genere una serie de documentos que posteriormente pueden utilizarse para la validación y el mantenimiento del sistema Ventajas: Las etapas están organizadas de un modo lógico Cada etapa incluye cierto proceso de revisión. Esta organizado de modo que se pase el menor numero de errores de una etapa a la siguiente El ciclo es interactivo. El flujo básico es de arriba hacia abajo, no obstante, reconoce que los problemas de etapas inferiores afectan a las decisiones de las etapas superiores.-
Visión alternativa del ciclo de vida en Cascada Requerimiento sistema global sistema software Diseño Preliminar detallado Código Integración software y hardware Prueba del sistema software Integración del software Prueba de componente Prueba de unidad Visión alternativa del ciclo de vida en Cascada Los requisitos del sistema global se dividen en requisitos del hw y requisitos del sw Modelo alternativo que enfatiza en la validación de los productos.
Requisitos Diseño de sistema Diseño detallada Implementación / pruebas unitarias Pruebas de componentes Pruebas de integración Pruebas de aceptación Valida requisitos Verifica diseño Modelo en cascada en V Muestra la relación de las actividades de prueba con el análisis y diseño
Modelo incremental ……… A. Requisitos del sistema A. Requisitos del software Diseño Codificación ……… Mantenimiento Modelo incremental El desarrollo incremental es el proceso de construir una implementación parcial del sistema global y posteriormente ir aumentando la funcionalidad del sistema. Ventaja: Facilita la incorporación de nuevos requisitos, por lo tanto el software es fácil de mejorar.- Desventaja: El equipo de desarrollo sacrifica la etapa de análisis a favor de una obtención rápida de la 1º versión, generando un 1º producto alejado de las necesidades del usuario.-
Modelo de ciclo de vida Prototipo Recolección y refinamiento de requisitos Producto de ingeniería Diseño rápido Construcción del prototipo Evaluación del prototipo por el cliente Refinamiento del prototipo Parada Comienzo Sigue el ciclo de vida tradicional , solo que su tiempo de desarrollo será bastante mas reducido. El usuario, mediante a utilización del prototipo, descubrirá los aspectos o requisitos no captados.
Modelo del ciclo de vida en Espiral En este modelo el radio representa el costo El ángulo representa el progreso obtenido en casa fase del espiral Una distinción importante es que el producto estará terminado al finalizar el espiral, no al terminal el ciclo Ventajas: Su rango de opciones permite utilizar los modelos de proceso de construcción de software tradicional, mientras su orientación al riesgo evita muchas dificultades. Se centra en la eliminación de errores y alternativas poco atractivas.
El Proceso Unificado Es un proceso configurable aunque un único proceso no es adecuado para todas las organizaciones de desarrollo de software, el UP es adaptable y puede configurarse para cubrir las necesidades de proyectos pequeños y grandes.
Métodos agiles Tratan de resolver el problema de los tiempos de desarrollo y de l evolución de los requerimientos Livianos : no se detienen en la planificación y documentación. Adaptativos: rápida reacción a los cambios. Iterativos: ciclos muy cortos, con entregables pequeños. Principios agilistas: Entrega temprana al cliente Los requerimientos cambiantes son parte del desarrollo Usuarios y desarrolladores trabajan juntos Motivación de los desarrolladores Los ejecutables entregados son la medida de avance La simplicidad es primordial Limitaciones: Difícil de implementar en equipos de trabajo dispersos físicamente o demasiado grandes Dificultad para desarrollar software grandes y complejos No contemplan la reutilización de componentes Problemas para utilizar herramientas CASE.