Está en la página 1de 3

Especificación aerolínea ARCOIRIS

Invariante de datos

1) Un terminal está abierto o cerrado


𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠∩𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑜𝑠=∅
2) Un terminal está ocupado o disponible
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠∩𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑜𝑠=∅
3) El número de terminales abiertos y cerrados serán el total de terminales
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠∪𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑜𝑠=𝑀𝑎𝑥𝑃𝑢𝑒𝑠𝑡𝑜𝑠
4) El número de terminales disponibles y ocupados serán el total de terminales
abiertos
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠∪𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑜𝑠=𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠

Estados

TerminalesAbiertos: conjunto de terminales abiertos para facturación.


𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠: ℙ 𝑀𝑎𝑥𝑃𝑢𝑒𝑠𝑡𝑜𝑠
TerminalesCerrados: conjunto de terminales cerrados
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑜𝑠: ℙ 𝑀𝑎𝑥𝑃𝑢𝑒𝑠𝑡𝑜𝑠
TerminalesDisponibles: conjunto de terminales abiertos sin cliente facturando (ordenados
según dejaron de ser ocupados o cerrados)
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠: 𝑠𝑒𝑞 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠
TerminalesOcupados: conjunto de terminales en los que hay un viajero facturando
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑜𝑠: ℙ 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑜𝑠
ColaViajeros: conjunto de viajeros que están esperando para facturar (ordenados por orden
de llegada a la cola)
𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠: 𝑠𝑒𝑞 𝐶𝑙𝑖𝑒𝑛𝑡𝑒𝑠𝐴𝑅𝐶𝑂𝐼𝑅𝐼𝑆

Operaciones

AbrirTerminal (T) → abre una terminal cerrada (T)


Precondición
- Haya al menos una terminal cerrada
#𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑎𝑠 > 0
- El número de viajeros sea mayor a ocho veces el número de terminales abiertas
#𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠 > 8 ∗ #𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠
Postcondición
- La terminal T pasa de estar cerrada a estar abierta y disponible
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑎𝑠 ∖ {𝑇}
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠 ∪ {𝑇}
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ^ < 𝑇 >
CerrarTerminal (T) → cierra la última terminal disponible (T)
Precondición
- Haya al menos una terminal disponible
#𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 > 0
- El número de viajeros sea menor a cuatro veces el número de terminales
abiertas
#𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠 < 4 ∗ #𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠
- La terminal que se cierra es la última disponible
𝑇 = 𝑢𝑙𝑡𝑖𝑚𝑜 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠
Postcondición
- La terminal pasa de estar abierta y disponible a estar cerrada
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐶𝑒𝑟𝑟𝑎𝑑𝑎𝑠 ∪ {𝑇}
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐴𝑏𝑖𝑒𝑟𝑡𝑎𝑠 ∖ {𝑇}
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ′ = 𝑓𝑟𝑒𝑛𝑡𝑒 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠

IniciarFacturación (T, V) → asigna el primer viajero (V) de la cola de viajeros a la primera


terminal de facturación (T) disponible
Precondición
- Haya al menos una terminal disponible
#𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠>0
- Haya al menos un viajero en la cola
#𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠>0
- La terminal que se ocupa es la primera de la secuencia
𝑇=𝑐𝑎𝑏𝑒𝑧𝑎 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠
- El viajero que se asigna es el primero de la cola
𝑉 = 𝑐𝑎𝑏𝑒𝑧𝑎 𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠
Postcondición
- El viajero deja de estar en la cola
𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠 ′ = 𝑐𝑜𝑙𝑎 𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠
- La terminal pasa de ser la primera disponible a estar ocupada
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ′ = 𝑐𝑜𝑙𝑎 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑎𝑠 ∪ {𝑇}
TerminarFacturación (T) → la terminal de facturación ocupada (T) se va al final de la lista
de terminales disponibles
Precondición
- Hay al menos una terminal ocupada
#𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑎𝑠 > 0
Postcondición
- La terminal pasa de estar ocupada a ser la última disponible
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ^ < 𝑇 >
𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑎𝑠 ′ = 𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙𝑒𝑠𝑂𝑐𝑢𝑝𝑎𝑑𝑎𝑠 ∖ {𝑇}
AñadirViajero (V) → se añade un viajero (V) a la cola
Precondición
Postcondición
- Se añade el viajero al final de la cola

𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠 ′ = 𝐶𝑜𝑙𝑎𝑉𝑖𝑎𝑗𝑒𝑟𝑜𝑠 ^ < 𝑉 >

También podría gustarte