Hasta hace pocos años no sabía de la importancia de la ingeniería de requerimientos, hasta que me di cuenta de que gran parte de las fallas de los sistemas que desarrollaba el equipo de trabajo se debía a la pobre o nula especificación de requerimientos.
De acuerdo con el Standish Group, los requerimientos incorrectos o incompletos son la principal causa de fracaso en los proyectos de software. Otro dato importante es que siempre resultará más barato la identificación y corrección de errores en la etapa de requerimientos que en posteriores etapas de desarrollo, tal como se refleja en la figura 1. Todo esto resalta la importancia de un correcto trabajo de ingeniería de requerimientos.
Cuando realicé mis estudios universitarios, recuerdo que dentro de las carreras de sistemas computacionales no existían materias donde se abarcará el tema de requerimientos. Creo que es parte vital de la formación de los profesionales en Ingeniería de Software, y debe ser tomado en cuenta por las instituciones académicas.
¿Y qué es lo que abarca la ingeniería de requerimientos? De acuerdo con el SWEBOK (Software Engineering Body of Knowledge), el área de conocimiento de requerimientos de software se preocupa por la obtención, análisis, especificación y validación de requerimientos de software. Analicemos cada uno de estos subprocesos:
Obtención
Consiste en averiguar y capturar las funcionalidades que deberá proveer el sistema de información a sus usuarios. Para obtener los requerimientos, el ingeniero de requerimientos interactúa con los usuarios y se vale de técnicas como:
• Entrevistas
• Observación de la operación
• Revisión de sistemas actuales
• Revisión de documentos existentes como formas, reportes, procedimientos, descripciones de puesto entre otras.
• Escenarios
• Reuniones
Análisis y Negociación
Una vez recabados los datos, el ingeniero de requerimientos le dará forma y orden, clasificará cada uno de los requerimientos, resolverá conflictos encontrados en la información y opcionalmente modelará los procesos para poder tener un mejor entendimiento del problema.
Especificación
Esta es la parte más importante del proceso de requerimientos. Aquí es donde se documenta la información basándose en estándares como lo es el IEEE Std 830 (estándar para la especificación de requerimientos de software). Uno de los productos más importantes que se genera en este subproceso es la especificación de requerimientos de software, o SRS (Software Requirements Specification), documento muy conocido dentro de la industria de software, ya que no se puede concebir una buena documentación de sistemas sino existe un SRS.
Validación
La validación de requerimientos se lleva a cabo en varios pasos. El primer paso es la revisión por parte de varios grupos de interés mejor conocidos como stakeholders y por parte del grupo de desarrollo. Lo que se intenta lograr es que la especificación se lleve a cabo correctamente en base a los estándares existentes.
El siguiente paso es la elaboración de prototipos. Las imágenes dicen más que mil palabras, y el desarrollo de software no es la excepción. Un prototipo ayuda a verificar que se han entendido bien los requerimientos, y a su vez es una herramienta que acerca a los usuarios a lo que será el software. Bien podríamos decir que el prototipo es “la maqueta” de lo que será el sistema terminado. En lo particular también me ha servido para hacer el esqueleto de la aplicación.
Otras Consideraciones
Es importante recordar que la ingeniería de requerimientos es un proceso continuo que se lleva a cabo a lo largo de todo un proyecto, y no simplemente un conjunto de actividades que se realizan una sola vez al inicio del proyecto. Conforme el proyecto avanza, los requerimientos se pueden ir refinando y validando, y hasta es posible que surjan algunos nuevos. Por ello, una buena administración del cambio en los requerimientos es un factor indispensable para el éxito de un proyecto de software.
Referencias
• Leffingwell, Widrig, Managing Software Requirements, Addison Wesley, 1999
• Software Engineering Body of Knowledge. www.swebok.org
Acerca del Autor
Jorge Becerril es Líder de Proyecto de Grupo Carbel Laboratorios Farmacéuticos, tiene 10 años de experiencia como desarrollador de software, es egresado de la Universidad del Valle de Atemajac de la Carrera de Sistemas Computacionales con Orientación a Ingeniería de Software. jorge_becerril@yahoo.com
- Log in to post comments