- •Введение
- •1. Цели и задачи архитектора информационных систем
- •1.1. Цели создания информационных систем
- •1.2. Базовые структуры информационных систем
- •1.3. Уровни реализации архитектуры ИС
- •1.4. Атрибуты качества информационных систем
- •1.5. Сопровождение бизнес-ориентированных ИС
- •2.2. Структурное программирование
- •2. Парадигмы программирования
- •2.1. Модульное программирование
- •2.4. Функциональное программирование
- •2.5. Общие тенденции развития парадигм программирования
- •3. Чистая архитектура
- •3.1. Кричащая архитектура
- •3.2. Принципы SOLID
- •3.2.1. Принцип единственной ответственности
- •3.2.2. Принцип открытости/закрытости
- •3.2.3. Принцип подстановки Б. Лисков
- •3.2.4. Принцип разделения интерфейсов
- •3.2.5. Принцип инверсии зависимостей
- •3.3. Программные компоненты и принципы их организации
- •3.3.1. Диаграмма компонентов
- •3.3.2. Принципы взаимосвязи компонентов
- •3.3.3. Принцип эквивалентности повторного использования и выпусков
- •3.3.4. Принцип согласованного изменения
- •3.3.5. Принцип совместного повторного использования
- •3.3.6. Сравнение принципов взаимосвязи компонентов
- •3.4. Компонентный подход как способ динамического изменения архитектуры ИС
- •3.4.1. Принцип ацикличности зависимостей
- •3.4.2. Принцип устойчивых зависимостей
- •3.4.3. Принцип устойчивости абстракций
- •3.4.4. Графическая интерпретация принципов SDP и SAP
- •3.5. Вычислительные архитектуры ИС
- •3.5.1. Клиент-серверная архитектура
- •3.5.2. Трёхзвенная архитектура
- •3.5.3. Микросервисная архитектура
- •3.6. Шаблоны и антишаблоны проектирования ИС
- •3.6.1. Шаблоны проектирования
- •3.6.2. Антишаблоны проектирования
шое число зависимостей повлечёт за собой высокорисковые изменения других компонентов системы. Эту зону Р. Мартин называет зоной
«боли».
3.5. Вычислительные архитектуры ИС
Компонентно-ориентированный подход к организации архитекту-
ры ИС позволяет описывать все существующие на данный момент ба-
зовые вычислительные архитектуры ИС, такие как: клиент-серверная архитектура, трёхзвенная архитектура и микросервисная архитектура
[2]. Кроме того, разделение функционала ИС на горизонтальные и вер-
тикальные слои и грамотное взаимное расположение компонентов по-
зволяют осуществлять миграцию от одного вида базовой архитектуры системы к другой без значительных затрат рабочего времени разработ-
чиков ИС.
3.5.1. Клиент-серверная архитектура
Клиент-серверная архитектура ИС предполагает разделение ИС на два горизонтальных слоя: слой «клиент» и слой «сервер» (см. рис. 12) [2].
Рисунок 12 – Клиент-серверная вычислительная архитектура Клиент – локальная вычислительная машина, располагающаяся на
стороне пользователя ИС. Программный код, описывающий функцио-
50
нал клиента, разрабатывается универсальным для всех пользователей системы. При этом запущенных пользователем экземпляров клиентско-
го программного обеспечения может быть несколько.
На стороне клиента реализуются следующие функции:
–предоставление пользовательского графического интерфейса;
–формирование запросов к серверу и последующая обработка ответов от сервера;
–выполнение специфичных для пользователя вычислительных
операций.
Сервер – центральное звено в клиент-серверной архитектуре.
Представляет собой высокопроизводительную вычислительную маши-
ну или специальное системное оборудование. Он выполняет работы сервисного обслуживания по клиентским запросам, предоставляет пользователям доступ к определенным системным ресурсам, сохраняет данные в БД.
На стороне сервера реализуются:
–хранение, защита и доступ к данным;
–обработка запросов клиентов;
–формирование запросов к БД;
–описание общей бизнес-логики приложения (не зависящей от пользователя).
Вклиент-серверной архитектуре описание основных бизнес-
процессов выполняется обычно средствами системы управления базами данных (например, СУБД Oracle [42] и MS SQL Server [43]). СУБД для решения таких задач имеют встроенный язык программирования. Од-
нако при условии наличия высокопроизводительных клиентских вы-
числительных машин вся бизнес-логика ИС может реализовываться
51
средствами высокоуровневого языка программирования (например, Java, C#, C++, Delphi).
Архитектура клиент-сервер подразумевает абстрагирование от внутреннего представления данных, то есть физической модели дан-
ных. Другими словами, клиентские программы имеют возможность управлять данными на логическом уровне.
Клиент-серверная архитектура позволила разрабатывать надёжные многопользовательские информационные системы с централизованной базой данных. Надёжность данной архитектуры обеспечивает, в том числе, целостность данных: описание модели предметной области в та-
ких системах выполняется посредством математического аппарата ре-
ляционной алгебры [44].
ИС, основанные на клиент-серверной архитектуре, независимы от аппаратной и программной части сервера БД и поддерживают графиче-
ский интерфейс пользователя на клиентских станциях, которые связаны локальной сетью.
Кдостоинствам клиент-серверной архитектуры можно отнести:
–поддержку многопользовательской работы;
–гарантию целостности данных;
–масштабируемость ИС (вычислительные операции выполняют-
ся на нескольких вычислительных машинах).
Недостатки клиент-серверной архитектуры:
–СУБД для описания бизнес-логики используют не объектно-
ориентированные языки программирования, а потому затруд-
нительно применять компонентно-ориентированный подход;
–общая бизнес-логика, реализованная на клиенте, не отделена от бизнес-логики, специфичной для пользователя;
52
–в клиент-серверных приложениях предъявляются высокие тре-
бования к пропускной способности каналов связи с сервером БД;
–необходимость использовать сравнительно высокопроизводи-
тельные клиентские вычислительные машины, так как часть бизнес-логики все равно обрабатывается на клиентских местах.
Клиент-серверные приложения в целом не противоречат компо-
нентно-ориентированному подходу при условии, что в ИС отсутствует зависимость от конкретных реализаций, а уровни бизнес-логики разде-
лены на горизонтальные слои программных сущностей, бизнес-логики,
адаптеров и представления (см. раздел 3.4 и подраздел 3.4.4).
3.5.2. Трёхзвенная архитектура
Нетрудно заметить, что большинство недостатков классической двухслойной архитектуры (клиент-сервер) зависят от использования клиентской станции в качестве исполнителя бизнес-логики ИС. Поэто-
му следующим шагом эволюции архитектур ИС является идея «тонкого клиента», то есть разбиения алгоритмов обработки данных на части,
связанные с выполнением бизнес-функций и с представлением инфор-
мации в удобном для человека виде. При этом на клиентской машине оставляют лишь вторую часть, связанную с первичной проверкой и отображением информации, перенося всю реальную функциональность системы на серверную часть. Архитектура системы с тонким клиентом называется трёхзвенной и изображена на рис. 13.
53
Рисунок 13 – Трёхзвенная архитектура
Первое звено в трёхзвенной архитектуре предназначено для реали-
зации пользовательского интерфейса. Второе звено используется для описания основной бизнес-логики приложения посредством высоко-
уровневых языков программирования. Хранение данных обеспечивает-
ся третьим звеном – СУБД.
Кпреимуществам трёхзвенной архитектуры можно отнести:
–логическое и физическое разделение функциональных возмож-
ностей: каждый уровень можно запустить на отдельной вычис-
лительной машине, наилучшим образом соответствующей его функциональным требованиям; поскольку каждый уровень вы-
полняется по крайней мере на одном выделенном аппаратном или виртуальном сервере, уровни можно настраивать и опти-
мизировать независимо друг от друга;
–более быструю разработку: поскольку разработкой уровней од-
новременно занимаются разные команды, организация может быстрее вывести приложение на рынок, а программисты могут использовать наилучшим образом подходящие языки и инст-
рументы для каждого уровня;
–более высокую масштабируемость в сравнении с клиент-
серверным приложением: каждый уровень можно масштабиро-
54
