РАЗРАБОТКА АРХИТЕКТУРЫ ПРОМЫШЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ПРИМЕРЕ ПРОГРАММНОГО КОМПЛЕКСА «ГЕОПЛЮС»

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

Литвинов А.Г.

Существует множество определений понятия системной архитектуры. Возьмем за основу определение, представленное в международном стандарте ANSI/IEEE 1471-2000 [1]. Архитектура системы (англ. system architecture) – это фундаментальная организация системы, составляющими которой являются ее компоненты, их связи по отношению друг к другу и внешней среде, а также принципы ее проектирования и развития.

Указанная рекомендованная практика дает определение архитектуры системы, адресующее преимущественно программную систему (англ. software-intensive system), то есть систему, программное обеспечение которой играет ключевую роль во влиянии на процессы проектирования, разработки и развития системы в целом. Это, однако, не умоляет значение аппаратной составляющей в архитектуре системы. Техническая платформа (англ. technical platform), исполняющая программную систему, определяет ее базовые возможности и зачастую вносит дополнительные ограничения в реализацию.

При разработке архитектуры системы уровня предприятия возникает множество архитектурных аспектов, которые необходимо учитывать [2]. В рамках данной статьи нет возможности в полной мере охватить их все, поэтому далее более подробно остановимся на следующих ключевых особенностях:

  • Уровни (слои) промышленных систем.
  • Аппаратно-программная платформа.
  • Структурирование доменной логики (бизнес-логики).
  • Модель доменных объектов.
  • Структурирование пользовательского интерфейса.

Программный комплекс «ГеоПлюс» (Недра) [9,10] предназначен для горных предприятий открытой и подземной разработки месторождений полезных ископаемых. Комплекс обладает богатыми функциональными возможностями по обработке геолого-маркшейдерских, технологических и нормативно-справочных данных. Архитектура данного программного комплекса учитывает большинство особенностей процесса разработки архитектуры сложных систем, существующих на данный момент. Далее по тексту данный комплекс будет использоваться как пример реализации архитектуры сложной промышленной системы.

УРОВНИ (СЛОИ) ПРОМЫШЛЕННЫХ СИСТЕМ

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

Рис. 1. Многоуровневая функционально-логическая структура программного комплекса

Рис. 1. Многоуровневая функционально-логическая структура программного комплекса

  • Слой бизнес-логики обеспечивает выполнение основных вычислительных процедур системы по обработке данных, получаемых с уровня работы с данными и уровня представления. Более подробно остановимся на этом слое далее в разделах описания доменной логики и модели доменных объектов.
  • Слой работы с данными обеспечивает механизмы доступа к различным данным, с которыми работает система. В комплексе ГеоПлюс основным источником данных является реляционная база данных. Для доступа к данным напрямую от слоя представления используется промежуточный сервис доступа к данным. Наличие данного сервиса обусловлено необходимостью работать с данными на уровне представления под контролем вспомогательных аспектов (см. описание ниже) слоя работы данными.
  • Слой представления обеспечивает взаимодействие между пользователем и системой. В системе ГеоПлюс слой реализован, как тонкий клиент, в том смысле, что самостоятельно не выполняет процедуры по обработке, извлечению и хранению данных, но принимает от пользователя команды на их запуск и отображает результат их выполнения. Подробнее особенности реализации слоя в ГеоПлюс описаны в разделе структурирования пользовательского интерфейса.
  • Вспомогательные аспекты используются на уровнях работы с данными и бизнес-логики. К ним относятся реализации таких сервисов, как журналирование и аудит действий системы и пользователя, аутентификация и авторизация пользователей, мониторинг стабильности и производительности системы.

АППАРАТНО-ПРОГРАММНАЯ ПЛАТФОРМА

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

В процессе отражения логической структуры системы на аппаратную  можно выделить два основных правила:

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

Для комплекса ГеоПлюс целесообразно использовать трехзвенную клиент-серверную аппаратную архитектуру, представленную на рисунке ниже.

Рис.  2. Многоуровневая физическая структура программного комплекса

Рис.  2. Многоуровневая физическая структура программного комплекса

Архитектура предполагает наличие трёх компонентов:

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

Преимущества трехзвенной архитектуры:

  • масштабируемость и конфигурируемость (изолированность уровней друг от друга позволяет быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней);
  • высокая безопасность и надёжность;
  • низкие требования к скорости канала между клиентскими ПК и сервером приложений;
  • низкие требования к производительности и техническим характеристикам ПК, как следствие снижение их стоимости.

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

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

Рис.  3. Программная платформа комплекса ГеоПлюс

Рис.  3. Программная платформа комплекса ГеоПлюс

В основании платформы находится технология Microsoft .Net [4]. Далее по тексту мы остановимся на некоторых аспектах разработанной программной платформы.

Структурирование доменной логики (бизнес-логики)

Для структурирования функционала слоя бизнес-логики используется паттерн внедрения зависимостей (англ. dependency injection). Данный паттерн обеспечивает снижение связанности между компонентами доменной логики и удобный механизм конфигурирования зависимостей, реализуя стиль компонентного и объектно-ориентированного стилей проектирования. Описание механизмов данного паттерна представлено на рисунке ниже.

Рис.  4. Механизм паттерна Dependency Injection

Рис.  4. Механизм паттерна Dependency Injection

