Типы компонентных структур
Компонентная модель – отражает многочисленные проектные решения по композиции компонентов, определяет типы паттернов компонентов и допустимые между ними взаимодействия, а также снижает время развертывания программной системы в среде функционирования.
Каркас – представляет собой высокоуровневую абстракцию проекта программной системы, в которой отделены функции компонентов от задач управления ими. То есть, бизнес–логика – это функции компонентов, а каркас задает правильное и надежное управление ими. Каркас объединяет множество взаимодействующих между собою объектов в некоторую интегрированную среду для решения заданной конечной цели. В зависимости от специализации каркас называют “белым или черным ящиком”.
Каркас типа “белый ящик” включает абстрактные классы для представления цели объекта и его интерфейс. При реализации эти классы наследуются в конкретные классы с указанием соответствующих методов реализации. Использование такого типа каркаса более характерно для OOП.
Для каркаса типа «черный ящик» в его видимую часть выносятся точки, разрешающие изменять входы и выходы.
Композиция компонентов включает четыре возможных класса:
– композиция компонент–компонент обеспечивает непосредственное взаимодействие компонентов через интерфейс на уровне приложения;
– композиция каркас–компонент обеспечивает взаимодействие каркаса с компонентами, при котором каркас управляет ресурсами компонентов и их интерфейсами на системном уровне;
– композиция компонент–каркас обеспечивает взаимодействие компонента с каркасом по типу «черного ящика», в видимой части которого находится спецификация для развертывания и выполнения определенной сервисной функции на сервисном уровне;
– омпозиция каркас–каркас обеспечивает взаимодействие каркасов, каждый из которых может разворачиваться в гетерогенной среде и разрешать компонентам, входящим в каркас, взаимодействовать через их интерфейс на сетевом уровне.
Компоненты и их композиции, как правило, запоминаются в репозитарии компонентов, а их интерфейсы к репозитарии интерфейсов.
Повторное использование в компонентном программирование в общем случае представляет собой любые порции формализованных знаний, добытые во время реализации программных систем и используемых в новых разработках [13–15].
Повторно используемые компоненты (ПИК} – элементы знаний о минувшем опыте разработки систем, которые могут использовать не только их разработчиками, но и путём адаптации к новым условиям. ПИК упрощает и сокращает сроки разработки новых программных систем. Высокий уровень стандартизации и распространение электронных коммуникаций (сети Интернет) обеспечивает довольно простое получение и широкое использование готовых компонентов в разных проектах за счет:
– отражения фундаментальных понятий приложения;
– скрытия способа представления и предоставления операций обновления и получения доступа;
– обработки исключительных операций в приложении.
При создании компонентов, предназначенных для повторного использования, общий интерфейс должен содержать операции, которые обеспечивают разные способы использования компонентов. Возможность повторного использования приводит к усложнению компонента, а значит к уменьшению понятности. Поэтому требуется некоторый компромисс между ними.
Как и любые элементы промышленного производства, компоненты должны отвечать определенным требованиям, иметь характерные свойства, структуру, механизмы использования и др. В UML все компоненты делятся на три типа:
1) для развертывания в компьютерной среде;
2) как рабочие продукты (файлы текстов с программами и данными, элементы с описаниями архитектуры и правилами генерации конечного кода и др.);
3) для среды выполнения (временные программные объекты, файлы, таблицы базы данных и др.).
Главным преимуществом создания программных систем из компонентов является уменьшение затрат на разработку за счет:
– выбора готовых компонентов с подобными функциями, пригодными для практического применения;
– настраивания готовых компонентов на новые условия, которые связаны с меньшими усилиями, чем разработка новых компонентов.
Поиск готовых компонентов основывается на их классификации и каталогизации. Метод классификации предназначен для представления информации о компонентах с целью быстрого поиска и отбора. Метод каталогизации обеспечивает физическое размещение компонентов в репозитариях для непосредственного доступа к ним в процессе интеграции.
Интероперабельность компонентов.Сложились ряд подходов для решения этой проблемы, наиболее часто они связаны с анализом кода для внесения изменений при переносе его в другую среду. Механизмы обеспечения интероперабельности имеют разные концепции и реализации, т.е. приведение представления одного компонента к форме, понятной второму либо к некоторому промежуточному состоянию.
Стандартный механизм интероперабельности для связи между Java и C/C++ компонентами использует Java Native Interface (JNI) при реализации обращения из Java–классов к функциям и библиотекам на других ЯП. Механизм реализации включает: анализ Java–классов для поиска прототипов обращений к функциям на C/C++; генерацию заглавных файлов для использования их при компиляции C/C++ программ. Java–класс “знает”, что в нем помещается обращение не к Java–методу. Схема связи Java ® C/C++ [16].
Другой вариант реализации этой задачи предлагает технология Bridge2Java фирмы IBM alpha Works. В ней обеспечивается обращение из Java–классов к COM–компонентам [5]. Для COM–компонента генерируется оболочка, которая включает прокси–класс для преобразования данных с помощью стандартной библиотеки типов и вызов COM–функций. Данная схема не требует изменений в исходном Java–классе, а COM–компоненты могут быть написаны на разных ЯП.
Механизм интероперабельности предлагает и платформа .Net [17] с помощью промежуточного языка Common Language Runtime (CLR), в который транслируются коды, написанные в ЯП (C#, Visual Basic, C++, Jscript) и интегрируются эти компоненты. При этом используется библиотека стандартных классов независимо от языка реализации и доступа к готовым компонентам без ориентации на эту платформу (например, к COM–компонентам). С этой целью используются стандартные средства генерации оболочки для COM–компонента в представление .Net–компонента, а также для приведенных выше ЯП.
Особенности ОС и архитектур компьютеров учитывает среда CORBA, в которой реализована иерархия механизмов интероперабельности – от самого верхнего уровня (поддержка разных ЯП) к самому нижнему (с учетом архитектуры).