A Distributed Software Architecture for GPS-Driven Mobile Applications