Architectural layer (in corporate development). Concept, definition, presentation

Nowadays, it is difficult to find a short and clear definition of concepts such as "application layer" and "abstraction layer". This entails differences in the understanding of the same or misunderstanding of this concept among developers. And misunderstandings lead to disagreements.



The purpose of this article is to work together to create certainty, create a common vision for everyone, and come up with a short, clear and practical definition of the Architectural Layer in the field of enterprise applications. You can discuss and supplement everything that is given in the article in the comments, and I update the material in the article in accordance with the comments.



Dividing the architecture of an enterprise application into layers allows
  • - , ,
  • ,
  • , ,


, .





What is the current confusion when dealing with layered architecture:
  • , 3: , -, β€”
  • , , , , ,
  • (layer), (tier), . , ,


Β« Β» Β« Β» Β« Β».





An architectural layer (corporate application) is a certain (limited by purpose, closed) set of resources (tools for working with resources, parts, components), with the help of which a set (limited by criteria) of applied tasks characteristic of a given layer is implemented. The higher layer implements its components (resources) based on the resources of the lower layer. The resources of a given layer are compatible with each other and are used only within that layer (ideally). The parent layer can create its own resources using the resources of several layers. It can relate to an abstract, idealized system that exists in the form of schemas, or is more related to implementation - this determines the components of the layer.



Layer components:



  • if the layer is implementation related: classes, objects, context, services, controllers, proxies, assemblies ...
  • if the layer is about abstraction: data models (idealized), actions ...


What is the architectural layer characterized by:



  • applied purpose, specific, logical, defines a variety of tasks that can be attributed to a certain layer
  • a certain set of tasks implemented on a given layer
  • resources and tools with which tasks are implemented: data, objects and actions that can be performed on data and objects
  • data and logic within a certain layer are consistent within themselves
  • consistency determines predictability and predetermination in the interaction of resources of a certain layer, in other words, the details of which the layer is formed are compatible with each other
  • a separate layer can be perceived as a single self-sufficient whole
  • dependency between layers can be minimized
  • the created layer can be the basis for several different parent layers
  • when moving from one layer to another, modeled entities are usually transformed from one representation to another


Briefly about the procedure for designing architectural layers:



  1. All business requirements are highlighted and structured into categories.
  2. Requirements are broken down into tasks to be solved by the application.
  3. Tasks are categorized and grouped based on the similarity of their subject purpose.
  4. On the basis of these categories, the general purpose of the architectural layer is highlighted, in which the tasks will be solved.
  5. Problem solving can be thought of as an algorithm, or process, that delivers the desired result. Of all the tasks, common components (details) are distinguished, from which they are implemented. (models and actions on them). There will be an additional article on how this is done.
  6. Based on the selected components, the classes of the corresponding layer are implemented and, as a rule, are combined into one separate assembly.




Examples of
1.



ISO/OSI



2.



,



  • : , ,
  • (, , )


image



3.







1 β€” , , , ,

2 β€” , β€” , …

3 β€” , , β€” : , ,



() , (, , ) (, ).



, . 3 (, , ), . , , , .




All Articles