- •Основные термины и определения
- •Классификация ис
- •Эволюция и классификация платформенных архитектур информационных систем Основные термины и определения
- •Понятие архитектурного стиля. Классификация архитектурных стилей
- •Модель взаимодействия открытых систем
- •Функции уровней:
- •Модель стека протоколов tcp/ip
- •Трёхуровневая иерархическая модель компании Cisco
- •Сервисно-ориентированные технологии реализации информационных систем
Понятие архитектурного стиля. Классификация архитектурных стилей
Архитектура может соответствовать некоторому архитектурному стилю.
Большинство архитектур построены на основе систем, использующих похожие решения.
Сходство может быть определено как архитектурный стиль, который, в свою очередь, можно рассматривать как особый вид паттерна (шаблона). Архитектурный стиль представляет собой кодификацию опыта проектирования ИТ-систем. Примеры архитектурных стилей включают распределённый стиль, стиль “каналы и фильтры”, стиль с централизованной обработкой данных, стиль, построенный на правилах, и т.д. Конкретная система может демонстрировать более одного архитектурного стиля.
Архитектурный стиль можно определить, как семейство систем в терминах шаблона организации структуры. Точнее, архитектурный стиль определяет номенклатуру компонентов и типов соединительных звеньев, а также набор условий, в соответствии с которыми они могут соединяться. Архитектурный стиль определяется набором типов компонентов, во время счёта выполняющих некоторую функцию, топологической раскладкой компонентов с указанием их взаимосвязей во время выполнения, набором семантических ограничений, набором соединителей, служащих средой сообщения, координации и сотрудничества между компонентами.
Иногда вместо термина архитектурный стиль используется термин архитектурный паттерн (шаблон). Однако следует отметить наличие принципиальных различий между архитектурными стилями и паттернами. Паттерн – это фрагмент кода на конкретном языке программирования, а архитектурный стиль – это подход к проектированию.
Несмотря на многочисленные попытки до сих пор отсутствуют стандартные языки описания архитектур.
Принято выделять 12 базовых архитектурных стилей, которые делятся на 5 групп:
потоки данных (Data Flow Systems);
вызов с возвратом (Call-and-Return Systems);
независимые компоненты (Independent Component Systems);
централизованные данные (Data-Centric Systems);
виртуальные машины (Virtual Machines).
Рис. Классификация архитектурных стилей
К системам, работающим по принципу потоков данных, относят системы двух архитектурных стилей: системы пакетно-последовательной обработки (Batch Sequential Systems) и системы типа конвейеры и фильтры (Pipe and Filter Architecture).
К вызову с возвратом относят 4 архитектурных стиля: программа-сопрограммы (Main Program and Subroutines), объектно-ориентированные системы (Object-Oriented Systems), клиент-серверные системы (Client-Server Systems), иерархические многоуровневые системы (Hierarchically Layered Systems).
Системы, работающие по принципу вызова с возвратом:
К ним обычно относят системы, построенные по принципу программа-сопрограммы, клиент-серверные системы, объектно-ориентированные системы и иерархические многоуровневые системы. Самым старым архитектурным стилем, относящимся к данной группе, является архитектурный стиль типа программа-сопрограммы. Программа выполняет функции контроллера, который управляет вычислительным процессом, в то время как функциональность реализуется в сопрограммах. Отличительной особенностью данного стиля является то, что программа имеет только одну нить управления. Данный стиль является реализацией идей структурного программирования. В качестве разновидности стиля программа-сопрограммы можно выделить архитектуры типа ведущий-ведомый (Master-Slave Architecture). Обычно такие архитектуры не выделяют в отдельный стиль и рассматривают как параллельную версию стиля программа-сопрограммы. Отличительной особенностью данных архитектур является то, что основная программа и сопрограммы работают одновременно (параллельно). В данном случае на основную программу (ведущий) возлагаются функции диспетчеризации процесса вычислений. Сопрограмма (ведомый) получает задание, выполняет его, а по завершению задания запрашивает ведущего о новом задании. Данная архитектура может реализовываться как в рамках многопроцессорных систем, так и в сетевой среде с произвольной топологией.
Клиент-серверные системы можно рассматривать как специальный случай стиля программа-сопрограммы. Основное различие состоит в том, что клиент и сервер находятся на разных хостах, хотя, в принципе, клиент и сервер могут работать на одном хосте. Клиент – это процесс, который формирует запрос на обслуживание. Сервер – это процесс, который реализует сервис. В простейшем случае клиент посылает серверу команды и ожидает окончания выполнения запроса.
Объектно-ориентированные системы также поддерживают механизмы наследования и/или делегирования. Пример простейшей объектно-ориентированной системы показан на рис. 2.4.
Одна из проблем, возникающих в процессе функционирования объектно-ориентированных систем, состоит в том, что объект должен быть знать, где находится тот объект, с которым он хочет взаимодействовать и какими интерфейсами он обладает. Привязка к объекту может осуществляться либо в статике, либо в динамике. Основное достоинство объектно-ориентированных систем – возможность сокрытия данных от пользователя. Это позволяет изменять внутреннее представление объекта, не уведомляя об этом клиента. Другим достоинство объектно-ориентированных систем является то, что они естественным образом поддерживают процесс распараллеливания вычислений.
Объектно-ориентированная система может рассматриваться как коллекция взаимодействующих агентов. Каждый объект при этом может быть как клиентом, так и сервером. Объекты могут располагаться в одном процессе, храниться в библиотеках, находиться в разных процессах, работающих на одном хосте и, наконец, располагаться на разных хостах.
Системы, работающие по принципу независимых компонентов. К ним обычно относят системы взаимодействующих процессов и системы, управляемые событиями. Взаимодействующие процессы и системы, управляемые событиями, объединяет то, что в обоих случаях используется механизм неявного вызова оператора. Другими словами, вызывающий и вызываемый оператор могут существовать независимо и могут быть распределены по разным хостам. В самом общем виде идея взаимодействующих процессов состоит в том, что имеется множество независимых процессов, которые обмениваются сообщениями. Эта модель была предложена и разработана ещё в 1970-х гг. Хоаром и имеет множество вариантов реализаций, наиболее популярными из которых являются микроядерные архитектуры, параллельные системы, основанные на обмене сообщениями, а также мультиагентные системы.
Системы, работающие по принципу централизованных данных (репозитарии). К ним относят системы, основанные на использовании централизованной базы данных и системы, использующие принцип классной доски. Репозитарии иногда называют также системами с централизованным хранением данных (Data-centric systems).
Характерной особенностью архитектурных стилей, принадлежащих рассматриваемой группе, является наличие централизованного хранилища информации, содержимое которого общедоступно. Централизованное хранилище используется как для хранения данных, так и метаданных (знаний о данных). Централизованное хранилище обеспечивает удобный доступ к данным и метаданным.
Виртуальные машины
К системам, работающим по принципу виртуальной машины, относят интерпретаторы и системы, основанные на правилах.
Виртуальная машина представляет собой эмулятор, который работает поверх аппаратной и (или) программной настройки и обеспечивает программный интерфейс, в общем случае отличный от программного интерфейса той платформы, на которой он работает.
Если рассматривать ИТ-систему как многослойную структуру, то виртуальная машина образует внешний слой, отвечающий за взаимодействие с клиентскими приложениями
Типовые выделить следующие типовые варианты использования интерпретаторов: отладка программного обеспечения, предназначенного для работы на других, например контроллерных платформах; запуск программ, написанных для одной операционной системы (ОС) под управлением другой ОС, например для запуска приложений для Linux на платформе Windows; интерпретаторы команд; интерпретаторы некоторого языка, в качестве которого может выступать либо скриптовый язык, либо язык высокого уровня, либо некоторый специальный (доменно-ориентированный) язык.
Использование интерпретаторов в составе систем разработки важно прежде всего для разработки ПО встроенных систем. В этом случае интерпретатор представляет собой программную модель целевой системы. Этот подход повсеместно используется при разработке и отладке программного обеспечения, как правило, для встроенных систем.
