Архитектура информационных систем. Часть 1. Учебное пособие
.pdf
|
|
|
|
Окончание табл.7.11 |
Аптипаттерн |
Характеристика |
|||
|
|
|||
«Управление |
Недостаточная степень информирования сотрудников о вы- |
|||
грибами» |
|
|
полняемом проекте |
|
(Mushroom man- |
|
|||
agement) |
|
|
|
|
|
|
|||
«Расползание |
Неконтролируемое расширение проекта |
|||
рамок» |
(Scope |
|
||
creep) |
|
|
|
|
|
|
|
||
«Замыкание |
на |
Исполнение системы таким образом, что она оказывается |
||
поставщике» |
привязанной к её поставщику 16 |
|||
(Vendor lock-in) |
|
|||
|
|
|||
«Единственный |
Наличие в команде только одного человека, который обладает |
|||
знающий |
чело- |
жизненно-важными сведениями или навыками для выполне- |
||
век» (Single head |
ния проекта |
|||
of |
knowledge, |
|
||
SHOK) |
|
|
|
|
|
|
|||
«Рыцарь на бе- |
Сотрудник, который предпринимает попытки всё «исправить» |
|||
лом |
|
коне» |
в одиночку, никому не сообщая что он сделал и почему |
|
(Knight in |
shin- |
|
||
ing armor, KISA) |
|
|||
|
|
|
|
|
7.3. Фреймворки
Фреймворк (англ. framework – структура, каркас) – совокупность решений по архитектуре, структуре и способам объединения компонентов системы, которые могут быть применены для некоторого множества однотипных задач.
В области программирования под фреймворком понимают множество классов и способов их взаимодействия17.
Одними из наиболее широко известных и активно используемых фреймворков, относящихся к определённым предметным областям, являются следующие:
фреймворк Захмана;
фреймворк TOGAF;
16Известные офисные программы Microsoft Word и Excel, на протяжении ряда лет по умолчанию сохраняли документы в формате, за описание которого требовалось заплатить и дать подписку о неразглашении. Это, в свою очередь, препятствовало реализации качественной поддержки этого формата в конкурирующих программах.
17Одним из первых коммерческих фреймворков приложений стал MacApp, разработанный компанией Apple для платформы Macintosh. Изначально он был создан на объектно-ориентированной версии языка Паскаль, а впоследствии – переписан на C++.
71
фреймворк министерства обороны США.
7.3.1.Фреймворк Захмана
Фреймворк Захмана является одним из первых архитектурных фреймворков, и назван по фамилии его разработчика Джона Захмана (John Zachman). Данный фреймворк был разработан им в компании IBM в 80-х гг. прошлого столетия. Последняя версия (версия 2) фреймворка была представлена компанией Zachman In-
ternational в 2008 г. [13].
Фреймворк Захмана основан на классификации (таксономии) таких категорий, как данные, функциональность, модели, спецификации и документы. Данная классификация строится на основе ответов на ряд простых вопросов, которые позволяют описать различные аспекты функционирования организации:
«что?» – данные;
«как?» – функции и процессы;
«где?» – места расположения системы;
«кто?» – организации и сотрудники;
«когда?» – расписание событий;
«почему?» – мотивы, определяющая функционирование
системы.
Давать ответы на эти вопросы, можно, в свою очередь, с различным уровнем детализации. Такими уровнями являются:
уровень контекста;
уровень модели бизнеса;
уровень модели системы;
технологический уровень;
уровень технического описания
уровень функционирующей системы.
Если аспекты системы использовать в качестве столбцов, а уровни описания – в качестве строк, то может быть сформирована таблица размером 6x6 (рис. 23). Каждая ячейка таблицы содержит соответствующий ему фрагмент описания системы. На каждом уровне описания могут быть выделены соответствующие заинтересованные лица, а именно:
72
|
|
|
Функции и |
Места распо- |
Организации и |
Расписание |
|
|
|
|
Данные |
процессы |
ложения |
сотрудники |
событий |
Мотивы |
|
|
|
|
|
системы |
|
|
|
|
|
|
(что?) |
(как?) |
(где?) |
(кто?) |
(когда?) |
(почему?) |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
.Рис |
Контекст |
Перечень |
Важнейшие |
Территориаль- |
Основные |
Список |
Бизнес-цели |
|
важнейших для |
ное размещение |
основных |
||||||
бизнес- |
внешние |
|||||||
(аналитики) |
бизнеса объек- |
подразделений |
событий и пе- |
и стратегии |
||||
.23 |
процессы |
организации |
||||||
|
тов и понятий |
предприятия |
риодов |
|
||||
|
|
|
|
|||||
Табличное |
|
|
|
|
|
|
|
|
|
Основные сущ- |
Детализирован- |
|
Модель |
|
|
||
|
Модель бизнеса |
ности и взаи- |
ное |
Логистическая |
График |
|
||
|
потока |
Бизнес-план |
||||||
|
(менеджеры) |
модействие |
описание биз- |
система |
работ |
|||
|
работ |
|
||||||
|
|
между ними |
нес-процессов |
|
|
|
||
представление |
|
|
|
|
|
|||
|
|
|
|
|
|
|
||
Модель системы |
|
|
Архитектура |
Архитектура |
|
|
||
|
Логическая |
Архитектура |
пользователь- |
Системные |
Модель |
|||
|
распределенной |
|||||||
|
(архитекторы) |
модель данных |
приложений |
ского |
события |
бизнесправил |
||
|
системы |
|||||||
|
|
|
|
интерфейса |
|
|
||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
фреймворка |
Технологическая |
|
|
|
Детализирован- |
Способы |
|
|
Физическая |
|
Технологи- |
ный |
Детализирован- |
||||
|
Компоненты |
обработки |
||||||
|
модель |
модель |
ческая |
интерфейс |
ные бизнес- |
|||
|
приложений |
системных |
||||||
|
(проектировщики) |
данных |
архитектура |
пользователя |
правила |
|||
|
|
событий |
||||||
|
|
|
|
|
|
|
||
Захмана |
|
|
|
|
|
|
|
|
(разработчики) |
данных |
Коды |
|
троля доступа |
Реализованные |
|
||
|
Техническое |
Описание |
Сетевая |
Архитектура |
способы обра- |
Реализованные |
||
|
описание |
форматов |
программ |
архитектура |
системы кон- |
ботки |
бизнес-правила |
|
|
|
|
|
|
|
событий |
|
|
|
|
|
|
|
|
|
|
|
|
Функционирую- |
|
Функциони- |
|
Действующие |
Функциони- |
Функциони- |
|
|
щее |
Используемые |
Функциони- |
|||||
|
рующие |
сотрудники и |
рующая |
рующие бизнес- |
||||
|
предприятие |
данные |
рующая сеть |
|||||
|
программы |
организации |
система |
стратегии |
||||
73 |
(пользователи) |
|
|
|||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
ведущие аналитики и эксперты;
менеджеры высшего звена (владельцы);
архитекторы;
проектировщики;
разработчики;
пользователи.
Для фреймворка Захмана определены следующие правила заполнения ячеек:
каждому столбцу соответствует собственная уникальная модель;
столбцы можно менять местами, но нельзя добавлять новые столбцы и удалять имеющиеся;
каждая строка (уровень) даёт описание системы с точки зрения некоторого пользователя или группы пользователей;
каждая ячейка содержит описание аспекта реализации системы в виде некоторой модели или документа;
каждая из ячеек должна быть уникальной;
заполнение ячеек должно выполняться последовательно
«сверху вниз».
Уровень контекста отражает самый общий взгляд на предприятие (организацию). На этом уровне осуществляется планирование бизнеса в целом с учетом внешних факторов:
выделяются основные объекты и понятия, влияющие на функционирование организации;
определяются важнейшие бизнес-процессы (например, закупка сырья и полуфабрикатов, производство, сбыт готовой продукции);
указываются места расположения объектов, например, производства;
определяются внешние организации, с которыми осуществляется взаимодействие (поставщики, покупатели, партнеры, конкуренты, вышестоящие организации и т.д.);
устанавливаются события, влияющие на функционирование организации;
формулируется бизнес-цели и стратегия.
74
На уровне модели бизнеса описывается функционирование организации в бизнес-терминах с точки зрения менеджера высшего звена. Здесь устанавливаются основные сущности и отношения между сущностями, описываются используемые в организации бизнес-процессы, выстраивается система логистики и т.д.
На уровне модели системы бизнес-процессы описываются в терминах информационных систем: определяются типы данных, алгоритмы их обработки, обеспечивающие реализацию требуемой функциональности, определяются архитектуры приложений и распределённой системы, разрабатываются интерфейсы пользователя и т.д.
На уровне технологической модели выбираются программно -
аппаратные платформы и технологии реализации, в том числе выбирается тип СУБД, определяются основные объекты и функции приложений, сетевые технологии.
На уровне технического описания специфицируются форматы данных, разрабатываются программные коды, выбираются модели аппаратных средств системы, сетевого оборудования, сетевые протоколы и т.д.
Уровень функционирующего предприятия содержит описание функционирующей системы с точки зрения конечного пользователя. Элементами такого описания являются фактические базы данных руководства пользователя, описания и т. д.
Рассмотрим, каким образом осуществляется детализация отдельных аспектов описания системы при переходе от одного уровня детализации описания к нижележащему уровню.
Аспект ″данные″ на верхнем уровне представлен перечнем важнейших для бизнеса объектов и понятий. Далее на их основе выделяются основные сущности, выявляется взаимодействие между ними, т.е. строится семантическая модель, которая описывается, например, в виде ER-диаграммы18. На уровне 3 полученная модель данных нормализуется, уточняются все атрибуты и ключи. На следующем уровне строится физическая модель данных системы либо иерархия классов, (при использовании объектно-ориентированной подхода). За ним следуют разработанные библиотеки классов, табличные пространства СУБД. Последнему уровню соответствуют
18 ER-модель – модель сущность-связь (от англ. entity-relationship model, ERM) –
модель данных, позволяющая описывать концептуальные схемы предметной области.
75
описания фактических данных с учётом их реальных размеров, и т.п.
Аспект ″процессы и функции″ изначально содержит перечисление важнейших бизнес-процессов. На втором уровне эти бизнеспроцессы детально описываются, а на третьем – представляются в виде архитектуры приложений. Далее на последующих уровнях для каждого приложения системы определяются его компоненты (функции, методы классов), разрабатывается программный код, и генерируются исполняемые модули.
Аспект ″места расположения системы″ описывает территориальное расположение составных частей системы, и соответствующую сетевую инфраструктуру. На верхнем уровне указывается расположение всех основных подразделений предприятия (организации). Затем строится логистическая модель, содержащая эти подразделения и связи между ними, которые определяют их взаимодействие. На третьем уровне определяется соответствие между компонентами информационной системы и узлами сети. Четвертый уровень определяет физическую реализацию, а именно, аппаратные платформы, системное и промежуточное ПО. Протоколы, модели аппаратных средств и программное обеспечение узлов сети определяются на пятом уровне. Шестому уровню соответствует построенная функционирующая сеть.
Аспект «организации и сотрудники» определяет основных участников процесса. На первом уровне выявляется совокупность организаций, являющихся партнёрами, выделяются подразделения предприятия (организации) и их функции. На последующем уровне строится организационная диаграмма. На остальных уровнях поочерёдно устанавливаются участники бизнес-процессов, а также их функции, создаётся архитектура пользовательского интерфейса, определяются полномочия по доступу к отдельным объектам и ресурсам, и их реализация на уровне программных кодов. На шестом уровне представлены действующие сотрудники-пользователи системы.
Аспект «расписание событий» определяет характеристики биз- нес-процессов и работы системы во времени (длительность производственного цикла, сезонность продаж и т.д.). Первый уровень выявляет основные события, влияющие на функционирование системы. На втором уровне описывается график работ. События, изменяющие состояние объектов информационной системы, опреде-
76
ляются на третьем уровне. На уровне технологической модели определяются способы обработки событий (например, прерывания, передача сообщений). На следующем уровне процесс обработки событий описывается программными кодами, а шестой уровень представляет описание функционирования системы во времени, например, в виде log-файлов.
Аспект «мотивы» формулирует мотивации и порядок перехода от бизнес требований к требованиям, предъявляемым к элементам системы. Бизнес-цели и стратегии (верхний уровень) преобразуется в бизнес-план (второй уровень), затем устанавливаются правила и ограничения на выполнение бизнес-процессов. На уровне технологической модели определяются требуемые информационной системой приложения, которые на следующем уровне представляются в виде их физической реализации.
Достоинствами фреймворка Захмана являются:
простота восприятия как техническими специалистами, так и специалистами нетехнического профиля;
поддержка обсуждения сложных проблем на основе относительно небольшого количества несложных понятий, не являющихся техническими;
независимость относительно аппаратных и программных платформ и инструментальных средств разработки.
Недостатками фреймворка Захмана являются:
отсутствие возможности описывать поведение системы в динамике, поскольку каждый элемент таблицы описывает только одно состояние («как есть») (этот недостаток может быть устранён путём перехода к трёхмерной модели в виде куба, содержащего множество состояний, упорядоченных по времени);
отсутствие встроенного механизма отслеживания изменений между элементами таблицы, что требует отслеживать все изменения вручную, проверять актуальность и вносить изменения в элементы таблицы во всех потенциаль-
но зависимых ячейках.
Фреймворк Захмана распространяется и используется на коммерческой основе.
77
Контрольные вопросы
1.Дайте понятие паттерна проектирования.
2.Поясните сущность основных видов системных паттернов.
3.Поясните сущность основных видов структурных паттернов.
4.Поясните сущность основных видов поведенческих паттернов.
5.Поясните сущность основных видов производящих паттернов.
6.Поясните сущность основных видов паттернов параллельного программирования.
7.Дайте понятие антипаттерна проектирования.
8.Поясните сущность основных видов антипаттернов в управлении разработкой ПО.
9.Поясните сущность основных видов антипаттернов в разработке ПО.
10.Охарактеризуйте основные виды антипаттернов в объектноориентированном программирование.
11.Охарактеризуйте основные виды антипаттернов в области программирования.
12.Поясните сущность основных видов методологических антипаттернов.
13.Поясните сущность основных видов организационных антипаттернов.
14.Дайте понятие фреймворка.
15.Какие аспекты и уровни описания используются во фреймворке Захмана?
16.Охарактеризуйте уровни контекста, бизнес-модели и системной модели фреймворка Захмана.
17.Охарактеризуйте уровни технологической модели, детального описания и уровень функционирующей организации фреймворка Захмана.
18.Поясните сущность следующих аспектов фреймворка Захмана: ″используемые данные″, ″процессы и функции″, ″места выполнения процессов″.
19.Поясните сущность следующих аспектов фреймворка Захмана: «организации и персоналии», «управляющие события», «цели и ограничения».
78
20.Укажите достоинства и недостатки фреймворка Захмана.
8.Объектные распределённые системы
8.1. Вызов удаленных процедур
Суть вызова удалённых процедур (Remote Procedure Call– RPC) заключается в применении механизма вызова процедур (подпрограмм, функций) для построения распределённых систем. Данный механизм является реализацией принципа модульного программирования и изначально широко использовался только для вызова локальных процедур, т.е. процедур, выполняемых на том же компьютере, что и вызывающая программа. Однако, при вызове удалённых процедур возникает целый ряд сложностей, связанных с передачей данных между компьютерами, необходимостью прозрачного использования сетей, возможной неоднородностью, связанной с языками программирования и ОС.
Для решения указанных проблем и была предложена технология
RPC.
8.1.1. Основы технологии RPC
Прежде чем начать рассмотрение технологии вызова удалённых процедур, остановимся на технологии вызова процедур локальных. Данная технология предполагает выполнение следующих действий:
вызывающая программа сохраняет состояние процессора (содержимое основных регистров, в том числе содержимое счётчика команд) в стеке;
вызывающая программа передаёт параметры для вызываемой процедуры;
осуществляется выполнение вызываемой процедуры путём перехода на её адрес в памяти и запуска;
вызываемая процедура осуществляет возврат управления на вызывающую процедуру (путём извлечения из стека ранее сохранённого содержимого счетчика команд) и возвращает результат;
вызывающая процедура восстанавливает исходное состояние процессора путём выборки параметров из стека.
79
Технология RPC обеспечивает возможность вызова удалённой процедуры по возможности точно так же, как и процедуры локальной. При этом если вызываемая процедура является удалённой, то вместо локальной процедуры в библиотеку помещается специальная версия процедуры, называемая стабом клиента (англ. stub – заглушка). Стаб запускается аналогично локальной процедуре, но его выполнение сводится только к формированию сообщения для отправки ядру удалённого компьютера.
8.1.2. Схема выполнения RPC
Порядок взаимодействия программных компонентов при осуществлении удалённого вызова процедуры поясняется схемой, приведенной на рис. 24.
компьютер-клиент компьютер-сервер
|
|
Процесс- |
|
|
|
|
|
|
Процедура |
|
||
|
|
клиент |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
вызов |
|
|
|
результат |
|
результат |
|
|||||||
вызов |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Стаб |
|
|
|
|
|
|
Стаб |
|
||
|
|
клиент |
|
|
|
|
|
|
сервера |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ядро |
|
|
|
|
|
|
Ядро |
|
||
|
|
клиента |
|
|
|
|
|
|
сервера |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
сообщение |
|
|
|
|
|
||
|
|
|
|
|
результат |
|
|
|
|
|
||
сообщение-вызов
Рис. 24. Схема выполнения удалённого вызова процедуры
Стаб клиента после его вызова процессом-клиентом заполняет буфер сообщения, в том числе путём занесения в него параметров вызываемой процедуры. После подготовки сообщения к передаче управление передаётся ядру клиента.
Ядро клиента:
осуществляет переключение на контекст ядра с сохранением содержимого регистров и карты памяти;
80
