I know this has been beaten to death in some circles (521,000 results in Google, 2,551 results in Google's blog search), but it bears repeating until people start paying it some attention. Separation of Concerns is the concept that software areas exist with as little overlap as possible. The existence of distinct logical layers within your code is an example of the start of creating good separation of concerns. A layer exist for the UI, another layer exists for Data Access, and on and on. Each layer is concerned with one aspect of the application. Today I saw the...