Опубликован: 24.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 10:

Инженерия приложений и предметной области

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >

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

В качестве ПИК могут быть объекты, созданные в рамках объектно-ориентированного программирования (например, огромная библиотека повторно используемых классов в С++) с наследованием их реализации. В компонентном программировании наследуется реализация компонента и его интерфейсы.

Пример ПИК - контейнерные классы, которые хранят структуры данных с правилами их запоминания или выдачи очередного элемента, входящего в контейнер. Механизм контейнеров реализован в С++ в виде так называемых шаблонов (templates) и их библиотек ПИК этого типа.

Каждый компонент имеет такие аспекты и свойства:

  • связь компонентов через интерфейсы на этапах разработки системы;
  • инкапсуляция компонента, как "черный ящик" без возможности вмешательства в выходной код);
  • наследование интерфейсов, их изменение и настройка на применение;
  • повторное использование исходного или выходного кода.

С общей точки зрения компонент определяется поразному в зависимости от среды и функций, приведем некоторые их них [9.1, 9.2].

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

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

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

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

Эти и другие определения приведены в публикациях, они отображают разные тонкости определения или использования компонента. Мы остановимся на двух последних определениях компонента, модель спецификации которого имеет следующий вид:

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

где T - тип компонента,

I - множество интерфейсов компонента;

F - функциональность компонента;

R - реализация, скрытая часть - программный код;

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

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

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

  • простые компоненты (функция, модуль, класс и пр.);
  • объектыкомпоненты, имеющие интерфейс, функцию и реализацию на любом ЯП, а также возможность дополнять спецификации шаблоном развертывания и интеграции;
  • готовые к использованию ПИК (например, beans компоненты в Java, AWT компоненты, классы и др.);
  • сложные ПИК типа каркасов, паттернов с элементами группирования нескольких простых ПИК в законченную функциональность и их взаимодействие между собой при решении одной общей задачи системы.

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

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

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

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

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

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

  • интероперабельность - способность взаимодействовать с компонентами других сред;
  • переносимость - способность компонента выполняться на разных платформах компьютеров;
  • интеграционность - объединение компонентов с помощью интерфейсов в более сложные структуры ПС;
  • нефункциональность - требование к безопасности, надежности и защиты компонентов и данных.

Внутренняя часть компонента - это программный фрагмент кода, системная или абстрактная структура, представленные в виде каркаса компонента, спецификации и выходного кода (табл. 9.1). Данная часть компонента состоит из полей:

  • интерфейса (interfaces);
  • реализации (implementation);
  • схемы развертки (deployment).

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

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

Таблица 9.1. Структурные части компонента
Свойства элементов структуры компонента
Интерфейс Реализация Схемы развертывания
  • Один или несколько
  • Уникальность именования
  • Клиентский или сервернынй
  • Сигнатура операции
  • Методы взаимодействия
  • Одна или несколько
  • Ориентация на платформу и среду
  • Выбор конкретной реализации.
  • Поддержка интерфейсов компонента
  • Типовость процедуры развертывания
  • Конфигурация
  • Управляемость
  • Настраивание на операционную среду
  • Модификация

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

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

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

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

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >
Александр Медов
Александр Медов

Здравствуйте,при покупке печатной формы сертификата,будут ли выданы обе печатные сторны?

Александр Медов
Александр Медов

Здравствуйте, прошел курс МБА Управление ИТ-проектами и направил документы на получение диплома почтой. Подскажите, сроки получения оного в бумажной форме?

:

Мария Уварова
Мария Уварова
Россия
Владислав Росс
Владислав Росс
Россия, Москва