Архитектурный Слой (В Корпоративной Разработке). Понятие, Определение, Изложение

В настоящее время сложно найти краткое и понятное определение таким понятиям, как «прикладной уровень» и «уровень абстракции».

Это влечет за собой различия в понимании одного и того же или непонимание этого понятия среди разработчиков.

А непонимание приводит к разногласиям.

Цель этой статьи: совместно добиться уверенности, создать общее понимание для всех и разработать краткое, четкое и практическое определение концепции.

Архитектурный слой в области корпоративных приложений.

Все, что дано в статье, вы можете обсудить и дополнить в комментариях, а я буду обновлять материал статьи в соответствии с комментариями.

Разделение архитектуры корпоративного приложения на уровни позволяет

  • лучше выполнять декомпозицию задач
  • легче ориентироваться внутри проекта
  • разработчики получают возможность вносить изменения в определенный уровень вместо того, чтобы переделывать все приложение.

  • помогает структурировать приложения путем декомпозиции на группы подзадач, расположенных на определенных архитектурных уровнях
  • в зависимости от уровня сложности слоя могут быть разные требования к опыту разработчиков, что позволяет распределять разработчиков по слоям в зависимости от опыта
В больших системах слои так или иначе используются, даже если их никто так не называет. Какая сейчас путаница при работе с многоуровневой архитектурой:
  • Принято считать, что слоев должно быть 3: данные, бизнес-логика, интерфейс — но на самом деле слоев может быть любое необходимое количество.

  • отсутствуют критерии принадлежности тех или иных задач к тому или иному слою, что часто приводит к созданию одного большого прикладного уровня, либо один из слоев модифицируется под задачи, не характерные для него
  • нет конкретного краткого определения
  • Существуют пересечения понятий слоя, уровня и яруса, для которых также нет точных определений.

    По мнению Фаулера, уровни связаны, подразумевая физическое разделение, но на практике такой уверенности нет.

Вместо понятий «прикладной уровень» и «абстракционный уровень» воспользуемся понятием «архитектурный уровень».

Уровень архитектуры (корпоративное приложение) - это определенный (ограниченный по назначению, закрытый) набор ресурсов (инструментов для работы с ресурсами, деталями, компонентами), с помощью которого реализуются разнообразные (ограниченные по критериям) прикладные задачи, характерные для данного слоя.

Верхний уровень реализует свои компоненты (ресурсы) на основе ресурсов нижнего уровня.

Ресурсы определенного слоя совместимы друг с другом и используются только внутри этого слоя (в идеале).

Более высокий уровень может создавать свои собственные ресурсы, используя ресурсы нескольких уровней.

Это может быть связано с абстрактной, идеализированной системой, существующей в виде диаграмм, а может быть больше связано с реализацией — это определяет компоненты слоя.

Компоненты слоя:

  • если уровень относится к реализации: классы, объекты, контекст, сервисы, контроллеры, прокси, сборки.

  • если слой относится к абстракции: модели данных (идеализированные), действия.

Что характеризует архитектурный слой:
  • назначение приложения, конкретное, логическое, определяет множество задач, которые можно отнести к определенному слою
  • определенный набор задач, реализованный на данном слое
  • ресурсы и инструменты, с помощью которых реализуются задачи: данные, объекты и действия, которые можно выполнять над данными и объектами.

  • данные и логика внутри определенного уровня внутренне согласованы
  • последовательность определяет предсказуемость и предопределенность во взаимодействии ресурсов определенного слоя, иными словами, части, из которых формируется слой, совместимы друг с другом
  • отдельный слой может восприниматься как единое самодостаточное целое
  • зависимости между слоями могут быть минимизированы
  • созданный слой может быть основой для нескольких различных более высоких слоев
  • При переходе с одного слоя на другой моделируемые объекты обычно претерпевают трансформацию из одного представления в другое.

Коротко о порядке проектирования архитектурных слоев:
  1. Все бизнес-требования идентифицированы и структурированы по категориям.

  2. Требования разбиты на задачи, которые должно решить приложение.

  3. Задачи классифицируются и группируются по схожести их предметного назначения.

  4. На основе этих категорий определяется общее назначение архитектурного слоя, в котором будут решаться задачи.

  5. Решение проблем можно рассматривать как алгоритм или процесс, который дает желаемый результат. Среди всех задач выявлены общие компоненты (детали), из которых они реализуются.

    (модели и действия по ним).

    О том, как это делается, будет дополнительная статья.

  6. На основе выбранных компонентов реализуются классы соответствующего слоя и, как правило, объединяются в одну отдельную сборку.

Примеры Пример 1. Модель ISO/OSI Пример 2. Задача – автоматизировать электронный документооборот, что подразумевает
  • выполнение основных действий с различными типами документов: подписание, утверждение, отправка и т.д.
  • автоматическая фоновая работа в нескольких потоках
  • быстрое управление потоками через пользовательский интерфейс
  • обмен данными с другими системами (прием, отправка, конвертация документов)


Архитектурный слой (в корпоративной разработке).
</p><p>
 Понятие, определение, изложение

Пример 3. Офисное строительство Уровень 1 - задания на строительство здания, фундамента, возведение стен, кирпич, цемент. 2 уровень - отделка мебели, детали - обои, мебель.

Уровень 3 - логическое распределение помещений, людей, разделение на отделы - детали: отделения, рабочие места, помещения.

К компонентам (ресурсам) слоя относятся объекты (кирпичи, плиты, цемент) и действия над ними (уложить, установить).

Один слой предоставляет только набор тех ресурсов, которые ему логически свойственны.

3-й слой (места, офисы, отделы) работает только в рамках этих сущностей и действий.

Если мест недостаточно, то офис не достроен, но его можно достроить, отделав нижний слой.

Теги: #программирование #Управление разработкой #Системный анализ и проектирование #архитектура приложений #проектирование и рефакторинг #методология разработки #процесс разработки #архитектурные концепции #уровни абстракций #многоуровневая архитектура #многослойность

Вместе с данным постом часто просматривают: