Ingenieria Requisitos. PID - 00171154
Ingenieria Requisitos. PID - 00171154
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea éste eléctrico,
químico, mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
de los titulares del copyright.
© FUOC • PID_00171154 Requisitos
Índice
Introducción............................................................................................... 5
Objetivos....................................................................................................... 6
3. Gestión de requisitos......................................................................... 24
3.1. Valoración de requisitos .............................................................. 24
3.1.1. Unidades de valoración ................................................. 25
3.1.2. Comparación y triangulación ........................................ 25
3.1.3. Planning poker.................................................................. 26
3.2. Priorización de requisitos ............................................................ 27
3.2.1. Votación con número limitado de votos ...................... 27
3.3. Selección de requisitos ................................................................ 28
5. Casos de uso......................................................................................... 37
5.1. ¿Qué es un caso de uso? ............................................................. 37
5.2. Actores y stakeholders................................................................... 39
5.2.1. Actores principales y de apoyo ...................................... 40
© FUOC • PID_00171154 Requisitos
Resumen....................................................................................................... 57
Actividades.................................................................................................. 59
Ejercicios de autoevaluación.................................................................. 62
Solucionario................................................................................................ 64
Glosario........................................................................................................ 71
Bibliografía................................................................................................. 74
© FUOC • PID_00171154 5 Requisitos
Introducción
En este módulo, veremos cómo los requisitos son la herramienta básica de co-
municación entre el grupo de personas que quiere que se desarrolle el sistema
y el grupo de personas que lo debe desarrollar y cómo, por lo tanto, la identi-
ficación de los requisitos es una tarea compartida entre los dos grupos. Vere-
mos también algunas de las técnicas habituales para identificar estos requisi-
tos, que nos ayudarán a superar las dificultades ya mencionadas en el módulo
"Introducción a la ingeniería del software", y también algunas técnicas para
decidir cuáles son los requisitos más prioritarios.
Objetivos
Los objetivos que el estudiante debe alcanzar una vez trabajados los conteni-
dos de este módulo son:
2. Saber seleccionar los requisitos del producto de software que hay que desa-
rrollar.
¿Requisito o requerimiento?
Según el DRAE, un requisito es una circunstancia o condición necesaria para algo, mien-
tras que un requerimiento es la acción y efecto de requerir.
La característica "el sistema debe ser cómodo de usar" no es una característica observable,
en el sentido de que su cumplimiento es subjetivo. Por lo tanto, sería necesario encontrar
la manera de decir lo mismo haciendo referencia a los hechos observables de nuestro
sistema como "se hará un estudio de satisfacción sobre una muestra de cincuenta usuarios
y deberá obtener una nota mínima de 4 sobre 5".
Para que una característica observable sea un requisito, es necesario que ex-
prese alguna necesidad o restricción que afecte al software.
Por ejemplo, "el sistema siempre tardará más de treinta minutos en cargar la página prin-
cipal del campus" es un hecho observable, pero no habrá nadie que esté interesado en que
el sistema que queremos desarrollar lo cumpla; en todo caso, pretenderemos lo contrario,
que el sistema tarde menos de N segundos en cargar la página principal del campus.
Tomemos como ejemplo una aplicación web. Desde el punto de vista de los usuarios, es
indiferente en qué lenguaje se ha programado (Java, C#, PHP, etc.). Por lo tanto, podría-
mos decir que el lenguaje de programación no es un requisito del sistema más allá del
hecho de que sea web.
Los requisitos nos dicen qué es lo que los diferentes stakeholders esperan
del nuevo sistema.
Podemos clasificar los requisitos en dos grandes grupos: los que hacen refe-
rencia a las necesidades que debe satisfacer el sistema (qué ha de hacer) y los
que expresan restricciones sobre el conjunto de soluciones posibles (cómo
debe hacerlo).
Observación
Hay que tener en cuenta que cuando decimos que los requisitos hacen referencia al modo,
esto no significa que los requisitos indiquen cómo debe ser el sistema internamente, sino
que expresan restricciones sobre las maneras que son aceptables y las que no lo son.
corporativos" pertenecería al segundo tipo. Los requisitos del primer grupo los
consideramos requisitos�funcionales, mientras que los del segundo grupo los
denominamos requisitos�no�funcionales.
En ocasiones, también se distingue entre los requisitos del producto (aquellos que afec-
tan al sistema que hay que desarrollar) y los requisitos del proceso (aquellos que afectan
al proceso de desarrollo). Según esta clasificación, el requisito "Un alumno debe poder
publicar un mensaje en el foro del grupo en el que está matriculado" sería un requisito
del producto, mientras que "El sistema estará programado en uno de los lenguajes cor-
porativos" sería un requisito del proceso.
Un ejemplo de requisito del producto no funcional podría ser: "El sistema deberá estar
disponible el 99,9% del tiempo".
Los requisitos funcionales nos indican qué cálculos realiza el sistema, qué da-
tos posee, cómo los manipula, etc. En general, podemos decir que los requi-
sitos funcionales nos indican cuál es el comportamiento del sistema ante los
estímulos que le llegan del exterior.
Hasta ahora, hemos visto que los requisitos son clave para el éxito o el fracaso
de un proyecto de desarrollo de software y que, de hecho, serán los requisitos
los que guiarán el resto de las actividades de desarrollo. Por ello, con indepen-
dencia de cuál sea el método de desarrollo que se ha de seguir, existe una serie
de actividades relacionadas con los requisitos que siempre deberemos llevar
a cabo:
En este módulo veremos algunas de las técnicas que se utilizan en los diferen-
tes tipos de métodos para llevar a cabo estas actividades. Esta compilación de
técnicas no es exhaustiva (hay técnicas que no veremos) y tampoco está ligada
a ningún método de desarrollo concreto (por lo tanto, es poco probable que,
en un proyecto concreto, debáis aplicarlas todas).
© FUOC • PID_00171154 11 Requisitos
Ejemplo
En este caso, tanto "El estudiante debe poder entregar la actividad en cualquier formato"
como "El estudiante debe entregar la actividad en formato PDF" son requisitos del sistema,
dado que tenemos un stakeholder que nos ha expresado esta necesidad. Obviamente, el
sistema que desarrollemos no podrá cumplir los dos requisitos.
Dado que los requisitos siempre deben estar determinados por uno o más sta-
keholders, el proceso de obtención de requisitos suele realizarse en dos etapas:
Ejemplo
Por ejemplo, podría suceder que un proyecto dependiera de una subvención pública para
su financiación pero que ésta añadiera condiciones, como unos mínimos de accesibili-
dad, para otorgar la subvención. Si no se tiene en cuenta al Estado como stakeholder y no
se cumplen sus objetivos, el proyecto se quedará sin financiación y se deberá cancelar.
© FUOC • PID_00171154 12 Requisitos
4)�Refinamiento. Se describe con algo más de detalle cada una de las propues-
tas para conseguir la lista definitiva.
La idea básica de esta técnica es que, en lugar de buscar los requisitos de to-
dos los usuarios individuales del sistema, los podemos agrupar según su rol
y asumir que todos los usuarios individuales que tienen el mismo rol ante el
sistema tendrán requisitos similares.
Esta técnica se puede combinar con otras, como la de Personas, que consiste en
crear una persona imaginaria (con su biografía) para representar cada uno de
los roles de usuario. Así, en vez de hablar de los estudiantes como cosa abstrac-
ta, pasaríamos a hablar de María. El hecho de poner nombre (e incluso cara)
al rol de usuario nos ayudará a ponernos en su piel e identificar sus requisitos.
María
María nació en Gerona hace 23 años y ha trabajado como auxiliar administrativa desde
los 21. Ahora se quiere poner al día con los estudios y se ha matriculado en Empresariales.
Está un poco nerviosa porque es su primer año en la universidad, pero confía en que lo
logrará. No sabe muy bien cómo funciona el campus virtual pero está habituada a usar
el correo electrónico y las redes sociales, por lo que cree que no tendrá problemas para
utilizar el sistema.
© FUOC • PID_00171154 14 Requisitos
A veces, puede suceder que no tengamos acceso directo a los stakeholders, es-
pecialmente a los usuarios. En estos casos, necesitaremos hablar con alguien
que ejerza de representante.
Además, según quién sea el representante, nos podemos encontrar con pro-
blemáticas específicas de aquel tipo de representante que habrá que tener en
cuenta.
Otro caso habitual es aquel en el que los desarrolladores deciden los requisitos
sin hablar con los stakeholders. En general, los desarrolladores son un mal re-
presentante de los stakeholders, dado que no sólo desconocen el uso diario del
sistema, sino que, posiblemente, estarán más interesados en los aspectos tec-
nológicos de la solución que en las necesidades reales de las personas a quie-
nes representan.
Apoyo al desarrollo
usuarios. Sin embargo, en este caso hay que tener en cuenta que es probable
que den prioridad a los requisitos que les puedan ayudar a vender el producto,
más que a los que realmente sean útiles para los usuarios. Hay que recordar
también que podría suceder que los comerciales tuvieran acceso a los clientes
(aquellos quienes tomarán la decisión de compra) pero no a los usuarios.
Ésta es una de las técnicas más utilizadas para la obtención de requisitos. Con-
siste, obviamente, en entrevistarse con los stakeholders para obtener directa-
mente de ellos los requisitos que tienen sobre el sistema por desarrollar.
Ejemplo
En el campo de las aplicaciones web, por ejemplo, es habitual que los usuarios no co-
nozcan todas las posibilidades tecnológicas de la plataforma y que, por lo tanto, no se
les ocurra la posibilidad de usar determinados controles de usuario, como autocompletar
una caja de texto o el uso del drag'n'drop.
© FUOC • PID_00171154 16 Requisitos
Por ejemplo, si vemos que un usuario debe consultar un dato, apuntarlo y luego introdu-
cirlo en otra pantalla de la aplicación, podemos pensar que le vendría bien que el sistema
recordara el dato por él.
Otro ejemplo: un usuario quiere hacer una tarea concreta de manera frecuente y necesita
pasar por seis opciones de menú antes de llegar a ella. En ese caso, podríamos promocio-
nar esta tarea de modo que el usuario tuviera acceso directo a ella.
Otro ejemplo más: estamos desarrollando una aplicación para un matadero; si observa-
mos a los usuarios en su entorno, veremos que, por cuestiones de seguridad, éstos deben
llevar unos guantes protectores que hacen muy difícil el uso del teclado, lo que nos de-
bería hacer pensar en maneras alternativas de introducir la información.
(1)
Otra técnica es usar listas predefinidas1 de requisitos que nos puedan ayudar En inglés, checklists.
a no pasar por alto algunos requisitos. Esta técnica es especialmente útil para
los requisitos no funcionales, puesto que, como hemos visto anteriormente,
éstos son independientes del comportamiento del sistema.
Ejemplo
El estándar IEEE 830 nos recuerda que siempre debemos documentar, además de los re-
quisitos funcionales, los requisitos no funcionales de lo siguiente:
A continuación, veremos con más detalle los diferentes tipos de requisitos no Web recomendada
funcionales que menciona la plantilla Volere, que incluye una lista predefinida
Volere�Requirements�Spe-
de requisitos no funcionales. cification�Template. http://
www.volere.co.uk/
template.htm (Última visita:
Requisitos de presentación septiembre 2010)
Ejemplo
Como ejemplo de requisito de presentación podríamos considerar "El producto debe ser
atractivo para una audiencia adolescente. Se llevará a cabo un estudio en el que se pondrá
el producto al alcance de una muestra de adolescentes y se observará si empiezan o no
a usar el producto antes de cuatro minutos".
© FUOC • PID_00171154 18 Requisitos
Ejemplo
Un usuario sin entrenamiento debe ser capaz de encontrar el plan de estudios de una
asignatura de la que se acaba de matricular en menos de cinco minutos.
Ejemplo
Los menús no pueden tener más de nueva opciones y no pueden descender más de tres
niveles.
Ejemplo
Un usuario que haya usado el sistema durante un mes sólo se equivocará el 1% de las
veces que intente hacer algo en el sistema.
Ejemplo
El 75% de los usuarios que prueben el nuevo sistema deben continuar usándolo (sin
volver al sistema anterior) al cabo de un mes de haberlo iniciado.
Ejemplo
Cuando el sistema inicie una tarea que dure más de un segundo, se mostrará un indicador
de progreso.
© FUOC • PID_00171154 19 Requisitos
Requisitos de cumplimiento
Ejemplo
Cualquier acción del usuario debe provocar una respuesta visible antes de tres segundos.
La fiabilidad se puede medir como el tiempo admisible entre dos caídas del
sistema, mientras que la disponibilidad es el porcentaje de tiempo en el que
el sistema está disponible.
Ejemplo
La robustez nos habla de la capacidad del sistema para continuar funcionando Ley de Murphy
en el caso de encontrarse en circunstancias inesperadas.
La famosa ley de Murphy debe
su nombre al ingeniero aeroes-
Otra categoría que se debe tener en cuenta es la de los requisitos relacionados pacial Edward A. Murphy y ori-
ginalmente hacía referencia al
con la capacidad (volúmenes de usuarios, de datos, etc.). hecho de que hay que diseñar
los sistemas teniendo en cuen-
ta que, si algo puede ir mal, se
Ejemplo debe diseñar el sistema tenien-
do en cuenta que irá mal.
La aplicación del campus virtual debe soportar la conexión simultánea de al menos el
30% de los estudiantes el primer día de curso a las 9 de la mañana.
El efecto 2000
Los requisitos de escalabilidad o extensibilidad hacen referencia a cómo se
A finales del siglo XX se produ-
espera que crezcan estos volúmenes a lo largo del tiempo. jo el denominado efecto 2000,
que consistía, básicamente, en
un error a la hora de calcular
Ejemplo las fechas que se habían alma-
cenando con dos dígitos, su-
La aplicación del campus virtual debe soportar un volumen de 10.000 estudiantes el poniendo que los dos primeros
primer año de funcionamiento, que serán 15.000 al cabo de dos años. eran 19. Este efecto se debió,
en parte, a errores en la previ-
sión de la vida útil de los siste-
Finalmente, consideraremos en esta categoría los requisitos de longevidad: mas.
Ejemplo
La vida útil mínima de este sistema se espera que sea de diez años.
Ejemplo
El sistema debe poder ser usado por una persona mientras conduce un vehículo (y, por
lo tanto, lo ha de poder controlar sin usar las manos).
El sistema lo debe poder usar una persona que lleve unos guantes de seguridad de malla
de acero.
Una persona sin conocimientos informáticos debe poder instalar el sistema fácilmente.
Una vez que el sistema esté en explotación, se deberá, por un lado, mantener
(corregir errores y añadir funcionalidades nuevas) y, por otro, dar apoyo a los
usuarios. Por lo tanto, se deben tener en cuenta las necesidades de las personas
que se han de encargar de estas tareas.
Ejemplo
En caso de error, el sistema asignará un código al usuario, que el personal de apoyo podrá
consultar para obtener un registro detallado de los motivos del error.
La aplicación debe ser portable y aprovechar la misma base de código para las versiones
de Windows, Linux y MacOS.
Requisitos de seguridad
Ejemplo
El profesor de un grupo de una asignatura X podrá acceder a todas las notas de un es-
tudiante de su grupo en esta asignatura (no a las del resto de las asignaturas o a las de
los estudiantes de otros grupos), mientras dure el semestre en el que el estudiante está
matriculado de su grupo.
Ejemplo
Finalmente, los requisitos de inmunidad son aquellos que nos dicen cómo se
defenderá el sistema ante un ataque.
Ejemplo
Ejemplo
En cuanto a los requisitos políticos, debemos considerar cuál puede ser la reac-
ción de los diferentes stakeholders en algunas de las decisiones que se quieran
tomar, como podría ser externalizar (o no) parte del desarrollo o usar (o no)
componentes de software libre.
Ejemplo
Dado que la universidad quiere potenciar el uso del software libre, no se comprará nin-
guna licencia de ningún producto, biblioteca o bastimento para el que haya un sustituto
de software libre.
La aplicación web debe funcionar con el navegador X, versión Y porque es la que tiene
instalado el director general.
Requisitos legales
El último grupo de requisitos presenta las obligaciones legales del sistema que
hay que desarrollar, es decir, qué leyes o qué estándares se deben cumplir.
Ejemplo
El sistema del campus virtual debe tener en cuenta el cumplimiento de la LOPD respecto
al tratamiento de los datos personales de estudiantes y otros miembros de la comunidad.
3. Gestión de requisitos
Pagos electrónicos
Una empresa quiere añadir la posibilidad de efectuar pagos electrónicos desde su aplica-
ción. Para los desarrolladores, este requisito es relativamente poco costoso de implemen-
tar porque ya tienen experiencia con estos tipos de sistemas y creen que pueden apro-
vechar algunos componentes que tienen desarrollados para otros proyectos, por lo que
creen que lo pueden tener terminado en una semana; mientras que para los clientes, en
cambio, es un proceso costoso, dado que implica que deberán firmar un contrato con
la empresa proveedora del sistema de pagos y este contrato deberá pasar por todo un
proceso burocrático que se alargará tres meses y no será hasta entonces cuando se podrá
empezar a hacer pruebas de integración. En este caso, la estimación de los desarrolladores
es incorrecta porque no tienen la información que posee el cliente.
© FUOC • PID_00171154 25 Requisitos
Todas las unidades tienen sus ventajas e inconvenientes pero lo que es espe-
cialmente importante es que todo el mundo use la misma unidad y que, si
queremos comparar con información previa otros proyectos u otros requisitos
del mismo proyecto, ésta se encuentre en la misma unidad.
Las unidades "reales" tienen la ventaja de dar un coste inteligible. Por ejemplo,
si decimos que un proyecto necesitará 2.000 horas de desarrollo, nos pode-
mos hacer una idea de los recursos necesarios para ejecutarlo y del calendario,
mientras que si decimos que necesitará 358 puntos, no podemos realizar este
cálculo.
En cambio, la ventaja de las unidades "ficticias" es que nos obligan a usar in-
formación histórica real para realizar el cálculo de recursos necesarios y de ca-
lendario previsto. Así, nos facilitan ajustar las estimaciones a lo largo del pro-
yecto. Por ejemplo, si hemos valorado un conjunto de requisitos en 5, 4 y 7
puntos, respectivamente, y nos damos cuenta de que estamos necesitando seis
horas de desarrollo por punto (en lugar de las ocho que habíamos previsto),
podemos calcular rápidamente los nuevos recursos y el calendario.
plicado y otro más sencillo: si, por ejemplo, tenemos un requisito que hemos La triangulación es especial-
valorado en cuatro puntos y otro que hemos considerado como dos, un tercer mente útil en el caso de usar
unidades ficticias para asegu-
requisito al que le diéramos tres puntos debería ser mayor que el de dos y me- rarnos de que el valor de la
unidad de estimación se man-
nor que el de cuatro. tiene más o menos constante
en todas las estimaciones que
hacemos.
© FUOC • PID_00171154 26 Requisitos
El planning poker consiste en que cada uno de los participantes realiza una
estimación del coste del requisito sin saber las estimaciones que han hecho
los otros (en un rol o, si se quiere, con una carta de una baraja especial de
planning poker).
Las cartas del planning poker tienen valores inspirados en la serie de Fibonacci para reflejar el
hecho de que, a medida que la valoración es más grande, es menos precisa. Por ejemplo, tiene
mucho más sentido discutir si un requisito tiene coste 1 o coste 2, que si es 21 o 22.
Una vez que todo el mundo ha realizado su valoración, "se levantan las cartas"
y, si no hay consenso, se explica al resto de las partes el motivo por el que se
ha hecho una estimación mayor o menor que la del resto.
Lo más importante de esta técnica es que cada uno pueda hacer su es-
timación sin estar condicionado por las de los otros (por ello la estima-
ción es secreta inicialmente) y que, en caso de no coincidir, se establez-
ca un diálogo que permita asegurar que todo el mundo trabaja con la
misma información.
Una vez tenemos una idea aproximada del coste de cada requisito necesitamos
calcular el valor aportado. La ventaja en este caso es que, a diferencia del coste,
no necesitamos una medida absoluta del valor del requisito, sino una medida
relativa al resto de los requisitos. Por ello hablamos de priorización y no de
estimación del valor.
Ejemplo
Por ejemplo, en nuestro campus virtual los profesores podrían considerar más importante
poder saber quién ha hecho una entrega de actividad que saber en qué formato de fichero
lo ha hecho.
Por otro lado, hemos comentado anteriormente que a veces hay requisitos que
entran en conflicto con otros; en este caso, necesitamos saber cuál es el que
aporta más valor para que nuestro sistema lo cumpla.
Por lo tanto, parece que será relativamente sencillo priorizar los requisitos:
sólo los debemos ordenar en función de su valor. Sin embargo, el problema es
que el valor es relativo a los stakeholders, dado que el requisito, que para un
stakeholder es muy importante, para otro puede no serlo tanto e incluso un
stakeholder puede considerar importante incluir el requisito en un producto y
otro, todo lo contrario.
Otro problema habitual es que a los stakeholders les cuesta priorizar los requi-
sitos (es difícil decidir a qué requisitos se está dispuesto a renunciar). A conti-
nuación, explicamos una de las técnicas que se usan para priorizar los requi-
sitos.
La técnica de los 100 dólares (Leffingwell y Widrig, 2000) consiste en dar 100
dólares imaginarios a cada uno de los stakeholders y decirles que los repartan
entre los diferentes requisitos. Idealmente, cada stakeholder repartirá sus dóla-
res entre los requisitos según el valor de cada uno. Por lo tanto, si un requisito
es muy importante, le asignará muchos dólares para asegurarse de que salga
elegido, mientras que, si no lo es, le asignará menos (o ninguno).
De este modo, daremos prioridad a aquellos requisitos que o bien son muy
importantes para alguna de las partes (que habrá puesto una gran cantidad
de dólares para asegurarse que el sistema cumple este requisito), o bien son
importantes para muchas de las partes implicadas (y, por lo tanto, por acumu-
lación de pequeños importes al final consiguen sumar un importe grande).
Uno de los problemas de esta técnica es que puede suceder que un requisito
importante quede demasiado abajo en la lista porque sólo resulte valioso para
un subconjunto pequeño de los stakeholders.
© FUOC • PID_00171154 28 Requisitos
Por otro lado, habrá que asegurarse de que los stakeholders voten de manera
honesta y, por ejemplo, eviten priorizar de menos un requisito porque saben
que otros ya lo priorizarán.
Una vez equipados con nuestra lista priorizada y estimada de requisitos, po-
demos proceder a la elección. Este proceso se deberá hacer para cada una de
las entregas del proyecto; en el caso de las metodologías iterativas también se
hará al inicio de cada iteración.
La manera más sencilla de establecer qué requisitos hay que incluir en la en-
trega siguiente es empezar por los más prioritarios e ir añadiendo requisitos a
la lista mientras quede capacidad (tiempo y recursos) disponible para imple-
mentarlos.
Otro factor que hay que tener en cuenta en la elección son los riesgos asociados
a cada requisito; la acción por tomar dependerá de la naturaleza del riesgo y
de su evolución a lo largo del tiempo.
El riesgo es un factor tan importante que algunos métodos de desarrollo (como UP) acon-
sejan implementar estos requisitos incluso antes de comprometerse a desarrollar todo el
proyecto (es decir, durante la fase de elaboración del proyecto).
Por ejemplo, si debemos aplicar una tecnología con la que tenemos poca experiencia,
dado que este riesgo no desaparecerá hasta que abordemos el requisito, seguramente nos
interesará tratarlo lo mejor posible, de manera que si nos encontramos con problemas
irresolubles la inversión realizada haya sido mínima.
En cambio, si el riesgo que hemos detectado es que consideramos poco probable que
un tercero (por ejemplo, un proveedor) nos entregue un componente dentro del plazo
establecido, quizá nos interese dejar este requisito para una próxima entrega, cuando el
riesgo se haya reducido o haya desaparecido (por ejemplo, porque ya nos han entregado
el componente).
Por otro lado, también debemos considerar la ventana de mercado (el periodo
de tiempo durante el cual nuestro producto es interesante); un mismo produc-
to puede ser absolutamente innovador un año y no serlo en absoluto si sale
al mercado dos años más tarde. Esta ventana de mercado también afectará al
tipo de persona que quiera comprar nuestro producto.
(3)
Finalmente, otro factor económico muy importante es el retorno de la inver- En inglés, return of investment
3 (ROI).
sión . Lo podríamos definir como la medida de los ingresos que genera el uso
del producto para compensar el coste de la inversión en su desarrollo.
Si una empresa gasta un millón de euros en un nuevo sistema informático, éste debería
generar un millón de euros en beneficios (sea ahorrando costes o generando nuevos in-
gresos) para poder considerar la inversión como recuperada.
Lenguaje OCL
Object constraint language (OCL) es un lenguaje formal para expresar restricciones en mo-
delos UML y, al igual que UML, lo define el Object Management Group (OMG).
Por ejemplo, si queremos decir que no puede haber dos clientes con el mismo número
de teléfono, en OCL diríamos Cliente.allInstances()->isUnique(numTelefono).
Otro factor que hay que tener en cuenta es el método de desarrollo que esta-
mos usando y el coste de introducir un cambio en los requisitos. Así, no re-
querirán el mismo estilo de documentación de requisitos el software que con-
trola una sonda espacial (que una vez lanzada al espacio es muy difícil, si no
imposible, de actualizar), que una aplicación web en la que es relativamente
sencillo desarrollar una nueva versión.
© FUOC • PID_00171154 31 Requisitos
Por lo tanto, una de las tareas del ingeniero del software será evaluar cuál es
la necesidad de formalidad y detalle a la hora de documentar los requisitos
para un proyecto. Con esta información, el jefe del proyecto podrá decidir qué
esfuerzo (y, por lo tanto, qué porcentaje del presupuesto global del proyecto)
habrá que dedicar a la documentación de requisitos: deberá tener en cuenta
que tan peligroso es intentar desarrollar un proyecto sin suficiente documen-
tación de requisitos, como dedicar los recursos y el tiempo disponibles para
crear una documentación innecesariamente detallada o formal.
El estándar IEEE 830-1998, titulado "Práctica recomendada por IEEE para las
especificaciones de requisitos de software", documenta, entre otras cosas, cuá-
les deberían que ser las calidades de una buena especificación de requisitos.
A pesar de que presupone un proceso en cascada, en el que el resultado de
la especificación de requisitos es un documento no ambiguo y completo, las
guías que da pueden ser aplicadas también en otros ciclos de vida.
Pero ¿cómo conseguimos un documento que tenga todas las calidades de una
buena especificación de requisitos de software? A continuación, enumeramos
algunas buenas prácticas que nos pueden ayudar a lograr este objetivo:
El problema de este tipo de requisitos es que presuponen una solución (en este
caso, el uso de un desplegable) que, quizá, no es la mejor y que, sobre todo, no
debe ser necesariamente una necesidad para el usuario. En nuestro ejemplo,
puede suceder que el usuario prefiera introducir el nombre de la asignatura en
un campo de texto que autocompleta o seleccionarla de una lista (en lugar de
hacerlo de un desplegable).
La plantilla Volere nos da un índice de los contenidos que debe contener la especifica-
ción, una pequeña plantilla sobre cómo se debe documentar cada requisito y, para cada
apartado del índice, una descripción del contenido, una motivación sobre su necesidad,
algunos ejemplos de contenido para aquella sección y, finalmente, otras consideraciones
de interés. El índice que nos propone esta plantilla es el siguiente:
Conductores�del�proyecto
1. Propósito del proyecto
2. Los clientes y otros stakeholders
3. Usuarios del producto
Restricciones�del�proyecto
4. Restricciones obligatorias
5. Convenciones de nombres y definiciones
6. Hechos y asunciones relevantes
Requisitos�funcionales
7. Alcance del proyecto
8. Alcance del producto
9. Requisitos funcionales y de datos
Requisitos�no�funcionales
10. Requisitos de presentación
11. Requisitos de usabilidad y humanidad
12. Requisitos de rendimiento
13. Requisitos operacionales y de entorno
14. Requisitos de mantenimiento y soporte
15. Requisitos de seguridad
16. Requisitos culturales y políticos
17. Requisitos legales
Otras�cuestiones
18. Temas abiertos
19. Soluciones prefabricadas
20. Problemas nuevos
21. Tareas
22. Migración al nuevo producto
© FUOC • PID_00171154 35 Requisitos
23. Riesgos
24. Costes
25. Documentación de usuario y formación
26. Sala de espera
27. Ideas y soluciones
Un ejemplo de historia de usuario sería "Como alumno, quiero poder entregar un ejerci-
cio por medio del campus virtual" (esto sería la descripción, lo que pondríamos a la tarje-
ta). Esta historia debería ir acompañada de una serie de conversaciones entre los desarro-
lladores y los stakeholders para ir perfilando detalles, como qué formatos de documento
son aceptados, si los profesores pueden o no imponer un formato, si es necesario que el
sistema verifique las fechas límite automáticamente, etc. Todos estos detalles, finalmen-
te, se deberán recopilar en un conjunto de pruebas que nos han de permitir determinar
si la historia se ha implementado con éxito o no:
• Verificar que si se adjunta un archivo en formato PDF, DOC, DOCX u ODT, éste se
guarda y se asocia al usuario.
• Verificar que si el profesor limita los formatos, sólo se aceptan entregas en los forma-
tos indicados por el profesor.
• Verificar que si se adjunta un archivo en un formato incorrecto, se avisa al usuario.
• Verificar que si se intenta hacer la entrega fuera de las fechas de la actividad, se mues-
tra un error al usuario.
• Verificar que si el usuario sale sin adjuntar el archivo, el sistema le avisa y le pide
confirmación.
• Verificar que sólo se puede hacer la entrega en aquellas asignaturas en las que está
matriculado el usuario.
No obstante, hay que tener en cuenta que la conclusión final de las conversa- FitNesse y Cucumber
ciones sí queda documentada y además en un formato que facilita la valida-
Hay herramientas en el merca-
ción, ya que están documentadas como pruebas. do como FitNesse y Cucumber
que facilitan la ejecución auto-
matizada de pruebas a partir
Otra ventaja de las historias de usuario es que están escritas en el lenguaje de de su documentación.
los usuarios o stakeholders. De hecho, son los usuarios o los propios stakeholders
los que, idealmente, deberían escribir las historias de usuario.
(4)
La pila de producto4 es la lista total de historias de usuario de un proyecto de En inglés, product backlog.
La pila de producto ideal debe tener una forma denominada de iceberg: la parte
de arriba son las historias que tendremos en cuenta en la iteración actual (y,
por lo tanto, como la punta de un iceberg, las que son "visibles"). Estas historias
son más pequeñas y detalladas.
La base del iceberg (la parte "no visible") son historias más grandes, menos de-
talladas, que aún no implementaremos y que, más adelante, habrá que dividir
en historias más pequeñas para poderlas implementar.
Las historias de usuario son muy útiles para los requisitos funcionales pero
también nos pueden ser útiles para los requisitos no funcionales.
Como director técnico de la empresa, quiero que otras aplicaciones puedan acceder a la
base de datos en el futuro.
Como director técnico de la universidad, quiero que la aplicación funcione sobre cual-
quier sistema operativo de esta lista: Linux, Windows, BSD.
© FUOC • PID_00171154 37 Requisitos
5. Casos de uso
Los casos de uso son una técnica de documentación de requisitos muy exten- Ved también
dida, entre otros motivos porque UML le da apoyo. Se trata de un enfoque a
Podéis encontrar más informa-
la manera de documentar requisitos que permite usar varios grados de detalle ción sobre el estándar UML en
y de formalismo, lo que los hace adecuados en escenarios muy variados. los módulos "Introducción a
la ingeniería del software" y
"Análisis UML".
VV. AA. (2010). Unified Modeling Language™ (UML®). Object Management Group
"Un caso de uso captura un contrato entre los stakeholders de un sistema en cuanto a su
comportamiento [...]. El sistema responde [...] protegiendo los intereses de los stakehol-
ders".
Por lo tanto, podemos decir que un caso de uso recoge el contrato entre
el sistema y los stakeholders mediante la descripción del comportamien-
to observable del sistema.
Al describir un caso de uso hay un stakeholder que es especial (al que denomi-
naremos actor�principal), que es quien quiere usar el sistema para satisfacer
un objetivo concreto. El caso de uso nos describe cuál es el comportamiento
observable del sistema durante esta ejecución del caso de uso, de manera que
podamos asegurar que se cumple el objetivo del actor principal teniendo en
cuenta los intereses del resto de los stakeholders.
Se podría dar el caso de que el actor principal no fuera un stakeholder, sino un sistema in-
formático. Por ejemplo, si estamos desarrollando un servidor de correo IMAP sin interfaz
gráfica, el actor principal de la mayoría de los casos de uso es una aplicación cliente de
correo, pero el stakeholder sería la persona que usa la aplicación cliente.
Una característica interesante de los casos de uso es que, dado que no estamos
hablando del comportamiento interno del sistema, podemos describir su fun-
cionalidad sin necesidad de describir cómo se implementa el comportamiento.
Un usuario pide leer un mensaje del foro y el sistema le muestra el tema y el contenido.
El sistema también graba que el usuario ha leído el mensaje.
Como podemos ver, a pesar de que el concepto de caso de uso es muy sencillo,
su descripción se puede complicar bastante. Por ello, es habitual combinar
varios estilos de descripción de los casos de uso en un proyecto y dejar este
nivel tan detallado para los casos de uso más complicados.
© FUOC • PID_00171154 39 Requisitos
Según hemos visto hasta ahora, los casos de uso están muy ligados a los sta-
keholders. Hemos mencionado también a los "actores", diciendo que hay un
stakeholder que actúa como actor principal del caso de uso. Esto nos podría
llevar a pensar que los actores y los stakeholders son la misma cosa, a pesar de
que esto no es cierto.
Tal como indica Cockburn (2001): "Un stakeholder es alguien que participa
en el contrato. Un actor es alguien que tiene comportamiento". Por lo tanto,
mientras que los stakeholders participan en el caso de uso mediante sus intere-
ses (por ejemplo, el profesor quiere que quede registrado quién ha leído el
mensaje), los actores interactúan con el sistema.
Más formalmente, "un actor representa un conjunto coherente de roles que los usuarios
del caso de uso tienen al interactuar con éste".
VV. AA. (2010). Unified Modeling Language™ (UML®). Object Management Group
Ejemplo
Un empleado de una entidad financiera puede aparecer con el rol Empleado cuando se
conecta al sistema informático desde el ordenador de la oficina para gestionar las cuentas
de sus clientes, pero puede aparecer como rol Cliente si se conecta vía Internet desde su
casa para gestionar sus cuentas propias. A pesar de que se trata de la misma persona,
desde el punto de vista del sistema informático se trata de actores diferentes.
Mientras que todos los actores serán stakeholders (todos tienen algún interés en
el comportamiento del sistema, ya que los afecta al interactuar en él), también
puede haber stakeholders que no sean actores. Es importante identificar estos
stakeholders para asegurar que el comportamiento descrito tiene en cuenta sus
intereses.
Ejemplo
En nuestro ejemplo, es importante identificar las necesidades del profesor, dado que aun-
que éste no participe en el caso de uso se debe tener en cuenta la necesidad de que haya
registro sobre quién ha leído un mensaje.
© FUOC • PID_00171154 40 Requisitos
Sin embargo, en un mismo caso de uso además del actor principal pueden
aparecer uno o más actores de apoyo, también denominados secundarios. Éstos
son actores externos al sistema que proporcionan un servicio al sistema.
Los dos casos más habituales de actores de apoyo son los sistemas informáticos
externos (como un sistema para autorizar pagos con tarjeta de crédito) y los
usuarios que participan en el caso de uso sin ser el actor principal (por ejemplo,
un operador de una centralita de llamadas que interactúa con el sistema en
nombre de una persona que llama).
En el caso del operador de una centralita, decimos que es un actor de apoyo porque el
sistema no satisface su objetivo, sino el de la persona que llama. Decimos que el actor
principal (la persona que llama) es quien hace la petición al sistema a pesar de que lo
haga de manera indirecta (por medio del operador).
5.3.1. Nombre
De entrada, hemos visto que, como mínimo, un caso de uso debe tener un
nombre. Este nombre es muy importante, ya que se usará para hacer referencia
al caso de uso desde cualquier artefacto a lo largo del proyecto. Desde este
punto de vista, el nombre debe recoger la información más importante relativa
al caso de uso: el objetivo que satisface. De este modo, sólo leyendo el nombre
del caso de uso, los stakeholders pueden valorar cuál es el objetivo que satisface
sin la necesidad de buscar el documento en el que se describe.
Cada caso de uso debe tener un nombre que indique qué consigue el
actor principal en su interacción con el sistema.
5.3.2. Actores
Otro elemento muy importante es documentar claramente los actores del caso
de uso y cuál de ellos es el actor principal.
Tan importante como identificar los actores es identificar sus objetivos. Pero,
como hemos visto antes, no basta con los objetivos e intereses de los actores,
sino que debemos tener en cuenta los de todos los stakeholders, con indepen-
dencia de si participan o no de la interacción.
Como veremos más adelante, es muy útil clasificar estos objetivos según có-
mo sean de generales o de concretos, de manera que podamos realizar una
descripción coherente del sistema en la que no mezclemos objetivos generales
con objetivos específicos.
Las precondiciones del caso de uso nos indican qué condiciones se deben dar
para que se pueda llevar a cabo la interacción descrita. A diferencia de las
condiciones de error (que sí que tenemos en cuenta como extensiones), los
casos en los que no se cumplan estas condiciones no los tendremos en cuenta
y no formarán parte de la descripción del caso de uso.
5.3.5. Escenarios
nario de éxito (en el que se cumplan las garantías mínimas de éxito), donde el
actor principal satisface el objetivo por el que ha iniciado la interacción con
el sistema.
Describimos todos los escenarios como una secuencia de acciones que pueden
describir:
Las frases que escribimos para describir las acciones deben ser sencillas y mos-
trar claramente cuál es la acción que lleva a cabo el usuario o el sistema. Debe
estar claro quién ha de llevar a cabo la acción descrita (el usuario o el sistema)
y, habitualmente, ignoran la tecnología para no limitar las posibilidades de
implementación.
Además, conviene mostrar sólo aquellas acciones relevantes que hacen avan-
zar el proceso y describirlas como objetivos e intenciones y no de "movimien-
tos".
Ejemplo
Así, por ejemplo, en lugar de usar 4 pasos para describir que "El sistema pide el nombre",
"el usuario introduce el nombre", "el sistema pide el apellido" o "el usuario introduce
el apellido", preferiremos un único paso "el usuario introduce el nombre y el apellido",
puesto que esta frase recoge el hecho esencial de que el usuario proporciona nombre y
apellido.
Podemos clasificar los casos de uso según dos grandes ejes: el nivel en el que se
describen sus objetivos y el ámbito que se considera al describir el caso de uso.
© FUOC • PID_00171154 43 Requisitos
Para poder comparar los casos de uso entre sí, en primer lugar debemos asegu-
rarnos de que sean efectivamente comparables. Por ejemplo, no tiene sentido
comparar el caso de uso "Resolver una duda en el foro" (que incluye que el
alumno mande un mensaje con la duda, recibir respuestas de los compañeros,
quizá una respuesta del profesor, etc.) con el caso de uso "Entregar la solución
de un ejercicio". Los dos casos de uso tienen un nivel de granularidad diferente:
mientras que el primero es muy general, el segundo es mucho más específico.
• Usuario (user goals): son los más importantes, dado que son los objetivos
concretos que los actores principales quieren conseguir al usar el sistema
(por ejemplo, "Escribir un mensaje al foro" o "Entregar una práctica").
• General (summary goals): son el nivel más general y nos sirven para dar
contexto y agrupar los objetivos de usuario (por ejemplo, "Resolver una
duda en el foro" o "Cursar una asignatura").
• Tarea (subfunctions): son el nivel más concreto y sólo ofrecen una parte del
valor que el actor espera (por ejemplo, "Adjuntar un archivo a un mensaje"
o "Poner una calificación de una entrega a un alumno").
Si necesitamos concretar más, podemos ver que este caso de uso incluye varios
pasos que podemos considerar, cada uno, un caso de uso a escala de usuario:
El caso de uso "Leer un mensaje del foro" nos resulta familiar, dado que lo
hemos descrito anteriormente. En este caso, vemos que su nivel es de usuario,
ya que cumple un objetivo concreto de un usuario: leer un mensaje del foro.
Sin embargo, podemos ver uno de los posibles contextos en los que puede
tener lugar este caso de uso: como parte del caso de uso general de comentar
una duda al foro.
Respecto a los casos de uso de tarea, cada uno de los pasos de los escenarios
descritos en el caso de uso "Leer un mensaje al foro" lo podríamos considerar
un caso de uso de tarea y especificarlo individualmente, a pesar de que no es
habitual documentarlos.
5.4.2. Ámbito
Todos los casos de uso que hemos visto hasta ahora tenían ámbito de sistema.
Veamos un ejemplo de un caso de uso con ámbito de organización.
Este caso de uso tiene como ámbito la universidad, que incluye el personal que
trabaja en ella y todos los sistemas informáticos de los que dispone. Así, el paso
2 puede ser un proceso automático realizado por un sistema informático, pero
también podría incluir intervención por parte del personal de la universidad
en el caso, por ejemplo, que un comité tome decisiones sobre aceptación de
matrícula en casos especiales.
Una de las tareas más complicadas en la creación del modelo de casos de uso es
la propia identificación de los casos de uso. En este apartado veremos un en-
foque sencillo basado en la identificación de los actores principales, sus obje-
tivos y la clasificación de estos objetivos en función de su nivel de generalidad.
Una vez identificados los actores principales (sean o no usuarios directos del
sistema), podemos enumerar, para cada uno de ellos, cuáles son los objetivos
que quieren obtener del sistema. Para cada uno de los objetivos que encon-
tramos, habrá que tener un caso de uso que describa la interacción del actor
principal con el sistema para satisfacer el objetivo.
Ejemplo
Supongamos que estamos identificando casos de uso para un sistema de ventas y estamos
explorando el caso de uso "Comprar productos". Al llegar al pago puede suceder que el
cliente pague en efectivo, con tarjeta y con transferencia, puede ser que inicie el pago
con transferencia pero que la transferencia no llegue nunca (en este caso necesitamos
un caso de uso para detectar estos pedidos y tratarlos adecuadamente) o que llegue la
transferencia y no cuadre el importe (necesitamos un caso de uso para notificar al cliente
el problema) y así con infinidad de escenarios que, quizá, al pensar en el caso de uso
"Comprar productos", no nos habrían venido a la cabeza.
Ejemplo
Uso del subrayado
Hacer�entrega�de�una�práctica (nivel usuario)
Es habitual el uso del subraya-
Un estudiante quiere hacer entrega de una práctica que ha hecho. El estudiante indica la do para indicar, en el escena-
rio de un caso de uso, qué ac-
asignatura y la práctica y adjunta el archivo con la solución.
ciones se corresponden a casos
de uso incluidos.
Adjuntar�un�archivo (nivel tarea)
En este ejemplo decimos que el caso de uso "Hacer entrega de una práctica" incluye el
caso de uso "Adjuntar un archivo", dado que en el escenario del primero indicamos que
se usa el segundo caso de uso.
En este escenario, cuando un caso de uso sea incluido en otro, lo será, como
mínimo, en un tercero (así, en nuestro ejemplo, "Redactar mensaje" es inclui-
do por "Escribir un nuevo mensaje en el foro" y "Escribir una respuesta a un
mensaje").
© FUOC • PID_00171154 48 Requisitos
Otro caso típico de uso de inclusión se produce cuando aparece un caso de uso
con una extensión muy larga. A menudo las extensiones de un caso de uso
implican variar un par de pasos y volver al escenario principal, pero a veces
nos encontramos con extensiones que implican una serie larga de pasos o que
pueden tener extensiones dentro de la extensión. En este supuesto, se hace di-
fícil congregar toda la variabilidad de escenarios del caso de uso original y, por
ello, es recomendable separar la extensión en un caso de uso independiente.
Ejemplo
Esto propició que se introdujera una nueva relación entre casos de uso dife-
rente de la de inclusión y especialmente pensada para documentar extensio-
nes complejas (como la de "Responder a un mensaje del foro").
© FUOC • PID_00171154 50 Requisitos
Ejemple
En el ejemplo "Leer un mensaje del foro", si documentamos "El usuario quiere escribir una
respuesta a un mensaje" mediante una relación de extensión, el resultado es el siguiente:
Ejemplo
Por lo tanto, ¿qué relación entre casos de uso es más adecuada para una situa-
ción dada? Según Alistair Cockburn: "Como regla general, si un caso de uso A
menciona un caso de uso B, entonces A incluye B. Casi siempre es más fácil
y más claro usar inclusión".
En los sistemas en los que los usuarios se dan de alta ellos mismos es habitual
que este caso de uso se pueda ejecutar de manera independiente o, para faci-
litar las cosas, como extensión del caso de uso de identificación. Esto se nos
hace un poco extraño, puesto que tenemos un caso de uso de nivel usuario
que es una extensión de un caso de uso de nivel tarea. Pues bien, deberemos
convivir con este hecho.
Como conclusión, podemos decir que este caso de uso se halla en un nivel
intermedio entre el nivel usuario y el nivel tarea, de manera que lo podemos
documentar como caso de uso independiente de nivel usuario o como caso de
uso de nivel tarea (ya sea también independiente o como extensión del caso
de uso de identificación) dentro de otro caso de uso de nivel usuario.
© FUOC • PID_00171154 53 Requisitos
(5)
Cuando identificamos los casos de uso de un sistema solemos encontrarnos Del inglés, create-read-update-de-
lete.
con una serie elevada de casos de uso del tipo "Crear un X", "Consultar un
X", "Actualizar un X" y "Borrar un X". Éstos son lo que denominamos mante-
nimientos o casos de uso CRUD5 (crear-recuperar-actualizar-borrar).
Según lo que hemos visto hasta ahora, cada uno de estos pequeños casos de
uso es un caso de uso de nivel de usuario, dado que su actor principal tiene
un objetivo claro que espera lograr mediante aquel caso de uso.
Por lo tanto, una opción totalmente válida es crear, en estos casos, un único
caso de uso de nivel general que aglutine los diferentes objetivos de usuario del
mantenimiento en un único caso de uso. Esto tiene la ventaja de simplificar
el trabajo y evitar la repetición innecesaria.
Probablemente, todos estos casos de uso seguirán una misma estructura. Por
ejemplo, que son del tipo siguiente.
Ejemplo
En este caso de uso podemos observar que, probablemente, todos los mante-
nimientos auxiliares serán muy parecidos en estructura, a pesar de que en cada
uno variará:
• Cuáles son los datos de los que hay que informar al crear una nueva ins-
tancia (en este caso, nombre y número de créditos).
• Qué datos son modificables (en este caso, nombre y número de créditos).
• Qué datos se muestran en la lista (en este caso, de nuevo, nombre y número
de créditos).
• Qué datos se pueden usar para filtrar la busca (en este caso, sólo el nombre
de la asignatura).
• Qué datos se pueden usar para reordenar la busca (en este caso, nombre
y número de créditos).
• Qué verificaciones hay que hacer al borrar una entidad (en este caso, que
la asignatura no se imparta en el semestre actual).
Escribir cada uno de estos casos de uso por separado no es sólo tedioso, sino
también propiciador de error, dado que probablemente queremos que el com-
portamiento común de estos casos de uso sea totalmente consistente a lo largo
del sistema y un error en uno de los casos de uso podría romper esta consisten-
cia. Por otro lado, tener información duplicada también es un inconveniente
a la hora de efectuar el mantenimiento de los casos de uso, ya que si queremos
cambiar la estructura general de los casos de uso, deberemos cambiar muchos
casos de uso diferentes.
Ejemplo
Una vez tenemos un caso de uso plantilla, podemos definir casos de uso usan-
do la plantilla. Para ello se debe indicar qué plantilla se usa (utilizando una
relación de inclusión) y qué valores adquieren los parámetros de ésta.
© FUOC • PID_00171154 56 Requisitos
Ejemplo
A partir de aquí, podemos ver que los actores primarios serán aquellas personas
u organizaciones que piden servicios a la organización para conseguir ciertos
objetivos; cada caso de uso será un servicio que la organización ofrece a uno
de estos actores primarios para satisfacer uno de sus objetivos.
Por lo tanto, hay que tener en cuenta que si hacemos modelización de proce-
sos de negocio y de uno de los sistemas informáticos de la organización, los
dos basados en casos de uso, habrá que tener muy claro a cuál de los dos do-
cumentos pertenece cada caso de uso y no mezclar casos de uso de uno con
los del otro.
© FUOC • PID_00171154 57 Requisitos
Resumen
En este módulo nos hemos centrado en los requisitos del software, que he-
mos definido como características observables del sistema por desarrollar que
satisfacen necesidades o expresan restricciones de aquellas personas o entida-
des que tienen algún impacto o interés en el proyecto y que denominamos
stakeholders. Los requisitos se pueden clasificar como funcionales, que hacen
referencia a las necesidades que deben satisfacer el sistema, o como no funcio-
nales, que son aquellos que expresan restricciones sobre el conjunto posible
de soluciones.
Para desarrollar un proyecto habrá que identificar cuáles son los stakeholders
de nuestro sistema y obtener sus requisitos. Técnicas como el brainstorming, las
entrevistas y los cuestionarios, la observación, el prototipado y las listas pre-
definidas nos ayudan a realizar una compilación de requisitos de más calidad.
A lo largo del proyecto también habrá que gestionar estos requisitos para de-
cidir cuáles se deberán en cuenta, para lo que habrá que estimar su coste, prio-
rizarlos y elegir para maximizar el valor obtenido para el desarrollo, teniendo
en cuenta los recursos disponibles.
Actividades
1. Suponed que tenemos un caso de uso "Corregir una actividad" con la especificación textual
breve siguiente:
El profesor baja del campus virtual todos los documentos de entrega de la actividad entrega-
dos hasta la fecha y el sistema registra como consultadas todas las entregas disponibles tam-
bién hasta entonces. El profesor corrige las entregas (fuera del sistema). El profesor introduce
las calificaciones en el sistema, que comprueba que sólo introduzca calificaciones a entregas
que previamente haya consultado.
Haced la especificación textual detallada, usando la plantilla detallada del subapartado 00.
Cread casos de uso de nivel de usuario e incluidlos en éste para aquellas partes en las que lo
creáis oportuno. Haced también la especificación detallada de estos nuevos casos de uso.
3. Supongamos que estamos desarrollando un sistema de venta de entradas para teatros por
medio de Internet. Decid si las entidades y personas siguientes son o no stakeholders. En el
supuesto de que también sean actores del sistema, indicadlo. Justificad vuestra respuesta.
5. Suponed que os han pedido que desarrolléis una aplicación muy sencilla: se trata de permi-
tir a los usuarios (trabajadores de una empresa) publicar anuncios de tipo clasificados ("vendo
mi coche", "busco un ordenador de segunda mano", etc.) en la intranet de la empresa. No
es necesario que se pueda responder, sólo publicar los anuncios (con título, texto y fecha de
caducidad) y no os pueden dar más documentación ni podéis hablar con nadie más. En este
caso, ¿podemos decir que tenemos representante de los stakeholders?
6. Supongamos ahora que, en el desarrollo del sistema anterior, han decidido que podemos
enviar un cuestionario a los usuarios finales del sistema y nos han dado las preguntas si-
guientes. ¿Creéis que son adecuadas? Si no es así, indicad cuál es el problema y cómo se
podrían mejorar.
7. Dad dos ejemplos para cada una de las categorías de requisitos del IEEE 830 mencionadas
en el subapartado 2.2.3.
© FUOC • PID_00171154 60 Requisitos
8. Suponed que tres personas están haciendo una estimación mediante la técnica del planning
poker y valoran el requisito en 2, 4 y 8 puntos. ¿Cuál es el valor que debemos usar para la
estimación?
¿Cuántos días tardaríamos en implementar todo el proyecto? ¿Qué sucede si nos hemos equi-
vocado al valorar A en un 10%?
11. Identificad un caso de uso para un sistema de alquiler público de bicicletas (como el
Bicing de Barcelona) en el que el actor principal no es el usuario que alquila bicicletas.
12. Imaginad que estáis desarrollando el software que gestiona un teléfono móvil y estáis en
un modo de diagnóstico en el que salen unas cifras que no sabemos qué significan. ¿Qué
caso de uso puede estar relacionado con esta funcionalidad? ¿Quién sería el actor principal?
13. Suponed que pasáis por la calle y veis a un amigo vuestro concentrado en su teléfono
móvil. Vuestro amigo os explica que está comprando unas entradas para el teatro y que está
© FUOC • PID_00171154 62 Requisitos
14. Suponed que estamos desarrollando una aplicación para la gestión de preguntas y res-
puestas de usuarios al estilo de Yahoo Answers o Stack Exchange. Identificad tres actores y,
para cada uno de ellos, identificad como mínimo un objetivo de nivel global, uno de usuario
y otro de tarea que estén relacionados entre sí. Describid de manera informal el caso de uso
que permita lograr cada uno de los objetivos de nivel usuario o global identificados.
Ejercicios de autoevaluación
1. ¿Cuáles son las dos condiciones más básicas para que una cierta característica se pueda
considerar un requisito?
4. ¿Qué diferencia existe entre los requisitos funcionales y los que no lo son?
5. ¿Cuáles son las principales actividades relacionadas con los requisitos que habrá que llevar
a cabo a lo largo del proyecto?
7. Durante el brainstorming inicial se aportan ideas sin entrar en valorarlas, sin evitar repeti-
ciones y sin hacer ninguna selección. ¿Cómo se llega a un resultado útil que no tenga estos
problemas?
8. Indicad tres actividades relacionadas con los requisitos que se puedan hacer mediante un
brainstorming.
9. ¿Qué técnicas nos pueden evitar la obligación de pensar en los requisitos de cada uno de
los usuarios de manera individual?
11. ¿Por qué la pregunta "¿Quieres que el sistema devuelva todos los resultados paginados de
20 en 20 en menos de 1 segundo?" puede ser inadecuada para una entrevista de identificación
de requisitos?
13. Poned dos ejemplos de aspectos que hay que tener en cuenta en cuanto a la usabilidad
y la humanidad, según Volere.
14. ¿A qué tipo de requisito de la lista Volere pertenece cada uno de estos aspectos?
15. ¿Qué información deberemos tener de cada requisito candidato, antes de poder seleccio-
nar cuáles tomaremos realmente en consideración?
16. ¿Qué dos grandes tipos de unidades podemos usar para valorar requisitos? Poned un
ejemplo de cada una.
17. Si disponemos de unos cuantos requisitos ya valorados, ¿qué técnicas nos pueden ayudar
a considerar el resto?
© FUOC • PID_00171154 63 Requisitos
18. ¿Por qué es importante que haya consenso cuando se usa la técnica de estimación planning
poker? ¿Por qué no resolvemos los conflictos por mayoría?
20. ¿Qué técnica nos puede ayudar a priorizar los requisitos cuando tenemos múltiples sta-
keholders o stakeholders que no tienen claro cómo se debe priorizar?
21. ¿Cuáles son las calidades de una buena especificación de requisitos según el IEEE?
22. ¿Qué defecto tiene una especificación de requisitos que se puede entender de maneras
diferentes e incompatibles entre sí?
23. ¿Qué defecto tiene una especificación de requisitos en la que varios requisitos se llevan
la contraria?
24. ¿Qué defecto tiene una especificación de requisitos si algunos de los requisitos son tales
que requerirían una gran cantidad de dinero y tiempo para comprobar si un sistema los
satisface?
25. ¿Qué defecto tiene una especificación de requisitos en la que resulta difícil introducir
cambios?
26. ¿Una historia de usuario es una tarjeta con una descripción y un conjunto de pruebas
de aceptación?
27. ¿Qué medida deberían tener las historias de usuario de una pila de producto?
32. ¿Cuál es el ámbito en el que una persona puede formar parte del sistema que estamos
estudiando en lugar de aparecer como actor?
33. ¿Cuál es el ámbito en el que un componente de software del sistema que estamos estu-
diando se puede considerar un actor que interactúa con un subsistema del que escribimos
casos de uso?
34. ¿El actor iniciador de un caso de uso debe ser el actor principal? En caso contrario, dad
contraejemplos.
35. ¿Cómo podemos evitar que dos casos de uso contengan una buena parte de la documen-
tación igual y, por lo tanto, repetida en dos documentos?
36. ¿Cómo podemos separar la documentación de una extensión muy larga del documento
del caso de uso para poderle definir, a su vez, extensiones?
39. ¿Cómo podemos evitar una explosión en el número de casos de uso parecidos cuando
estamos documentando mantenimientos con casos de uso del estilo CRUD?
41. ¿Qué ámbito más habitual tendrán los casos de uso si hacemos modelización de procesos
de negocio?
© FUOC • PID_00171154 64 Requisitos
Solucionario
Actividades
1.
2.
© FUOC • PID_00171154 65 Requisitos
a) "El sistema debe funcionar sobre plataforma Linux y Windows" es difícil de verificar,
dado que no indica qué versiones concretas de Linux y Windows se deben soportar. Una
versión correcta sería: "El sistema debe funcionar sobre plataforma Linux (núcleo 2.6 y
entorno gráfico Gnome 2.32) y Windows 7".
b) "Usaremos un índice con los campos nombre y descripción del producto Apache Lucene para
que los usuarios puedan buscar los productos con cualquier palabra clave" no tiene una
visión global del sistema (Lucene es un detalle de implementación que no interesa a los
usuarios). La versión correcta sería "Los usuarios podrán hacer búsquedas de productos
por palabras clave".
c) "La web debe funcionar sobre los navegadores más usados" es difícil de verificar. Una
versión correcta sería "La web se visualizará correctamente con los navegadores Internet
Explorer, Firefox, Chrome y Safari en su versión más reciente en el momento de poner
el proyecto en producción y la versión inmediatamente anterior". A pesar de que no
indica versiones completas, es fácil de verificar en el momento de poner el proyecto en
producción.
d) "Usaremos el bastimento .Net Entity Framework para acceder a la base de datos" no es un
requisito desde el punto de vista del usuario (si no es que hay algún stakeholder que nos
lo ha pedido). En este caso, no tiene sentido reescribirlo.
e) "Los usuarios podrán rellenar la solicitud fácilmente". También es difícil de verificar. Una
versión verificable: "Un usuario sin entrenamiento debe poder rellenar correctamente la
solicitud sin ayuda exterior en menos de cinco minutos".
3.
a) La persona que quiere comprar la entrada es un stakeholder, dado que es un usuario (y,
por lo tanto, un actor) del sistema.
b) La persona que atiende la centralita telefónica de atención al usuario es un stakeholder
potencial, puesto que, para resolver las incidencias de los usuarios, es probable que ne-
cesite acceder al sistema como usuaria.
c) Los propietarios de los teatros son stakeholders, dado que, en última instancia, serán ellos
quienes pondrán el dinero para financiar el desarrollo.
d) Los actores de las obras no son stakeholders, ya que no les afecta el sistema.
e) El acomodador del teatro es un stakeholder, dado que tiene, como mínimo, una necesidad
que cubrir: que el sistema le diga cuál es el asiento que debe ocupar cada persona (aunque
sea imprimiendo una entrada con el número de asiento).
f) Las personas que van al teatro pero que no han comprado directamente la entrada no
son stakeholders, puesto que no tienen ningún interés ni interacción con el sistema.
g) El personal de la taquilla del teatro es stakeholder, dado que el sistema afecta a su manera
de trabajar y, en todo caso, su trabajo es complementario al del nuevo sistema. Podría
ser que fueran actores si usan el nuevo sistema para vender las entradas que se compran
en la taquilla.
h) Los administradores de sistemas de la empresa en los están hospedados los servidores son
stakeholders, ya que deben poder administrar el nuevo sistema.
i) Los desarrolladores de la aplicación no son stakeholders.
j) El comercial que debe convencer a los teatros de que entren en la Red y pongan sus
entradas a la venta por medio de la aplicación es un stakeholder, ya que necesita que el
sistema sea fácil de vender.
k) El software que usan los teatros para gestionar las ventas de entradas a la taquilla no es
un stakeholder, a pesar de que podría ser un actor.
l) Los desarrolladores del software que usan los teatros para gestionar las ventas de entradas
en la taquilla son stakeholders, dado que necesitan que el nuevo sistema se pueda integrar
con el software que han desarrollado.
m) El jefe de proyecto no es un stakeholder.
4. Usuarios:
Stakeholders:
6.
Tened en cuenta que añadir esta funcionalidad implicará que no se pueda poner fecha
de caducidad a los anuncios.
b) "¿Creéis que se deberían que añadir más campos?" es una pregunta demasiado abierta.
Sería mejor "¿Qué campo añadiríais?" o, mejor todavía, sugerir qué campos se pueden
añadir.
c) "¿Os parece bien que los anuncios caduquen automáticamente al cabo de un mes?" es
una pregunta correcta para un cuestionario.
d) "¿Un usuario debería poder modificar un anuncio una vez publicado?" tiene el mismo
problema que la primera pregunta: dado que no da ninguna indicación del coste, la res-
puesta natural a la respuesta es sí. Una posible solución: "¿Un usuario debería poder mo-
dificar un anuncio una vez publicado?". En caso afirmativo, "¿Qué funcionalidad debe-
ríamos sacrificar para incorporar ésta?".
7.
• Rendimiento
– El sistema debe soportar 2.000 usuarios conectados al mismo tiempo.
– El sistema debe guardar los datos relativos a dos millones de solicitudes.
• Restricciones de diseño
– El sistema debe funcionar sobre un teléfono móvil con 256 MB de RAM, procesador
ARM v8 y sistema operativo Android.
– El diseño del sistema debe seguir la compilación de buenas prácticas y patrones de
la organización.
• Fiabilidad
– En el caso de problemas con el servidor de bases de datos, en ningún caso puede
quedar el sistema en un estado inconsistente.
– El sistema debe guardar automáticamente el trabajo realizado para recuperarlo auto-
máticamente en el caso de caída no prevista.
• Disponibilidad
– El sistema debe poder operar de manera que, si cae un servidor, otro se encargue de
continuar dando servicio a los usuarios.
– El sistema debe poder estar disponible el 90% del tiempo.
• Seguridad
– El sistema debe registrar los accesos a información sobre clientes realizados por los
usuarios.
– El sistema debe impedir que los usuarios de una oficina accedan a los datos personales
de los clientes de otra oficina.
• Mantenibilidad
– El sistema debe tener en cuenta que, en el futuro, se incorporarán nuevos proveedores
para el servicio de mensajería y se querrá poder cambiar entre éstos fácilmente.
– El sistema debe registrar, en el caso de error inesperado, información sobre la transac-
ción en curso y también el punto exacto en el que se ha producido el error para fa-
cilitar el diagnóstico.
• Portabilidad
– El sistema debe poder funcionar sobre un sistema gestor de bases de datos diferente
del actual.
– El sistema debe poder funcionar sobre los sistemas operativos Linux 2.6, Windows
7 y MacOS X 10.6.
8. Ninguno de los tres valores. Es necesario que hablen y expongan el motivo de la valoración
de cada uno y, una vez que se han puesto de acuerdo, volver a dar una estimación.
9. Tardaremos 42 veces lo que tarde A, es decir, 42 días. Si nos hemos equivocado en un 10%
al valorar A, pero el resto de estimaciones está bien, tardaremos un 10% más (46,2 días) en
acabar.
© FUOC • PID_00171154 67 Requisitos
10. La plantilla de OpenUP no tiene en cuenta los objetivos de los actores, sino sólo su
comportamiento. Por otro lado, incorpora información que no aparece en la plantilla que
hemos empleado en el subapartado 5.1, como los escenarios clave o los requisitos especiales.
11. Un ejemplo podría ser "Retirar una bicicleta estropeada". En este caso, el actor principal
sería el encargado del mantenimiento de las bicicletas.
12. Un caso de uso relacionado con esta funcionalidad podría ser "Diagnosticar problema
interno" y el actor principal, el encargado de reparar el teléfono.
14.�Actor: visitante. Es un tipo de usuario que suele llegar a la aplicación de manera casual
(por ejemplo, por medio de un buscador) con un interés concreto y que, una vez haya en-
contrado la respuesta a la pregunta que tiene, no continuará usando el sistema. Su nivel
técnico puede ser muy bajo e incluso puede ser un usuario muy ocasional de Internet. Su
motivación principal para usar el sistema es encontrar una respuesta a una pregunta que
tiene. Existe la posibilidad de que se registre como miembro para plantear la pregunta si no
encuentra la respuesta.
Casos�de�uso:
Resolver�una�duda�propia�(global)
El usuario (sea visitante o miembro) tiene una duda y accede al sistema para encontrar una
respuesta. Si no encuentra la respuesta y es un miembro de la comunidad, puede crear una
pregunta. Si no es miembro, puede registrarse en este momento y convertirse en miembro.
Registrarse�como�usuario�(usuario)
Un usuario visitante decide que quiere formar parte de la comunidad y se quiere registrar.
El sistema le pedirá los datos personales que formen su perfil y le asignará unas credenciales
para identificarse en el futuro.
Crear�una�pregunta�(usuario)
Un miembro de la comunidad puede crear una nueva pregunta en cualquier momento. Una
vez creada la pregunta, ésta aparecerá en la lista de sus preguntas para que pueda ir fácilmente
a encontrar las respuestas.
Encontrar�una�respuesta�(usuario)
El usuario puede indicar una serie de palabras clave y el sistema le mostrará una lista de pre-
guntas que, o bien en la pregunta o bien en la respuesta, contienen las palabras clave men-
cionadas. El usuario elige una y el sistema muestra la pregunta junto a todas sus respuestas.
Alternativamente, el usuario puede llegar directamente a la página que muestra la pregunta,
ya sea por medio de un buscador o mediante los favoritos de su navegador. Si el usuario era
un miembro, también puede ver la lista de sus preguntas y llegar al detalle desde ahí.
Resolver�una�duda�a�algún�otro�(global)
El usuario (un miembro de la comunidad) quiere participar para resolver una duda de algún
otro. Lo primero que hace es encontrar una pregunta para intervenir en ella.
Encontrar�una�pregunta�para�intervenir�en�ella�(usuario)
El usuario puede buscar una pregunta por palabra clave (por ejemplo, para buscar preguntas
sobre los temas que domina) o ver la lista de preguntas con pocas o ninguna respuesta. Una
vez elegida la pregunta en la que quiere intervenir, redactará la respuesta y la enviará.
Moderar�la�comunidad�(global)
Los moderadores son los responsables de encontrar intervenciones poco adecuadas, respon-
der a las quejas de los usuarios y cerrar una pregunta cuando ésta ya tiene un número sufi-
ciente de respuestas.
Encontrar�intervenciones�poco�adecuadas�(usuario)
Ejercicios�de�autoevaluación
1. Debe ser observable y expresar una necesidad o restricción que afecte al software por desa-
rrollar. (Podéis ver el subapartado 1.1).
2. Los usuarios siempre son stakeholders, ya que tienen intereses en el sistema por la misma
razón que lo usarán. Pero no todos los stakeholders son usuarios, dado que hay personas que
no usarán directamente el sistema pero tienen interés en él. (Podéis ver el subapartado 1.2).
3. Comunicar las necesidades y los objetivos de los stakeholders. (Podéis ver el subapartado
1.2).
4. Los requisitos funcionales expresan necesidades que ha de satisfacer el sistema, qué debe
hacer, mientras que los no funcionales expresan restricciones sobre las posibles soluciones,
cómo lo debe hacer. (Podéis ver el subapartado 1.3).
6. No, ya que no sería posible satisfacerlos. Éste es uno de los motivos por los que, una vez
tenemos una lista de requisitos candidatos, hay que hacer una selección de los que realmente
queremos prever. (Podéis ver los apartados 2 y 3).
11. Porque condiciona las respuestas (menos de un segundo, de 20 en 20) y se limita al co-
nocimiento actual, en el sentido de que puede ser que haya soluciones alternativas a la pagi-
nación para devolver grandes cantidades de datos (por ejemplo, una barra de desplazamiento
continua). (Podéis ver el subapartado 2.2.1).
12. No. Podemos usar el prototipo para resolver dudas sobre los requisitos del sistema, pero,
por definición, el prototipo no se emplea como parte del producto definitivo. Si lo usára-
mos, ya no se trataría de un prototipo, sino de una implementación parcial. (Podéis ver el
subapartado 2.2.2).
13. La lista de aspectos mencionados son: eficiencia de uso, facilidad de memorización, tasa
de errores, satisfacción, retroalimentación, curva de aprendizaje, comprensibilidad y accesi-
bilidad. (Podéis ver el subapartado "Requisitos de usabilidad y humanidad").
14.
15. Necesitaremos una estimación del coste de implementarlo, así como conocer la impor-
tancia que tiene para los stakeholders y el riesgo que implica. También se deberá tener en
cuenta los recursos disponibles, que no son información de los requisitos candidatos. (Podéis
ver el apartados 3 y 3.3).
16. Reales, como las horas, o ficticias, como puntos. (Podéis ver el subapartado 3.1.1).
18. Porque es necesario que cada uno pueda hacer su estimación sin estar condicionado; por
lo tanto, tampoco debe estar condicionado por la mayoría y es importante que, en caso de
duda, haya diálogo. Así se puede descubrir cuáles son los diferentes supuestos que nos han
llevado a valoraciones distintas. (Podéis ver el subapartado 3.1.3).
19. Que el valor es relativo a los stakeholders, que puede ser que no se pongan de acuerdo y
que puede suceder que a los stakeholders les cueste priorizar. (Podéis ver el subapartado 3.2).
20. La votación con número limitado de votos. (Podéis ver el subapartado 3.2.1).
26. No, una historia de usuario es eso y además una conversación que no queda registrada.
(Podéis ver el subapartado 4.3).
27. Las historias que se han de tener en cuenta en la iteración actual, las más prioritarias,
deberían ser más breves y estar más detalladas. Las historias que aún no implementaremos,
las menos prioritarias, deberían ser más extensas. (Podéis ver el subapartado 4.3).
28. El actor tiene comportamiento en la interacción con el sistema, interactúa con el sistema,
mientras que el stakeholder puede no tenerlo. (Podéis ver el subapartado 5.2).
30. La secuencia de acontecimientos que espera el actor principal cuando pone en marcha
el caso de uso y que lo llevan a satisfacer su objetivo. (Podéis ver el subapartado 5.3.5).
31. De más concretos a más generales: tarea, usuario y general. (Podéis ver el subapartado
5.4.1).
34. El actor iniciador también podría ser un actor de apoyo que interactúa con el sistema por
orden del actor principal (por ejemplo, el operario de una central de llamadas) o puede ser el
reloj (que usamos para representar el iniciador cuando un caso de uso se inicia en respuesta
a un acontecimiento temporal). (Podéis ver el subapartado 5.5.1).
35. Podemos crear un caso de uso con la parte común a los dos e incluirlo en los dos casos
de uso. (Podéis ver el subapartado "Inclusión por reutilización").
36. Podemos documentar la extensión como un nuevo caso de uso e incluirlo en el caso
de uso original. (Podéis ver el subapartado "Separación de una extensión en un caso de uso
incluido").
37. Podemos crear un caso de uso nuevo para la extensión y usar la relación de extensión
para indicar en qué punto del caso de uso original modifica el comportamiento. (Podéis ver
el subapartado 5.5.4).
38. Podemos indicar, como precondición de los casos de uso que lo requieren, que es nece-
sario estar autenticado. Otra solución es documentar la autenticación como un paso más del
caso de uso; en este segundo caso, si aquélla fuera compleja, se podría considerar un caso de
uso de nivel de tarea e incluirla donde sea necesario. (Podéis ver el subapartado 5.6.1).
39. Podemos crear un único caso de uso para simplificar la documentación resultante. (Podéis
ver el subapartado 5.6.3).
40. Consiste en un caso de uso que usa una plantilla que permite evitar redundancias y crea
varios casos de uso que siguen la misma plantilla. (Podéis ver el subapartado 5.6.4).
41. En el caso de modelizar procesos de negocio, lo más habitual es que los casos de uso
tengan ámbito de organización. (Podéis ver el subapartado 5.6.5).
© FUOC • PID_00171154 71 Requisitos
Glosario
actor m Alguien que tiene comportamiento en un caso de uso. Puede ser una persona,
pero también una organización o un sistema (de software o de otro tipo) externo al sistema
que analizamos.
actor iniciador m Actor que inicia la interacción con el sistema. Puede ser el actor princi-
pal, pero también puede ser un intermediario entre éste y el sistema. También puede ser que
el caso de uso se inicie de manera automática o en reacción a un acontecimiento externo,
caso en el que el actor iniciador sería el reloj o este acontecimiento, respectivamente.
actor principal m Stakeholder que efectúa una petición al sistema para recibir uno de los
servicios y así satisfacer un objetivo.
caso de uso m Documento que recoge el contrato entre el sistema y sus stakeholders. Des-
cribe el comportamiento del sistema y las interacciones en varios escenarios y muestra cómo
el sistema responde a las peticiones y los objetivos de los stakeholders.
caso de uso de extensión m Caso de uso que describe una extensión de otro caso de uso
(que denominamos de base).
Ved extensión
caso de uso de base m Caso de uso del que hay una extensión descrita en otro caso de
uso (que denominamos de extensión).
Ved extensión
create, read, update and delete Funcionalidades básicas del almacenamiento persistente
que, a menudo, se ofrecen a los usuarios de los sistemas informáticos para el mantenimiento
de ciertos datos. Se pueden documentar como casos de uso individuales o agrupar en un caso
de uso que agrupe varias de estas operaciones cuando se realizan sobre unos mismos datos.
Sigla CRUD
extensión (de un caso de uso) f 1. Un fragmento de escenario que empieza bajo cierta
condición desde otro escenario. 2. Relación entre dos casos de uso en la que un caso de uso
que denominamos de extensión describe una extensión de otro caso de uso que denominamos
de base, de tal manera que el caso de uso de base no tiene ninguna referencia al caso de uso
de extensión, sino que el caso de uso de extensión indica dónde del caso de uso de base se
produce la extensión.
garantía mínima (de un caso de uso) f Aquello que podemos asegurar que sucederá al
finalizar el caso de uso, sea cual sea el escenario en el que se produzca.
inclusión (entre casos de uso) f Relación entre dos casos de uso en la que en un paso de
un escenario de un caso de uso se llama a otro caso de uso (que denominamos subcaso de uso).
prototipo m Producto que se crea para demostrar la funcionalidad del producto final. El
prototipo sólo sirve para obtener información sobre cómo debe ser el producto final, pero
no forma parte de él (es decir, una vez obtenida la información que se quería obtener el
prototipo se descarta), por lo que ni siquiera es necesario usar la misma tecnología que se
empleará para producir el producto final.
de esta necesidad o restricción. Una solución será adecuada si satisface todos los requisitos
del sistema.
stakeholder m Persona o entidad con un interés sobre el producto que estamos desarro-
llando.
Bibliografía
Bibliografía principal
Este libro nos da indicaciones sobre cómo se deben aplicar, de manera eficaz, los casos de
uso en la gestión de requisitos. A pesar de centrarse en el uso de casos de uso para la docu-
mentación de requisitos, gran parte del discurso es aplicable con independencia del estilo
de documentación.
Bibliografía complementaria
En esta obra, Alan Davis propone un enfoque pragmático para la obtención y la gestión de
requisitos.
Este libro trata, principalmente, de la técnica de las historias de usuario, pero –al igual que el
de Cockburn– gran parte del discurso es aplicable a la obtención, gestión y documentación
de requisitos con independencia del estilo de documentación.
Referencias bibliográficas
Autores varios (2010). Unified Modeling Language™ (UML®). Ob-ject Management Group.