Ingeniería de Requisitos Orientada a Objetivos

Publicado en

Es conocido que especificar y gestionar los requisitos de forma inadecuada es una de las principales causas de fracaso en el desarrollo de software.

Desde hace algunos años se ha comenzado a incorporar en la ingeniería de software técnicas de análisis de negocios (business analysis) para especificar y analizar los requisitos. Tal es el caso de la Ingeniería de Requisitos Orientada a Objetivos o GORE (Goal-Oriented Requirements Engineering), propuesta para obtener los requisitos mediante técnicas de modelado de objetivos. Los objetivos se utilizan como una conceptualización útil para obtener, modelar y analizar requisitos, capturando alternativas y conflictos. Además, representan lo que el sistema debería lograr a través de la cooperación de los actores en el software a construir en el entorno. Modelarlos es especialmente útil en las fases iniciales del proceso de desarrollo porque permite analizar por qué se necesita el sistema y cómo se pueden abordar los intereses de los stakeholders, de tal forma que es posible modelar al usuario, sus objetivos y las relaciones entre ellos para poder alinear el software a construir con los objetivos estratégicos de la organización. GORE incluso facilita el manejo de las actividades que preceden la formulación de los requisitos del software.

Existen varias propuestas de lenguajes de modelado orientado a objetivos, entre las más importantes se encuentran i* (eye-star), KAOS y GRL. Para fines ilustrativos, en este artículo utilizaremos i*. Este lenguaje está constituido por dos modelos: el modelo de dependencia estratégica o SD (Strategic Dependency), utilizado para describir las relaciones de dependencia entre varios actores en un contexto organizacional, y el modelo estratégico racional o SR (Strategic Rationale) utilizado para describir los intereses y preocupaciones del actor y cómo es que se podrían abordar.

El modelo SR provee una forma detallada de modelar las intenciones y relaciones de cada actor. Considera cuatro tipos de elementos: objetivos (goals), objetivos “blandos” (softgoals), tareas (tasks), y recursos (resources).

A su vez, estos elementos pueden tener los siguientes tipos de relaciones entre sí:

  • Enlace medio-fin (means-end link) para representar formas alternativas de cumplir con un objetivo.

  • Enlace de descomposición de tareas (task-decomposition link), utilizados para relacionar los sub-componentes necesarios para que se pueda llevar a cabo una tarea.

  • Enlace de contribución (contribution links) para modelar cómo es que un elemento intencional contribuye al cumplimiento (o incumplimiento) de un softgoal. Cuando la contribución es suficiente por sí sola para lograr el objetivo, hablamos de un enlace make (hacer), mientras que cuando la contribución es auxiliar, usamos un enlace help (ayudar); cuando no estamos seguros de qué tan fuerte es la contribución, se usa un enlace some+ (algo positivo). Sus homólogos negativos son break, hurt y some-. Finalmente, la etiqueta unknown indica un tipo de contribución cuya fuerza y polaridad es desconocida.

La especificación de los requisitos del software se realiza mediante el modelo SR en el cual se representa a los stakeholders (representados bajo el concepto de actores), los objetivos de la organización (goals), las tareas (tasks) necesarias para lograrlos y las relaciones (relationships) que existen entre todos estos elementos.

La figura 1 muestra un ejemplo de un modelo muy sencillo (adaptado al desarrollo de software) elaborado con el lenguaje i*. El objetivo de este modelo es “Administrar Proveedores” y este se puede lograr a través de alguna de las dos tareas llamadas “Registrar Proveedor” o “Programar Pago Proveedor”, ambas necesitan el recurso (resource) llamado “Catálogo de Proveedores” el cual representa la información de los proveedores necesaria para poder administrarlos.

requerimientos

Figura 1. Modelo SR en i* para representar el análisis de requisitos de un software.

Finalmente, es importante mencionar que el modelado de objetivos se puede utilizar en combinación con distintos modelos o metodologías para construir software, tal como el desarrollo orientado a aspectos (aspect-orientation) o la ingeniería dirigida por modelos (Model-Driven Engineering, MDE). De hecho, en MDE los modelos GORE son posteriormente utilizados para generar código fuente del software a construir representando con esto un ahorro en el tiempo de desarrollo. En alguna otra ocasión espero poder escribir un artículo sobre esta interesante área de la ingeniería de software.

Referencias

  1. A. Lapouchnian (2005). Goal-Oriented Requirements Engineering: An Overview of the Current Research. https://sg1.run/xs

  2. https://istarwiki.org

Bio

 

José Alfonso Aguilar Calderón es Profesor-Investigador en la Facultad de Informática de Mazatlán de la Universidad Autónoma de Sinaloa, y consultor para iniciativa privada. Es Doctor en Aplicaciones de la Informática por la Universidad de Alicante, España, y miembro del Sistema Nacional de Investigadores Nivel 1 del Consejo Nacional de Ciencia y Tecnología (CONACyT). ing.jose.alfonso.aguilar@gmail.com