Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура информационных систем. Часть 1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
761 Кб
Скачать

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

Процесс

 

Процесс

Процесс

Классная

Процесс

 

доска

 

 

(общая память)

 

Процесс

 

Процесс

сообщения

Модуль

сообщения

 

 

управления

 

Рис. 21. Структура системы, использующей принцип классной

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

Системы, использующие принцип классной доски используются:

в системах искусственного интеллекта для хранения системных знаний;

в многоагентных системах для осуществления взаимодействия агентов.

6.6. Виртуальные машины

Виртуальная машина (от англ. virtual machine) – программно-

аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы и исполняющая программы для этой платформы на некоторой host-платформе12. Виртуальная машина

12Нost – хост-платформа, платформа-хозяин.

51

образует внешний слой (интерфейс) ИТ-системы, осуществляющий взаимодействие с клиентскими приложениями.

6.6.1. Интерпретаторы

Интерпретатор – программа, выполняющая интерпретацию, т.е. покомандный анализ, обработку и выполнение исходной программы или запроса.

Интерпретаторы широко используются для выполнения следующих функций:

отладка ПО, предназначенного для работы на других платформах, например, во встраиваемых контроллерах;

выполнение программ, написанных для одной операционной системы (ОС) под управлением некоторой другой ОС, например для выполнения Linux - приложений под управ-

лением Windows;

интерпретаторы команд;

интерпретаторы некоторого языка, в качестве которого может выступать скриптовый язык, язык высокого уров-

ня, или какой-либо специальный язык.

Интерпретаторы удобно использовать в системах разработки и отладки ПО ряда систем, как правило, встраиваемых. При этом интерпретатор служит программной моделью системы.

Также интерпретаторы применяются в качестве средства переноса приложений между платформами. В качестве примера можно привести систему VMWare, которая обеспечивает перенос приложений между различными платформами, в том числе между

Linux и Windows.

Одним из типовых вариантов использования интерпретаторов являются интерпретаторы команд. Примерами являются

command.com в DOS, shell в Unix, Window Manager в Windows (управляется мышью).

Широко применяются интерпретаторы таких языков, как Basic, Python, Perl, а также javascript, который встраивается в интернетбраузеры. Широко применяется на практике виртуальная java машина13 .

13 The Java Virtual Machine.

52

6.6.2. Системы, основанные на правилах

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

 

 

Пользовательский

 

 

 

интерфейс

 

 

 

 

 

 

 

запросы

результаты

 

 

 

 

 

 

 

 

 

 

Основная

 

Процессор

 

память

 

логического

 

 

 

 

вывода

 

 

 

 

 

 

 

 

 

 

 

запросы результаты

База

знаний

Рис. 22. Структура системы, обеспечивающей работу с правилами

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

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

53

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

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

Системы, основанные на правилах, на практике используются следующим образом [4]:

как оболочка экспертной системы, которая может быть наполнена правилами и фактами, например система

CLIPS;

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

Jess;

правила могут быть использованы для управления бизнеспроцессами, как, например, в системе Jrules.

6.7. Рекомендации по использованию стилей

Случаи, при которых целесообразно использовать тот или иной архитектурный стиль, приведены в табл. 6.1 [4].

 

 

Таблица 6.1

 

 

Использование архитектурных стилей

 

 

Продолжение табл. 6.1

 

 

 

Наименование

Описание ситуации, при которой

 

стиля

 

целесообразно использование стиля

 

Системы пакет-

Исходная задача может быть разделена на несколько подза-

 

но-последова-

дач причём каждая из них использует только одну операцию

 

тельной

обра-

ввода-вывода. При этом результат выполнения каждой под-

 

ботки

 

задачи либо выдаётся пользователю, либо подаётся на вход

 

 

 

другой подзадачи. Существуют приложения, позволяющие

 

 

 

решать отдельные подзадачи

 

 

 

 

 

Системы

типа

Задача выполняется путём повторяющихся преобразований

 

конвейеры

и

однотипных и независимых друг от друга наборов данных.

 

фильтры

 

Практически отсутствуют ветвления и обратные связи

 

 

 

 

 

54

 

 

Продолжение табл. 6.1

 

 

Наименование

Описание ситуации, при которой

стиля

целесообразно использование стиля

Системы

типа

Порядок вычислений определён изначально, отсутствует

программа-

возможность и/или необходимость задействовать компонен-

подпрограммы

ты в процессе ожидания результатов своих запросов к ос-

 

 

тальным компонентам. Отсутствует целесообразность ис-

 

 

пользование механизма наследования

 

 

 

Объектно-

 

Для повышения эффективности целесообразно использова-

ориентирован-

ние в процессе разработки механизма наследования. Объек-

ные системы

ты располагаются на разных машинах

 

 

 

Клиент-

 

Некоторая задача может быть представлена в виде совокуп-

серверные

 

ности запросов от клиентов к серверу, в связи с чем может

системы

 

быть выделена клиентская часть, формирующая запросы, и

 

 

серверная, служащая для их выполнение. Количество клиен-

 

 

тов может изменяться, любой клиент имеет возможность

 

 

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

 

 

