|
Software Architecture |
||||
|
||||
| Architectural Layering | ||||
The LogicalView page introduced layering of components within an application. There are a number of other ways to look at the major areas of an architecture..
The simple picture from LogicalView shows horizontal layers.

Horizontal rows represent layers with common architectural roles. It is possible to break each layer into partitions, here by business function:

Some times we can line partitions up from top to bottom, to get full vertical business-oriented slices:

Interestingly enough, vertical partitions often occur because of a counter-intuitive truism: Technical architectures often correlate to business architectures. I disagreed the first time I heard that; how could program structure relate to the organization chart? Consider a company that has separate billing and service departments, and each builds their own IT systems. There are likely to be vertical silos around. Clean vertical slices can also occur if you buy some of these functional areas and build others. Or, if you plan ahead and build this way on purpose!
Here's a nice way to look at layers, borrowed from the folks at Ratio. They have many excellent white papers; these ideas are from their Reference Architecture paper. This diagram, attributed in the white paper to Clemens Szyperski, describes a continuum from the most application-specific to the most general.

Note that in the first simple diagram of Presentation, Business and Data, if we implement each logical layer on a separate processor, we could easily have all of these physical layers inside each one. Here is Ratio's interpretation:

Application interface is a UI for human consumption or an API interface for other client systems. The domain layer represents reusable entities and functions across a particular business area. The application provides specific functions, focused on one set of users of an application. Abstract entities in the domain may be specialized in the application.
This diagram, attributed to IBM's San Francisco project, shows how some applications may share common business or infrastructure layers, while others do not.

This is important, because too often the architecture diagrams for a company or an integration project ignore the fact that some applications will not be on the ideal architecture.
| Revisions | |
| 02/10/2003 New | |
| |