Методы и средства инженерии программного обеспечения

       

Методы интеграции (композиции) компонентов


Термин интеграция олицетворяет собой действия по обеспечению способа взаимодействия разных  компонент (аппаратных и программных) и  представления данных в рамках одной системы или среды. К интеграционным операциям можно отнести: сборку, комплексирование, композицию,  взаимодействие и др. Некоторые из этих операций (например, комплексирование) означают объединение компонент по в единое целое ( в комплекс, систему, агрегат и др.). Такой подход к решению проблемы интеграции  соответствовал периоду бурного развития и существования больших машин (mainframes),  которые позволяли объединять программные компоненты  в монолитные системы и комплексы больших размеров (до 100–200тыс. команд). Одновременно с этим интеграция коснулась и данных (файлы, БД,  интегрированные БД и др.).

 

Однако с приходом на смену больших машин разных видов малых  компьютеров, объединяемых  в локальные и глобальные сети проблема интеграции приобрела другой смысл. Понятие монолитной системы  заменилось интегрированной, распределенной  системой или средой, включающей все необходимые средства  для обеспечения  единообразного взаимодействия с ними разных пользователей. Появились и в настоящее время функционируют крупные международные распределенные системы (RPC Sun, OSF DCE, COM, SOM, CORBA и др.), которые предоставляют  средства интеграции программных компонент в каркасы и  конфигурации, основанные на стандартной  модели  взаимодействия компонент  в открытых системах (Open Systems Interconnection – OSI) [1].

Эталонная модель OSI имеет семь уровней, на каждом из них обеспечивается взаимосвязь компонентов. На верхнем уровне  модели обеспечивается доступ  к служебным  программам компьютерной сети (передача данных, почтовая служба, управление сетью).  Приложение передает запросы служебным  программам и процессам сети через уровень представления данных, которые осуществляют кодирование (перекодирование) данных и представление их в соответствующую для заданной машины форму. Связывающим звеном  являются прикладные элементы обслуживания типа  ASF (Application Service Elements),  а также множество других служебных функций.


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

– горизонтальная модель  для  связи  программных процессов на разных компьютерах одного уровня;

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

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

Распределенные системы общего назначения построены согласно   модели OSI и предоставляют прикладным приложениям готовый набор ([20]): сервисных операций (управление и хранение объектов,  обслуживание очередей и запросов к БД, др.);  общих  средств обслуживания приложений (администрирование, управление интерфейсами, др.);  средств описания и поддержки взаимодействий объектов приложений, инструментариев (автоматизация приложений и БД, генераторы интерфейсов взаимодействия и др.);  типовых функциональных  компонентов  для предметных областей: медицины, финансов, страхования и др.

К распределенным  системам, обеспечивающим взаимодействие компонентов относятся:

– ОNС  SUN,  OSF DSE [2], основанные на механизме  вызова удаленных процедур;

–  DCOM [3] c возможностью связи распределенных объектов и документов;



 ОМА (Object Managment Architecture)  [4] с широким набором  средств взаимодействия объектов c помощью брокера  с помощью брокера объектных запросов;

– система JAVA [5] , основанная на методе вызова RMI и  др.

 

К основным механизмам взаимодействия  компонентов  и объектов сетевой среды на уровне внешних языков относятся:

– RPC–язык (Remote Procedure Call)  вызова удаленных процедур;

–  язык описания интерфейсов (Interface Definition Languge – IDL),



– механизм посылки запросов RMI в ЯП Java [5–7].

 

RPC–механизм  включает языки высокого и низкого уровня для описания интерфейса взаимодействующих удаленных компонентов. На языке высокого уровня в интерфейсе компонента описывается  оператор RPC

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

Данный механизм обеспечивает взаимосвязь одного процесса   с удаленно расположенным от него другим процессом (например,  сервером) на другой машине   с помощью протоколов UDP и TCP/IP. Связывающим звеном между вызываемым и вызывающим процессом является  интерфейс объекта (stub) или посредник клиента при его взаимодействии с сервером   сети. Вызывающий объект  клиенте обращается к  stub–клиента для посылки  сообщения stub–сервера в целях выполнения удаленной процедуры.

Механизм посылки запроса в системе CORBA включает оператор вызова удаленного метода/функции объекта, системные средства его поддержки с помощью протоколов IIOP,  GIOP, которые выполняет  брокер ORB. Оператор запроса и его параметры формально описываются на IDL – языке  и  размещаются в интерфейсе объекта  (stub–клиента) для  обращения к серверу через интерфейс  stub / skeleton в целях выполнения указанного в сообщении  удаленного метода.

Интерфейсы (stub и skeleton) отображаются  в ЯП  объектов с помощью IDL–генератора. Функции посылки запроса выполняет брокер ORB системы CORBA, которая содержит:

– язык IDL  и генератор трансформации описания интерфейса в соответствующий ЯП;

– общий объектный сервис  (Common Object  Services) для управления событиями,  транзакциями,  интерфейсами,  запросами и др.;

– общие средства  (Common Facilities) – электронная почта, телекоммуникация,  управление информацией, эмулятор программ  и др.  для использования любыми  группами компонент и приложений.



Брокер ORB является главной парадигмой  взаимодействия компонентов в разных приложениях и   средах.  Он реализован многими фирмами и содержится в системах: COM,  SOM, Nextstep и др. Этим  обеспечена совместимость  программных компонентов друг с другом, сделанных для  разных сред, а также  взаимодействие между самими брокерами в объединенных сетях.

Вызов удаленного метода RMI   реализован в системе JAVA и предназначен для  проектирование приложений  со стандартным вызовом удаленных  компонентов. По своим функциям этот метод  аналогичен функциям брокера ORB,  обеспечивает передачу сообщений, их синхронизацию  и освобождение памяти  после выполнения компонентов. Виртуальная машина (virtual machine) работает с byte–кодами компонентов на других ЯП и  интерпретирует  коды  той машины, для  которой  компонент был скомпилирован. Иными словами, разработан новый подход к проектированию связей и управлений объектами в  распределенных  системах, которые описываются в  языках  JAVA и С++.

Таким образом, рассмотренные средства современных распределенных систем  – это средства высокого уровня для прикладного программирования компьютерных систем.


Содержание раздела