Русский
Русский
English
Статистика
Реклама

Архитектурные концепции

Архитектурный слой. Понятие, определение, представление

16.07.2020 14:23:13 | Автор: admin
Сейчас сложно найти короткое и понятное определение таких понятий как слой приложения и уровень абстракции. Это влечёт различия в понимании одного и того же либо непонимания данного понятия среди разработчиков.

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


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

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


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

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

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

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


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


Коротко о порядке проектирования архитектурных слоёв:
  1. Выделяется все бизнес требования, которые структурируются по категориям.
  2. Требования разбиваются на задачи, которые должны решаться приложением.
  3. Задачи категоризируются и объединяются в группы на основе схожести своего предметного назначения.
  4. На основе этих категорий выделяется общее назначение архитектурного слоя, в котором будут решатся задачи.
  5. Решения задач можно представить как алгоритм, или процесс, который обеспечивает желаемый результат. Из всех задач выделяются общие составляющие (детали), из которых они реализуются. (модели и действия над ними). О том как это делается, будет дополнительная статья.
  6. На основе выделенных составляющих реализуются классы соответствующего слоя и как правило объединяются в одну отдельную сборку.


Пример 1.
Модель ISO/OSI

Пример 2.
Стоит задача автоматизировать электронный документооборот, которая подразумевает
выполнение элементарных действий с различными видами документов: подписание, согласование, отправка и другое
автоматическая фоновая работа в несколько потоков
управление работой потоков оперативно через пользовательский интерфейс
обмен данными с другими системами (приём, отправка, конвертирование документов)
image

Пример 3.
Строительство офиса
1 уровень задачи по строительству здания, фундамент, возведение стен, кирпичи, цемент
2 уровень отделка мебелирования, детали обои, мебель
3 уровень логическое распределение помещений, людей, деление на отделы детали: отделы, рабочие места, помещения

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

Один слой предоставляет только набор тех ресурсов, которые ему логически характерны. 3й слой (места, кабинеты, отделы), работает только в рамках этих сущностей и действий. Если мест не хватает, то кабинет не достраивается, но его можно достроить, доработав ниже стоящий слой.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru