Distributed programming falls out of the use of computers to form networks. Distributed programming typically falls into one of several basic categories:
Client-server -- Smart client code contacts the server for data, then formats and displays it to the user. Input at the client is committed back to the server when it represents a permanent change.
3-tier architecture -- Three tier systems move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are 3-Tier.
N-tier architecture -- N-Tier refers typically to web applications which further forward their requests to other enterprise services. This type of application is the one most responsible for the success of application servers.
Remote procedure call -- This distribution system maps function calls to the network.
Loosely coupled -- Loosely coupled systems are ones that communicate through intermediate documents that are typically human readable. Examples include XML, HTML, SGML, X.500, and EDI.
Tightly coupled (clustered) -- refers typically to a set of highly integrated machines that run the same process in parallell, subdividing the task in parts that are made individually by each one, and then put back together to make the final result.
The first reason is that distributed computing environments present new problems caused by asynchrony, independent time bases, and communications delays.
To better understand distributedprograms we have: specified a model for distributed computations, developed a measurement methodology from this model, constructed tools to implement the measurements, and developed data analysis techniques to obtain useful results from the measurements.
The model of distributedprograms defines the two basic actions of a program to be computation and communication.