Ingeniería De Software I 2024 PDF

Document Details

SelectiveWilliamsite4880

Uploaded by SelectiveWilliamsite4880

Universidad Nacional de Catamarca

2024

Mgtr. Carola Flores Lic. Erika Lobo

Tags

ingeniería de software desarrollo de software metodologías de software software

Summary

These lecture notes cover the subject of software engineering, specifically focusing on the different development processes from 2024. Some notable concepts include the software development process, modelling, methodologies and Computer Aided Software Engineering (CASE).

Full Transcript

INGENIERÍA DE SOFTWARE I EL PROCESO DE DESARROLLO Unidad 1 DE SOFTWARE PARTE II Mgtr. Carola Flores Lic. Erika Lobo 2024: Ingeniería en Informática ...

INGENIERÍA DE SOFTWARE I EL PROCESO DE DESARROLLO Unidad 1 DE SOFTWARE PARTE II Mgtr. Carola Flores Lic. Erika Lobo 2024: Ingeniería en Informática Objetivos Ingeniería de Software I - 2024 Ingeniería en Informática Describir las actividades genéricas del proceso de desarrollo. Describir los modelos de procesos para la ingeniería de software y las metodologías. Introducir la tecnología CASE para apoyar las actividades del proceso del software. 1 Contenido Ingeniería de Software I - 2024 Ingeniería en Informática Actividades del proceso de desarrollo Modelos de proceso de desarrollo de software Métodos de la ingeniería de software Tecnología CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora). 2 Actividades del Proceso Actividades del Proceso de desarrollo de SW Ingeniería de Software I - 2024 Ingeniería en Informática 1. Especificación de Requerimiento 2. Diseño del software 3. Implementación del software 4. Validación del software 5. Evolución del software 4 1. Especificación de Requerimiento Ingeniería de Software I - 2024 Ingeniería en Informática El proceso de establecer qué servicios se requieren y las restricciones sobre el funcionamiento y el desarrollo del sistema. Proceso de la ingeniería de requerimientos Sommerville, 2011 5 2. Diseño del Software Ingeniería de Software I - 2024 Ingeniería en Informática El objetivo principal del diseño de software es traducir los requisitos en una estructura de SW coherente y eficiente que pueda ser implementada por los desarrolladores. La actividad de diseño es una descripción de la estructura del software que se va a desarrollar, los modelos y las estructuras de datos utilizados por el sistema, las interfaces entre componentes del sistema 6 Modelo abstracto del proceso de diseño (Sommerville, 2011) 3. Implementación del Software Ingeniería de Software I - 2024 Ingeniería en Informática El proceso de conversión la estructura de diseño del sistema en un sistema ejecutable (código ejecutable). Escribir el código fuente y crear los componentes necesarios según lo definido en el diseño. Se implementa en lenguaje de programación especifico según el tipo de proyecto. Las actividades de diseño e implementación están fuertemente relacionadas y pueden intercalarse. 7 Programación y Depuración Ingeniería de Software I - 2024 Ingeniería en Informática Traducir un diseño en un programa y eliminar los errores de ese programa. La programación es una actividad personal; no existe un proceso genérico de programación. Los programadores realizan algunas pruebas del programa para descubrir fallas en el programa y eliminar esas fallas en el proceso de depuración. 8 4. Verificación & Validación del Software Ingeniería de Software I - 2024 Ingeniería en Informática La verificación y la validación (V & V) muestran si un sistema se ajusta a su especificación y reúne los requerimientos del cliente del sistema. 9 Fuente: Relación entre verificación y validación El Proceso de Prueba Ingeniería de Software I - 2024 Ingeniería en Informática La prueba del sistema total. La prueba de las propiedades emergentes es particularmente importante. Prueba de Prueba del Prueba de componentes sistema aceptación ▪ Los componentes La prueba con los datos individuales se prueban del cliente para verificar independientemente. que el sistema satisface ▪ Los componentes las necesidades de los pueden ser funciones u usuarios. objetos, o agrupaciones coherentes de estas 10 entidades. Ingeniería de Software I - 2024 Ingeniería en Informática 5. Evolución del Software El software es inherentemente flexible y puede cambiar. Como los requerimientos cambian por las circunstancias cambiantes de los negocios, el software que soporta los negocios también debe evolucionar y cambiar. Aunque hay una separación entre el desarrollo y la evolución (mantenimiento) esta es cada vez más irrelevante a medida que menos sistemas son completamente nuevos. 11 MODELOS DE PROCESO DE SOFTWARE Ingeniería de Software I - 2024 Ingeniería en Informática Modelo genérico del proceso de desarrollo Los modelos de desarrollo de software son formas de organizar y gestionar el proceso de creación de un sistema informático. Es una representación abstracta y simplificada de las actividades que se realizan durante la creación de un producto de software. Se refiere a un marco conceptual que describe las etapas y actividades típicas involucradas en el proceso de desarrollo de software o sistemas. 14 Modelos de desarrollo de software más conocidos Modelos de desarrollo de software Cascada - Modelo en V Incremental Evolutivos Especializados Pressman, 2015 Modelo en Cascada Definición de requerimientos Diseño del sistema y del software Implementación y prueba unitaria Integración y prueba del sistema Funcionamiento y mantenimiento ⦁ La principal desventaja del modelo en cascada es la dificultad para ajustar los cambios después de que el proceso está en marcha. ⦁ Una fase tiene que estar completa antes de pasar a la próxima fase. Ingeniería de Software I - 2024 Ingeniería en Informática Modelo en Cascada Problemas ▪ La partición inflexible del proyecto en las distintas etapas hace difícil responder a los requerimientos cambiantes del cliente/usuario. Aplicabilidad ▪ Este modelo sólo es apropiado cuando los requisitos están bien entendidos y los cambios serán bastante limitados durante el proceso. 17 Ingeniería de Software I - 2024 Ingeniería en Informática Modelo en V (variante del modelo en cascada) Integra las pruebas durante todo el desarrollo: Las pruebas no son sólo una actividad que ocurre al final del proceso de desarrollo. 18 Planificar pruebas en paralelo con el desarrollo Actividades El modelo incremental aplica secuencias lineales de manera escalonada a medida que avanza el tiempo del calendario. Cada secuencia lineal produce “incrementos” entregables del software Modelo Incremental Ingeniería de Software I - 2024 Ingeniería en Informática En lugar de liberar el sistema en una única entrega, el desarrollo y la entrega se fragmentan en incrementos; con cada incremento se entrega parte de la funcionalidad requerida. Se establecen las prioridades de los requerimientos del usuario; los requerimientos de más alta prioridad se incluyen en los primeros incrementos. Una vez que comienza el desarrollo de un incremento, los requerimientos se congelan, aunque los requerimientos para los incrementos posteriores pueden continuar evolucionando. 20 Modelo Incremental Ingeniería de Software I - 2024 Ingeniería en Informática Ventajas Con cada incremento puede entregarse algo de valor al cliente, por lo que alguna funcionalidad del sistema está disponible desde etapas tempranas. Los primeros incrementos actúan como un prototipo para ayudar en la obtención de los requerimientos de los incrementos posteriores. Bajo riesgo de falla del proyecto global. Los servicios de más alta prioridad del sistema tienden a recibir la mayor cantidad de pruebas. 21 Sommerville, 2011 En los modelos evolutivos se produce un sistema rudimentario inicial que evoluciona según las necesidades del cliente hasta cumplir con los requisitos últimos de éste. Modelos Evolutivos Prototipos El propósito es comprender los requerimientos del sistema; puede comenzar con una limitada comprensión de los requerimientos para clarificar, de manera creciente, aquello que realmente es necesario. Modelos Evolutivos Ingeniería de Software I - 2024 Ingeniería en Informática Construcción de Prototipos Problemas Con frecuencia, los sistemas están deficientemente estructurados. Pueden ser necesarias habilidades especiales (por ejemplo, en lenguajes para el prototipado rápido). Aplicabilidad Para sistemas interactivos de tamaño pequeño o mediano. Para partes de grandes sistemas (por ejemplo, la interfaz de usuario). 24 Modelos Evolutivos : Espiral Ingeniería de Software I - 2024 Ingeniería en Informática Propuesto por Barry Boehm en 1988 Es un modelo de proceso de software evolutivo que combina la naturaleza iterativa de la creación de prototipos con los aspectos de la gestión del riesgo. 25 Desarrollo basado en componentes Se aplica cuando la reutilización es un objetivo del desarrollo. Métodos formales Enfatiza la especificación matemática de los requerimientos. Se centra en construir SW de primera calidad en seguridad (sistemas de tiempo real) Desarrollo de software orientado a aspectos (AOSD) Proporciona un proceso y un enfoque metodológico para definir, especificar, diseñar y construir aspectos. MÉTODOS Y METODOLOGIAS DE LA INGENIERÍA DEL SOFTWARE Componentes de un Método para el Desarrollo de Software Ingeniería de Software I - 2024 Ingeniería en Informática (Pressman, 2010) Método de la Ingeniería del Software Un enfoque estructurado para el desarrollo de software que incluye modelos del sistema, notaciones, reglas, consejos de diseño y guías para el proceso. → Descripciones de modelos Descripciones de los modelos gráficos que deben producirse. → Reglas Las restricciones que se aplican a los modelos del sistema. → Recomendaciones Consejos sobre una buena práctica de diseño. → Guías para el proceso Qué actividades se deben seguir. 28 Elementos de un Método Ingeniería de Software I - 2024 Ingeniería en Informática (Booch, 2007) → Notación El lenguaje para expresar cada modelo. → Proceso Las actividades que orientan la construcción de modelos. → Herramientas Los artefactos que ayudan a construir los modelos. 29 Metodología de desarrollo de SW Ingeniería de Software I - 2024 Ingeniería en Informática Una metodología es un conjunto integrado de métodos que permite abordar cada una de las actividades del proceso de desarrollo de proyecto de SW. Son marcos de trabajo para organizar y gestionar el proceso de creación de un sistema informático. Definen los pasos, las herramientas, los roles y las actividades que se deben realizar para llevar a cabo un proyecto de software con éxito. → Clasificación de metodología de Desarrollo de SW Metodologías tradicionales: suelen enfocarse en la planificación detallada, la documentación exhaustiva y la ejecución lineal de fases. Ejemplo metodologías estructuradas como Edward Yourdon, Tom DeMarco, Ken Orr entre otras. Metodologías ágiles: son aquellas que siguen un enfoque iterativo e incremental, donde se entregan pequeñas partes del producto de forma frecuente y se adaptan a los cambios. Ejemplos: programación extrema (XP), Kanban, Scrum. Metodologías Hibridas: combina elementos de la metodología 30 tradicional y la metodología ágil. Ejemplo: RUP. Metodologías TRADICIONALES La metodología estructurada de la mano con los lenguajes estructurados Secuencial y Lineal: El desarrollo sigue una secuencia predefinida de fases según las actividades. Cada fase debe completarse antes de comenzar la siguiente, sin solapamientos. Documentación Extensiva: Requiere una documentación detallada en cada fase del proyecto. Cambio Restringido: Los cambios son difíciles de implementar una vez que el proyecto ha avanzado. Ideal para proyectos donde los requisitos son claros y poco propensos a cambiar. Control y Planificación: Gran énfasis en la planificación inicial y en el control del progreso a lo largo del proyecto. Adecuado para Proyectos Grandes y Críticos: Es común en proyectos que requieren alta fiabilidad, como en sectores bancarios, militares o aeroespaciales. Facilita el cumplimiento de normas y regulaciones debido a la estructura y documentación exhaustiva. Participación del cliente: El cliente generalmente se involucra solo al final, en la etapa de validación. Evolución a la Orientación a Objetos Aunque las metodologías orientadas a objetos (OO) comparten algunas raíces con las tradicionales, representan una evolución en la forma de desarrollar software. Su enfoque en objetos y sus características distintivas las ubican en una categoría aparte. OOSE (Objectory Object-Oriented Software Engineering): Desarrollada por Ivar Jacobson, se enfoca en la captura de requisitos y el diseño de sistemas orientados a objetos centrado en los casos de uso. RUP (Rational Unified Process): Un proceso de desarrollo iterativo e incremental que utiliza UML como lenguaje de modelado. Metodologías ÁGILES Fuente: https://www.mytra.es/blog-post/metodologias-agiles-en-desarrollo-de-software La metodología ágil es un conjunto de técnicas aplicadas en ciclos de trabajo cortos, con el objetivo de que el proceso de entrega de un proyecto sea más eficiente. Ingeniería en Informática 35 Ingeniería de Software I - 2024 Los principios de los métodos ágiles Ingeniería de Software I - 2024 Ingeniería en Informática Programación Extrema (XP) Basada en un conjunto de reglas y buenas prácticas para el desarrollo de software en ambientes muy cambiantes con requisitos imprecisos. Está enfocada en la retroalimentación continua entre el equipo de desarrollo y el cliente. → Características Variante del modelo de desarrollo incremental. Se apoya en la mejora constante del código. Pruebas continuas automatizadas desde el inicio del proyecto. Programación en parejas, uno escribiendo el código y el otro revisando activamente lo que se está escribiendo. Esto mejora la calidad del código, fomenta el aprendizaje mutuo y evita errores inadvertidos. Comunicación constante, frecuente y abierta entre todos los miembros del equipo de desarrollo incluyendo los clientes. Diseño simple en lugar de soluciones complejas, simplicidad y la claridad en el diseño del software para facilitar el mantenimiento y la evolución del código. 36 Ingeniería en Informática 37 Ingeniería de Software I - 2024 Programación Extrema (XP) Scrum Ingeniería de Software I - 2024 Ingeniería en Informática Scrum es una metodología ágil ampliamente utilizada en el desarrollo de software y la gestión de proyectos. Se centra en la colaboración, la adaptabilidad y la entrega incremental de software → Características Se basa en cinco valores: compromiso, coraje, enfoque, respeto y apertura. Se organiza en tres roles: el propietario del producto, el equipo de desarrollo y el scrum master. Se divide el trabajo en una lista de tareas priorizadas llamada backlog del producto. Se realizan entregas parciales y regulares del producto llamadas incrementos. Se planifica el trabajo en ciclos cortos e iterativos llamados sprints. Se realizan reuniones diarias para sincronizar el trabajo del equipo. Se revisa el trabajo realizado y se recibe la retroalimentación del cliente al final de cada sprint llamada revisión del sprint. Se evalúa el proceso y se identifican las mejoras a implementar al 38 final de cada sprint llamada retrospectiva del sprint. Scrum Ingeniería de Software I - 2024 Ingeniería en Informática Scrum es un esqueleto de proceso que incluye un conjunto de prácticas y roles predefinidos 39 CASE: Computer Aided Software Engineering Ingeniería de Software Asistida por Computadora Son aplicaciones informáticas que destinadas a aumentar la productividad del desarrollo de SW reduciendo los costos en términos de tiempo y dinero Fuente: https://www.youtube.com/watch?v=1UedW1W2JcU Tecnología CASE Ingeniería de Software I - 2024 Ingeniería en Informática La Ingeniería del Software Asistida por Computadora (CASE – Computer-Aided Software Engineering) es software que soporta los procesos de desarrollo y evolución del software. Automatización de actividades → Editores gráficos para el desarrollo de modelos del sistema. → Generadores de código a partir de los modelos gráficos. → Diccionarios de datos para gestionar las entidades de diseño. → Constructores de GUI para la construcción de la interfaz de usuario. → Depuradores para facilitar el hallazgo de fallas en los programas. → Traductores automatizados para generar nuevas versiones de un programa. 45 Clasificación de las herramientas CASE Ingeniería de Software I - 2024 Ingeniería en Informática Upper CASE Medium CASE Lower CASE Apoyo a las primeras Apoyo a las fases Apoyo a las últimas fases centrales fases Implementación Métricas de SW Análisis de (codificación) Requerimientos Estimación de Pruebas Costos Diseño Planificación Mantenimiento 47 Bibliografía Principal Ingeniería de Software I - 2024 Ingeniería en Informática ▪ PRESSMAN, Roger S. INGENIERÍA DEL SOFTWARE - Un Enfoque Práctico. 7ª Edición McGraw-Hil / Interamericana. México, 2010. ▪ PRESSMAN, Roger S. & Bruce R. MAXIM INGENIERÍA DEL SOFTWARE - Un Enfoque Práctico. 8ª Edición McGraw-Hill Education. New York, 2015. ▪ SOMMERVILLE, Ian INGENIERÍA DEL SOFTWARE. 7ª Edición Addison Wesley / Pearson Educación. Madrid, 2005. INGENIERÍA DEL SOFTWARE. 9ª Edición Addison Wesley / Pearson Educación. México, 2011. 48

Use Quizgecko on...
Browser
Browser