3. ¿Qué necesito saber / definir sobre un
sistema?
Los objetivos de negocios que se desean satisfacer con el
sistema (esto viene del modelo de negocio del cliente)
La visión general del sistema
¿Usted qué cree?
El propósito del sistema
¿Para qué lo necesito?
Los objetivos del proyecto
(y como mido si se cumplieron o no)
Los involucrados
Fundamentado en base a la plantilla Volere, edición 14, Enero 2009 3
4. ¿Qué necesito saber / definir sobre un
sistema?
Restricciones impuestas (por el cliente o el entorno)
Otros hechos relevantes
El alcance del proyecto
El alcance del producto
Los requisitos (evidente)
Y los hay de muchos tipos (ver la plantilla Volere)
Fundamentado en base a la plantilla Volere, edición 14, Enero 2009 4
5. ¿Qué necesito saber / definir sobre un
sistema?
Otros aspectos
Soluciones ya existentes
Riesgos (Ojo, algunos tratan la “gestión de riesgos como algo
completamente aparte y distinto)
Costos estimados (Valoración inicial)
Ideas de posibles soluciones
Fundamentado en base a la plantilla Volere, edición 14, Enero 2009 5
7. ¿Cómo se definen los requerimientos?
Descripciones en Lenguaje Natural
Usted tiene que desarrollar un sistema de software para la “Policía del Estado Mérida”.
Entre los requerimientos, hay un proceso que consiste en la gestión de las armas y
municiones de la armería de la policía. El proceso contempla la entrega de armas a los
agentes policiales, la devolución de las armas al parque, las pruebas y validaciones de ley
que se realizan a las armas después de la entrega y finalmente, cualquier proceso de
investigación posterior en caso de que el armamento haya sido disparado.
Después de conversar con el comisario sobre el funcionamiento del proceso en discusión, se
puede resumir la conversación de la siguiente forma:
Es necesario un proceso que sirva para gestionar la entrega de armamento del parque de
armas a los “Agentes Policiales”. En general, los Agentes se presentan al “Encargado del
Parque de Armas” y solicitan cierto armamento. El Encargado del Parque busca el
armamento solicitado en el inventario y si éste se encuentra disponible se lo entrega al
Agente. Si el armamento no se encuentra disponible el proceso termina. La entrega ocurre
sólo luego de que el Agente llene y firme una “Planilla de Retiro de Armamento”. La
planilla tiene información sobre la fecha en que se entrega el arma al Agente, el serial del
arma y la cantidad y tipo de munición entregada. Luego de llenar la planilla, el Encargado
entrega el arma y las municiones al Agente, quien debe revisarlas y poner en la planilla
cualquier observación o desacuerdo que corresponda al estado de las mismas en caso de ser
necesario.
7
8. ¿Cómo se definen los requerimientos?
Listas de “Features” (Características)
8
9. ¿Cómo se definen los requerimientos?
Listas de “Features” (Características)
9
10. ¿Cómo se definen los requerimientos?
Listas de “Features” (Características)
10
11. ¿Cómo se definen los requerimientos?
Listas de “Features” (Características)
Discusión
¿qué ventajas / desventajas tendrán las listas
de “features” sobre las descripciones textuales
en “lenguaje natural”?
¿será suficiente una lista de “features” para
especificar un sistema?
11
12. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
12
Tomado de la plantilla Volere, edición 14, Enero 2009
13. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
# de 045 Tipo de Funcional Caso de 054
Requisito: Requisito: Uso / Evento
Relacionado:
Descripción: Los usuarios deben poder intercambiar mensajes y comunicarse por
medio del foro, toda la comunicación debe estar moderada para
evitar conductas inapropiadas por parte de los usuarios, mensajes
basura y publicidad no deseada.
Justificación: Esta es la razón de ser del sistema, el objetivo principal de un foro
WEB es permitir intercambiar mensajes entre usuarios.
Origen Pedro Moreno
(Interesado):
Criterio de El usuario debe poder publicar un mensaje.
Aceptación / El mensaje no debe aparecer hasta que un moderador lo acepte.
Validación: Si un moderador acepta el mensaje entonces éste aparece publicado.
Si un moderador rechaza el mensaje entonces éste no es publicado.
Nivel de 5 Nivel de 5
satisfacción del insatisfacción del
Interesado: Interesado:
Prioridad: 5 Requisitos en 055, 034, 040
Conflicto:
Material de
Soporte:
Última Modificado 15/08/2009 – Gloria Linares
Modificación: Creado 12/02/2009 – Luis Gutierrez
13
Ejemplo de un requisito del foro WEB
14. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
Planilla VOLERE para Documentación de Requisitos
Identificador del Requisito: 45 Tipo de Requisito: Funcional Caso de Uso/Evento: 4.2.1
Descripción:
Calcular el promedio diario, mensual y anual de precipitación en cada una de las estaciones climatológicas
del país
Justificación del requisito
Es necesario para elaborar los reportes diarios, mensuales y anuales de precipitación.
Fuente (que interesado lo propone): Unidad en la que se origina:
Juan Peña División de Climatología
Criterios de validación:
Los valores obtenidos se compararán con los obtenidos en años pasados para determinar si hay
inconsistencias.
Grado de satisfacción del interesado: 3 Grado de insatisfacción del interesado: 5
Dependencias (qué requisitos depende de este):35, 48 Conflictos (qué requisitos son incompatibles o
inconsistentes con este):
Documentos de soporte: Manual de Precipitación Histórico de cambios: 20-Mayo-2006
Proyecto: Sistema de Información Climatológica Analista: Julia Monsalve
Tomado del Taller de Ingeniería de Requisitos V 4.06, Ceisoft, Marzo 2006 14
Ejemplo con algunas modificaciones de la plantilla Volere
15. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
Recuerde siempre, que los requerimientos se
pueden “priorizar”, es decir, algunos requerimientos
siempre serán mas importantes para el cliente o más
críticos para el negocio que otros
En función de estas prioridades se puede decidir
cuales requerimientos entregar, cuales no y así jugar
con los costos y los tiempos de desarrollo (afectando
lo menos posible la satisfacción del cliente / usuario)
15
16. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
Cuadro Resumen de Requerimientos
(índice, importante) 16
17. ¿Cómo se definen los requerimientos?
Plantillas para Definir Requerimientos
Plantillas Volere*
http://www.volere.co.uk/
MeRinde**
http://merinde.rinde.gob.ve/
IEEE Std 830-1993
http://standards.ieee.org/reading/ieee/std_public/description/se/830-1993_desc.html
¿Otras? Sin duda alguna...
*Gracias a James Robertson de Atlantic System Guild por facilitame una copia
gratuita de las plantillas para uso académico
**MeRinde es más que un grupo de plantillas de apoyo, es una metodología de 17
desarrollo de software basada en el Proceso Unificado (UP)
18. Historias de Usuarios
(Modelos ágiles – XP, SCRUM)
Una historia de usuario es una narración que describe una
funcionalidad del sistema que tiene valor para un usuario
Se recogen en unas sencillas tarjetas de forma
esquemática y en un lenguaje claro y preciso
Aprobación de nuevos usuarios
¿quién? Yo como administrador del foro
quisiera poder aceptar o rechazar los
nuevos usuarios registrados para así ¿qué?
poder evitar que el foro se llene de
¿por qué? spammers
19. Historias de Usuarios
(Modelos ágiles – XP, SCRUM)
Aprobación de nuevos usuarios
Yo como administrador del foro
quisiera poder aceptar o rechazar los
nuevos usuarios registrados para así
poder evitar que el foro se llene de
spammers
Las historias de usuario sirven de “recordatorio” de la
funcionalidad que es necesario implementar en el
sistema
Antes de implementar una funcionalidad en particular se
produce una discusión con el usuario, se refina y
extiende la información de la historia de usuario
20. ¿Cómo se definen los requerimientos?
Lenguajes / Notaciones Gráficas
Límites del
Sistema
Generalización /
Caso de Uso Especialización
de Actores
Asociación
Caso de
Uso / Actor
Colaboración Actor
entre casos 20
de uso
21. Lenguajes / Notaciones Gráficas...
... y su respectiva descripción textual
Nombre: Crear mensaje foro
Autor: Pedro Pérez
Fecha: 21/04/09
Descripción:
Permite crear un nuevo mensaje (hilo) en el foro de discusión.
Actores:
Usuario / Moderador
Precondiciones:
El usuario debe de estar autenticado en el sistema.
Flujo Normal:
1.- El actor pulsa sobre el botón para crear un nuevo mensaje.
2.- El sistema muestra una caja de texto para introducir el título del mensaje y una zona de
mayor tamaño para introducir el cuerpo del mensaje.
3.- El actor introduce el título del mensaje y el cuerpo del mismo.
4.- El sistema comprueba la validez de los datos y los almacena.
5.- El moderador recibe una notificación de que hay un nuevo mensaje.
6.- El moderador acepta y el sistema publica el mensaje si éste fue aceptado por el moderador.
Flujo Alternativo:
4.A.- El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al
actor de ello permitiéndole que los corrija.
6.B.- El moderador rechaza el mensaje, de modo que no es publicado sino devuelto al usuario.
Poscondiciones:
El mensaje ha sido almacenado en el sistema y fue publicado. 21
22. ¿Cómo se definen los requerimientos?
Listas de “Features” (Características)
Discusión
¿Cual es la diferencia entre la plantilla anterior
(Caso de Uso), una Historia de Usuario y la
ficha Volere para definir requerimientos?
(Ademas de las diferencias evidentes
de formato y campos)
22
23. ¿Cómo se definen los requerimientos?
Lenguajes Formales
Ejemplo de “Notación Z”
No cuenten conmigo... (opinión personal) 23
24. ¿Cómo se definen los requerimientos?
Requisitos Definidos por Pruebas (TDD)
@Test
public void celula_central_muere_de_soledad_con_0_vecinos() {
curr = aMap(). //
with("...").//
with(".O.").//
with("...").build();
Conway c = new Conway(stringToMap(curr));
assertTrue(c.liveToDie(2, 2));
}
@Test
public void celula_central_muere_de_asinamiento_con_4_vecinos() {
curr = aMap(). //
with("O..").//
with(".OO").// Estas pruebas validan
with("OO.").build();
un comportamiento,
Conway c = new Conway(stringToMap(curr));
assertTrue(c.liveToDie(2, 2)); pero en cierto sentido,
} también especifican un
@Test
comportamiento, sobre
public void celula_central_no_muere_con_2_vecinos() { todo si se escriben
curr = aMap(). // antes de escribir el
with("...").// código que implementa
with(".OO").// la funcionalidad
with("..O").build();
Conway c = new Conway(stringToMap(curr)); validada
assertFalse(c.liveToDie(2, 2));
} 24
27. Gestión de Requerimientos
¿qué usuario definió qué
requerimiento?
¿qué requerimientos satisfacen qué
objetivos de negocio?
¿qué requerimiento afecta a qué otro
requerimiento?
¿dónde están diseñados e
implementados los requerimientos?
27
28. Gestión de Requerimientos
¿qué sucede si un usuario quiere
cambiar un requerimiento?
¿cómo se manejan los cambios, cuál es
el proceso para manejar los cambios?
...etcétera
28
29. Gestión de Requerimientos
Objetivos
del Negocio
(O1, O2,
O3...) X1
CU1
X2
R1 CU2
X3
R2 CU3 X4 ...
X5 ¿Será
R3 CU4
importante
también tener
X6
trazas
CU5 con los
X7 desarrolladores?
¿Por qué?
Diseño,
Componentes
Interesados Requisitos Casos de Uso 29
Implementación,
Pruebas
30. Gestión de Requerimientos
Ejemplo de una matriz de rastreo
R1 R2 R3 R4 R5 ... Rn
R1 X
R2 X X
R3 X X Requerimientos
R4 X X con
R5 X X
Requerimientos
(Dependencias /
... Conflictos)
Rn X X X
U1 U2 U3 U4 U5 ... Un
R1 X
R2 X X X
R3 X X
Requerimientos R4 X X
R5 X X X
con
Interesados
...
Rn X X X 30
31. Gestión de Requerimientos
Requerimientos con Casos de Uso
Requerimientos con Objetivos de Negocio
Casos de uso con “artefactos” u otros
componentes en diseño ...
(Gestión de Configuración)
Cualquier otra cosa en la que sea necesario
tener trazas o poder rastrear
¿qué va con qué? ¿qué me influencia a qué?
31
32. Herramientas para hacer
Gestión de Requerimientos*
DOORS (IBM / Rational) (Propietario)
http://www-01.ibm.com/software/awdtools/doors/productline/
CaliberRM (Borland) (Propietario)
http://www.borland.com/us/products/caliber/index.html
IRQA (Visure) (Propietario)
http://www.visuresolutions.com/
*Requirements Management 32
33. Herramientas para hacer
Gestión de Requerimientos*
RMTOO (Flonatel GmbH & Co. KG.) (Libre)
http://www.flonatel.de/projekte/rmtoo/
aNimble (Libre)
http://sourceforge.net/projects/nimble
¡Si alguien consigue otra buena herramienta en
software libre me avisa!
*Requirements Management 33
34. Calidad de los Requisitos
¿cómo sé que tengo
requisitos de calidad?
34
35. ¿Cómo sé que tengo requisitos de calidad?
Los requisitos se expresan de una manera sencilla,
clara y sin ambigüedades
Se expresan de manera cuantitativa (Los NF)
(No diga que algo debe ser rápido; mejor diga qué
tan rápido debe ser)
Cada requisito debe identificarse de manera única
e inequívoca (Uso de un sistema de numeración)
Deben ser correctos y validados por el cliente
(muy importante)
35
36. ¿Cómo sé que tengo requisitos de calidad?
Deben ser consistentes entre sí
(No debe haber conflictos o
incompatibilidad entre requisitos)
Deben ser completos (deben describir todos los
estados, entidades, entradas y salidas posibles)
¿cómo sé que son completos?
Deben ser realistas o alcanzables
(Soñar no cuesta nada... ¡pero hacer realidad los
sueños puede llegar a salir muy caro!)
36
37. ¿Cómo sé que tengo requisitos de calidad?
Deben describir algo que cliente o usuario necesita
( resuelven los problemas del cliente
¿que sentido tiene si no lo hace? )
Deben ser verificables
(medibles y sin ambigüedad, ¿se implementó o no?)
Se les debe poder puede hacer un seguimiento
(Deben estar organizados)
Deben estar redactados en un lenguaje correcto,
simple, sencillo y contundente
(no está escribiendo una novela o un poema)
37