Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 1 de 12
Enunciado
El objetivo del sistema a desarrollar es la gestión de los albaranes y facturas de proveedores de
material informático del Grupo de Ingeniería del Software y Bases de Datos del Dpto. de
Lenguajes y Sistemas Informáticos de la Universidad de Sevilla. Uno de los procesos de negocio
a los que se debe dar soporte es el siguiente:
1. El profesor encargado de gestionar los pedidos de material informático, después de
comparar varias ofertas de distintos proveedores, decide hacer un pedido a uno de ellos.
Estos pedidos se suelen hacer por correo electrónico y/o por fax.
2. Cuando va llegando el material informático pedido, éste se entrega conjuntamente con un
albarán (ver figura 1) del que el profesor se queda una copia al recibir el material.
3. Una vez que se ha entregado un pedido completo, el proveedor envía una factura en la que
detalla el material por el que se factura y los albaranes correspondientes (ver figura 2 en el
reverso de esta hoja).
4. El profesor comprueba que los datos de la factura son correctos y la envía a la contabilidad
de la Universidad para que se proceda a su pago.
Figura 1: Albarán
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 2 de 12
Figura 2: Factura
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 3 de 12
El sistema a desarrollar debe cumplir los siguientes objetivos de negocio:
OBJ-1: Saber qué material informático se ha recibido y qué proveedor lo ha suministrado.
OBJ-2: Saber de qué material informático recibido se ha recibido o no factura.
OBJ-3: Saber qué facturas han sido procesadas por la contabilidad de la Universidad.
OBJ-4: Evitar que se paguen facturas de material no recibido.
OBJ-5: Mantener una agenda con los datos básicos de cada proveedor.
Ejercicios
Teniendo en cuenta el enunciado anterior y los dos documentos escaneados, elabore los
siguientes productos:
1. Un modelo BPMN del proceso de negocio descrito.
2. Una lista de requisitos de información y de reglas de negocio y una matriz de rastreabilidad
requisitos/objetivos. Para los requisitos, use el siguiente formato simplificado:
RI-<nº>: Información sobre <concepto relevante>
<dato específico 1>
…
<dato específico n>
RN-<nº>: <nombre regla de negocio>
<descripción regla de negocio>
3. Uno o más diagramas con los casos de uso y una matriz de rastreabilidad casos de
uso/objetivos. No es necesario que especifique textualmente los casos de uso.
4. Un modelo estático anotado con restricciones en lenguaje natural y en OCL y una matriz de
trazabilidad elementos del diagrama/requisitos.
5. Una lista de problemas a resolver en los requisitos (si ha identificado alguno).
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 4 de 12
Solución
1. Modelo BPMN
Figura 3: Modelo BPMN
Problemas encontrados:
¿Cómo obtiene el profesor las ofertas? ¿Envía antes los pedidos a los proveedores?
¿Prepara el pedido antes de comparar las ofertas?
¿Puede enviar el proveedor la factura antes de enviar todo el material?
¿Qué ocurre si la factura no coincide con los albaranes?
¿Cómo se sabe cuando se ha procesado la factura por la Universidad? ¿Puede la
contabilidad de la Universidad devolver la factura por algún motivo?
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 5 de 12
2. Requisitos de información y reglas de negocio
RI-01: Información sobre pedidos de material informático
Material informático pedido, indicando descripción y cantidad
Proveedor al que se le envía el pedido
Fecha en la que se envía el pedido
Si el pedido está o no completo, si se ha recibido todo el material pedido.
¿Profesor que realiza el pedido?
RI-02: Información sobre albaranes (entregas de material)
Proveedor que suministra el material y emite el albarán
Material informático entregado, indicando descripción, cantidad, precio y descuento
Fecha de la entrega
Número del albarán asignado por el proveedor que lo emite (ver figura 1)
Pedidos a los que corresponde el albarán
IVA aplicado (se supone el mismo para todo el material de un albarán)
RI-03: Información sobre facturas
Proveedor que emite la factura
Albaranes que se facturan
Fecha de emisión de la factura
Número de factura asignado por el proveedor que la emite (ver figura 2)
Si está procesada por la contabilidad de la Universidad o no
RI-04: Información sobre proveedores
Nombre comercial del proveedor
NIF del proveedor
Domicilio del proveedor
Teléfono y fax del proveedor
e-mail del proveedor
Dirección web del proveedor
RN-01 Proveedor de pedidos y albaranes
Los albaranes que corresponden a un pedido deben haberse emitido por el mismo
proveedor al que se le envió el pedido.
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 6 de 12
RN-02 Proveedor de albaranes y facturas
Los albaranes que se facturan en una factura deben estar emitidos por el mismo
proveedor que la factura.
RN-03 Números de albarán
Los números de albarán emitidos por un proveedor deben ser únicos.
RN-04 Números de factura
Los números de factura emitidos por un proveedor deben ser únicos.
OBJ-1 OBJ-2 OBJ-3 OBJ-4 OBJ-5
RI-01 (Pedidos) ? ?
RI-02 (Albaranes) • • •
RI-03 (Facturas) • • •
RI-04 (Proveedores) • •
RN-01 (Prov. Pedido-Albarán)
RN-02 (Prov. Albarán-Factura) • •
RN-03 (Nº Albarán) • • •
RN-04 (Nº Factura) • • •
Matriz de trazabilidad requisitos de información y reglas de negocio / objetivos
Problemas encontrados:
Quizás sea necesario un objetivo de negocio como “Saber que material se ha pedido,
cuál está pendiente y cuál se ha recibido” o “Evitar recibir y facturar material no
solicitado” para justificar el RI-01. Si no se almacenan los pedidos no se puede saber si el
pedido está completo, si el material que se recibe es correcto, etc.
¿Se desea identificar cada pedido de alguna forma especial? ¿Hace falta algún número
de pedido? ¿Es necesario saber qué profesor realiza cada pedido?
¿Qué información es necesaria para que el profesor pueda comparar ofertas? ¿Publican
los proveedores los precios de sus productos en sus páginas web? ¿los publican de otra
forma?
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 7 de 12
3. Diagramas de casos de uso
Figura 4: Diagrama de casos de uso para la gestión de albaranes y facturas
Figura 5: Diagrama de casos de uso para la gestión de la agenda de proveedores
uc Gestión de albaranes y fac turas
Gestión de albaranes y fac turas
Profesor
¿Comparar ofertas?
Preparar pedido
Procesar albarán
Procesar factura
Consultar facturas
Consultar material
¿Consultar pedidos?
uc Gestión de agenda de proveedores
Gestión de agenda de proveedores
ProfesorConsultar agenda
proveedores
Actualizar agenda
proveedores
Proveedor
¿permiti r?
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 8 de 12
OBJ-1 OBJ-2 OBJ-3 OBJ-4 OBJ-5
¿Comparar ofertas? ?
Preparar pedido • •
Procesar albarán
Procesar factura • •
Actualizar agenda de proveedores •
Consultar agenda de proveedores •
Consultar facturas • • •
¿Consultar pedidos? ? ?
Consultar material • • •
Matriz de trazabilidad casos de uso / objetivos
Problemas encontrados:
Hasta que no se aclare cómo se comparan las ofertas, el caso de uso Comparar Ofertas
es provisional. Ocurre lo mismo para Consultar Pedidos.
Quizás falta un objetivo de negocio como “Obtener la mejor relación calidad/precio en los
pedidos” para justificar el caso de uso Comparar Ofertas, de lo contrario ¿por qué es
necesario comparar ofertas?
¿Pueden los proveedores actualizar la información referida a ellos mismos?
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 9 de 12
4. Modelo estático
Figura 6: Diagrama de clases para pedidos y proveedores
Figura 7: Diagrama de clases para albaranes y facturas
c lass Pedidos
Pedido
fecha/estáCompleto
Profesor
?
Proveedor
nifnombredomicilioteléfonofaxemailweb
Material informático
descripción
LíneaPedido
cantidad
{PedidoYAlbaránMismoProveedor: los albaranes correspondientes a un pedido deben estar generados por el mismo proveedor al que se le envía el pedido.}
Albarán
*
enviadoA
1
*
material 1..*
1
realiza
*
1
genera
*0..*
correspondeA
1..*
c lass Facturas y albaranes
Albarán
númerofechaIVA
Factura
númerofechaestáProcesada
Material informático
descripción
Proveedor
LíneaAlbarán
cantidadpreciodescuento
{AlbaránYFac turaMismoProveedor : los albaranes facturados en una factura deben haber sido generados por el mismo proveedor que genera la factura.}
{NúmeroAlbaránÚnicoPorProveedor: los números de albarán de un mismo proveedor no pueden repetirse.}
{NúmeroFac turaÚnicoPorProveedor: los números de factura de un mismo proveedor no pueden repetirse.}
Pedido
1
genera
*
1
emite
*
0..1
correspondeA
1..*
material 1..*
*
0..*
correspondeA
1..*
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 10 de 12
Problemas encontrados:
¿Cuándo se considera que un pedido está completo? ¿Puede calcularse
automáticamente?
¿Qué relación debe haber entre el material que se pide en un pedido y el que se entrega
en sus albaranes asociados? ¿Debe ser exactamente el mismo?
RI-
01
(Ped
idos)
RI-
02
(A
lbara
nes)
RI-
03
(Factu
ras)
RI-
04
(Pro
veed
ore
s)
RN
-01
(Pro
v. Pedid
o-A
lb.)
RN
-02
(Pro
v. A
lb.-
Fact.
)
RN
-03
(N
º A
lbará
n)
RN
-04
(N
º Factu
ra)
C Pedido • •
C Profesor •
CA LíneaPedido •
A realiza( Profesor, Pedido ) •
A correspondeA( Albarán, Pedido ) • •
A enviadoA( Pedido, Proveedor ) • • •
C Albarán • • • • •
CA LíneaAlbarán •
C Material informático • •
C Factura • • •
C Proveedor • • • • •
A correspondeA( Factura, Albarán ) • •
A genera( Proveedor, Albarán ) • • •
A emite( Proveedor, Factura ) • •
R PedidoYAlbaránMismoProveedor • •
R AlbaránYFacturaMismoProveedor • • •
R NúmeroAlbaránÚnicoPorProveedor • • •
R NúmeroFacturaÚnicoPorProveedor • • •
Matriz de trazabilidad elementos del modelo estático / requisitos
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 11 de 12
Restricciones en OCL
context Albarán inv PedidoYAlbaránMismoProveedor:
self.pedido->forAll( p | p.proveedor = self.proveedor )
context Factura inv AlbaránYFacturaMismoProveedor:
self.albarán->forAll( a | a.proveedor = self.proveedor )
context Proveedor inv NúmeroAlbaránÚnicoPorProveedor:
self.albarán->isUnique( número )
context Proveedor inv NúmeroFacturaÚnicoPorProveedor:
self.factura->isUnique( número )
Si se quisiera calcular si un pedido está completo, la expresión es bastante compleja si no se
crean operaciones de consulta auxiliares en Pedido y Albarán:
context Pedido::estáCompleto : Boolean
derive:
self.líneaPedido.material->asSet()->forAll( mp |
( self.albarán.lineaAlbarán->select( material = mp ) ).cantidad->sum() ) >=
( self.líneaPedido->select( material = mp ) ).cantidad->sum()
Con operaciones auxiliares:
context Pedido::cantidadDeMaterialPedida( m : Material ) : Integer
body: ( self.líneaPedido->select( material = m ) ).cantidad->sum()
context Pedido::cantidadDeMaterialEntregada( m : Material ) : Integer
body: ( self.albarán.líneaAlbarán->select( material = m ) ).cantidad->sum()
context Pedido::estáCompleto : Boolean
derive:
self.líneaPedido.material->asSet()->forAll( mp |
self.cantidadMaterialEntregada( mp ) >= self.cantidadDeMaterialPedida( mp )
)
Ingeniería de Requisitos
Ejercicio: Albaranes y Facturas
noviembre 2012
Página 12 de 12
Como ejercicio complementario, se podría especificar cómo calcular el total de un albarán y una
factura como atributos derivados:
context Albarán::total : Real
derive:
let totalBruto : Real =
self.líneaAlbarán->collect( cantidad * precio * ( 100 – descuento ) )->sum() in
totalBruto * ( 100 + IVA )
context Factura::total : Real
derive: self.albarán.total->sum()
Top Related