Ingeniería de Requerimientos
Introducción
Conjunto de actividades involucradas en el descubrimiento, documentación y mantenimiento de los requerimientos para un producto determinado – según Ortas 1997. El proceso de recopilar, analizar y verificar las necesidades del cliente para un sistema, es llamado Ingeniería de Requerimientos. La meta es entregar una especificación de requerimientos de software correcta y completa.
La Ingeniería de requerimientos comprende todas las tareas relacionadas con la determinación de las necesidades o de las condiciones a satisfacer para un software nuevo o modificado, tomando en cuenta los diversos requerimientos de los usuarios, que pueden entrar en conflicto entre ellos. Puede ser conocida también como "Análisis de requerimientos", "especificación de requerimientos", etcétera .
¿Qué es un Requerimiento?
- Una condición o capacidad necesaria para un usuario para resolver un problema o alcanzar un objetivo
- Una condición o capacidad que debe estar presente en un sistema o componentes de un sistema para satisfacer un contrato, estándar, especificación u otro documento formal
- Una representación documentada de una condición o capacidad como en (1) o (2)
Importancia de los requerimientos
“La parte más difícil de construir un sistema es precisamente saber qué construir. Ninguna otra parte del trabajo conceptual es tan difícil como establecer los requerimientos técnicos detallados, incluyendo todas las interfaces con gente, máquinas y otros sistemas. Ninguna otra parte del trabajo afecta tanto el sistema si es hecha mal. Ninguna es tan difícil de corregir más adelante... Entonces, la tarea más importante que el ingeniero de software hace para el cliente es la extracción iterativa y el refinamiento de los requerimientos del producto.”
Frederick P. Brooks 1987
Los requerimientos se deben descubrir antes de empezar a construir un producto y puede ser algo que el producto debe hacer o una cualidad que el producto debe tener. Si no se tienen los requerimientos correctos, no se puede diseñar o construir el producto correcto.
El Proceso
Flujo General
Extracción de Requerimientos
Existen diferentes métodos para la extracción de los requerimientos. Algunos son:
Entrevistas con el cliente y con los futuros usuariosEncuestas
Documentos entregados por los clientes
Prototipación
Sistemas antiguos
Es importante tener en cuenta que en muchos casos el cliente no sabe al inicio del proyecto cuales son sus requerimientos. En este sentido es más un proceso de definición y descubrimiento de requerimientos junto al cliente que una extracción de algo existente.
Análisis y Documentación
Análisis:
Se procesa la información obtenid.Se analizan inconsistencias que puedan existir.
Se analiza si la información obtenida es suficiente para la etapa de diseño.
Documentación:
Los diferentes tipos de documentos son: URS, AID, SRS, Prototipos.Es importante que los documentos estén completos.
Estos documentos no solo sirven para saber qué hay que hacer sino para tener un respaldo validado por el cliente de lo que posteriormente se construye.
Revisión y Validación
Revisión:
Proceso manual que involucra a varios lectores.Internal Quality Assurance (IQA): revisión interna del proyecto.
External Quality Assurance (EQA): revisión externa del proyecto pero interna a la empresa.
Validación:
El equipo “conduce” al cliente a través de los requerimientos para confirmar si es lo que realmente quiere.Es muy importante que el cliente valide los documentos generados.
Errores de requerimientos
“Los requerimientos, especialmente expresados en una especificación (o a menudo no expresados porque no existe especificación), son la mayor fuente de los costosos bugs. El rango va desde un pequeño porcentaje hasta más del 50% dependiendo de la aplicación y el ambiente. Lo que más duele es que estos defectos son los que más temprano invaden el sistema y también son los últimos en salir. No es raro que un requerimiento defectuoso pase todos los tests de desarrollo, el beta-test, y el uso inicial en producción, sólo para ser descubierto después de que se ha instalado en centenares de sitios” (Beizer · 1990).
El 48% de los defectos observados en proyectos de software de mediana escala son “atribuidos a especificaciones funcionales o requerimientos incorrectos o mal interpretados” (Basili y Perricone · 1984). El 79,6% de los defectos de las interfaces y el 20,4% de los defectos de implementación se deben a requerimientos omitidos o incompletos (Perry y Stieg · 1993). El 44,1% de todos los defectos de los sistemas se producen en la etapa de especificación (Computer Weekly Report · 1994). La tecnología es un problema mayor solo en un 7% de los proyectos.
Gestión de Requerimientos
Más allá de documentar los requerimientos, debemos gestionarlos. Asegurarnos que son formalizados y validados. Definir cuales se incluyen en el proyecto. Asociarles información que ayudan a su gestión (atributos). Realizar un seguimiento de los estados por los que pasan durante el ciclo de vida del proyecto.
La Trazabilidad: Cuando la gestión de los requerimientos es buena, la trazabilidad puede ser establecida desde el requerimiento fuente hasta llegar a sus requerimientos de bajo nivel, y remontar desde el bajo nivel a su fuente. Mantener la trazabilidad bidireccional entre los requerimientos y los planes y los productos entregables del proyecto. Mantener la trazabilidad bidireccional de los requerimientos para cada nivel de descomposición del producto.
Los Atributos: Los atributos Son información adicional que asociamos a los requerimientos. Auxilian a la gestión y desarrollo de los requerimientos. Pueden enriquecer la información de reportes de gestión. De alguna forma también son clasificaciones de los requerimientos en función de los valores posibles de cada atributo. Para negociar entre funcionalidad, planificación, presupuesto y nivel de calidad, es conveniente que los requerimientos funcionales tengan asignado un nivel de necesidad (tres o cuatro categorías: esencial, deseable, opcional, ...), así como un nivel de prioridad temporal (dos o tres categorías: alta, baja, ...). Algunos atributos que podemos llevar asociados a los requerimientos pueden ser:
Criticidad o necesidad del requerimiento.Riesgo de incorporarlo al proyecto.
Impacto asociado.
Si es un requerimiento base o adicional.
Costo de desarrollarlo.
La estabilidad del requerimiento.
La prioridad.
Estados de un requerimiento: Podemos reconocer estados de los requerimientos para gestionar su seguimiento, por ejemplo:
PropuestoIncorporado
En análisis
En revisión de usuario
Validado
No incorporado
Cancelado
En desarrollo
En testeo
En producción
Es importante registrar periódicamente en un gráfico la relación entre:
Requerimientos formalizadosRequerimientos modificados
Requerimientos nuevos
Si el porcentaje de requerimientos modificados mas los nuevos no decrece con el tiempo, existe un riesgo grave en el proyecto.
Conclusiones
La Ingeniería de Requerimientos es primordial en el proceso productivo ya que se enfoca en la producción, siendo su tarea la generación de especificaciones correctas que describan con claridad, sin ambigüedades y en forma compacta las necesidades del cliente, minimizando los problemas relacionados con la gestión de dichos requerimientos.
Los requerimientos son importantes debido a que son la base de todo desarrollo de software. Obtener requerimientos de calidad demuestra que el trabajo realizado culminará con éxito, esto se debe a dos factores:
La utilización adecuada de las técnicas de captura de requerimientos con los clientes.La experiencia de los analistas del proyecto.
En la siguiente presentación pueden obtener mayor información sobre esta interesante función.
0 comentarios:
Publicar un comentario