written by owen on 2007-Apr-23.
In this day and age of highly complex business applications, which encompass a wide array of solutions to real world problems, it is essential to note the importance of application logic. Application logic or The System Layer is the track on which the business logic of any system must be built so that it travels at a constant, steady and predictable pace. Applications built on business logic are roll-a-coasters of terror. It is often easy for a software developer to take the "customer is always right" approach to programming software. And in so doing build applications that are based entirely on the business logic of the client. This is a common pitfall which although creates wonderful entity relationship diagrams requires an extensive knowledge of the client business logic to maintain, upgrade and optimize. You end up in a situation where the application becomes a exquisite dish that must be prepared by a Tibetan monk.
In a client environment where business logic is often mapped to physical tasks that can range from a very simple process to a complex maze of activities, sustainable applications need to be built on a simple, predictable backbone aka a System Layer. The system layer is akin to how a computer works with 1s and 0s or in genetics with DNA. If you want to build an application you are essentially putting together some 1s and 0s. You use 1s and 0s because its a standard, easy to use and relatively simple setup that the computer and other people already understand. 1s and 0s are a part of what I refer to as "the system layer" - the basic rules on which software is built. The system layer aims to provide a layer of simplicity to an otherwise complex application. Keep the application simple at its base and complex in specific branches.
Maybe I am being a bit extreme when I chose to use 1s and 0s as an example. Say for instance a file in an operating system. A file at its basic level has no business logic - it can be anything at anytime and the operating system would not careless. This "carefree" attitude is why operating systems are the most widely used type of software. In operating systems "business logic" is often implemented at the GUI level. The act of forcing users to create files that consist of names and extensions is enforced In the "file-browser" but never are the core level. Operating systems provide a system layer in which your application can operate efficiently - you are a "client" of the operating system. The operating system can maintain its efficiency by maintaining a stable System Layer. Building an application on business logic is like building the whole operating system again, but your files are not just files - they are whatever the business logic dictates. This creates a situation in which a rabbit is never really a rabbit unless you know that it is a rabbit. And in most cases the people who "know" and the people who "want to know" aren't the same people - in said scenario a rabbit might swim or fly depending on a status, type table, or season.
Application Logic or A System Layer aims to improve stability, predictability, extensibility and maintainability of software application by creating a simple set of fundamental rules upon which business logic is implemented. All Files have a name, meta data and content. RABBITS DONOT FLY UNLESS TOLD TO FLY. Developing a system layer does require research and thought; you must be willing to stick with it FOREVER, through thick and thin, rain or storm. Bypassing the system layer even a little would be blasphemous. Unless such a time a rises that a piece of business logic should totally destroy your tracks. Well built tracks last forever, roads develop potholes. Keep it simple, open and efficient at its base and finding problems will be easier, isolated and less magical in other areas of the system.