Ejercicio: Albaranes y Facturas - us

12
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

Transcript of Ejercicio: Albaranes y Facturas - us

Page 1: Ejercicio: Albaranes y Facturas - us

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

Page 2: Ejercicio: Albaranes y Facturas - us

Ingeniería de Requisitos

Ejercicio: Albaranes y Facturas

noviembre 2012

Página 2 de 12

Figura 2: Factura

Page 3: Ejercicio: Albaranes y Facturas - us

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).

Page 4: Ejercicio: Albaranes y Facturas - us

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?

Page 5: Ejercicio: Albaranes y Facturas - us

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.

Page 6: Ejercicio: Albaranes y Facturas - us

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?

Page 7: Ejercicio: Albaranes y Facturas - us

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?

Page 8: Ejercicio: Albaranes y Facturas - us

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?

Page 9: Ejercicio: Albaranes y Facturas - us

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..*

Page 10: Ejercicio: Albaranes y Facturas - us

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

Page 11: Ejercicio: Albaranes y Facturas - us

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 )

)

Page 12: Ejercicio: Albaranes y Facturas - us

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()