Roger S. Presuman Ingeniería de Software un Enfoque practico ANALISIS DE REQUERIMIENTOS En análisis de requerimientos es la tarea que plantea la asignación de software a nivel de sistema y el diseño de programas (Figura 3.2). El análisis de requerimientos facilita al ingeniero de sistemas especificar la función y comportamiento de los programas, indicar la interfaz con otros elementos del sistema y establecer las ligaduras de diseño que debe cumplir el programa. El análisis de requerimientos permite al ingeniero (frecuentemente llamado analista en este papel) refinar la asignación de software y representar el dominio de la información que será tratada por el programa. El análisis de requerimientos da al diseñador la representación de la información y las funciones que pueden ser traducidas en datos, arquitectura y diseño procedimental. Finalmente, la especificación de requerimientos suministra al técnico y al cliente, los medios para valorar la calidad de los programas, una vez que se haya construido. Tareas del análisis El análisis de requerimientos puede dividirse en cuatro áreas: 1) reconocimiento del problema; 2) evaluación y síntesis; 3) especificación, y 4) revisión. Inicialmente, el analista estudia la Especificación del Sistema (si existe) y el Plan del Proyecto. Es importante comprender el contexto del sistema y revisar el ámbito de los programas que se usó para generar las estimaciones de la planificación. A continuación, debe establecerse la comunicación necesaria para el análisis, de forma que se asegure el reconocimiento del problema. Las formas de comunicación requerida para el análisis se ilustran en la Figura 3.3. El analista debe establecer contacto con el equipo técnico y de gestión del usuario/cliente y Roger S. Presuman Ingeniería de Software un Enfoque practico con la empresa que vaya a desarrollar el software. El gestor del programa puede servir como coordinador para facilitar el establecimiento de los caminos de comunicación. El objetivo del analista es reconocer los elementos básicos del programa tal como lo percibe el usuario/cliente. La evaluación del problema y la síntesis de la solución es la siguiente área principal de trabajo del análisis. El analista debe evaluar el flujo y estructura de la información, refinar en detalle todas las funciones del programa en detalle, establecer las características de la interfase del sistema y descubrir las ligaduras del diseño. Cada una de las tareas sirven para describir el problema de forma que pueda sintetizarse un enfoque o solución global. Por ejemplo, un importante suministrador de materiales de fontanería necesita un sistema de control de inventario. El analista encuentra que los problemas con el sistema manual actual incluyen: 1) imposibilidad de obtener rápidamente el estado de una componente; 2) dos o tres días de tiempo medio para actualizar un archivo de tarjetas, y 3) múltiples Roger S. Presuman Ingeniería de Software un Enfoque practico reordenes del mismo vendedor debido a que no hay forma de asociar vendedores con componentes, etc. Una vez que se han identificado los problemas, el analista determina qué información va a ser producida por el nuevo sistema y qué datos se le suministrarán al sistema. Por ejemplo, el cliente desea un informe diario que indique los elementos que se han tomado del inventario y cuantos elementos similares permanecen. El cliente indica que los empleados del inventado registrarán el número de identificación de cada pieza cuando dejen el área de inventario. Hasta la evaluación de los problemas actuales y de la información deseada (entrada y salida), el analista comienza por sintetizar una o más soluciones. Un sistema basado en un terminal en línea resolverá varios problemas, pero ¿fallará en el ámbito perfilado en el Plan de Software? Parece que se va a necesitar un sistema de gestión de base de datos, pero ¿está justificada la necesidad de asociatividad del usuario/cliente? El proceso de evaluación y síntesis continúa hasta que el analista y el cliente creen que el software puede ser especificado adecuadamente para la fase de desarrollo. El cliente puede no estar seguro de precisar bien lo que quiere. El que desarrolla el software puede no estar seguro de que un enfoque concreto sea apropiado para realizar la función y comportamiento deseado. Por éstas y muchas otras razones, puede presentarse un enfoque alternativo, llamado construcción de prototipos, para el análisis de requerimientos. Las tareas asociadas con el análisis y especificación existen para dar una representación del programa que pueda ser revisada y aprobada por el cliente. En un mundo ideal el cliente desarrolla una Especificación de Requerimientos del Software completamente por sí mismo. Esto se presenta raramente en el mundo real. En el caso mejor, la especificación se desarrolla conjuntamente entre el cliente y el técnico. Una vez que se hayan descrito las funciones básicas, comportamiento, interfase e información, se especifican los criterios de validación para demostrar una comprensión de una correcta implementación de los programas. Estos criterios sirven corno base para hacer la prueba durante el desarrollo de los programas. Para definir las características y atributos del software se escribe una especificación de requerimientos formal. Además, para los casos en los que se desarrolle un prototipo se realiza un Manual de Usuario Preliminar. Puede parecer innecesario desarrollar un manual de usuario en una etapa tan temprana del proceso de desarrollo. Pero de hecho, este borrador del manual de usuario fuerza al analista a tomar el punto de vista del usuario del software (particularmente importante en los sistemas interactivos). El manual permite al usuario/cliente revisar el software desde una perspectiva de ingeniería humana y frecuentemente produce el comentario: “La idea es correcta, pero esta no es la forma en que pensé que se podría hacer esto”. Es mejor descubrir tales comentarios lo más tempranamente posible en el proceso. Los documentos del análisis de requerimiento (especificación y manual de usuario) sirven como base para una revisión conducida por el cliente y el técnico. La revisión de los requerimientos casi siempre produce modificaciones en la función, comportamiento, representación de la información, ligaduras o criterios de validación. Además, se realiza una nueva apreciación del plan del Proyecto Software para determinar si las primeras Roger S. Presuman Ingeniería de Software un Enfoque practico estimaciones siguen siendo validas después del conocimiento adicional obtenido durante el análisis. El analista Se han escrito libros enteros dedicados al papel y obligaciones del analista. Atwood [ATW77] da una descripción práctica del trabajo: “...Se espera que el analista de sistema analice y diseñe sistemas con un rendimiento óptimo. Esto es, el analista debe producir... una salida que cumpla completamente con los objetivos de gestión...”. Al analista se le conoce con distintos nombres: analista de sistema, ingeniero de sistema, diseñador jefe de sistema, programador analista, etc. Independientemente del título de su trabajo, el analista debe exhibir los siguientes rasgos de carácter: • Habilidad para comprender conceptos abstractos, reorganizarlos en divisiones lógicas y sintetizar “soluciones” basadas en cada división. • Habilidad para entresacar hechos importantes de fuentes conflictivas o confusas. • Habilidad para comprender entornos de usuario/cliente. • Habilidad para aplicar elementos hardware y/o software a entornos de usuario/cliente. • Habilidad para comunicarse bien en forma escrita y verbal. • Habilidad para evitar que “los árboles no nos dejen ver el bosque”. Es probablemente el último rasgo el que distingue verdaderamente a los buenos analistas. Los individuos que se paran excesivamente en los detalles con frecuencia pierden de vista el objetivo global de los programas. Los requerimientos del software deben ser descubiertos de una manera “descendente”; las funciones importantes, interfaces e información deben comprenderse completamente antes de que se especifiquen los detalles de las capas sucesivas. El papel del analista se dibuja en la Figura 3.4. El analista ejecuta o coordina cada una de las tareas asociadas con el análisis de los requerimientos de software. Durante las tareas de reconocimiento, se comunica con el equipo del usuario/cliente para establecer las Roger S. Presuman Ingeniería de Software un Enfoque practico características del entorno existente. Luego el analista contacta con el equipo de desarrollo durante las tareas de evaluación y síntesis, de forma que se definan correctamente las características del software. Generalmente el analista es responsable del desarrollo de una Especificación de los Requerimientos Software y también participa en todas las revisiones. Es importante observar que el analista debe comprender también cada uno de los paradigmas de la ingeniería de la programación (Sección 1.5) y apreciar las fases y pasos genéricos de la ingeniería de la programación que se aplican independientemente del paradigma usado. Muchos requerimientos implícitos (ji ej., diseño para el mantenimiento) se incorporan en la especificación de los requerimientos, sólo si el analista comprende la ingeniería del software.