В качестве реализации данного паттерна в комплексе ГеоПлюс используется библиотека Unity Application Block [6], как легковесный, расширяемый контейнер общего назначения в системах на платформе Microsoft .Net.

В архитектуре комплекса ГеоПлюс нашел отражение еще один современный стиль проектирования – аспектно-ориентированный. Данный подход позволяет выделить блоки сквозной (проходящей через несколько логических слоев архитектуры) функциональности, называемые аспектами. Нарушая концепции объектно-ориентированного подхода, однако, оказывается очень удобным для решения задач, имеющих значительное количество точек подключения в системе. В комплексе ГеоПлюс в качестве таких аспектов выделены функциональности журналирования, управления ошибками, аудита и авторизации пользователя (см. Рис.  1). Библиотека Microsoft Enterprise Library [7] при этом используется как реализация указанного стиля.

Модель доменных объектов

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

В комплексе ГеоПлюс в качестве реализации модели доменных объектов, используется инфраструктура Enity Framework (EF)[8]. Помимо выполнения задачи моделирования объектов предметной области, EF – это еще и объектно-реляционный модуль сопоставления, позволяющий разработчикам .NET работать с реляционными данными с помощью объектов, специализированных для доменов. Это устраняет необходимость в написания большей части кода для доступа к данным, который обычно требуется разработчикам.

Одна из диаграмм доменных объектов дискретной геологической модели комплекса ГеоПлюс представлена на рисунке ниже.

Рис.  5. Диаграмма модели доменных объектов

Рис.  5. Диаграмма модели доменных объектов

Структурирование пользовательского интерфейса

Текущая версия комплекса ГеоПлюс на клиентском уровне представляет три программных продукта – АРМ геолога, АРМ маркшейдера и АРМ администратора. Каждый из этих продуктов имеет модульную структуру, определяемую соответствующим конфигурационным файлом. Одни модули являются общесистемными и являются необъемлемой частью каждого программного продукта ГеоПлюс, другие – уникальны для определенных продуктов.

Пользовательский интерфейс клиентских приложений программного комплекса ГеоПлюс построен с использованием технологий WPF, Prism и паттерна MVVM [5]. Механизм структурирования пользовательского интерфейса показан на рисунке ниже.

Рис.  6. Структура графического интерфейса комплекса ГеоПлюс

Рис.  6. Структура графического интерфейса комплекса ГеоПлюс

Рассмотрим более подробно каждую составляющую данного механизма структурирования.

  • Windows Presentation Foundation (WPF) представляет собой обширный API-интерфейс для создания настольных графических программных систем, имеющих насыщенный дизайн и интерактивность. В отличие от устаревшей технологии Windows Forms, WPF включает новую модель построения пользовательских приложений (в основе WPF лежит мощная инфраструктура, основанная на DirectX).
  • Prism Composite Framework предназначен для разработки WPF и Silverlight приложений, реализующих богатый пользовательский интерфейс, сложную визуализацию данных и бизнес-логику ее представления.
    В центре архитектуры приложения Prism находится ядро (Shell), которое определяет ряд регионов (Region) – указателей для загрузки соответствующих функциональных модулей (Modules).
  • Паттерн Model-View-ViewModel (MVVM, модель-представление-модель представления) позволяет отделить бизнес-логику и логику представления от пользовательского интерфейса. Поддержка разделения ответственности между логикой приложения и UI облегчает процессы тестирования, поддержки и развития системы.
  • В качестве DI контейнера используется Unity Application Block, описанный ранее в статье.

Применительно к ГеоПлюс использование инфраструктуры Prism особенно ощутимо, так как клиентские приложения (АРМы) взаимодействуют с другими подсистема на разных логических уровнях архитектуры. Функционал Prism по конфигурированию приложений обеспечивает адаптируемость системы в процессе жизненного цикла   комплекса ГеоПлюс в ответ на изменения бизнес-требований к системе.

Заключение

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

СПИСОК ЛИТЕРАТУРЫ

  1. IEEE Std 1471-2000. IEEE Recommended Practice for Architectural Description of Software-Intensive Systems. – 2000.
  2. Bass Len, Paul Clements, and Rick Kazman. Software Architecture in Practice, 3d ed.- Addison-Wesley Professional, 2012.
  3. Fowler Martin. Patterns of Enterprise Application Architecture.- Addison-Wesley, 2002.
  4. Microsoft® Application Architecture Guide (Patterns & Practices). Second Edition edition. – Microsoft Press, 2009.
  5. Developer’s Guide to Microsoft Prism 4: Building Modular MVVM Applications with Windows Presentation Foundation and Microsoft Silverlight (Patterns & Practices). – Microsoft Press, 2011.
  6. Dependency Injection with Unity (Microsoft patterns & practices). – Microsoft Press, 2013.
  7. Developer’s Guide to Microsoft Enterprise Library, C# Edition (Patterns & Practices). – Microsoft Press, 2010.
  8. Driscoll, N. Gupta, R. Vettor, Z. Hirani, L. Tenny. Entity Framework 6 Recipes. – Apress, 2013.
  9. Шек В.М., Литвинов А.Г., Руденко Ю.Ф. Высокие технологии с применением ГИС.М.: ГИАБ, 2010, №10, с. 118-126.
  10. Шек В.М. Создание комплекса геолого-маркшейдерских программ. Уголь, 2009, №1, с. 51-54.