этом сервер выполняет только обработку запросов.

 

 

Иерархические

Система может быть представлена как набор слоев с задан-

многоуровневые

ными интерфейсами. Целесообразно иметь возможность ис-

системы

 

пользовать уже имеющиеся реализации слоев и обеспечить

 

 

переносимость системы

 

 

 

Системы

взаи-

Для обеспечения взаимодействия процессов эффективным

модействующих

является применение механизма передачи сообщений при

процессов

 

отсутствии большого объема долгоживущих централизо-

 

 

ванных данных

 

 

Системы, управ-

Система должна обеспечивать реакцию на асинхронно воз-

ляемые

собы-

никающие события и может быть представлена совокупно-

тиями

 

стью независимых процессов, выполняющихся на различ-

 

 

ных платформах. Целесообразно обеспечение возможности

 

 

изменения количества процессов, переключаемых события-

 

 

ми

 

 

Системы на ос-

В системе имеется большой объём взаимосвязанных долго-

нове централи-

живущих, хорошо структурированных данных, которыми

зованной

базы

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

данных

 

Могут быть выделены потребители данных (формируют за-

 

 

просы) и их производители (выполняют запросы). Экономи-

 

 

чески оправдано использование коммерческой СУБД

 

 

 

Системы,

ис-

В процессе решения задачи множество клиентов обменива-

пользующие

ются между собой данными. Важна возможность изменения

принцип

клас-

количества потребителей данных

сной доски

 

 

 

 

55

 

ПродолжениеОкончаниетаблтабл. 6..16.1

 

 

 

Наименование

Описание ситуации, при которой

 

стиля

целесообразно использование стиля

 

Интерпретато-

Отсутствует, либо затруднено использование реальной ма-

ры

 

шины, требуется обеспечить пользователю использование

 

 

стандартного, либо скриптового языка программирования

 

 

 

Системы,

осно-

Для описания алгоритма решения задачи может быть ис-

ванные на

пра-

пользовано множество правил и способов их применения.

вилах

 

 

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

иерархия стилей;

применение более одного стиля на одном уровне иерархии;

соединение двух или более архитектурных стилей;

комбинация перечисленных выше способов.

Иерархия стилей предполагает, что компонент некоторого уровня в системе, построенной с использованием одного стиля, сам по себе может быть организован на основе другого стиля. Например, в механизме конвейеров pipes в Unix каждый из элементов конвейера, может быть реализован на основе другого стиля.

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

Иногда некоторая архитектура может быть описана в терминах различных стилей, например, система Линда [7] может быть представлена и как система, использующая принцип взаимодействующих процессов, и как система на основе централизованных данных.

56

Контрольные вопросы

1.Каким образом организованы системы, основанные на потоках данных: системы пакетно-последовательной обработки, системы типа «конвейеры и фильтры»?

2.Каков принцип организации систем, использующих вызов с возвратом: типа программа-подпрограммы и клиентсерверных систем?

3.Укажите основные особенности объектно-ориентированных систем, использующих вызов с возвратом.

4.Укажите основные особенности иерархических многоуровневых систем, использующих вызов с возвратом.

5.Каким образом организованы и функционируют системы, работающие по принципу взаимодействующих процессов?

6.Каким образом организованы и функционируют системы, управляемые событиями?

7.Поясните принцип организации систем, основанных на использовании централизованной базы данных.

8.Поясните принцип организации систем, использующих принцип классной доски.

9.Какие существуют разновидности систем, функционирующих по принципу виртуальной машины? Каковы их особенности?

7.Паттерны и фреймворки в архитектуре ИС

7.1. Паттерны

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

Шаблон проектирования (паттерн, design pattern) – это архитектурная конструкция, предоставляющая эффективное решение проблемы проектирования в рамках конкретного контекста и предполагающая многократное применение.

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

57

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

Алгоритмы также являются шаблонами, но не проектирования, а вычислений.

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

Могут быть выделены следующие разновидности паттернов: архитектурные, системные, структурные, поведенческие, производящие и параллельного программирования [9].

Архитектурные паттерны (architectural patterns) определяют состав и функции отдельных подсистем, а также их взаимодействие. Эти паттерны могут быть отнесены к паттернам высокого уровня, которые не зависят ни от платформы, ни от языка программирования. Такие паттерны называют также архитектурными стилями, которые были рассмотрены выше.

Системные паттерны (system patterns) описывают системный (верхний) уровень приложения. Их использование может обеспечить построение более эффективных систем. Основные виды системных паттернов и их назначение рассмотрены в табл. 7.1.

 

 

 

 

 

Таблица 7.1

 

Основные виды системных паттернов

 

 

 

 

 

Окончание табл.7.1

Паттерн

 

Назначение

 

 

 

Модель-Вид-

Разделение приложения или подсистемы на три функ-

Контроллер (Model-

циональные

части (модель

данных,

представление

View-Controller

(пользовательский интерфейс) и контроллер (управ-

(MVC))

 

ляющую логику)). Поскольку указанные части относи-

 

 

тельно независимы, облегчается разработка, модифика-

 

 

ция и настройка каждой части по отдельности. MVC со-

 

 

