Today the best-designed systems tend to separate the information system into layers that handle the data, process and interface building blocks in a way that allows them to communicate across the network. The goal of this clean layering approach is to allow any one building block to be replaced with another while having little or no impact on other building blocks.