Requirements Engineering in Agile Software Development
Transcripción
Requirements Engineering in Agile Software Development
REQUIREMENTS ENGINEERING IN AGILE SOFTWARE DEVELOPMENT Resumen del artículo #10 Tecnológico de Costa Rica Requerimientos de Software Ma. Fernanda Chaves Muñoz 201237410 Ingeniería de requerimientos en desarrollo Ágil de software Los métodos de desarrollo ágil son una colección de diferentes técnicas. Lo que valora este tipo de desarrollo es que los individuos y la interacción entre procesos y herramientas, trabajando software sobre documentación comprensiva, clientes que colaboren en la negociación y que respondan a los cambios que se le realicen a un plan. El desarrollo ágil se centra en la comunicación cara a cara entre los clientes y el equipo de trabajo. A diferencia de la Ingeniería de Requerimientos que busca crear un sistema de documentos para transmitir el conocimiento de estos requerimientos. El artículo se basa en la forma en que los requerimientos de usuario se pueden obtener y especificar en el contexto del desarrollo ágil de software. Entre los principios del desarrollo ágil de software: software que funciona se hace con entregan frecuentes; software que funciona es la principal medida de progreso; la satisfacción del cliente con entregas software rápidas; hasta los requerimientos que llegan tarde son bienvenidos; cooperación diaria cercana entre las personas del negocio y los desarrolladores; la mejor forma de comunicación es la conversación cara a cara; los proyectos que son realizados por personas motivadas y de confianza. Las metodologías de desarrollo ágil son usadas en organizaciones en las que no se detienen los requerimientos. El principal beneficio es que se permite un proceso adaptativo, en el cual el equipo y los desarrolladores reaccionan ante los requerimientos que entren, inclusive los que lleguen en etapas tardías del desarrollo de software. Los métodos de ágiles de desarrollo más comunes son mencionados en el artículo El primero es el Modelado Ágil, que es una forma de modelar las actividades, que da a los desarrolladores una guía para crear estos modelos, que resuelven los problemas de diseño y apoyan la documentación pero no la sobre-construcción de estos modelos. Luego está el Desarrollo Orientado a Funciones se trata de un proceso minimalista que se concentra en construir y diseñar fases en las que se definen criterios de entrada y salida, para luego realizar de forma interactiva el diseño y construcción según cada función. Otro método es el Desarrollo Dinámico de Sistemas, en cuál se realizan dos etapas, una es el estudio de viabilidad y el estudio de negocios. En estas dos etapas se realiza la elicitación los requerimientos. El siguiente método en mencionarse la Programación Extrema, que se basa en la simplicidad, comunicación, retroalimentación y esfuerzo; con esto se logran sistemas aún con requerimientos vagos o cambiantes. El último método que se menciona es Scrum. Es un abordaje empírico basado en la flexibilidad, adaptabilidad y productividad. En este método se deja en manos de los desarrolladores escoger los métodos con los que van a trabajar. Se realizan etapas de desarrollo en ciclos de 30 días, en los cuáles diariamente se realizan reuniones de 15 minutos para coordinación e integración. La principal diferencia el desarrollo normal y ágil no es hacer o no la ingeniería de requerimientos (IR), es cuándo se realiza esta. El proceso de IR en sistemas tradicionales se enfoca primero en recolectar todos los requerimientos y preparar la especificación de requerimientos antes de ir al diseño; la IR ágil recibe cambios en requerimientos aún en etapas tardías del ciclo de desarrollo. Las actividades de IR ágil son: Estudio de Viabilidad: Da la visión general del sistema de destino y decide si vale la pena realizar el sistema propuesto. La entrada del estudio es una breve descripción del sistema y cómo va a ser dentro de una organización. Los resultados deberían ser un breve informe, que recomienda si es o no vale la pena seguir el proceso de IR y de desarrollo ágil. Elicitación de Requerimientos: En esta actividad, los equipos trabajan con los stakeholders para averiguar el dominio de aplicación, los servicios que el sistema debe proporcionar, las limitaciones operacionales del sistema y el rendimiento requerido del sistema (requerimientos no funcionales) Análisis de Requerimientos: Determinar si los requisitos no están claros, incompletos, ambiguos o contradictorios, y luego se resuelven estos problemas. Las principales técnicas para el análisis en abordajes ágiles son: o Desarrollo unido de aplicación: se realiza un taller en que se obtienen requerimientos de negocios durante el desarrollo de sistema. También se realiza para fomentar la inclusión del cliente en el proceso de desarrollo. o Modelado: son puentes importantes entre el proceso análisis y diseño. o Priorización: los métodos ágiles especifican que los requisitos deben considerarse similar a una pila de prioridades. Las características son priorizados por los clientes en función de su valor comercial, por lo que los equipos ágiles deben estimar el tiempo requerido para implementar cada requerimiento. El equipo debe distinguir entre los requisitos de "debe tener" y los requisitos de "bueno tener". Documentación de Requerimientos: El propósito es comunicar los requisitos entre las partes interesadas y los equipos de desarrollo ágil. Se recomiendan las siguientes técnicas para resolver el problema de la falta de documentación: o El líder del equipo ágil asigna dos o tres miembros para producir la documentación en paralelo con el desarrollo. o El uso de herramientas computacionales para el modelado como UML y herramientas de gestión de proyectos para especificar una descripción de alto nivel del proyecto. o Desarrollar procesos de ingeniería inversa para proyectos ágiles que apliquen. Validación de Requerimientos: Para asegurar que los requerimientos realmente definan el sistema que quiere el cliente. Las principales prácticas son o Revisión de requerimientos: Se trata de un proceso manual que involucra múltiples lectores, tanto de equipo ágil como de stakeholders para revisar los requerimientos. o Pruebas unitarias: En desarrollo ágil, esta es una técnica en la que los desarrolladores técnicos crean las pruebas antes de escribir código. o Prototipos evolucionarios: Este permite a los clientes la experimentar con la forma en la que el sistema los ayudará en sus labores. o Pruebas de aceptación: son pruebas formales llevadas a cabo por el cliente para asegurar que el sistema cumple con los criterios de aceptación establecidos. Administración de Requerimientos: Se debe controlar y entender los cambios en los requerimientos. Los administradores deben crear y mantener una plataforma para la interacción entre los equipos ágiles y los stakeholders. Entre los lineamientos de IR en desarrollo ágil están: involucrar al cliente, hacer entregas frecuentes, expresar desde el inicio los requerimientos más importantes, establecer un lenguaje para la elicitación de requerimientos, equipos ágiles pequeños son flexibles, no realizar documentación temprana, dividir requerimientos complejos es otros más simples, entre otros.