обе стороны сертификата |
Средства программной инженерии
В данном методическом пособии основным объектом методов проектирования ПС на процессах ЖЦ является компонент. Cредствами их описания являются: ЯП (JAVA, C++), язык описания интерфейсов IDL, язык моделирования систем UML, языки взаимодействия (вызов, протокол, сообщения) в распределенных средах, а также разные виды инструментальной поддержки этих описаний в Rational Rose, а также в системах CORBA, СОМ, JAVA, и др.) [12.1-12.6]. Краткая характеристика инструментов проектирования, тестирования и оценки качества системы Rational Rose приведена в "Малая энциклопедия инструментов ООП"
12.1. Типы компонентов
Компонент - это единица интеграции, специфицированная так, чтобы ее можно было объединять с другими компонентами в ПС. Важнейшее свойство компонента - отделение его интерфейса от реализации, в отличие от объектов объектно-ориентированных ЯП, для которых реализация класса отделена от определения класса [12.1].
Интеграция компонентов и их развертывание - независима от ЖЦ разработки ПС и замена в ней компонента не требует перекомпиляции всей ПС или переналадки всех связей между компонентами. Доступ к компоненту проводится через его интерфейс. Компонент включает спецификацию функциональных и нефункциональных свойств (атрибутов качества - точность, надежность и др.), требований, сценариев, тестов и т.п. Текущие компонентные технологии используют формальные средства спецификации функциональных свойств компонентов, включающих описание синтаксиса операций и атрибутов, а для описания нефункциональных свойств компонентов формальный аппарат пока отсутствует.
Более крупные образования компонентов, используемые на практике - паттерны, каркасы и контейнеры [12.3, 12.7].
Паттерн определяет повторяемое решение в проблеме объединения компонентов в сложную структуру. Для каждого объединения определяется абстракция взаимодействия (общения) определенной совокупности объектов в совместной кооперативной деятельности, для которой задаются абстрактные участники, их роли, взаимоотношения и распределение их полномочий. Они классифицированы по трем уровням абстракции. На верхнем уровне - архитектура системы, которая скомпонована из компонентов, называется архитектурным паттерном. Он охватывает общую структуру и организацию ПС, набор подсистем, роли и отношения между ними. На среднем уровне абстракции паттерна детализируется структуру и поведение подсистем, компонентов ПС и связей между ними. На нижнем уровне паттерн - абстракция определенной цели, которая зависит от выбранной парадигмы его представления в ЯП.
Каркас - это общая структура, типовая для ряда систем с повторно возникающей ситуацией на уровне модели, имеет не доопределенные элементы с пустыми слотами для занесения в них доопределенных свойств отдельных компонентов. При сборке отдельно построенных программных частей в каркас компоненты инкапсулируются и определяются контекстом сборки, после чего каркас становится контейнером, применяемым далее как повторный компонент или ПИК. Спецификация каркаса - это определение требуемых компонентов с общими свойствами и правила инкапсуляции компонентов для наполнения ими контейнеров. Контейнеры задают спецификацию отношений между конкретными компонентами, которые отличаются от спецификации компонентов как частей композиции. Конструктивно специфицированный интерфейс и функциональные свойства компонентов значительно повышают их надежность и устойчивость работы системы, показатели которых задаются в виде нефункциональных характеристик компонентов.
Каркасы и паттерны связаны такими отношениями: каркасы физически реализованы с помощью одного или более паттернов, которые могут рассматриваться как инструкции для реализованных проектных решений в нем.
Контейнер - это оболочка, внутри которой реализуется функциональность компонента. Взаимосвязь и взаимодействие контейнера с сервером строго регламентирована и осуществляется через стандартизированные интерфейсы. Контейнер руководит порождением компонентов и их экземпляров с соответствующей функциональностью. Внутри контейнера может существовать произвольное количество экземпляров-реализаций, каждая из которых имеет уникальный идентификатор. Он имеет два типа интерфейсов: для взаимодействия с другими компонентами и с системным сервисом, необходимым для его функционирования и реализации специальных функций, в которых принимают участие несколько компонентов.
Первый тип интерфейса (Home interface) управляет экземплярами компонента и реализациями методов их поиска, создания и удаления. Второй тип интерфейсов обеспечивают доступ к реализации функциональности компонента. Фактически с каждым экземпляром связан свой функциональный интерфейс (Function interface). Экземпляры внутри контейнера могут взаимодействовать друг с другом с помощью системных сервисов к экземплярам, расположенным в других компонентах. Сами компоненты могут размещаться в компонентной среде, как внутри одного сервера, так и в разных серверах для разных платформ.
Компонентная среда включает следующие типы объектов:
- серверы компонентов;
- контейнеры компонентов;
- реализации функций, представленные как экземпляры внутри контейнеров;
- клиентские компоненты интерфейсы, которые обеспечивают конечного пользователя (Веб-клиенты, реализации графического интерфейса и т.д.);
- реализованную компонентную программу.
Каждый из типов объектов реализуется отдельно, имеет свои спецификации и требования, а также правила взаимодействия с другими объектами среды. Все типы объектов образуют цепочку, которая определяет порядок их реализации в этой среде.
12.2. Средства ЯП JAVA для описания компонентов
12.2.1. Новый вид компонентов в системе JAVA
В языке JAVA в качестве готовых компонентов используются beans компоненты, которые задают описание функциональности, интерфейса и шаблона развертывания как интеграции компонентов новые ПС. Он может повторно использоваться в разных средах для выполнения функций самостоятельно или в составе с другими компонентами. Класс можно сделать beans компонентом, внеся небольшие изменения специальной утилитой системы BDK (Bean Development Kit) [12.3-12.6].
Компоненты beans подразделяются на три категории:
- Компоненты сеансов, которые поддерживают правила бизнеслогики, ориентированы на состояния и могут быть связаны с конкретным клиентским сеансом.
- Компоненты сущностей используются для связи с БД непосредственно и предоставляют данные в объектной форме.
- Компоненты, которые управляются событиями, функционируют для получения сообщений, поступающих от системы обмена сообщениями JMS (Java Messaging System), и реагируют на них.
При создании beans компонентов используются интерфейсы: home для управления ЖЦ компонента и интерфейс Remote для вызова и реализации компонента в среде виртуальной машины JVM. Каждый компонент beans имеет свой контейнер, который вызывает и регулирует все аспекты ЖЦ, а также интерфейс.
Основной особенностью beans компонентов в JAVA - это отображение способности анализировать самого себя и реализовывать свои возможности динамически во время выполнения, а не во время компиляции. С этой целью используется пакет Java.lang.reflect, который входит в ядро API, поддерживает отображение разных компонентов и содержит интерфейс - member, определяющий методы получения информации о полях и структуре классов.
Для задания свойств, событий и методов beans компонентов имеется два способа. Первый способ - использование согласованных имен, другой - создание дополнительного класса для предоставления требуемой информации.
Beans компонент можно рассматривать как подмножество состояний, которые определяют его поведение и внешний вид. Эти свойства подразделяются на простые, булевы, индексированные и связанные. Простые свойства имеют одиночные значения, могут быть идентифицированы проектными шаблонами (например, свойства для read/write, read-only, write-only ). Булевы свойства принимают значение true или false и идентифицируются проектными шаблонами. Индексированные свойства состоят из множества индексированных значений, задаваемых проектным шаблоном. Связанные свойства отражают событие без изменения функциональности компонента. Информационные массивы свойств ( PropertyDescriptor ), событий ( EventSetDescriptor ) и методов ( MethodDescriptor ) содержатся непосредственно в стандартном шаблоне BeanInfo. При реализации этих свойств разработчик может удовлетворить требования пользователя. Ограниченное свойство отражает событие, значение свойства которого изменяется, и отсылает событие объектам, которые могут отклонить измененные свойства или поддержать их в зависимости от среды выполнения. С помощью меню (File, Save) инструмента BDK можно сохранять компоненты в JAR архиве следующей последовательностью действий:
- создать каталог для нового Beans компонента;
- создать один или несколько исходных JAVA файлов, которые реализуют компонент, и скомпилировать их;
- создать файл описания свойств компонента;
- сгенерировать JAR файл;
- запустить BDK инструментарий для сохранения нового компонента;
- протестировать компонент.
Для взаимодействия разных компонентов используется механизм вызова удаленного метода RMI, который дополняет язык JAVA стандартной моделью EJB (Enterprise Java Beans) компании Sun. К ней подключены классы языка JAVA, их атрибуты, параметры среды и свойства группирования компонентов в прикладную программу для выполнения на виртуальной машине JVM. Механизм развертывания JAVA-компонентов типа beans на сервере описывается в программах на исходном языке, а сервер создает для них оптимальную среду для выполнения задач EJB.
Для реализации и повторного использования ПИК типа beans имеются следующие шаблоны в Java for Forte:
- Beans для создания нового компонента, формирования каркаса компонента с простыми свойствами и возможностью автоматического их изменения;
- BeanInfo для интеграции beans компонентов и обеспечения взаимодействия;
- Customizer для создания панели, на которой размещаются элементы, используемые для управления конфигурацией beans компонентов;
- Property Editor для создания класса, который используется во время проектирования и редактирования свойств beans компонентов.
Разработано ряд beans компонентов, которые формируют интегрированную архитектуру приложения в системе Microsoft Active. Контейнеры этих компонентов поддерживаются Internet Explorer, Microsoft Office и Visual Basic. Кроме того, на сайте www.java-sun.com можно загрузить инструментальную систему Bridge for Active в целях применения Java Beans компонентов в контейнерах Active, а также загрузить инструментарий Java Beans Migration Assistant for Active для анализа элементов управления Active и генерации каркаса JavaBean компонентов.Таким образом, язык JAVA поддерживает стандартные механизмы для работы с компонентами как со строительными блоками, имеющими следующие особенности:
- свойства, события и методы управления;
- параметры времени разработки основа реинженерии компонента;
- параметры отладки конфигурации сохраняются и используются в заданное время;
- beans компоненты регистрируют сообщения о событиях или сами их генерируют;
- ПИК сохраняется в архиве системы JAVA с помощью шаблона JAR Contents самостоятельно или в виде группы;
- каждый компонент может описываться разными ЯП.
Для всех классов компонентов компании предлагаются шаблоны их интеграции в программную разработку в Forte for Java [12.5, 12.6].