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

Спецификация ПИК


В качестве ПИК могут быть объекты, созданные в рамках объектно–ориентированного программирования  с наследованием их реализации, а также компоненты в компонентном программировании, для них  наследуется не  реализация, а  интерфейсы. При этом компонент обладает такими  свойствами:

– связывания  компонентов  на последних этапах разработки ПС,

–  инкапсуляции (компонент, как “черный ящик ” без вмешательств в код),

– наследования интерфейсов,

– повторное использование кода.

Для компонентов повторного использования сложилось несколько разных определений.

Определение 1. Компонент ПИК – это  некоторая функция с определенными атрибутами, обеспечивающая функциональность,  взаимодействие со средой и   поведение.

Определения 2. Готовый к повторному использованию компонент представляет собой совокупность методов определенной сигнатуры и типов данных, которые передаются и возвращаются после выполнения метода.

Определение 3.  ПИК – это самостоятельный программный элемент, который  удовлетворяет определенным функциональным требованиям, требованиям архитектуры, структуры и организации взаимодействия в заданной среде, имеет  спецификацию,  помогающую пользователю объединять его с другими компонентами в интегрированную  ПС.

Нас более всего интересует  последнее определение компонента, модель спецификации   которого имеет вид:

ПИК =  ( T, I, F, R, S),

где  T – тип компоненты, I – множество интерфейсов компонента; F – функциональность компонента; R – реализация (скрытая часть) – программный код;

S – сервис для взаимодействия со средой или шаблон развертывания.



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

В зависимости от сложности ПИК  их можно разделить на следующие группы:

– простые компоненты (функция, модуль, класс и пр.);

– объекты–компоненты, имеющие интерфейс, функциональность  и реализацию на любом ЯП, а также возможность дополнять спецификации шаблоном развертывания и интеграции;


– готовые к использованию ПИК (например, beans компоненты в Java, AWT компоненты, классы и др.);

– сложные ПИК типа каркасов, паттернов с элементами  группирования из  нескольких простых ПИК и взаимодействия  между ними при решении одной общей задачи ПС.

Большое количество готовых компонентов требует от разработчиков и пользователей задания их категории,  т.е. метаинформации о том, какие классы совместимы с заведомо определенными семантическими ограничениями описания ПИК, и состоят из:

– интерфейсов, которые реализуют компоненты,

– механизмов повторного использования,

– среды развертывания компонента

– сервиса, поддерживаемого компонентом,

– ролей, которые выполняют компоненты в ПС,

– формализованные языки описания  ПИК.

Современная технология применения ПИК базируются на таких особенностях:

– отображение, как способность ПС анализировать самого себя и описывать свои возможности динамично во время выполнения, а не во время компиляции, что обеспечивает управление  большинством свойств, событий и методов компонента;

–   анализа компонента для определения его возможностей.

– отсутствие средств поддержки  реинженерии программного компонента и необходимости задания параметров  его разработки;

– способности компонента  к рефакторингу  т.е. к трансформации компонента с  сохранением  функциональности, но с возможным изменением  структуры и исходного кода для повторного использования. 

– сохранение параметров конфигурации (шаблонов отладки) в постоянной памяти для  использования в нужное время;

– регистрация сообщений о событиях, полученных  от других объектов либо через ссылки (например, beans компоненты и инструментарий архива в технологии JAVA), а также группирование компонентов в JAR файле для дальнейшего повторного использования;

– использование компонента  в разных языковых средах;

– адаптация ПИК к разным контекстам их использования  и выделение  свойств,  которые мешают повторному использованию и модификации для применения в конкретных целях.



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

Информационная часть содержит описание: назначение, даты изготовления, условия применения (ОС,  платформа и т.п.),   возможностей ПИК,   среды окружения и др.

Внешняя часть – это интерфейс, который  определяет взаимодействие компонента с внешней средой и с платформой, на которой он будет выполняться и   включает  следующие общие характеристики:

– интероперабельность – способность взаимодействовать с  компонентами других сред;

– переносимость – способность компонента  выполняться  на разных платформах компьютеров;

– интеграционость – объединение   компонентов на основе интерфейсов в более сложные ПС;

– нефункциональность –  требование на  обеспечение  безопасности,  надежности и защиты  компонентов и данных.

Внутренняя часть компонента – это программный фрагмент кода, системная или абстрактная структура,  представленные в виде проекта компонента, спецификации и выходного  кода.

Данная  часть компонента состоит  из полей (рис.6.1):

– интерфейса (interfaces),

–  реализации (implementation),

–  схемы развертки (deployment).

                                                Структурные части   компонента

Интерфейс

¨       Один или несколько;

¨       Уникальность именования в пределах системы;

¨       Клиентский или серверный (входной или выходной);

¨       Определенная сигнатура;

¨       Описание методов взаимодействия 

Реализация

¨       Одна или несколько;

¨       Ориентация на конкретную платформу и  операционное окружение

¨       Выбор конкретной реализации;

¨       Поддержка интерфейсов компонента

Схема развертывания

 

¨       Типовость процедуры развертывания;

¨       Управляемость;

¨       Настраиваемость на операционную среду;

¨       Модифицируемость

<


           

                   Рис.6.1.  Структурные части компонента

Интерфейс компонента содержит  обращения к другим компонентам через   описание параметров  средствами языков IDL или APL. В нем  указываются  типы данных  и  операции передачи параметров для взаимодействия компонентов друг с другом. Каждый компонент может реализовать  совокупность интерфейсов. Интерфейс компонента – это видимая часть спецификации компонента, которая является  неизменной и обязательной в описании компонента. Например, система Inspector Components предназначена для изменения необходимых параметров интерфейса компонента без вмешательства в его код.

Параметры интерфейса  могут  определяться типом ПИК и  включать в себя инварианту спецификации с указанием: типа и названия компонента, входных и выходных параметров,  методов компонента и др. В языке  JAVA, например,  можно определять такие типы компонентов: проекты, формы (AWT компоненты), beans компоненты, COBRA компоненты, RMI компоненты, стандартные классы-оболочки, БД, JSP компоненты, сервелети, XML документы, DTD документы и т.п.

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

Развертка - это физический файл или архив, готовый к выполнению, который  передается пользователю и содержит все необходимые инструкции для создания, настройки и функционирования компонента.

Компонент описывается в ЯП, не зависит от операционной среды (например, от среды виртуальной машины JAVA) и от реальной платформы (например, от платформ в системе CORBA), где он будет функционировать.

Расширением понятия компонента есть паттерн – абстракция, которая содержит описание взаимодействия совокупности объектов в общей кооперативной деятельности, для которой определены роли участников и их ответственность.Паттерн является   повторяемой частью программного компонента, как схемы или взаимосвязи контекста описания решения проблемы.


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