In order to exchange coins, both party send their coins to the software and once the software verifies both party completed their part, the software will exchange the coins else it will resend the coins to the original sender.
Ripple+Dividendrippler are a "working example" of this, but you still have to trust two counterparties (one for a prolonged time),
pay 3 fees, and there is not much liquidity even for BTC<->LTC.
If the automated crypto currency exchange
has to require trust (once we admit this it becomes technically simple)
then the "software" should be an extension of the qt-client, so that everyone can set up an exchange and compete with other nodes
(for trust and fees).