Friday, April 1, 2011
Transportation service compared to SOA service (over)specialization
Sometimes service over-specialization can truly hinder reuse in a sense that multiple implementations of similar logic are necessary to achieve the same functional goal for another purpose (agnostic).
I live in the Netherlands where recently an electronic public transportation ticket system was introduced to manage travel tickets electronically. A chip card with NFC is used to 'carry' digital tickets while travelling. You could see the travel pass as a digital purse in which you can keep single/return trips, monthly and yearly subscriptions as well as some money to use while travelling.
Now I'm new to this system and finally I decided to try the 'ticket recharged' way of travelling: the public transportation chip card instead of a paper ticket.
In order to be able to travel, I need to meet a number of preconditions:
1. I need a (personalized) travel card - this is the actual chip card with NFC communications
2. I need to put money on it
3. I need to activate "travel" on it with the appropriate transportation company.
Ad 1): I already had the card a little while, so I did not need to worry about it: precondition 1 is met.
Ad 2): For charging the card with money intended for travelling, a two-step approach must be followed:
a. Purchase travel credit - this would perform a direct debit on my bank account
b. Load the credit product onto the card
Ad 3): Similar two-step approach:
a. Order the "travel by virtual travel money" product with the dutch railway company
b. Load the product onto the card that allows using the credit on the card if available
Step 2a can be done via the public transportation chip card web site
Step 3a can be done via the dutch railways web site
So now I needed to find an NFC charging point so I found one of the terminals for public transportation at the train station.
Now here's the problem:
The machine to load products onto the card would only allow me to find the pending product for step 3a. This means I can load the product to spend the virtual money with, but I cannot find the product that represents the virtual money I had ordered to spend in the first place.........?
So the "Load product" service on the terminal was only able to load travel products but no credit products. What was wrong with building a load "product"???
I ended up finding another machine outside the railway station to load the money product onto the chip card...
So I had to load products in two physically separate (and distant!) places...
Typical example of a non-agnostic service... :(