Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_14_Инженерия приложений.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
148.99 Кб
Скачать

На современном рынке программных продуктов циркулируют следующие виды готовых компонентов:

– структуры данных,

– процедуры и функции на ЯП высокого уровня,

– алгоритмы, программы,

– классы объектов и абстрактные классы,

– API – модули,

– Веб–ресурсы,

– сервисы и среда развертывания (например, компоненты типа Java Beans, CORBA, COM, .NET)

– готовые абстрактные решения – паттерны и фреймы.

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

6.2. Спецификация пик

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

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

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

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

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

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

Определение 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), где он будет функционировать.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]