Проектирование и реализация встраиваемой библиотеки управления задачами на базе платформы Java

 

Сероштан С.Ю., Гордеев А.Г., Гриценко А.А., Теплинский С.В.

 

Інформатика та комп'ютерні технології - 2008 / Матеріали IV науково-технічної конференції студентів, аспирантів та молодих вчених - 25-27 листопада 2008, ДонНТУ, Донецьк - 2008 - 530 с.; с іл.

 

На данный момент существует большое количество устройств, которые поддерживают платформу Java, в том числе мобильные и встраиваемые системы (например, Siemens TC65r2). При разработке программного обеспечения для таких систем важным вопросом является использование модели параллельных вычислений, предоставляемой платформой Java[1]. В данной работе рассмотрены вопросы проектирования и реализации встраиваемой библиотеки управления задачами, которая позволяет организовать параллельную работу нескольких задач с использованием базовых средств Java (то есть средств платформы Java версии 1.0).

 

Постановка задачи

В общем случае приложение можно рассматривать как набор задач, которые выполняются параллельно (что является характерным для мобильных и встраиваемых устройств)           (рис. 1).

 

Рис. 1. Приложение, представленное в форме множества задач

 

Так как виртуальная машина Java обеспечивает низкоуровневые механизмы управления потоками, при разработке приложения важным моментом является использование средств платформы Java для организации высокоуровневого управления набором задач. При этом существенными отличиями от проектирования низкоуровневых библиотек управления потоками являются:

·        наличие потоковых примитивов, описывающих физические понятия, скрывающих детали реализации и имеющих высокоуровневый интерфейс;

·        отсутствие возможности непосредственного управления выполнения потоками (то есть отсутствие средств воздействия на супервизор или диспетчер, позволяющих получить предсказуемый результат);

·        децентрализация в управлении потоками (понятие основного потока, как такового отсутствует, хотя предоставляются средства для создания сервисных потоков – потоков демонов).

 

Порядок построения библиотеки

В общем случае построение библиотеки включает следующие этапы, которые могут выполняться итерационно (в особенности последние):

·        выработка требований (определение классов и свойств задач, определение контрактов управления задачами и так далее) – для документирования могут применяться диаграммы прецедентов языка UML[2];

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

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

·        реализация, тестирование, улучшение кода и так далее.

 

Построение библиотеки

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

На рис. 2 показан один из возможных вариантов построения архитектуры такой библиотеки.

 

Рис. 2. Архитектура библиотеки управления потоками

 

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

На рис. 3 показан проектный уровень данной системы управления задачами, который в полной мере детализирует реализацию системы, в том числе отвечает на вопросы использования примитивов платформы Java в работе системы.

 

Рис. 3 Уровень проектирования системы

 

Проект системы показывает, что выполнена объектно-ориентированная декомпозиция[2] – в частности, разделены понятия задачи и контроллера выполнения, которые соотнесены с примитивами, предоставляемыми системой.

В качестве примера дальнейшей детализации проекта на рис.4 показана диаграмма работы задачи по прерыванию и ее реализации.

 

Рис. 4 Модель и реализация контроллера выполнения задачи

 

Вывод

В работе рассмотрены общие вопросы построения библиотеки управления задачами с использованием платформы Java, в частности, дано описание методики разработки, которое проиллюстрировано примером.

 

[1]                Хорстман, Кей С., Корнелл, Гарри. Х82 Java 2 Библиотека профессионала, том 1. Основы.    8 – е издание. Пер.с англ. – М.:ООО “И.Д. Вильямс”, 2008 . – 816 с.: ил.  Парал. тит.англ

[2]               Буч Г., Максимчук, и др. Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. Пер.с англ. – М.:ООО “И.Д. Вильямс”, 2008 . – 720 с.: ил. – Парал. тит.англ.