Software agent has become a research focus in distributed systems in recent years. This thesis aims at developing a methodology that facilitates the design and implementation of distributed agent applications. We propose an agent programming model called TSAM, which is a development framework for building distributed agent systems. TSAM provides an agent architecture that distinguishes three types of agent behaviors as (i) sensory behaviors, (ii) reactive behaviors, and (iii) proactive behaviors. Role models are used to design different proactive behaviors assigned to an agent. TSAM supports agent couplings with both message passing and distributed tuple spaces. A tuple space facilitates dynamic coordination among a group of agents that work together towards a common goal. We apply TSAM to an example of an e-market system to validate its usefulness, simplicity and support for dynamic couplings among application agents. Performance testing is conducted on the implemented system to demonstrate that the flexibility of tuple space based coordination does not incur significant runtime overhead when compared with message passing.