102 Глава 2
интерфейса (нейтральном к языку программирования) - Interface Definition Lan-
guage (IDL) (с отражением также и экстра-функциональных возможностей – спе-
цификаций поведения (пред- и пост- условий выполнения операций и их результа-
та), спецификаций синхронизации функций во времени, характеристик качества
предоставляемого сервиса - точность, быстрота отклика и др.).
Современные языки программирования, например, Java, имеют расширения,
специально предназначенные для спецификации поведения: iContract, JML (Java
Modeling Language), Jass (Java with assertions), Biscotti и JINSLA (Java INterface
Specification LAnguage). Могут использоваться также методы (языки) VDM
(VDM++), Z (OOZE, Object-Z). Все они обеспечивают описание последовательно-
сти выполнения операций безотносительно ко времени. Для описания синхрониза-
ции операций в распределенных и параллельных системах могут использоваться,
например, Object Calculus, CSP (Communicating Sequential Processes), Piccola, а для
спецификации не функциональных атрибутов - NoFun. Специфицировать можно
также сложность компонента, используя для этого функции библиотек
Apple/SANE™.
В CBSE осуществлен переход от концепции специфицирования собственно
компонентов к концепции специфицирования схем (шаблонов) их взаимодействия
путем определения контрактов – с одной стороны, обязательств компонента (шаб-
лонов взаимодействия, обеспечиваемых компонентом), а с другой стороны, правил
взаимодействия (абстрактных шаблонов взаимодействия в соответствии с ролью в
системе, которая возлагается на компонент).
Таким образом, компонентные системы основываются на четко определен-
ных стандартах и соглашениях для разработчиков компонентов (определяемых
компонентной моделью) и поддерживающей их инфраструктуре (компонентном
каркасе), которая реализует сервисы для модели или приводит ее в действие, оче-
видно упрощая развертывание отдельных компонентов и приложений.
Компонентная модель предлагает:
- стандарты по типам компонентов (например, проекты, формы, beans-
компоненты, COBRA-компоненты, RMI-компоненты, стандартные классы-
оболочки, базы данных, JSP-компоненты, сервлеты, XML-документы, DTD-
документы и т.п., определяемые в используемых языках программирования),
- стандарты схем взаимодействия (методы локализации, протоколы комму-
никации, требуемые атрибуты качества взаимодействия – безопасность, управление
транзакциями и др.),
- соглашения о связывании компонентов с ресурсами (сервисами, предостав-
ляемыми каркасом или другим компонентом, развернутым в данном каркасе). Мо-
дель описывает, какие ресурсы доступны компонентам, и как, и когда компоненты
связываются с этими ресурсами. Каркас, в свою очередь, рассматривает компонен-
ты как ресурсы, подлежащие управлению.
Компонентный каркас (подобно операционной системе, объекты действия
которой - компоненты) управляет ресурсами, разделяемыми компонентами, и пре-
доставляет механизмы для коммуникации (организации взаимодействия) компо-
нентов. Каркас необязательно существует отдельно от компонентов во время рабо-
ты системы, его реализация может быть объединена с реализацией компонента, хо-
тя предпочтительнее первое, как, например, каркас для поддержки компонентной
модели EJB (Enterprise JavaBeans™). Примером визуализации композиции компо-