exam13 3 - stankin/design-part-1 GitHub Wiki

Понятие слоя в проектировании программного обеспечения.

Реферат к лекции 13 Топология информационных систем

Выполнил Бельский Антон ИДБ-18-06

Проверил Демушкин Андрей ИДБ-18-06

Введение

Проектирование программного обеспечения (Software design) - процесс создания проекта программного обеспечения, а также дисциплина, изучающая методы проектирования. С усложнением программных средств и фреймворков (библиотек) мы перешли от последовательного программирования к объектному. Необходимость в иерархии для адресации и упрощения создания сложных массивов кода - вопрос как никогда актуальный как для разработки, так и для долгосрочной поддержки программного продукта. Основными этапами для проектирования системы до момента конкретизации программных средств и модулей является разделение процессов на два типа: "Физический" и "Логический" [1].

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

  1. Выбор модели данных. Чаще всего выбирается реляционная модель данных в связи с наглядностью табличного представления данных и удобства работы с ними.
  2. Определение набора таблиц исходя из ER-модели и их документирование. Для каждой сущности ЕR-модели создается таблица.
  3. Нормализация таблиц. Для правильного выполнения нормализации необходимо изучить семантику и особенности использования данных. На этом шаге проверяется корректность структуры, созданная на предыдущем шаге, посредством применения к ним процедуры нормализации.
  4. Тестирование логической модели данных на выполнение всех рабочих процессов. Производится попытка выполнить все необходимые операции. Если выполнить не удается, то составленная логическая модель данных является неадекватной и содержит ошибки, которые надо устранить.

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

  1. Проектирование таблиц базы данных средствами выбранной СУБД. Осуществляется выбор реляционной СУБД, которая будет использоваться для создания базы данных, размещаемой на машинных носителях. Глубоко изучаются ее функциональные возможности по проектированию таблиц.
  2. Реализация бизнес-правил в среде выбранной СУБД.
  3. Проектирование физической организации хранения и обработки данных.
  4. Разработка стратегии защиты объектов инфраструктуры.
  5. Организация мониторинга функционирования базы данных и ее настройка. После создания физического проекта базы данных организуется непрерывное слежение за ее функционированием.

Исходя из вышеописанного ввести следующие понятия: слой и уровень.
Слой (Layer) - это механизм логического структурирования компонентов, из которых состоит программное решение.
Уровень(Level) - это механизм физического структурирования инфраструктуры системы.
В логически разделённых на слои архитектурах информационных систем наиболее часто встречаются следующие четыре слоя:

  1. Слой представления (слой UI, UIL, пользовательский интерфе́йс, уровень представления в многоуровневой архитектуре)
  2. Слой приложения (сервисный слой, сервисный уровень или GRASP уровень управления)
  3. Слой бизнес-логики (слой предметной области, BLL, доменный слой)
  4. Слой доступа к данным (слой хранения данных, DAL, слой инфраструктуры; логирование, сетевые взаимодействия и другие сервисы, требующиеся для поддержания конкретного слоя бизнес-логики) [2]

слои

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

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

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

Слой доступа к данным набор компонентов для доступа к хранимым данным. В качестве источников данных могут выступать различного рода базы данных, SOAP и REST-сервисы, файлы на файловой системе и т.д.

Некоторые также выделяют в отдельный слой бизнес инфраструктуры (BI) то, что расположено между слоем бизнес-логики и слоем инфраструктуры. Иногда этот слой именуется «нижнеуровневым слоем бизнес-логики» или «слоем бизнес-сервисов». Этот слой является очень обобщённым и может быть использован на нескольких уровнях приложения.

Направление зависимостей между слоями идёт от слоя представления к слою доступа к данным. В идеальной ситуации каждый слой зависит только от следующего слоя: слой представления зависит от сервисного слоя (например, представление зависит от контроллера), сервисный слой зависит от слоя бизнес-логики (например, контроллер зависит от бизнес-сервиса), а слой бизнес-логики — от слоя доступа к данным (например, бизнес-сервис зависит от репозитория). При этом компоненты бизнес-слоя могут зависеть от других компонентов бизнес-слоя, тогда как в других слоях аналогичные зависимости нежелательны (например, зависимость одного репозитория от другого). Так же нежелательны зависимости в обратном направлении (бизнес-слой не должен зависеть от сервисного слоя) и зависимости между слоями, не являющимися соседними (сервисный слой не должен зависеть от слоя доступа к данным, например).

Каждый слой зависит только от нижележащего слоя и может существовать без вышерасположенных слоёв. Ещё одна распространённая точка зрения заключается в том, что слои не всегда строго зависят от слоя расположенного непосредственно под ними. Например, в нестрогой многослойной системе (англ. a relaxed layered system) какой-то слой может зависеть от всех расположенных ниже слоёв.

Итоги

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

Список литературы:

  1. Сайт «Википедия» [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0, свободный. Дата обращения: 14.12.2021 г.
  2. Сайт «Unetway» [Электронный ресурс] – Режим доступа: https://unetway.com/tutorial/proektirovanie-programmnogo-obespecenia, свободный. Дата обращения: 14.12.2021 г.
  3. Сайт «Википедия» [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85, свободный. Дата обращения: 14.12.2021 г.