держится во многих фреймворках для веб-

 

 

программирования. Примерами удачного применения

 

 

этого паттерна для языка PHP являются Zend Framework

 

 

и cakePHP

 

 

 

 

 

 

 

 

 

Сессия

(Session),

В системах

распределённой

обработки

обеспечивает

возможность серверам различать клиентов, что позво-

Рабочая

нить

ляет повысить эффективность многопоточных прило-

(Worker Thread)

жений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

58

 

 

Окончание табл.7.1

Паттерн

Назначение

 

 

 

Обратный

вызов

Организация асинхронного взаимодействия между кли-

(Callback)

 

ентом и сервером, что снижает загрузку на сеть, повы-

 

 

шает эффективность использовании процессорного вре-

 

 

мени как клиента, так и сервера. Осуществляется сле-

 

 

дующим образом:

 

 

• регистрация клиента: клиент отправляет запрос

 

 

серверу, предоставляя ему свою контактную ин-

 

 

формацию и разрывает соединение с сервером;

 

 

• обработка: сервер обрабатывает запрос и форми-

 

 

рует ответ;

 

 

• обратный вызов: сервер, закончив обработку дан-

 

 

ных клиента, соединяется с клиентом и извещает

 

 

его о результатах.

 

 

По этому же принципу строятся интернет-магазины: с

 

 

помощью асинхронного взаимодействия клиента и сер-

 

 

вера в виде сообщений электронной почты полностью

 

 

контролируется процесс покупки и доставки заказа

 

 

 

Постоянное

обнов-

Обеспечение возможности для клиента постоянного ав-

ление (Successive

томатического получения обновлений от сервера. Та-

Update)

 

ким образом, паттерн освобождает пользователя от ра-

 

 

боты по обновлению. Сами обновления связаны с изме-

 

 

нением данных на сервере, появлением или обновлени-

 

 

ем ресурсов, изменениями в состоянии бизнес-модели.

 

 

Примером применения паттерна является система поч-

 

 

товых рассылок новостей по темам, на которые подпи-

 

 

сался клиент

 

 

 

Структурные паттерны (structural patterns) определяют спосо-

бы разделения и объединения элементов приложения. Разновидности структурных паттернов и их назначение приведены в табл.7.2.

 

Таблица 7.2.

 

Основные виды структурных паттернов

 

Окончание табл.7.2

 

 

Паттерн

Назначение

 

 

Адаптер

Обеспечение взаимодействия компонентов с различными интер-

(Adapter)

фейсами путем создания промежуточного объекта-адаптера, пре-

 

образующего интерфейс одного из них таким образом, чтобы им

 

мог пользоваться другой компонент без изменения функцио-

 

нальности. Позволяет повторно использовать ранее созданный

 

код.

 

 

59

 

Окончание табл.7.2

 

 

Паттерн

Назначение

 

 

«Мост»

Разделение компонента на две взаимосвязанные, но независимые

(Bridge)

структуры: абстракцию и реализацию, каждая из которых явля-

 

ется иерархической. Это позволяет повысить гибкость компо-

 

нента за счёт возможности отдельного изменения (наследования)

 

абстракции и реализации. "Полиморфизм" в классическом виде

 

позволяет подменять наследника, но родитель у него один и тот

 

же. Мост обеспечивает возможность "наследникам" менять "ро-

 

дителя", т.е. делает родителя полиморфным, позволяя менять

 

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

 

 

Компоновщик

Предоставление гибкого способа создания объектов, которые

(Composite)

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

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

 

 

такими объектами на основе единого интерфейса. Упрощает ра-

 

боту клиента, облегчает добавление новых вариантов объектов и

 

их элементов.

 

 

«Декоратор»

Предоставление средства изменения функциональности компо-

(Decorator)

нентов без изменения их внешнего представления или функций

 

 

 

«Фасад» (Fa-

Создание упрощенного интерфейса для сложной подсистемы

cade)

путем сведения всех возможных внешних вызовов к одному

 

объекту, направляющему их соответствующим объектам систе-

 

мы

 

 

«Приспособ-

Уменьшение количества мелких объектов системы с большим

ленец» (Fly-

числом низкоуровневых особенностей посредством совместного

weight)

использования таких объектов

 

 

Полуобъект и

Разделение объекта, который должен быть доступен в более чем

протокол

одном адресном пространстве, например, на клиента и на серве-

(Half-Object

ре, на два взаимозависимых полуобъекта (по одному в каждом

Plus Protocol

адресном пространстве), взаимодействующимb посредством соб-

(HOPP))

ственного протокола. В каждом пространстве реализуется тре-

 

буемая именно в нём функциональность. Протокол координиру-

 

ет активность и передаёт необходимую информацию между по-

 

луобъектами. Используется, например, в CORBA, RMI

 

 

Прокси

Предоставление объекта для обеспечения контроля доступа,

(Proxy)

безопасности, либо повышения скорости доступа к другому объ-

 

екту

 

 

Поведенческие паттерны (behavioural patterns) представляют собой совокупность эвристических способов организации управления в системе. Основные разновидности поведенческих паттернов и их назначение приведены в табл. 7.3.

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]