Académique Documents
Professionnel Documents
Culture Documents
EL PROCESO DE ANÁLISIS
El análisis es una actividad situada entre dos actividades extremadamente importantes del proceso
de requisitos: la educción, donde los requisitos son identificados, y la documentación, donde los
requisitos se plasman en un documento denominado Especificación de requisitos del software.
Si el proceso de requisitos se desarrollara sin error alguno, sería esperable que todos los requisitos
educidos pasasen a formar parte del documento de especificación de requisitos. Asimismo, dichos
requisitos deberían coincidir con la totalidad de requisitos del software, y éstos deberían ser
correctos, de tal modo que dichos requisitos pudieran ser usados en los posteriores procesos de
validación y diseño.
Obviamente, la ejecución del proceso de desarrollo dista de ser perfecta. Como ya se ha indicado en
la UNIDAD 3, durante la actividad de educción tienen lugar tres categorías principales de
problemas que afectan a la correcta definición de los requisitos: problemas de adquisición,
compresión y volatilidad [Valusek and Fryback 1987][Christel and Kang 1992]. Ello provoca que
no todos los requisitos educidos sean correctos (e, incluso, con mucha frecuencia ni siquiera dichos
requisitos son realmente requisitos), así como que no se eduzcan la totalidad de los requisitos del
software.
El Análisis de Requisitos aparece, por consiguiente, como una actividad fronteriza cuyo objetivo es
asegurar la calidad de los requisitos educidos antes de que éstos pasen a formar parte del
documento de especificación. La sección 6.1. tratará más ampliamente este particular.
Además de asegurar la calidad de los requisitos, el análisis persigue otros objetivos secundarios,
tales como precisar los límites del sistema software, precisar la interacción sistema-entorno,
trasladar los requisitos del usuario a requisitos del software y, finalmente, anotar los requisitos. Ello
se describirá más ampliamente en la sección 6.2.
Finalmente, es necesario indicar que, en algunas ocasiones, durante el análisis se detectan requisitos
contradictorios. Dichas contradicciones surgen de las distintas visiones que los usuarios poseen del
sistema. En esta situación, no existe ningún tipo de tarea técnica que permita eliminar las
contradicciones, sino que es necesario acudir a los usuarios y negociar con ellos qué requisitos debe,
o no, implementarse. Ello se comentará en la sección 6.7.
El objetivo del análisis es asegurar la calidad de los requisitos. Por suerte, éste es uno de los
aspectos mejor definidos del proceso de requisitos, aunque ello no signifique en modo alguno que
alcanzar una calidad adecuada sea fácil de conseguir.
Básicamente, un conjunto de requisitos posee una calidad adecuada cuando cumplen con una serie
de criterios, o poseen una serie de atributos, de calidad, tales como: ambigüedad, completitud,
corrección, comprensibilidad, verificabilidad, realizabilidad, redundancia, etc. El motivo de referir
la calidad global de los requisitos a una serie de criterios o atributos es clara: De este modo, es
posible descomponer la calidad global en pequeñas piezas, más manejables, y, en caso de que exista
alguna carencia (por ejemplo, los requisitos son ambiguos, o están incompletos) actuar sobre dicho
aspecto específico (la ambigüedad, la completitud), sin preocuparse de los demás atributos de
calidad.
Nótese, en cualquier caso, que los atributos de calidad no son aspectos dicotómicos. Por ejemplo,
para el requisito cualquiera ‘A’, y un atributo de calidad cualquiera, tal como ‘ambigüedad’, dicho
requisito A no tiene por qué ser únicamente ‘ambiguo’ o ‘no ambiguo’. Muy al contrario, A puede
ser más o menos ambiguo. Lógicamente, cuanto menos ambiguo sea A, mayor calidad posee este
requisito, pero es impensable conseguir una ambigüedad del 0% (o una calidad del 100%). Lo
mismo ocurre con los restantes atributos de calidad.
La lista de atributos de calidad es larga y puede variar entre autores. Una revisión bastante
exhaustiva de los atributos de calidad, descritos en el IEEE-Std-830-1998 puede encontrarse en la
UNIDAD 10.
1
Ello se debe a que existen ciertos atributos de calidad que no pueden considerarse durante un momento del
proceso de requisitos tan temprano como es el análisis. Por ejemplo, siempre es posible verificar la
ambigüedad en la descripción de un requisito, independientemente del momento en que se realice. No
obstante, no es posible realizar lo mismo, por ejemplo, con la completitud. Ello se debe a que para determinar
la completitud de un conjunto de requisitos: 1) se debería disponer de un documento de especificación
completo, hecho que no es posible durante el análisis y 2) se debería tener acceso a los clientes/usuarios, lo
cual tampoco es siempre cierto.
Tal y como se ha indicado anteriormente, la actividad de análisis tiene como objetivo asegurar la
calidad de los requisitos, ello mediante la detección y resolución de las carencias que se detecten en
los requisitos respecto a los atributos de calidad indicados en la sección 6.2. Adicionalmente,
durante esta actividad:
• Se precisan los límites del sistema software y su interacción con el entorno. Ello
significa que, a medida que se conocen y comprenden mejor los requisitos del software,
queda progresivamente claro qué funcionalidades se deben implementar y cuáles no (esto
es, los límites del sistema). De igual forma, al definir adecuadamente los límites del
sistema, también se aclara cómo el sistema software debe interaccionar con su entorno
(datos recibidos y generados, protocolos de comunicación, interfaces, etc.).
• Se trasladan los requisitos de usuario a requisitos del software. Éste es un aspecto del
análisis no universalmente aceptado. Por requisitos del usuario, deben entenderse los
requisitos del modo en que los usuarios los formulan. Todos los ejemplos aportados hasta
el momento pertenecen a esta categoría. Los requisitos del software, en contraste con los
requisitos del usuario, están más completa y correctamente definidos.
Por ejemplo, el requisito ‘El sistema deberá generar facturas’ es claramente un requisito del
usuario. Éste mismo requisito, más correctamente formulado (esto es, como requisito del
software), sería como sigue:
• Se anotan los requisitos. Este es un tema más técnico. Anotar, o clasificar, los requisitos
significa asignar a éstos ciertos valores, de tal modo que se facilite la gestión posterior de
dichos requisitos. Existen múltiples tipos de anotaciones de requisitos, aunque las única
obligadas son:
o Identificación: A cada requisito debe asignarse un identificador único. Este
identificador facilitará sobre todo la trazabilidad. A este respecto, véase la
UNIDAD 12.
o Versión. A cada requisito debe asignarse un identificador único de versión. Ello
también facilitará la trazabilidad, así como el control de versiones (gestión de
configuración).
Anotar por identificación y versión es tan sencillo como asignar un valor numérico (1, 2,
...) a cada requisito. Obviamente, otras muchas opciones de anotación son igualmente
posibles.
Modelado
conceptual
Lista
preliminar Métodos
de Anotación
débiles
requisitos
2
Lo mismo sucede con el resto de las anotaciones.
Como ya se ha indicado en la sección 6.2, anotar los requisitos significa asignar a éstos ciertos
valores de importancia, prioridad, etc., de tal modo que se facilite la gestión de requisitos posterior.
A efectos prácticos, la anotación se realiza en tres fases:
• Anotar los requisitos por identificación y versión. El analista debe realizar esta
anotación en todos los proyectos de desarrollo, debido a su importancia para la trazabilidad
y el control de versiones. Ambos aspectos se describirán en la UNIDAD 12.
• Decidir qué tipos de anotación suplementaria son necesarios. En muchos casos, las
características del proyecto no exigen anotaciones suplementarias. Por ejemplo, si todos los
requisitos está bien determinados y todos ellos van a implementarse, es ocioso anotar por
importancia o estabilidad. No obstante, en otros casos, realizar anotaciones suplementarias
puede ser vital para el éxito del proyecto. De nuevo, en la UNIDAD 12, se realizarán
algunas referencias a este respecto.
• Realizar las anotaciones suplementarias. Estas anotaciones deben ser realizadas por el
analista con el concierto de los clientes y usuarios. De hecho, en la mayoría de las
ocasiones, los valores de las anotaciones suplementarias se obtienen durante la misma
actividad de educción.
Un checklist de análisis es, simplemente, un conjunto de preguntas que el analista debe considerar
para cada requisito individual. Estas preguntas están relacionadas con alguno de los siguientes
atributos de calidad:
Para la aplicación de este método débil, existen algunos (pocos) checklists predefinidos. La Tabla 1
muestra un checklist propuesto en [Kotonya and Sommerville, 1998] y que puede ser útil en una
gran diversidad de proyectos.
Finalmente, es necesario indicar que, a medida que el analista gana en experiencia, éste acostumbra
a redactar de una forma bastante adecuada la lista preliminar de requisitos, por lo que no es posible
detectar carencias en los requisitos con checklists como el mostrado en la Tabla 1. En este caso, es
necesario utilizar modelado conceptual o, alternativamente, utilizar la estrategia indicada en la
sección 6.5.2.
Atributo de calidad a
Pregunta
considerar
• ¿La lista de requisitos anticipa el diseño o incluye información de
Independencia del diseño
implementación?
• ¿Cada requisito es simple o, por el contrario, podría dividirse en varios
requisitos?
Concisión
• ¿Existe algún requisito que no parezca añadir ninguna información útil acerca
del sistema a desarrollar?
• ¿Es realizable el requisito en la plataforma de implementación?
• ¿Existe algún requisito irrealizable con la tecnología actual?
Realizabilidad
NOTA: Para responder a esta pregunta, es necesario conocer los aspectos técnicos
de la plataforma donde se implementará el sistema.
• ¿Existe algún requisito que contradiga requisitos organizativos explícitamente
Consistencia externa
formulados?
Ambigüedad • ¿Es posible interpretar de varias formas un requisito?
• ¿Es posible idear algún caso de prueba que permita establecer que el requisito
Verificabilidad
NO SE CUMPLE?
El problema más común que surge durante la utilización de los checklist de análisis es la
imposibilidad de localizar defectos en los requisitos. Esto sucede cuando el analista aplica el
checklist, pero no detecta ningún requisito defectuoso.
Lo anterior puede estar motivado por dos factores: (1) el analista posee mucha experiencia y ha
confeccionado adecuadamente la lista preliminar de requisitos y, lo que es más probable, (2) el
analista no es capaz de descubrir defectos en la lista preliminar de requisitos por que ha sido él
mismo el que la ha confeccionado.
Existe una máxima bastante antigua de la validación del software, y dice más o menos que una
persona no puede probar un programa que él mismo ha construido. Con los requisitos sucede
En estas circunstancias, lo mejor es que el checklist de análisis sea aplicado por una persona distinta
que el analista que confeccionó la lista preliminar de requisitos (un compañero de trabajo, por
ejemplo). Ésta otra persona tendría dos responsabilidades:
Esto es, la persona que aplica el cheklist tiene la responsabilidad de identificar errores y
comunicárselos al analista, pero no la de corregirlos por sí mismo. Muy al contrario, esta es
responsabilidad del analista, dado que es el que mejor conoce el sistema software a desarrollar. Los
errores y las sugerencias de solución acostumbran a plasmarse en un documento como el mostrado
en la Tabla 2, denominado Lista de errores y acciones recomendadas.
Una matriz de interacción es, simplemente, una matriz de doble entrada donde se cruzan todos los
requisitos entre sí, tal y como muestra la Tabla 3. Por cruzar, debe entenderse que para cualesquiera
dos requisitos r1 y r2, se debe comprobar si:
• r1 se solapa con r2, esto es, r1 trata aspectos del sistema también tratados en r2. Ello, de ser
cierto, daría lugar a problemas de redundancia. Esto es lo que se ha indicado con una S en la
Tabla 3.
r1 r2 ... rn
r1 C
r2 S
...
rn
En el caso de que dos requisitos r1 y r2 estén solapados, la solución es simple: Dado que se puede
producir un problema de redundancia, el analista debe condensar los requisitos r1 y r2 en un nuevo
requisito r1+2, que refleje los contenidos de los requisitos r1 y r2. Condensar los requisitos de este
modo es interesante, ya que produce un efecto positivo aparte de la disminución de redundancia: los
requisitos tienden a dejar de expresarse como requisitos de usuario y se describen como requisitos
del sistema.
Reutilizando el ejemplo usado en la sección 6.1, los requisitos ‘El sistema deberá generar facturas’
y ‘Las facturas deberán generarse mensualmente’ están solapados (tratan el mismo aspecto del
sistema) y, por lo tanto, producen redundancia. Al mismo tiempo, ambos están expresados
claramente como requisitos de usuario.
Para eliminar la redundancia producida por los requisitos anteriores, es necesario condensar éstos.
El resultado podría ser el siguiente:
En el caso de que dos requisitos r1 y r2 estén en conflicto, la solución es más compleja. Salvo que el
conflicto resida en algún problema de expresión, o algún defecto de orden menor en la lista
preliminar de requisitos, lo más probable es que su origen esté en conflictos en la concepción del
sistema software por parte de los usuarios. Este tipo de defecto no puede ser resuelto por el analista
en solitario: éste deberá acudir a los usuarios que han generado el conflicto y negociar con ellos
hasta que el conflicto se resuelta, tal y como se indica en la sección 6.7.
Tal y como se ha indicado anteriormente, durante el análisis se detectan diversas carencias en los
requisitos, tales como errores, omisiones, inconsistencias, etc. En muchos casos, para eliminar
dichas carencias, es necesario acudir a los clientes/usuarios que enunciaron los requisitos. El
problema surge en recordar a qué clientes/usuarios concretos es necesario acudir.
En estos casos, es conveniente utilizar lo que se conoce como trazabilidad hacia atrás. La
trazabilidad hacia atrás consiste en relacionar cada requisito con su origen4. Dicha relación puede
materializarse fácilmente como un tipo de anotación, al igual que la anotación por identificación o
versión, ya indicadas en la sección 6.4. La única diferencia consiste en que la anotación, en lugar de
contener el número o versión del requisito, contiene el número de documento o el nombre del
cliente/usuario que enunció dicho requisito.
Nótese, finalmente, que cuando los requisitos poseen trazabilidad hacia atrás, la especificación
poseerá la propiedad de ser trazable. Éste es, de nuevo, uno de los requisitos de calidad que se
describirán ampliamente en la UNIDAD 10.
3
Dicho de otra forma: si una persona con conocimiento y experiencia no puede dictaminar unívocamente
algo, lo más prudente es suponer que ello pueda ser una fuente de conflicto más adelante.
4
El origen de un requisito puede ser un documento (la transcripción de una entrevista, por ejemplo), o un
cliente o usuario concreto.
La definición anterior es de poca utilidad sin un ejemplo. Supóngase por un instante que el sistema
software a construir tuviera como objetivo ensamblar automáticamente automóviles. Utilizando un
diagrama de cajas, el cual es una representación bien conocida por todo el mundo, sería posible
representar dicho sistema5 tal y como se indica en la Figura 2.
Ensamblar Automóvil
Piezas
automóvil ensamblado
Pues bien: el diagrama mostrado en la Figura 2 cumple con todas las características de modelo
conceptual: es gráfico, es semi-formal (al menos, podemos suponer que se verifican las reglas
básicas de conservación de materiales) y representa un aspecto importante del sistema a construir
(esto es, los materiales de entrada y el producto de salida esperado).
Los modelos conceptuales usados típicamente durante el análisis son similares al diagrama de cajas
mostrado en la Figura 2, aunque un poquitín más perfeccionados6. Históricamente, los modelos
conceptuales son bastante antiguos: éstos modelos aparecieron originalmente en el campo de las
bases de datos en los años 70, donde se utilizaron para representar datos y relaciones entre datos
independientemente del modelo lógico (relacional CODASYL, etc.) utilizados por los sistemas
gestores de bases de datos. De esta época es el más famoso de los modelos conceptuales: el modelo
entidad-relación, utilizado todavía hoy en día. Con los años, la idea de modelo conceptual se amplió
progresivamente y, en lugar de representar datos y relaciones, se ha tendido a que éstos representen
cualquiera aspectos del dominio de discurso.
Por dominio de discurso, debe entenderse el entorno que rodea al software, donde éste ejerce su
influencia (toma datos, suministra datos) y donde existen unas reglas que el software debe respetar
para funcionar correctamente y proporcionar un trabajo útil (reglas tales como que las facturas
deben imprimirse mensualmente o que éstas tendrán un formado determinado).
5
En realidad, los modelos conceptuales representan el dominio de discurso, y no el sistema software. Esto es,
con un poco de atención es fácil observar que la Figura 2 no describe el software a construir, sino el problema
a resolver en el mundo real. No obstante, esta diferencia es muy sutil y difícil de explicar. Es mejor pasar por
encima de este aspecto y estudiarlo a medida que se estudien los distintos tipos de modelos conceptuales en
las unidades 7, 8 y 9.
6
Cuando los modelos conceptuales se formalizan completamente, se convierten en lenguajes formales, en el
sentido matemático del término, con todo lo que ello conlleva (precisión, verificabilidad, etc.). No obstante,
los lenguajes formales son más usados durante la actividad de documentación que durante la actividad de
análisis. Véase, a este respecto, la UNIDAD 10.
Queda decir, finalmente, cómo permiten los modelos conceptuales aumentar la calidad de los
requisitos, lo cual es el objetivo del análisis. Pues bien: los modelos conceptuales, al representar el
dominio de discurso, permiten dos realizar dos tareas fundamentales:
En la sección 6.5.3, cuando se describió el método de la matriz de interacción, se indicó que uno de
los defectos que se puede localizar en la lista preliminar de requisitos son los requisitos
contradictorios. También se indicó que, en la mayoría de los casos, los requisitos contradictorios
surgen de las distintas visiones que los usuarios tienen del futuro sistema, por lo que, para eliminar
los conflictos entre requisitos, el analista debe negociar con los usuarios un conjunto coherente de
requisitos.
Puede resultar difícil de creer que los usuarios expresen requisitos contradictorios para un mismo
sistema. No obstante, ello es mucho más común de lo que parece: basta con que existan pequeñas
diferencias acerca del objetivo del sistema como para que aparezcan inmediatamente conflictos. Por
ejemplo, supóngase un sistema de gestión de personal. Es posible que el departamento de personal
desee que el sistema establezca automáticamente qué empleados trabajan en un determinado turno
(para evitar tener que realizar la asignación manualmente). Sin embargo, puede ocurrir que el jefe
del departamento de fabricación (imaginemos que es una empresa de fabricación) desee que las
asignaciones sean manuales para que en planta haya un número similar de personas con y sin
experiencia laboral (ello para evitar errores en la producción).
7
El modelado conceptual es un campo extremadamente complejo de la informática. Existen escuelas que
jamás denominarían a un modelo de procesos como ‘modelo conceptual’. Incluso, un anciano tan venerable
como es el modelo entidad-relación puede muchas veces ser referido como ‘modelo semántico’, en lugar de
‘modelo conceptual’. Resumiendo: la denominación concreta utilizada depende mucho de los autores que se
consulten.
8
¿Cómo es posible saber qué usuario generó cada requisito? Siempre es conveniente anotar cada requisito con
el usuario que lo enunció. Éste es un tipo de trazabilidad al origen, tal y como se describe en la UNIDAD 12.
Si, finalmente, no existe posibilidad de acuerdo, el analista debe acudir al cliente9 y comunicarle el
conflicto. El cliente utilizará sus propios recursos para poner de acuerdo a los usuarios o,
alternativamente, establecerá el mismo qué requisitos se implementarán y cuáles no. Esto es lo que
se denomina resolución por decreto y, aunque es sumamente efectiva (el conflicto, simplemente,
desaparece), causa malestar en los usuarios y debe ser evitada siempre que sea posible.
9
O acudir al jefe de proyecto y que éste se ponga en contacto con el cliente. Los detalles del acceso al cliente
ya dependen de las particularidades del proyecto de desarrollo.