Karachi   ->   Sweden   ->   Karachi, again   ->   Dubai   ->   Bahrain   ->   Karachi, once more   ->   London and Leeds

Sunday, August 20, 2006

Development Environments for ATMs

From the last two posts, some of my friends have concluded that something is terribly wrong with me. To clear out a few misconceptions, this post is slightly off-topic: it's a technical post! By the way, if the following doesn't make any sense to you, move on to an article on ATMs at Wikipedia.

After a trip to Doha, I am once again in Karachi to attend a CEN/ XFS training. XFS (eXtensions for Financial Services) is a standard from CEN for interfacing with various devices of a self-service terminal (mostly Automated Teller Machines aka ATMs) running Windows. The old name of the same standard is WOSA/XFS (Windows Open Systems Architecture). The nice thing is that the API is vendor independent, which means that the same application with virtually no modification would run on Diebold, Wincor and NCR ATMs. As most APIs, it supports C language only and there must be various wrappers available. One of them is ActiveXFS---a COM based layer on top of XFS. If you are a Java guy, there is J/XFS for you.

Both J/XFS and ActiveXFS are asynchronous in nature. Almost every other method fires an event on completion. Developing an application using XFS is lots of work---it requires taking care of everything from activating different sensors to handling timeout scenarios. With a high-level wrapper, programming the machine becomes much simpler but the level of detail you need to handle remains the same.

There is an alternative NCR way of developing software for ATMs, i.e., APTRA ADE (Author Development Environment). Development in ADE is done in a graphical environment: you draw a flow using "workers" and link them using "signals." For example, there is a worker called "Card Acceptor" which enables the card reader device on the ATM. This worker has a signal called "Successful" which is fired when a card is inserted. Of course, with ADE as well, you have to take care of all the exceptional scenarios but the nice thing is that a "seed application" is available from NCR. It's possilbe to enhance/ customize this seed application.

With release 3.0 and above, ADE compiles to XFS, which in turn talks to device drivers. This means that applications developed in ADE should run on other vendors ATM's and devices.

There is Agilis from Diebold and ProClassic from Wincor.



It's my third trip to Karachi this year. The most attractive thing about getting a job in Dubai was the closeness to Karachi. It's just a 1.5 hours flight. It's strange how the city appears to me on every trip. This time the rain reminded me of 2003 when the whole city became a distributed network of swimming pools.