Layering is a common technique used by software designers to break apart complicated software systems. Each layer has a well-defined interface and dependencies with other layers, implementing one technical function like data access. The pros of layering include understandability, separation of concerns, reusability, and independent development. The cons are that layers do not encapsulate all things well and extra layers can harm performance. Layers and tiers are often used interchangeably, but tiers imply a physical separation. Common layers in information systems include the UI, application, business, services, data, and unit testing layers.
2. What Is “Layering”?
Pros & Cons Dividing into Layers
Layers and Tiers
Common Layers in Information System
3. Is one of the most common techniques that
software designers use to break apart a
complicated software system.
Each layer is a package of software that has
a well-defined interface and a few well-
known dependencies with other layers.
Each layer implements one technical
function within the application. E.g. a data
access layer is responsible for
encapsulating the technical means for
accessing a database.
4. Pros
• You can understand a single layer as a coherent whole without
knowing much about the other layers.
• Separation of concerns among components.
• Components should be reusable by multiple applications.
• Independent teams should be able to work on parts of the
solution.
• You minimize dependencies between layers.
• Various components of the solution are independently deployed,
maintained, and updated, on different time schedules.
Cons
• Layers encapsulate some, but not all, things well. As a result you
sometimes get cascading changes.
• Extra layers can harm performance.
5. Often the two are used as synonyms, but
most people see tier as implying a physical
separation.
6. UI / UX Layer: The actual user interface, be
it a Windows application or an API set
consumed by a developer (Windows, Web,
PocketPC, Windows Services, Web
Services, etc)
Application Layer: The process of
coordinating all the other layers to create an
application's true functionality, independent
of the UI / UX that it is implemented with
Business Layer: The real business
process being modeled - often called the
quot;Domainquot; layer.
Services Layer: Interfaces and hooks into
external resources, such as hardware
dependencies, web services, etc
Data Persistence Layer: Often called the
Data Access Layer, this object set is
responsible for persisting data to the
datastore being used in the application
(Oracle, SQL Server, XML, etc.)
Unit Testing Layer(s): The only layer
that spans the process of other layers. Unit
Testing and Test Driven
Development/Design allow us to ensure that
the code works every time, provides easier
maintenance, etc.