A model of client server computing where much of the functionality of a system resides in a software layer which is interposed between the software found on the client (the first layer) and the software found on the server (the second layer). An example of this type of model is a database application which responds to queries entered by staff who use client computers. The middle tier would be sent different messages by the client depending on the functionality required. It would then decode these messages and ask software which resided on the server to satisfy the request. The data that satisfied the request would then be sent back through this layer to the clients. Because much of the functionality of the application lies in the middle tier, changes to the system can be achieved quickly and efficiently. For example, a change to the database software on the server only requires small changes to the software in the middle tier that communicated the clients' intentions. Systems built using the three-tier model are more robust and extensible than those built using a two-tier model.