Cómo escribir buenos requisitos

Transcripción

Cómo escribir buenos requisitos
Procesos del Desarrollo de Software – 3º Grado en Ingeniería Informática
Cómo redactar requisitos
Curso 2010-2011
José Miguel Fuentes
Cómo redactar requisitos
1
Índice
•
•
•
•
•
•
•
•
•
La importancia del requisito en el ciclo de vida de desarrollo de software
Cómo debería ser una especificación de requisitos
Estructura de la especificación
Especificaciones completas
Especificaciones consistentes
Una especificación de requisitos no es una novela
Redacción del requisito
Ejemplos
Referencias
Cómo redactar requisitos
2
La importancia del requisito
3
Cómo redactar requisitos
Current situation in sw. development
Factores de éxito
% de respuestas
1. User Involvement
15.9%
15.9%
2. Executive Management Support
13.9%
3. Clear Statement of Requirements
13.0%
13.0%
4. Proper Planning
9.6%
5. Realistic Expectations
8.2%
8.2 %
6. Smaller Project Milestones
7.7%
7. Competent Staff
7.2%
8. Ownership
5.3%
9. Clear Vision & Objectives
2.9 %
2.9%
10. Hard-Working, Focused Staff
2.4%
Other
13.9%
Basados en requisitos
40% relacionados
con requisitos
Cómo redactar requisitos
4
La importancia del requisito
• Cuanto antes… mejor!!
– No hay que esperar hasta las pruebas de aceptación para determinar si
hemos omitido algo o hemos entendido mal a un interesado
– Aplicar revisiones y técnicas para detectar requisitos de baja calidad lo
antes posible
5
Cómo redactar requisitos
Cómo debería ser una especificación de requisitos
• Completa: describe todas las necesidades relevantes para los
stakeholders
• Consistente: carece de conflictos entre requisitos
• Correcta: todo es pertinente y no contiene errores
• Modificable: facilidad para efectuar cambios de forma sencilla,
completa y consistente
• Verificable: existencia de un proceso acotado que determine si
el sistema final satisface el requisito
• Trazable: el origen del requisito está marcado de forma clara; y
se puede seguir el impacto del requisito a lo largo del SDLC
• Clara y no ambigua: una única interpretación
IEEE 830, 1998
Cómo redactar requisitos
6
Cómo debería ser una especificación de requisitos
Sigla
Concepto
Descripción
S
eSpecífico
Claros y simples: qué, por qué…
M
Medible
Se puede cuantificar y evaluar
A
Alineado
Con la estrategia o con el fin del sistema
R
Realista
Puede conseguirse con un número de recursos lógico
T
limitado en
Tiempo
Establece un periodo de tiempo claro
"I believe that this nation should
commit itself to achieving the goal,
before this decade is out, of landing
a man on the Moon and returning
him safely to Earth"
Cómo redactar requisitos
7
Estructura de la especificación
• Un proyecto mediano puede tener centenares de requisitos
• Estos requisitos no se escriben y se olvidan:
– Pueden ser firmados, con lo que son pieza clave en contratos
– Son la fuente del diseño
– Se verificará el software contra ellos
• La correcta organización de los mismos es vital
• Claves:
–
–
–
–
–
–
Utiliza estándares de estructuración de especificaciones de requisitos
Aclara el objetivo global a cumplir por el sistema
Emplea descripciones textuales y gráficas
Ordena y agrupa tus requisitos de forma lógica
Relaciona unos requisitos con otros para facilitar su entendimiento
Relaciona los requisitos con otros activos
Cómo redactar requisitos
8
Especificaciones completas
• ¿Qué podemos hacer para no olvidar nada…
– Revisión por pares: junto con compañeros más experimentados, expertos
en la materia, cliente y otros interesados
– Emplear check-lists
– Comparar la especificación contra taxonomías propias de la materia
– Reutilizar requisitos de proyectos previos
• Reutilización de grano grueso: componentes reutilizables
• Reutilización de grano fino: buscadores avanzados
Cómo redactar requisitos
9
Especificaciones consistentes
• El primer paso hacia la consistencia es evitar redundancia…
• … y las inconsistencias provocan retrabajo
• Las revisiones en grupo permiten detectar parte de estas
redundancias
• Técnicas automáticas para su apoyo:
– Comparación de grafos semánticos
– Detección de unidades inconsistentes
Cómo redactar requisitos
10
Especificaciones consistentes
• Comparación de grafos semánticos:
UR001: ….
UR023: El sistema deberá enviar notificaciones semanales de nuestras
ofertas a todos los clientes
URxxx: …
UR842: La aplicación debe ser capaz de notificar periódicamente a sus
clientes sobre nuestras ofertas
UR999: …
Cómo redactar requisitos
11
Especificaciones consistentes
• Detección de unidades inconsistentes:
•
•
•
“NASA y ESA reconoces la pérdida de una sonda marciana por haber
diseñado dos módulos empleando diferentes sistemas de medida”
Revisiones globales de la especificación
Detección automática de unidades inconsistentes
Cómo redactar requisitos
12
Comparativa: Novela vs. Requisito
Múltiples estilos narrativos:
Ficción
Histórica
Científica
Cómica
…
Cómo redactar requisitos
13
Comparativa: Novela vs. Requisito
Múltiples estilos narrativos
Nos deben contar una historia real
Creíble por todos los interesados
El autor no debe expresar su punto de vista, sino
la situación real
Capaz de ser diseñada, implementada, probada,
implantada, mantenida…
Cómo redactar requisitos
14
Comparativa: Novela vs. Requisito
Abiertas a todo tipo de licencias poéticas y
adornos:
“Generalmente se viste de manera victoriana,
incluyendo un traje, botas de montar, y una ostentosa
corbata de moño intrincadamente atada, …”
Cómo redactar requisitos
15
Comparativa: Novela vs. Requisito
Abiertas a todo tipo de licencias poéticas y adornos
Licencias poéticas las mínimas
Textos simples y claros para facilitar su lectura y
entendimiento
Siguiendo un conjunto de gramáticas fijas y simples
Usando la voz activa en lugar del pasivo
Evitando terminología técnica, abreviaturas …
Utilizando un vocabulario controlado, donde los términos
estén bien consensuados
Prescindiendo de especulaciones
Cómo redactar requisitos
16
Comparativa: Novela vs. Requisito
Intentan contarnos la totalidad de la historia:
Qué ocurre
Por qué ocurre
Cómo se desenlaza la trama
Cómo redactar requisitos
17
Comparativa: Novela vs. Requisito
Intentan contarnos la totalidad de la historia
Sólo nos deben contar parte de la historia
Centrándose en el qué, e incluso, en el por
qué
Nunca debe tratar el cómo
Debe evitarse terminología propia de diseño,
pseudocódigo…
Cómo redactar requisitos
18
Comparativa: Novela vs. Requisito
Suelen jugar con nuestra imaginación:
“…la verdad es que Robert parecía mayor, no
aparentaba los 32 años que tenía.”
“Podía verse el fuego desde la distancia…”
“… triangular, a veces largamente triangular, reticulado,
con largos dientes en el margen y con un tejido grueso
…”
Cómo redactar requisitos
19
Comparativa: Novela vs. Requisito
Suelen jugar con nuestra imaginación
No pueden jugar con nuestra imaginación
Todos los requisitos, además de simples, deben
ser fáciles de medir
Ambigüedad cero, para que todos los
interesados interpretemos cada requisito de una
única forma
Cómo redactar requisitos
20
Comparativa: Novela vs. Requisito
A menudo, pueden hacer referencias a otros textos:
Otros tomos de la novela
Situaciones de otras novelas del autor, o personajes de otras
novelas
Al conocimiento general que se supone a nuestros lectores
…
Cómo redactar requisitos
21
Comparativa: Novela vs. Requisito
A menudo, hacen referencias a otros textos
No deben dar ningún conocimiento por sentado
Deben ser autocontenidos
En el mejor de los casos, acompañados incluso de
glosarios
Cómo redactar requisitos
22
Comparativa: Novela vs. Requisito
Pueden mezclar diferentes hilos de argumento
Cómo redactar requisitos
23
Comparativa: Novela vs. Requisito
Pueden mezclar diferentes hilos de argumento
Cada requisito debe ser atómico
Una única necesidad por requisito
Orden lógico de interpretación
Cómo redactar requisitos
24
Comparativa: Novela vs. Requisito
Se redactan con maravillosos procesadores de
texto
Cómo redactar requisitos
25
Comparativa: Novela vs. Requisito
Se redactan con maravillosos procesadores de
texto
Deben escribirse con herramientas
especializadas en estos fines
Con ello conseguimos:
Identificarlos unívocamente
Atomizarlos
Organizarlos, categorizarlos y relacionarlos
Reutilizarlos por separado o en conjunto
Medir su calidad individual o global
Cómo redactar requisitos
26
Redacción del requisito
• Claridad y ambigüedad:
– ¿Puede medirse de forma clara y no ambigua la claridad y ambigüedad
de un requisito?
– “En casa del herrero… cuchillo de palo”
Cómo redactar requisitos
27
Redacción del requisito
• Emplear la estructura correcta:
Usuario
El operador del Call Center…
Acción
… deberá ser capaz de ver…
Objeto
… detalles de cada compañía contactada…
Cualificador
… en menos de dos segundos.
Cómo redactar requisitos
28
Redacción del requisito
•
Tamaño del requisito:
– El justo, ni muy breve ni muy largo
– Tamaño medido en caracteres, palabras, párrafos
•
Legibilidad:
– La máxima posible
– Procesadores como MS Word miden la legibilidad de los textos
•
Tiempo verbal:
•
Modo verbal:
– Imperativo en lugar de condicional
– Activa en lugar de pasiva
•
Sentencias opcionales y especulativas:
•
Expresiones ambiguas:
– Evitar sentencias del estilo “quizá…” , “posiblemente…”, “usualmente…”, “casi siempre…”
– Evitar expresiones del estilo: “rápido”, “amigable”…
Cómo redactar requisitos
29
Redacción del requisito
•
Sentencias subjetivas:
•
Sentencias implícitas (empleo de pronombres):
– Evitar sentencias del tipo: “yo creo…”, “en mi opinión…”
– Evitar el abuso de los pronombres
– A la hora de la lectura, podríamos dudar en qué nombre sustituye cada nombre
•
Conectores:
– El abuso de conectores puede indicar que se está incluyendo más de una necesidad en el
mismo requisito
– También puede indicar un exceso de detalle
•
Negaciones:
– Más de una palabra negativa en la misma frase podría hacerla difícil de entender
•
Sentencias incompletas:
•
Términos propios de diseño o de flujo:
– Evitar sentencias del tipo “etcétera…”, “…entre otros…”, “…”
– Evitar términos que denotan diseño como por ejemplo “clave ajena”, “tabla hash”…
Cómo redactar requisitos
30
Redacción del requisito
•
Número de términos del dominio:
– Un exceso de términos del dominio puede indicar que se están mezclando diferentes
necesidades en el mismo requisito
– También puede indicar que se está dando un excesivo detalle
•
Número de verbos principales (del dominio):
– Un exceso de verbos del dominio puede indicar que se están mezclando diferentes
necesidades en el mismo requisito
– También puede indicar que se está dando un excesivo detalle
•
Acrónimos y abreviaturas:
– Sólo permitidos si están definidos en alguna sección del documento de requisitos
Cómo redactar requisitos
31
Ejemplo 1
• La información sobre los metadatos de los usuarios debería
almacenarse en memoria dentro de una tabla hash, o bien en
una tabla de base de datos, con una clave ajena a la tabla de
Usuarios
Cómo redactar requisitos
32
Ejemplo 1
• La información sobre los metadatos de los usuarios debería
almacenarse en memoria dentro de una tabla hash, o bien en
una tabla de base de datos, con una clave ajena a la tabla de
Usuarios
– Evite el uso del tiempo condicional
– Sustitúyalo por el imperativo
• La información sobre los metadatos de los usuarios deberá
almacenarse en memoria dentro de una tabla hash, o bien en
una tabla de base de datos, con una clave ajena a la tabla de
Usuarios
Cómo redactar requisitos
33
Ejemplo 1
Cómo redactar requisitos
34
Ejemplo 2
• El administrador deberá ser capaz de insertar, borrar, mostrar y
actualizar la información sobre los usuarios. Opcionalmente,
deberá también ser capaz de generar un informe y enviarlo por
e-mail al cliente
Cómo redactar requisitos
35
Ejemplo 2
• El administrador deberá ser capaz de insertar, borrar, mostrar y
actualizar la información sobre los usuarios. Opcionalmente,
deberá también ser capaz de generar un informe y enviarlo por
e-mail al cliente
– La opcionalidad debe expresarse mediante un atributo, y nunca como
texto dentro del requisito
Cómo redactar requisitos
36
Ejemplo 2
• El administrador deberá ser capaz de insertar, borrar, mostrar y
actualizar la información sobre los usuarios. Opcionalmente, deberá
también ser capaz de generar un informe y enviarlo por e-mail al
cliente
– La opcionalidad debe expresarse mediante un atributo, y nunca como texto
dentro del requisito
– Deberá usar un requisito individual para cada necesidad. Muchos verbos
concentrados en un requisito pueden implicar la mezcla de diferentes
necesidades
•
•
•
•
•
El Administrador deberá ser capaz de añadir usuarios
El Administrador deberá ser capaz de borrar usuarios
El Administrador deberá ser capaz de mostrar usuarios
El Administrador deberá ser capaz de actualizar usuarios
El Administrador podrá generar un informe para enviarlo por e-mail al
cliente
Cómo redactar requisitos
37
Ejemplo 3
• El sistema debe ser capaz de importar ficheros ABC. El proceso
debe ser amigable y rápido para el usuario
Cómo redactar requisitos
38
Ejemplo 3
• El sistema debe ser capaz de importar ficheros ABC. El proceso
debe ser amigable y rápido para el usuario
– Términos como ‘amigable’ y ‘rápido’ son difíciles de medir y, por lo tanto,
imposible de probar de forma correcta
– Utilice unidades físicas para medir cómo de rápido debe rendir un
requisito
– Utilice otros medios (p.e. WAI AA) claramente definidos para indicar cómo
de amigable o accesible debe ser un sistema
Cómo redactar requisitos
39
Ejemplo 3
• El sistema debe ser capaz de importar ficheros ABC. El proceso
debe ser amigable y rápido para el usuario
– Términos como ‘amigable’ y ‘rápido’ son difíciles de medir y, por lo tanto,
imposible de probar de forma correcta
– Utilice unidades físicas para medir cómo de rápido debe rendir un
requisito
– Utilice otros medios (p.e. WAI AA) claramente definidos para indicar cómo
de amigable o accesible debe ser un sistema
– Utilice acrónimos sólo cuando estén comúnmente aceptados por todos los
interesados
Cómo redactar requisitos
40
Ejemplo 4
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema y éste también deberá estar al tanto de facturas
impagas para que puedan generar un mail y enviárselos a ellos
Cómo redactar requisitos
41
Ejemplo 4
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema y éste también deberá estar al tanto de facturas
impagas para que puedan generar un mail y enviárselos a ellos
– El uso apropiado de signos de puntuación hará los requisitos más fáciles
de leer
– El número de sílabas por palabra y palabras por frase es también un buen
indicador de la legibilidad del requisito
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema. Éste también deberá estar al tanto de facturas impagas
para que puedan generar un mail in enviárselos a ellos
Cómo redactar requisitos
42
Ejemplo 4
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema y éste también deberá estar al tanto de facturas
impagas para que puedan generar un mail y enviárselo a ellos
– El exceso de pronombres puede hacer un requisito difícil de entender
– El último ‘ellos’, ¿se refiere al administrador o al cliente?
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema y éste también deberá estar al tanto de facturas
impagas para que puedan generar un mail in enviárselo a los
clientes
Cómo redactar requisitos
43
Ejemplo 4
• El administrador deberá ser capaz de crear facturas asociadas
con las diferentes compañías que estén dadas de alta en el
sistema y éste también deberá estar al tanto de facturas impagas
para que puedan generar un mail y enviárselos a ellos.
El proceso para localizar impagados es el siguiente:
1. Iterar sobre todas las facturas
2. Si Fecha_Factura + CondicionesPago es mayor que la fecha actual,
entonces:
• Si la categoría del cliente es A, entonces se le deja un mes extra
• SI no, mientras la factura no esté pagada no se le permite generar nuevas facturas y se
le enviará un mail cada semana
– Evite el uso de pseudocódigo en sus requisitos
– Los requisitos extensos (en caracteres o párrafos) pueden indicar baja
calidad
Cómo redactar requisitos
44
Ejemplo 5
• Los clientes podrán remitir órdenes por Internet. Estas órdenes
deben incluir fecha de envío y cantidad de artículos.
Una vez que se recibe la orden, el equipo de empaquetado debe
recoger todos los artículos y enviar un mail al cliente.
Deben soportarse los protocolos http y https, así como los
navegadores Explorer y Firefox. La resolución mínima será de
1024x768
Cómo redactar requisitos
45
Ejemplo 5
• Los clientes podrán remitir órdenes por Internet. Estas órdenes
deben incluir fecha de envío y cantidad de artículos.
Una vez que se recibe la orden, el equipo de empaquetado debe
recoger todos los artículos y enviar un mail al cliente.
Deben soportarse los protocolos http y https, así como los
navegadores Explorer y Firefox. La resolución mínima será de
1024x768
– Un exceso de términos diferentes en el mismo requisito puede indicar:
• Que se están mezclando diferentes necesidades en un único requisito
• Que se está proporcionando demasiado detalle
– Igualmente, muchos verbos pueden involucrar diferentes necesidades
mezcladas en un único requisito
Cómo redactar requisitos
46
Ejemplo 6
• En mi opinión, ningún cliente debería poder nunca enviar
órdenes al equipo de empaquetado. Ya lo hicimos así en un
proyecto hace tres años y el resultado fue nefasto
Cómo redactar requisitos
47
Ejemplo 6
• En mi opinión, ningún cliente debería poder nunca enviar
órdenes al equipo de empaquetado. Ya lo hicimos así en un
proyecto hace tres años y el resultado fue nefasto
– No haga explícita su opinión, limítese a escribir lo que el sistema debe
hacer
Cómo redactar requisitos
48
Ejemplo 6
• En mi opinión, ningún cliente debería poder nunca enviar
órdenes al equipo de empaquetado. Ya lo hicimos así en un
proyecto hace tres años y el resultado fue nefasto
– No haga explícita su opinión, limítese a escribir lo que el sistema debe
hacer
– No mezcle demasiados términos negativos, ya que a veces puede
dificultar la lectura del requisito/restricción
Cómo redactar requisitos
49
Ejemplo 6
• En mi opinión, ningún cliente debería poder nunca enviar
órdenes al equipo de empaquetado. Ya lo hicimos así en un
proyecto hace tres años y el resultado fue nefasto
– No haga explícita su opinión, limítese a escribir lo que el sistema debe
hacer
– No mezcle demasiados términos negativos, ya que a veces puede dificultar
la lectura del requisito/restricción
– No divague al redactar el requisito. Limítese a indicar qué es lo que debe
hacer el sistema
• Un cliente no podrá enviar órdenes directamente al equipo de
empaquetado
Cómo redactar requisitos
50
Ejemplo 7
• Generalmente, el sistema debe ser capaz de terminar el proceso
de rastreo sin sobrecargar excesivamente el servidor
Cómo redactar requisitos
51
Ejemplo 7
• Generalmente, el sistema debe ser capaz de terminar el proceso
de rastreo sin sobrecargar excesivamente el servidor
– Evite expresiones vagas como: ‘generalmente’, ‘comúnmente’
Cómo redactar requisitos
52
Ejemplo 7
• Generalmente, el sistema debe ser capaz de terminar el proceso
de rastreo sin sobrecargar excesivamente el servidor
– Evite expresiones vagas como: ‘generalmente’, ‘comúnmente’
– Verifique si cada aserción puede ser medida de forma sencilla
• El sistema debe ser capaz de terminar el proceso de rastreo en
un tiempo inferior a 2 segundos y sin que el proceso sobrepase
los 250 MB de memoria
Cómo redactar requisitos
53
Referencias
• Writing better requirements:
– Ian F. Alexander & Richard Stevens
– Addison-Wesley, 2002
Cómo redactar requisitos
54

Documentos relacionados