No cabe duda de que esta aplicación tiene un éxito porque su desarrollo de centro en el usuario final
De modo que concluyo con lo siguiente: "En todo desarrollo de software, debemos tener al usuario siempre en mente".
Recopilación de información dentro del entorno del Desarrollo de Software.
No cabe duda de que esta aplicación tiene un éxito porque su desarrollo de centro en el usuario final
De modo que concluyo con lo siguiente: "En todo desarrollo de software, debemos tener al usuario siempre en mente".
La mayor parte de los problemas del desarrollo de software están relacionados con la ingeniería de requerimientos, y dentro de ésta, con la elicitación de dichos requerimientos.
Aunque se disponga de excelentes lenguajes de especificación de requerimientos e incluso aunque se consiga que los clientes y usuarios validen una determinada especificación, si no se han elicitado los requerimientos correctos, todo el trabajo de desarrollo terminará con un producto técnicamente correcto pero inútil, ya que no satisfará las necesidades que dieron origen a su desarrollo.
Los problemas a los que se enfrenta la elicitación de requerimientos son múltiples. En [Raghavan et al. 1994] se establecen cinco grandes categorías de problemas dentro de la elicitación de requerimientos:
A nivel de investigación, la elicitación es sin duda la actividad a la que menos atención se le ha prestado en la ingeniería de requerimientos. Por ejemplo, en [Christel y Kang 1992] puede leerse la siguiente cita de J.C. Lite:
"[...] creemos que la mayoría de los investigadores evitan tratar con la elicitación de requerimientos porque es una área dónde se tiene que tratar con informalidad, incompleción e inconsistencia. En su lugar, la investigación etiquetada como dedicada a los requerimientos normalmente se ocupa de la especificación [...]"
Y en [Goguen y Linde 1993] puede leerse:
"[...] algunos científicos informáticos podrían pensar que la elicitación de requerimientos es donde la ciencia termina y empieza el caos."
La elicitación de requerimientos debe considerarse como la actividad de la ingeniería de requerimientos en la que los ingenieros de requerimientos interactúan con el resto de los participantes para obtener, registrar, y si es necesario negociar los requerimientos que deberá satisfacer el sistema a desarrollar desde el punto de vista de clientes y usuarios, es decir, los requerimientos-C
Precisamente por la necesidad de esta interacción es por lo que los aspectos sociales son fundamentales durante esta actividad, por encima de los puramente técnicos. En palabras de J. Goguen [Goguen y Linde 1993]:
"Los problemas de elicitación de requerimientos no pueden resolverse de una forma puramente tecnológica porque el contexto social es mucho más crucial que en las fases de programación, especificación o diseño."
Las actividades de elicitación de requerimientos pueden realizarse varias veces. En la primera iteración, la elicitación de requerimientos consistirá básicamente en obtener la mayor cantidad de información, asumiendo que lo más probable es que dicha información sea incompleta, ambigua y contenga contradicciones.
En las siguientes iteraciones, la elicitación de requerimientos consistirá principalmente en la resolución de conflictos encontrados en la información elicitada durante las actividades de análisis y validación de requerimientos. La resolución de estos conflictos se llevará a cabo, normalmente, mediante algún tipo de negociación entre los participantes [Pohl 1997, Boehm et al. 1994, Patets-Llorca y Grünbacher 1999].
Para las organizaciones sin ningún tipo de proceso de ingeniería de requerimientos, se proponen las siguientes diez guías básicas:
El proyecto SWEBOK (Software Engineering Body of Knowledge) es un proyecto conjunto del IEEE y de la ACM para producir un cuerpo de conocimiento sobre ingeniería de software que se siente las bases de dicha ingeniería como una profesión. Dentro de las 10 áreas de conocimiento que han establecido, la novena corresponde a la ingeniería de requerimientos, en la cual se definen los siguientes procesos:
Los cuatro productos principales que se incluyen en el modelo de procesos de la ingeniería de requerimientos son:
Las tres actividades que componen el modelo de procesos de ingeniería de requerimientos son:
La elicitación de requerimientos en la más importante de la ingeniería de requerimientos. Es en esta actividad en la que se mantiene la interacción entre clientes, usuarios y los ingenieros de requerimientos.
Los casos de uso son una técnica para especificar el comportamiento de un sistema. Según wikipedia:
"Un caso de uso es una secuencia de transacciones que son desarrolladas por un sistema en respuesta a un evento que inicia un actor sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la funcionalidad y el comportamiento de un sistema mediante su interacción con los usuarios y/o otros sistemas."
Los casos de uso permiten entonces describir la posible secuencia de interacciones entre el sistema y uno o más actores, en respuesta a un estímulo inicial proveniente de un actor, es una descripción de un conjunto de escenarios, cada uno de ellos comenzando con un evento inicial desde un actor hacia el sistema. La mayoría de los requerimientos funcionales, sino todos, se pueden expresar con casos de uso. Según el autor Sommerville, los casos de uso son una técnica que se basa en escenarios para la obtención de requerimientos. Actualmente, se han convertido en una característica fundamental de la notación UML, que se utiliza para describir modelos de sistemas orientados a objetos.
Durante la actividad de extracción de requerimientos, puede ocurrir que algunos requerimientos no estén demasiados claros o que no se esté muy seguro de haber entendido correctamente los requerimientos obtenidos hasta el momento, todo lo cual puede llevar a un desarrollo no eficaz del sistema final.
Entonces, para validar los requerimientos hallados, se construyen prototipos. Los prototipos son simulaciones del posible producto, que luego son utilizados por el usuario final, permitiéndonos conseguir una importante retroalimentación en cuanto a si el sistema diseñado con base a los requerimientos recolectados le permite al usuario realizar su trabajo de manera eficiente y efectiva.
El desarrollo del prototipo comienza con la captura de requerimientos. Desarrolladores y clientes se reúnen y definen los objetivos globales del software, identifican todos los requerimientos que son conocidos, y se señalan áreas en las que será necesaria la profundización en las definiciones. Luego de esto, tiene lugar un "diseño rápido". El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles al usuario (por ejemplo, entradas y formatos de las salidas). El diseño rápido lleva a la construcción de un prototipo.
Este es un modelo que se usa para generar ideas. La intención en su aplicación es la de generar la máxima cantidad posible de requerimientos para el sistema. No hay que detenerse en pensar si la idea es o no del todo utilizable. La intención de este ejercicio es generar, en una primera instancia, muchas ideas. Luego, se irán eliminando en base a distintos criterios como, por ejemplo, "caro", "impracticable", "imposible", etc.
Las reglas básicas a seguir son:
Esta técnica consiste en analizar distintos sistemas ya desarrollados que estén relacionados con el sistema a ser construido. Por un lado, podemos analizar las interfaces de usuario, observando el tipo de información que se maneja y cómo es manejada, por otro lado también es útil analizar las distintas salidas que los sistemas producen (listados, consultas, etc.), porque siempre pueden surgir nuevas ideas sobre la base de estas.
Las entrevistas y cuestionarios se emplean para reunir información proveniente de personas o de grupos. Durante la entrevista, el analista conversa con el encuestado; el cuestionario consiste de una serie de preguntas relacionadas con varios aspectos de un sistema.
Por lo común, los encuestados son usuarios de los sistemas existentes o usuarios en potencia del sistema propuesto. En algunos casos, son gerentes o empleados que proporcionan datos para el sistema propuesto o que serán afectados por él. El éxito de esta técnica, depende de la habilidad del entrevistador y de su preparación para la misma.
El proceso de recopilar, analizar y verificar las necesidades del cliente o usuario para un sistema es llamado ingeniería de requerimientos. La meta de la ingeniería de requerimientos (IR) es entregar una especificación de requerimientos de software correcta y completa.
Algunos otros conceptos de ingeniería de requerimientos son:
"La ingeniería de requerimientos ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente quiere y cómo interactuarán los usuarios finales con el software." (Pressman, 2006: 155).
La ingeniería de requerimientos es el proceso de desarrollar una especificación de software. Las especificaciones pretenden comunicar las necesidades del sistema del cliente a los desarrolladores del sistema." (Sommerville, 2005: 82).
En síntesis, el proceso de ingeniería de requerimientos se utiliza para definir todas las actividades involucradas en el descubrimiento, documentación y mantenimiento de los requerimientos para un producto de software determinado, donde es muy importante tomar en cuenta que el aporte de la IR vendrá a ayudar a determinar la viabilidad de llevar a cabo el software (si es factible llevarlo a cabo o no), pasando posteriormente por un subproceso de obtención y análisis de requerimientos, su especificación formal, para finalizar con el subproceso de validación donde se verifica que los requerimientos realmente definen el sistema que quiere el cliente.
Según Lizka Johany Herrera (2003: 3), en su documento de la ingeniería de requerimientos, los principales beneficios que se obtienen de la ingeniería de requerimientos son:
Existen cuatro actividades básicas que se tienen que llevar a cabo para completar el proceso. Estas actividades ayudan a reconocer la importancia que tiene para el desarrollo de un proyecto de software realizar una especificación y administración adecuada de los requerimientos de los clientes o usuarios. Dichas actividades son:
Se puede apreciar que el proceso de ingeniería de requerimientos es un conjunto estructurado de actividades, mediante las cuales se obtiene, se valida y se logra dar un mantenimiento adecuado al documento de especificación de requerimientos, que es el documento final, de carácter formal, que se obtiene de este proceso. Es necesario recalcar que no existe un proceso único que sea válido de aplicar en todas las organizaciones. Cada organización debe desarrollar su propio proceso de acuerdo al tipo de producto que se esté desarrollando, a la cultura organizacional, y a nivel de experiencia y habilidad de las personas involucradas en la ingeniería de requerimientos y en otras ocasiones se tiene la oportunidad de recurrir a consultores, ya que ellos tienen una perspectiva más objetiva que las personas involucradas en el proceso.
En 1997, Zave establece una clasificación de los esfuerzos de investigación de ingeniería de requerimientos. Según dicho trabajo, los problemas de ingeniería de requerimientos pueden encuadrarse dentro de los siguientes grupos:
Resumen.
Reunir los requerimientos y expectaciones de los stakeholders llega a ser uno de los aspectos criticos sobre los cuales cualquier organización de software en los entornos impulsados por el mercado se enfocan y pagan una gran cantidad de esfuerzo y los gastos maximizan la satisfacción de sus stakeholders. Además, identificar los contenidos de liberación del producto de software llega a ser una de las decisiones criticas para el éxito del producto de software. La priorización de requerimientos refiere a aquella actividad a través de la cual los contenidos de liberación del producto que maximizan la satisfacción del stakeholder puedan ser identificados. Este artículo ilustra la propuesta de priorización de requerimientos Orientada al Valor para la administración de productos de software. La técnica propuesta en este artículo está basada en las técnicas de Votación Acumulativa Jerárquica (HCV) y la Priorización Orientada al Valor (VOP). La técnica propuesta, Valoración Acumulativa Jerárquica Orientada al Valor (VOHCV) refiere a la debilidad de HCV a través de seleccionar los mejores requerimientos candidatos para cada liberación no solamente basados en el valor percibido por el stakeholder como HCV sino también en los términos del costo anticipado asociado, riesgo técnico, aspectos de impacto relativo y relacionados al mercado. La VOHCV también refiere a la debilidad de VOP a través del apoyo no solamente en la estructura llana de los requerimientos como VOP sino también a través del apoyo de estructura jerárquica. Por este medio VOHCV hereda las fortalezas de VOP y HCV y refiere sus debilidades mientras selecciona los mejores requerimientos de liberación candidatos, para maximizar el valor y satisfacción de los stakeholders.
1. Introducción.
Debido al continuo incremento en el número de requerimientos de software para los productos impulsados por el mercado, hay una creciente necesidad de métodos capaces de dar prioridad a los requerimientos candidatos, ya que no todos los requerimientos por lo general pueden ser atendidos con tiempo disponible y las limitaciones de recursos en la versión de software. Así, muchas organizaciones creen que no es solamente importante permitir a sus clientes asignar prioridades a los requerimientos y hacer decisiones acerca de ellos sino también proporcionarles con soluciones alternativas diferentes a la medida para sus propias necesidades. De esta manera ellos proporcionarán más valor para sus clientes a través de la selección de los requerimientos con mayor valor para ser implementados en cada una de las liberaciones del producto.
Administrar los requerimientos para cualquier producto de software llega a ser un factor clave que identifica no solamente el éxito o falla del proyecto sino también el destino de la organización. La porción critica de este proceso es identificar esos requerimientos que balancean las necesidades de los stakeholders, expectaciones del cliente, valores de negocio, costo total y calendarización. Además la priorización de los requerimientos y procesos de selección que maximizan el valor del stakeholder tienen un gran impacto en el éxito del producto.
La Priorización Orientada al Valor (VOP) se refiere a aquel proceso por el cual evalua los requerimientos por diferentes stakeholders basados en el impacto sobre los valores principales de negocio específicos para la organización y los mismos stakeholders desde el enfoque sobre el valor porporcionando la oportunidad para crear una estrategia para lograr un crecimiento rentable ventaja sostenible sustentable a largo plazo. VOP también apoya a los estakeholders con un mecanismo visible durante la toma de decisiones para ser capaz de proporcionar sus valores de VOP, llegando a ser mucho más fácil para los stakeholders emfatizar los valores de negocio.
La organización de este artículo es como sigue. En la siguiente sección, referiremos al trabajo relacionado por nuestra investigación. En la sección tres elaboraremos la justificación del algoritmo VOHCV, y la metodología de investigación que hemos aplicado para desarrollarlo. En la sección cuatro, discutiremos las especificaciones del algoritmo VOHCV. La sección cinco ilustra las ventajas prácticas del algoritmo VOHCV a través de una comparación entre los algoritmos HCV y VOHCV. La sección final resume nuestras conclusiones e introduce nuestra investigación futura.
2. Trabajo relacionado.
2-1 Escala de medición.
Los sistemas de medición son calificados dentro de cuatro diferentes ordenados tipos de escala basados en la riqueza: Nominal, Ordinal, Intervalo y Racional. El tipo de escala Racional dice que es más rica que el tipo de escala Ordinal como todas las relaciones entre la escala Racional están contenidas en la escala Ordinal. Así el tipo de escala es utilizado para determinar qué operaciones aritméticas son permitidas y qué tipos de análisis pueden ser ejecutados basados en estas operaciones. Para la priorización de requerimientos, los tipos de escala Ordinal y Racional son las técnicas más comunes. La escala Ordinal conserva el orden de los requerimientos de acuerdo al valor asignado a cada requerimiento, el cual indica que operaciones aritméticas no están permitidas. Así, la escala Racional proporciona no solamente el orden de los requerimientos sino también la relativa distancia entre los diferentes requerimientos. La escala Racional también puede identificar en qué cantidad un requerimiento es más importante que otro. Cuando utiliza una técnica de priorización que proporciona prioridades relativas en una escala de Racional, es posible calcular la importancia total de un conjunto de requerimientos agregando junto con sus prioridades. Una de las ventajas más interesantes de la escala Racional es que permite cálculos sofisticados para preparar diferentes soluciones candidatas para basar decisiones en ellas.
2-2 Jerarquía de requerimientos.
Los requerimientos existen naturalmente en niveles diferentes de abstracciones. Esto hará el proceso de priorización de requerimientos más difícil especialmente cuando los requerimientos existen en diferentes niveles de abstracciones. Esta dificultad surge porque los requerimientos en niveles diferentes de abstracciones tienen importancias diferentes desde los requerimientos de nivel bajo (hojas) eran considerados menos importantes hasta los requerimientos de nivel alto (objetivos). Así, solamente estos requerimientos que existen en el mismo nivel de jerarquía deben ser comparados mientras se ejecuta la priorización. Para la priorización de varios niveles, los requerimientos de nivel bajo pueden heredar las prioridades de los requerimientos de nivel alto, o ser asignadas estas prioridades directamente. El primer caso es utilizado cuando los requerimientos de nivel bajo tienen relación AND entre ellos mismos, mientras que este último es utilizado cuando los requerimientos de nivel bajo tienen relación OR entre ellos mismos.
2-3 Priorización de Voto Acumulado por Jerarquía.
La priorización de Voto Acumulado por Jerarquía (HCV) es una técnica de priorizacion de escala Racional. HCV fue diseñado para superar los inconvenientes ppor las técnicas de Protocolo Jerárquico Analítico (AHP) y Voto Acumulativo (CV), y heredar las ventajas y buenas características de ambas técnicas. Por otra parte, HCV es tomado para ser una extensión de la técnica CV para apoyar la jerarquía. Esta característica permite a HCV para resolver varios aspectos de problemas de decisión como AHP. Tener HCV proporciona relativas prioridades basadas en una escala Racional, le da la oportunidad de calcular la importancia total de un conjunto de requerimientos agregando junto con sus prioridades. También ayuda a combinar los diferentes aspectos y raciones de cálculos entre estos aspectos. Por ejemplo, usted puede calcular la ración valor de costo para el requerimiento que representa cuánto valor cada requerimiento agrega relativo al costo anticipado de implementación. La fortaleza de HCV incrementará cuando el número de requerimientos crezca porque la necesidad para una propuesta estrucutral/jerárquica se hace más grande. HCV proporciona esta estructura a través de utilizar relaciones naturales entre los requerimientos para ejecutar la priorización en una serie de pasos y por lo tanto minimizar los requerimientos priorizados a la vez.
El principal concepto detrás de HCV es cuantificar la importancia del requerimiento distribuyendo puntos entre los requerimientos para reflejar esta importancia. Sin embargo, cuando priorizar con HCV, no todos los requerimientos son priorizados al mismo tiempo. En su lugar, las priorizaciones son ejecutadas en niveles diferentes de jerarquía, y dentro de diferentes bloques de los requerimientos en la jerarquía (mostrado en la figura 1). Como se ilustra en la figura 1, los requerimientos están distribuidos sobre dos niveles de la jerarquía: requerimientos de nivel alto (HLR) y los requerimientos de nivel bajo (LLR). La relación entre los requerimientos de nivel bajo son relaciones OR entre ellos mismos. Solamente estos requerimientos dentro del mismo bloque (área gris en la figura) son priorizados al mismo tiempo. Esto hará el proceso de priorización más suave y el riesgo de descuidar algún requerimiento disminuirá.
2.4 Priorización Orientado al Valor.
La priorización Orientada al Valor (VOP) demostró ser el proceso por el cual alinea las demandas del producto con los objetivos de la compañía y las expectaciones de los stakeholders a través de proporcionar un proceso visible y definido para priorizar y administrar los requerimientos sobre el ciclo de vida del producto. Esto ayuda al stakeholder para ver el panorama completo en aras de los destinos y visión de la organización, en lugar de discutir sobre qué requerimientos del producto implementar.
La idea completa detrás de VOP es enfocarse en los valores de negocios principales que conduzcan a la satisfacción de los stakeholders mientras da prioridad a los requerimientos del producto lo indicó Karl Wiegers. Los ejemplos de estos valores de negocios principales son valor para el cliente ganado por la implementación del requerimiento, el costo de implementación, el riesgo asociado con la implementación de este requerimiento, impacto que ocurrirá si este requerimiento no es implementado y otros aspectos relacionados del mercado que serán afectados si este requerimiento no es implementado. La atractividad del requerimiento es proporcional al valor que proporciona e inversamente proporcional a su costo, riesgo asociado, impacto y aspectos de mercado. A cada valor de negocio es dado un peso basado en los objetivos y visión de la organización. Cada stakeholder pone su estimación contra cada valor de negocio para cada requerimiento. Todas estas entradas de valores son consolidados en conjunto mientras genera la clasificación del requerimiento.
3. Técnica Razón Fundamental y de Investigación.
3-1 Razón fundamental.
La razón fundamental detrás de el VOHCV es combinar las técnicas HCV y VOP para ganar las ventajas de ambas. VOHCV no solamente tomará el valor como en HCV o el costo y riesgo como en VOP dentro de la cuenta mientras prioriza los requerimientos, sino también tomará dentro de la cuenta los otros valores de negocio tales como el impacto de la implementacón relativo y los aspectos relacionados al mercado. Esto cederá a resultados de calidad más alta porque toma las diferentes características que afectan el requerimiento a lo largo del ciclo de vida del producto dentro de la cuenta mientras produce toda la clasificación de liberación.
3-2 Técnica de investigación.
La metodología de investigación que seguimos para la concepción de esta técnica está basada en la propuesta de entrega de software incremental y se describe como sigue:
4. Detalles del Algoritmo VOHCV.
Para manejar la priorización de requerimientos utilizando VOHCV, existe una serie de pasos necesarios para ser seguidos como se indican:
El proceso de calcular el número de distribución promedio para cada requerimiento puede ser mostrado como sigue:
1) Calcular el valor de negocio promedio para cada requerimiento.
2) Calcular el número de distribución total para cada requerimiento.
3) Calcular el número de distribución promedio asignado para cada requerimiento. Referiremos a este número como la prioridad asignada.
4) Calibrar el número de distribución entre la diferencia LLRs del mismo HLRs para tener la suma de todos los puntos LLRs igual a 100 como lo indicado por la técnica CV. Esto puede ser calculado utilizando la relación entre los números de distribución LLRs y la ecuación de abajo.
Estudio de Caso
Con el fin de mostrar las ventajas prácticas de VOHCV, ilustraremos esto a través de un ejemplo basado en la estructura jerárquica de requerimientos (mostrado en la figura 1). En este ejemplo, existen dos niveles de abstracciones y un stakeholder. Además existen dos requerimientos de nivel alto (HLRs) y cinco requerimientos de nivel bajo (LLRs). Dado los pesos de valores de negocio, las pesos característicos y valores característicos para cada requerimiento de la tabla 1, seremos capaces de calcular los requerimientos por los siguientes pasos del algoritmo VOHCV mencionados en la sección previa.
El primer paso en el algoritmo VOHCV es calcular el número de puntos asignados a cada requerimiento del mismo bloque, o por otros medios distribuya 100 puntos sobre los requerimientos del mismo bloque.
Valor de negocio (B.V.) |
Costo | Riesgo | Impacto | Aspecto | Valor | |||
---|---|---|---|---|---|---|---|---|
Peso B.V. | 9 | 10 | 6 | 4 | 5 | |||
Tipo de característica |
C1 | C2 | R1 | R2 | I1 | A1 | A2 | V1 |
Peso de la característica |
5 | 8 | 10 | 6 | 3 | 7 | 8 | 10 |
HLR1 (valor) | 3 | 4 | 5 | 3 | 1 | 1 | 5 | 2 |
HLR2 (valor) | 9 | 6 | 6 | 8 | 9 | 10 | 3 | 7 |
LLR1 (valor) | 1 | 10 | 10 | 7 | 2 | 5 | 9 | 4 |
LLR2 (valor) | 8 | 10 | 9 | 10 | 10 | 8 | 9 | 10 |
LLR3 (valor) | 4 | 5 | 6 | 5 | 4 | 3 | 2 | 10 |
LLR4 (valor) | 1 | 2 | 2 | 4 | 3 | 2 | 4 | 3 |
LLR5 (valor) | 9 | 8 | 10 | 7 | 9 | 10 | 9 | 10 |
Esto puede ser bueno para aplicar ecuaciones 1 a través de 7, dados los valores y pesos de la tabla 1. Estos puntos son ilustrados en las primeras dos columnas en la tabla 2. Después de que todos los requerimientos en los bloques de priorización hayan sido asignadas prioridades, el siguiente paso es calcular la prioridad intermedia de LLR utilizando la ecuación 8, dado que el factor de compensación es equivalente al tamaño del bloque como se ilustró en la tercera columna de la tabla 2. La prioridad intermedia LLR está ilustrada en la cuarta columna de a tabla 2. El siguiente paso es calcular la prioridad normalizada final de LLR utilizando la ecuación 9. La prioridad final se ilustró en la quinta columna de la tabla 2. El último paso es rankear los LLRs basados en la prioridad final de LLR. La prioridad de rankeo de LLR está ilustrado en la sexta columna de la tabla 2.
HLR/LLR | Puntos HLR | Punto LLR | Factor compensación | Prioridad intermedia | Prioridad final | Rankeo |
---|---|---|---|---|---|---|
HLR1/LLR1 | 30 | 40 | 2 | 2400 | 9 | 5 |
HLR1/LLR2 | 30 | 60 | 2 | 3600 | 13 | 3 |
HLR2/LLR3 | 70 | 33 | 3 | 6930 | 26 | 2 |
HLR2/LLR4 | 70 | 15 | 3 | 3150 | 12 | 4 |
HLR2/LLR5 | 70 | 52 | 3 | 10920 | 40 | 1 |
Como se muestra desde las primeras dos columnas de la tabla 2, HLR2 (70%) es más importante que HLR1 (30%) y LLR5 es considerado a ser el más importante LLR y cuenta por (40%) de la importancia de todos los LLRs mientras que LLR (9%) es considerado a el más poco importante LLR sobre todos los otros LLRs.
6. Evaluación de VOHCV en Comparación a HCV.
Con el fin de mostrar la fortaleza de la nueva técnica propuesta (VOHCV) comparada a la ordinaria (HCV), una evaluación empírica debe ser conducida. El principal inconveniente de HCV es que toma solamente la perspectiva de "Valor" en cuenta mientras los requerimientos son priorizados y descuida las otras perspectivas de negocio. Por otro lado VOHCV arregla esto tomando las otras perspectivas de negocio en cuenta a través del proceso de priorización.
Para mostrar esto, utilizaremos el ejemplo introducido en la sección previa y excluiremos todas las perspectivas excepto la perspectiva de "Valor" para ganar el rankeo de HCV. Después de una comparación detallada entre las dos técnicas serán conducidas basadas en los resultados. Con el fin de calcular los puntos de distribución en la novena columna de la tabla 1, utilizaremos la relación entre esos valores que pertenecen al mismo bloque de priorización. Por ejemplo, LLR1 y LLR2 pertenecen al mismo bloque y tienen igual valor a 4 y 10 respectivamente. Para distribuir 100 puntos sobre estos dos LLRs manteniendo la relación entre los valores asignados, podemos concluir por un sencillo cálculo matemático que LLR1 pueden ser asignados 71 puntos y LLR2 pueden ser asignados 29 puntos. Lo mismo puede ser bueno para LLR3, LLR4 y LLR5 de modo que están en el mismo bloque. El cálculo para el último caso cederá a LLR3 le serán asignados 43 puntos, LLR4 le serán asignados 14 puntos y LLR le serán asignados 43 puntos. El cálculo de priorización será como sigue (mostrado en la tabla 3):
HLR/LLR | Puntos HLR | Punto LLR | Factor de compensación | Prioridad intermedia | Prioridad final | Rankeo |
---|---|---|---|---|---|---|
HLR1/LLR1 | 22 | 71 | 2 | 3124 | 11 | 4 |
HLR1/LLR2 | 22 | 29 | 2 | 1276 | 4 | 5 |
HLR2/LLR3 | 78 | 43 | 3 | 10062 | 36 | 1 |
HLR2/LLR4 | 78 | 14 | 3 | 3276 | 13 | 3 |
HLR2/LLR5 | 78 | 43 | 3 | 10062 | 36 | 2 |
Comparando los resultados entre HCV y VOHCV como se ilustró desde la tabla 1 y 2, concluimos lo siguiente:
7. Conclusiones y Trabajo Futuro.
En este artículo, hemos presentado las fortalezas y debilidades de las técnicas de Priorización Orientadas al Valor (VOP) y la de Voto Acumulativo Jerárquico. De estas fortalezas y debilidades, se nos ocurrió la nueva técnica de priorización la cual es Voto Acumulativo Jerárquico Orientado al Valor (VOHCV). VOHCV combina las fortalezas de VOP y HCV para mejorar la calidad del proceso de priorización de requerimientos. La principal diferencia entre el HCV y VOHCV es que VOHCV utiliza la propuesta orientada al valor no solamente para conseguir el efecto de valor sino que también para conseguir el efecto de diferenciar de otros valores de negocio principales como costo, riesgo, aspecto e impacto. De esta manera VOHCV permite al administrador del producto tomar todos los aspectos que afectan el requerimiento a tomar en cuenta mientras selecciona al mejor candidato para liberar el producto.
Ya diseñamos un framework de administración de liberación con VOHCV embebido para conseguir beneficio de los resultados producidos por VOHCV en la planeación de liberación y administración del producto de software. VOHCV actua como el motor primario principal del framework diseñado. El resultado de el VOHCV toma como entrada de las demás actividades de planeación de liberación para apoyar y permitir administrar el producto para controlar y administrar fácilmente el producto de software.
Dado a que unos pocos estudios han sido ejecutados para evaluar la eficiencia y conveniencia de VOHCV, existe una necesidad de hacer los demás estudios para algunos casos que puedan afectar la eficiencia del algoritmo. Los ejemplos de estos casos abiertos como cuantos puntos debemos distribuir sobre los requerimientos del mismo bloque, cuantos niveles de jerarquías deben ser priorizados, cuán grandes bloques de prioridad son posibles para priorizar y también el efecto de ordenar los requerimientos sobre el rankeo de requerimentos, serán nuestro objetivo para la siguiente fase de nuestra investigación.
Fuente original: Int. J. of Software Engineering, IJSE Vol.1 No.2 July 2008; "Towards Value-Based requirements priorization for software product management".
La propiedad más importante de una especificación de requerimientos es que sirva como canal de comunicación entre los participantes en el proceso de ingeniería de requerimientos. Para ello, es necesario pensar en la audiencia a la que van dirigidos los requerimientos, de forma que para comunicarse con los clientes y usuarios los mejor es utilizar requerimientos-C
y para hacerlo con los desarrolladores lo mejor es usar requerimientos-D.Las propiedades deseables de los requisitos son:
Los calificativos que se aplican al término requerimiento muestran distintos aspectos ortogonales. Además, realiza un esfuerzo por agrupar dichos calificativos en tres dimensiones:
No tengo duda de que la carrera de desarrollo de software no es fácil: El camino tiene muchos obstáculos y más importante que las habilidades del equipo de desarrollo está en centrar la importancia del desarrollo en la comunicación con los stakeholders, pues ellos son la base para el éxito del desarrollo de todo el producto.
De modo que me permitiré citar un párrafo de F. P. Brooks:
La parte más difícil de construir un sistema de software es decidir qué construir. Ninguna otra parte del trabajo afecta más negativamente al sistema final si se realiza de manera incorrecta. Ninguna otra parte es más difícil de rectificar después.
Recuerdo haber escuchado la siguiente frase: "Técnica del carpintero: Medir dos veces, cortar una vez". Y esto viene a mi mente para enfatizar lo siguiente: Definir una línea base de requerimientos y examinarla con toda la gente involucrada en el desarrollo hasta que se comprenda cada requerimiento. Una vez comprendida toda la línea base de requerimientos comenzar a construir el producto. No construya si no se tiene una línea base de requerimientos definida y comprendida.
El presente post está por supuesto sujeto a debate. Gracias por sus visitas y comentarios.
A continuación se describen una serie de mejores prácticas orientadas al desarrollo de requerimientos:
Un concepto clave en el proceso de gestión de cambios es la Trazabilidad. Los requerimientos deben ser trazables, es decir, "rastreables". Se podría decir que un requerimiento es trazable si se pueden identificar todas las partes del producto existente relacionadas con ese requerimiento. Todos los requerimientos deberían ser trazables para mantener consistencia entre los distintos documentos de un proyecto.
Es importante conocer aspectos de los requerimientos tales como:
La siguiente matriz se utiliza para relacionar requerimientos. Es una matriz de dependencias:
Requerimientos (A) | |||||||||
---|---|---|---|---|---|---|---|---|---|
Req. 1 | Req. 2 | Req. 3 | Req. 4 | Req. 5 | Req. 6 | Req. 7 | Req. 8 | ||
Requerimientos (B) | Req. 1 | X | X | X | |||||
Req. 2 | X | ||||||||
Req. 3 | X | X | |||||||
Req. 4 | X | ||||||||
Req. 5 | X | ||||||||
Req. 6 | X | ||||||||
Req. 7 | X | ||||||||
Req. 8 | X |
En este caso los Requerimientos (A) representan los requerimientos que originan las dependencias y los Requerimientos (B) serían los requerimientos que dependen de otros requerimientos, de los Requerimientos (A).
Por ejemplo, se puede ver como los requerimientos 1, 2 y 7 dependen del requerimiento 5, o que el requerimiento 3, además de depender del requerimiento 5 también depende del requerimiento 6. De esta forma se puede ver de qué manera se relacionan los requerimientos para analizar mejor el impacto de los cambios.
La gestión de requerimientos es el conjunto de actividades que ayudan al equipo de trabajo a identificar, controlar y seguir los requerimientos y sus cambios en cualquier momento. Es decir, la gestión de requerimientos consiste en gestionar los cambios de los requerimientos, las relaciones entre ellos, las dependencias entre la especificación de requerimientos y otros documentos producidos por el proceso de desarrollo de software. De esta forma se asegura la consistencia entre los requerimientos y el sistema construido.
Por los tanto, los objetivos principales del proceso de gestión de requerimientos serán:
La gestión de requerimientos es un proceso que se desarrolla a lo largo de toda la vida del producto.
Los requerimientos cambian durante todo el ciclo de vida de desarrollo del producto. Los cambios deben controlarse y documentarse, es decir, hay que convivir con ellos y por ello la gestión de cambios es esencial para tratar dichos cambios.
Cuando, durante el proyecto y una vez aceptada la línea de base de requerimientos, se solicita un cambio sobre esta línea base, estos cambios no se pueden aceptar sin más ya que podrían afectar al desarrollo de todo el sistema, o alguna parte esencial del mismo.
El siguiente gráfico muestra el proceso de gestión de cambios con las actividades a llevar a cabo durante el desarrollo del mismo:
En definitiva, podríamos destacar tres importantes actividades dentro del proceso de gestión de cambios:
1. Evaluar el Impacto.
La primera tarea a realizar tras recibir una petición de cambio es valorar el impacto del mismo. Para ello se deberá ir recorriendo todo el árbol de requerimientos viendo como les afecta el cambio, y aquí es donde entra la trazabilidad de los requerimientos.
2. Aceptación del Cambio.
Una vez analizado el impacto del cambio, se debe tomar una decisión. Si se acepta el cambio tras negociarlo con el cliente, se continuará con la actividad de implementar el cambio. En caso contrario, se deberá negociar con el cliente el siguiente paso a realizar.
3. Implementación del Cambio.
Si se ha aceptado el cambio, hay que reflejar ese cambio en todos los productos que resulten afectados por dicho cambio (si el cambio es mínimo algunos productos como el plan del proyecto, puede que no sea necesario modificar). Además se deberá generar un nuevo punto de partida (línea base) de requerimientos.
Cuando un requerimiento pasa por una puerta de calidad, se puede tener confianza acerca de la corrección y viabilidad de los requisitos. ¿Pero qué ocurre con la especificación en conjunto? En este punto se sabe que los requerimientos son correctos, pero ¿se puede asegurar que todos estos requerimientos, en conjunto, describen la "historia" completa?
El término especificación de requerimientos hace referencia a la colección de requerimientos especificados y definidos previamente. La especificación no tiene que estar en un determinado formato, puede ser una especificación sobre papel, o un blog, o algo similar.
Una vez que la especificación de los requerimientos está completa se tendrá un conocimiento preciso del alcance y funcionalidad del producto. Este es el momento de llevar a cabo la revisión de la especificación. En esta revisión final se valida que no falta ningún requerimiento.
Otro punto muy importante a tener en cuenta es asegurarse de que los requisitos tengan consistencia, y en caso contrario, que cualquier conflicto entre los requerimientos ha sido resuelto. Dos requerimientos están en conflicto si no pueden implementarse juntos, es decir, si la solución a un requerimiento impide la implementación de otro.
Cuando las expectativas del cliente son altas, la fecha de entrega y los recursos son limitados, es importante asegurarse de que las funciones más importantes del producto sean entregadas y además tan pronto como sea posible. Otro problema que se puede plantear es que haya demasiados requerimientos.
La solución a los problemas anteriores es la priorización de los requerimientos.
En esta fase, el usuario final añade criterios de aceptación para cada requisito. Además, apoya el hecho de que los requerimientos han de ser correctos antes de que sean entregados a los diseñadores y desarrolladores.
La puerta de calidad es un punto por el que pasan cada uno de los requerimientos antes de formar parte de la especificación.
Una de las tareas de las puertas de calidad es asegurarse de que cada requerimiento cumple con el criterio que tiene asignado. Este criterio es una medida del requisito que le hace entendible y con capacidad para ser probado.
Otra razón por la que el proyecto tiene puertas de calidad es para prevenir posibles fugas de requerimientos. Los requerimientos, algunas veces, aparecen en las especificaciones sin que nadie realmente sepa de dónde vienen y qué valor añaden al producto. Asegurándose de que la única forma de que los requerimientos entren a formar parte de las especificaciones sea a través de las puertas de calidad, el equipo del proyecto tiene un total control de los requerimientos.
Conseguir que los requerimientos estén claramente definidos puede ser difícil. Para ello es importante:
Un mal uso del lenguaje puede llevar a un mal entendimiento, horas de trabajo perdido, una mala comunicación entre miembros del equipo, y en definitiva una especificación de requerimientos de poca calidad.