Языковые средства описания компонентов и методов интеграции
Компонент – это единица интеграции, специфицированная так, чтобы можно было ее объединять с другими компонентами в ПС. Важнейшее свойство компонента – отделение его интерфейса от реализации, в отличие от объектов в объектно–ориентированных ЯП, в которых реализация класса отделена от определения класса [1]..
Интеграция компонентов и развертывания – независима от ЖЦ разработки ПС и замена в ней компонента не требует перекомпиляции всей ПС или переналадки всех связей между компонентами. Доступ к компоненту проводится через его интерфейс. Компонент включает спецификацию функциональных и нефункциональных свойств (атрибутов качества – точность, надежность, секретность и др.) требований, сценариев, тестов и т.п. Текущие компонентные технологии используют формальные средства спецификации только функциональных свойств компонентов, включающих описание синтаксиса операций и атрибутов, а для описания нефункциональных свойств компонентов формальный аппарат пока отсутствует.
Более крупным образованием компонентов, используемым в практике программирования, являются паттерны и каркасы [2].
Паттерны определяют повторяемые решения для проблемы объединения компонентов в структуры. Для каждого объединения определяется абстракция общения (взаимодействия) определенной совокупности объектов в кооперативной деятельности, для которой задаются абстрактные участники, их роли, взаимоотношения и распределение полномочий. Они классифицированы по трем уровням абстракции. На верхнем уровне – архитектура системы, которая скомпонована из компонентов, называется архитектурным паттерном, охватывающим общую структуру и организацию ПС, набор подсистем, роли и отношения между ними. На среднем уровне абстракции паттерн уточняет структуру и поведение подсистем, компонентов ПС и связей между ними.
На
нижнем уровне паттерн – абстракция определенной цели, которая зависит от выбранной парадигмы его представления и ЯП.
Каркас представляет собой типичную повторно возникающую ситуацию на уровне модели, в которой определенная структура проекта имеет не доопределенные элементы с пустыми слотами для занесения в них доопределенных свойств компонентов.
При сборке отдельно построенных программных частей в каркас, компоненты инкапсулируются и определяются контекстом сборки, после чего каркас становится контейнером, применяемым далее как повторный компонент или ПИК.
Спецификация каркаса – это определение требуемых компонентов, как вариантов наполнения контейнера. Каркас концентрирует общие свойства и правила инкапсулированных компонентов, а контракты задают спецификацию отношений между конкретными компонентами, которые отличаются от спецификации компонентов как частей композиции. Конструктивно специфицированный интерфейс и функциональные свойства компонентов значительно повышают их надежность и устойчивость работы, заданные в нефункциональных характеристиках компонентов.
Между каркасами и паттернами связаны определенными отношениями: каркасы физически реализованы с помощью одного или более паттернов, которые могут рассматриваться как инструкция для реализованных проектных решений.