Компонентами системы программирования являются

2КОМПОНЕНТНЫЙ ПОДХОД К СЗТ

Технологии программных компонентов (строительных блоков) — классическая. Но в значительной степени нереализованная цель программной инженерии. Предполагается. Что такие технологии используют крупномасштабное повторное использование. Используют проекты с открытой архитектурой и повышают степень детализации программирования до уровня подсистем [5]. Технологии программных компонентов могут быть достигнуты с помощью анализа предметнойобласти-попытки формализовать сходства и различия между системами зрелой и хорошо понятной предметной области [6], После процесса анализа домена. Архитектуры и компоненты для конкретного домена могут быть определены для последующей разработки программного обеспечения.

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

Цель разработки программного обеспечения на основе компонентов состоит в том. Чтобы позволить разработчикам построить программную систему путем интеграции существующих программных компонентов в режиме plug-and-play [1 например. Сборка механического оборудования или мебели в повседневной жизни. В первую очередь необходимо подготовить программные модули. Готовые для разработки программного обеспечения на основе компонентов.

Это означает упаковку программного модуля в форму. Которая может быть легко использована для интеграции с другими компонентами в режиме plug — and-play. При упаковке программного модуля в компонент. Упаковка и перенаправление необходимы для унаследованного программного обеспечения для включения с другими компонентами. Недавно разработанные компоненты могут использовать предоставленные библиотеки промежуточного ПО для инкорпорации.

Существует два типа описаний для указания программного компонента. Первый вид описания связан с реализацией программного компонента. Такого рода описание используется для решения проблемы неоднородности. Строящаяся система. Скорее всего. Будет большой распределенной системой. А составляющие ее компоненты могут быть гетерогенными. Написанными на разных языках программирования и работающими на разных платформах. То описание реализации компонента по крайней мере должно включать используемый язык программирования. Необходимую аппаратную платформу и используемую операционную систему. Согласно этой информации. Базовая система поддержки разработки программного обеспечения на основе компонентов может автоматически проводить необходимые преобразования. Такие как механизмы передачи параметров на уровне языка программирования и представления данных на машинном уровне. Чтобы позволить гетерогенным компонентам взаимодействовать друг с другом.

Второй тип описания программного компонента связан с его интерфейсами. Которые задают типы данных и порядок. Необходимые для взаимодействия с другими компонентами. В общем случае компонент имеет два вида интерфейсов: входящий и исходящий и интерфейсы соответственно. Входящие интерфейсы определяют службы. Предоставляемые компонентом. Или входные данные. Необходимые компоненту. Исходящие интерфейсы описывают выходные данные компонента или параметры. Которые используются для запроса услуг других компонентов. Для ясного именования мы определяем эти два вида интерфейсов компонентов. Взаимодействующих в стиле запрос/ответ. Как обеспеченные и требуемые интерфейсы [1], соответственно. Для компонентов. Взаимодействующих в стиле производитель/потребитель. Эти два типа интерфейсов называются входными и выходными интерфейсами соответственно. Входящие интерфейсы обычно четко определены для программных модулей в традиционных методологиях разработки программного обеспечения. Таких как формальные параметры в определении подпрограмм и определение классов в объектно-ориентированном программировании. Однако исходящие интерфейсы в традиционных подходах к разработке программного обеспечения обычно неявно разбросаны вокруг программных модулей. Это затрудняет интеграцию компонентов. Поскольку разработчику приходится проверять программные модули построчно. Чтобы проверить. С какими другими компонентами они должны взаимодействовать и каким образом они взаимодействуют. Это приводит к тому. Что интеграция должна выполняться на том же уровне языков программирования и семантики. На котором разрабатываются компоненты. Таким образом. Четкая спецификация исходящих интерфейсов является первым шагом к парадигме plug-and-play для разработки программного обеспечения высокого уровня на основе компонентов.

Два компонента не обязательно должны иметь точно такой же интерфейс. Чтобы иметь возможность объединяться друг с другом. Здесь мы определяем концепцию под названием compatibly match для решения проблемы совместимости между компонентами. Компонент А считается совместимым с другим компонентом В, если входной или предоставленный интерфейс В является подмножеством или может быть преобразован в подмножество выходного или требуемого интерфейса А. Разница между этими двумя компонентами может быть устранена с помощью специального компонента. Называемого преобразователем или адаптером который выполняет преобразование или сокращение данных. Передаваемых между компонентами. Другой специальный компонент называется соединителем [7], который облегчает взаимодействие между более чем двумя компонентами. Соединитель должен учитывать ситуацию. Когда два интерфейса. Обязательный и предоставленный. Задают одни и те же данные. Но используют разные имена для этих данных. Это проблема псевдонима имени. Кроме того, соединитель инкапсулирует детали взаимодействия. Чтобы компонент мог участвовать во многих различных сценариях взаимодействия. Не приспосабливаясь к другим компонентам. Сам соединитель представляет собой особый вид взаимодействия между компонентами и может быть повторно использован для координации других наборов компонентов с тем же стилем взаимодействия.

После четкого указания компонентов требуется базовая вычислительная модель для разработки программного обеспечения на основе компонентов. Эта модель должна обеспечить формальную модель композиции [8] и укажите. Как компоненты взаимодействуют и сотрудничают друг с другом. Для стиля взаимодействия производителя и потребителя модель потока данных является естественным кандидатом на вычислительную модель. Однако выразительная сила модели потока данных недостаточно велика для описания сложных систем. Для таких систем необходима более сложная и, возможно. Специфичная для конкретного приложения вычислительная модель. На основе этих вычислительных моделей могут быть разработаны различные языки спецификаций интеграции компонентов для облегчения разработки программного обеспечения на основе компонентов развитие. Эти языки спецификации высокого уровня имеют много преимуществ. Во-первых, они облегчают работу по интеграции компонентов и. Таким образом. Способствуют крупномасштабному повторному использованию программного обеспечения посредством разработки программного обеспечения на основе компонентов. Во-вторых, они способствуют повторному использованию архитектурного уровня; программы. Написанные на языках спецификаций. Представляют собой специфические программные архитектуры для определенных программных систем и. Таким образом. Могут быть повторно использованы при разработке аналогичных систем в той же прикладной области. Одна важная особенность. Которую должен обеспечить язык спецификации интеграции компонентов. — это возможность описания новых стилей взаимодействия между компонентами. То есть определения новых типов соединителей.