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

       

Типы компонентных структур


Компонентная модель –

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

 

Каркас – представляет собой высокоуровневую абстракцию проекта программной системы, в которой отделены функции компонентов от задач управления ими. То есть, бизнес–логика  – это функции компонентов, а каркас задает правильное и надежное  управление ими. Каркас объединяет множество взаимодействующих между собою объектов в некоторую интегрированную среду для решения заданной конечной цели. В зависимости от специализации каркас называют “белым или черным ящиком”.

Каркас типа “белый ящик” включает абстрактные классы для представления цели объекта и его интерфейс. При реализации эти классы наследуются в конкретные классы с указанием соответствующих методов реализации. Использование такого типа каркаса более характерно для 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, в которой реализована  иерархия механизмов  интероперабельности – от самого верхнего уровня (поддержка разных ЯП) к самому нижнему (с учетом архитектуры).


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