OK, that’s all very general but here’s my attempt to lay down some rules that should apply if a system is to be described as N-Tier;

Each layer must be able to exist of a physically independent system. It is not a requirement that each layer should exist on a separate system but rather by making is possible that a layer can be distributed elsewhere, the architecture as a whole is completely scalable.

Each layer should exchange information only with the layers above and below it. For example, the presentation logic tier must not exchange information directly with the data access tier but instead with the business tier.

Each layer should be interchangeable. This results in some further rules;

Each layer should have a clearly defined data interface (API: application program interface).

Layers should expect nothing of other layers except that they use the defined APIs to exchange data.

The data access tier, for example, should not expect a particular database, such as Oracle, to reside below it. In other words it should be possible to replace Oracle with an alternative database without any impact on the data access tier (or any tiers above it).