ОНТОЛОГИЧЕСКИЙ КАРКАС ДЛЯ ПЛАТФОРМОНЕЗАВИСИМОЙ ГЕНЕРАЦИИ ПОЛЬЗОВАТЕЛЬСКИХ ИНТЕРФЕЙСОВ
Конференция: XCIX Международная научно-практическая конференция «Научный форум: технические и физико-математические науки»
Секция: Информатика, вычислительная техника и управление

XCIX Международная научно-практическая конференция «Научный форум: технические и физико-математические науки»
ОНТОЛОГИЧЕСКИЙ КАРКАС ДЛЯ ПЛАТФОРМОНЕЗАВИСИМОЙ ГЕНЕРАЦИИ ПОЛЬЗОВАТЕЛЬСКИХ ИНТЕРФЕЙСОВ
ONTOLOGICAL FRAMEWORK FOR PLATFORM-INDEPENDENT GENERATION OF USER INTERFACES
Sapozhnikov Vladislav Olegovich
postgraduate student of the department of VST, Nizhny Novgorod State Technical University named after. R.E. Alekseeva, Russia, Nizhny Novgorod
Tarasov Alexander Vasilievich
postgraduate student of the department of VST, Nizhny Novgorod State Technical University named after. R.E. Alekseeva, Russia, Nizhny Novgorod
Аннотация. Рассматривается способ платформонезависимого описания пользовательского интерфейса посредством онтологического каркаса и пространственных сопряжений. Элементы интерфейса задаются как индивиды компонентов, а отношения между ними — через отдельные индивиды интерфейсов, каждому из которых назначается значение связи. Адаптер обрабатывает онтологическое описание и на его основе выстраивает реализацию с использованием конкретной технологии, что позволяет переходить к произвольной реализации через существующие адаптеры, и делает реализации, взаимозаменяемыми.
Abstract. The paper presents a platform-independent method for describing user interfaces using an ontological framework and spatial connections. User interface elements are represented as individuals of components, while relationships between them are represented by dedicated individuals, each of which is assigned a connection value. An adapter processes the ontological description and generates an implementation using a specific technology. This allows to generate different interchangeable implementations from a single ontological description by using different adapters.
Ключевые слова: онтологический каркас; онтология; пользовательский интерфейс; ГПИ; платформонезависимая генерация; пространственное сопряжение; адаптер.
Keywords: ontological framework; user interface ontology; platform-independent generation; spatial connection; adapter.
Введение
Многие современные информационные системы взаимодействуют с пользователем посредством графического пользовательского интерфейса (ГПИ) [1]. При этом, ГПИ реализуется для систем в различных формах: настольные приложения, веб-приложения, встраиваемые системы и др. Версии интерфейса для разных платформ часто должны реализовывать одинаковый функционал, однако обычно разрабатываются и поддерживаются отдельно, так как реализуются в рамках различных технологий [2-5]. В результате одинаковые элементы, их взаимное расположение и ограничения приходится воспроизводить, пользуясь разными инструментами [6-9]. Это повышает стоимость сопровождения и затрудняет согласованное развитие нескольких представлений. [10-12]
Проблема связана не только с различиями синтаксиса разных платформ. Элементы, представляющие собой контейнеры, на разных технологиях могут иметь существенно различные наборы настраиваемых параметров, порядок элементов и их размещение. Для сокращения этой зависимости требуется описание, в котором фиксируется семантика элемента и его отношений с другими элементами, а реализация в целевой технологии переносится в специализированный модуль [6-8]. Исследования семантической интероперабельности объектно-ориентированных систем показывают целесообразность представления систем как совокупности автономных компонентов, сопряжённых через стандартизированные интерфейсы. Такое представление возможно посредством онтологического каркаса [13]. Предложено рассматривать элементы графических интерфейсов как компоненты многокомпонентной структуры и задавать их положение операциями пространственного сопряжения [14-15].
Онтологическое описание удобно для этой задачи, поскольку позволяет явно различать классы сущностей, их объекты и свойства [10-12].
Цель работы — модернизировать онтологический каркас и пользовательского интерфейса представленный в работе [15] и показать возможность платформонезависимой генерации различных представлений из одного описания. Работа развивает идеи [14-15] путём уточнения ролей компонента, интерфейса и домена; формализации смысла направления при пространственном сопряжении; добавление платформанезависимой генерации через адаптеры.
Онтологический каркас пользовательского интерфейса
Базовое понятие онтологического каркаса
Онтологический каркас задаёт согласованную систему понятий и отношений, достаточную для описания компонентов открытой информационной системы, их точек взаимодействия и доменных ограничений [13]. Для задачи UI эта идея используется в более узком виде: «Компонент» обозначает сущность пользовательского интерфейса, «Интерфейс» — самостоятельный объект связи, «Домен» — допустимое множество значений, задающее смысл связи.
Это позволяет отделить описания элементов, связей между ними и значений таких связей от платформы, на которой планируется реализация интерфейса. Предполагается существование некоторого набора базовых компонентов интерфейса, выразимых на любой платформе. Такие базовые компоненты связываются отношениями, которые выражаются индивидами интерфейсов пространственного сопряжения, а их значения выбирается из индивида домена пространственных сопряжений.
Модернизация для описания пользовательских интерфейсов
Применение каркаса к UI требует выразить пространственную организацию элементов. В работе [14] пространственное сопряжение рассматривается как часть модели структурной организации компонентов. Для ГПИ набор операций связывается с размещением сверху, снизу, слева, справа, внутри и, в более общей модели, между слоями [14-15]. В настоящей работе размещение между слоями было исключено из рассмотрения, поскольку его демонстрация и реализация ещё не были реализованы и применены на практике. Таким образом полная схема классов используемого UI-каркаса показана на рис. 1.

Рисунок 1. Онтологический каркас для описания пользовательского интерфейса
Устройство пространственных сопряжений
Текущая реализация задаёт множество пространственных сопряжений как закрытое перечисление пяти значений: «над», «справа от», «под», «слева от», «вложен в».
Позиционирование компонентов при помощи их интерфейсов задаётся направлением отношений «Имеет входной интерфейс» «Имеет выходной интерфейс» от компонентов к общему индивиду интерфейса. Пусть индивид «Компонент поле ввода имени» - владелец выхода, индивид «Компонент лейбл имени» - владелец входа, «Интерфейс лейбл имени к полю ввода имени» - индивид пространственного интерфейса, «над» - индивид домена «Вид пространственного сопряжения». Тогда описание имеет вид рис.2:

Рисунок 2. Схема пространственного сопряжения компонентов
Платформонезависимая генерация пользовательских интерфейсов
Система адаптеров
Если онтологический каркас служит для абстрактного описания ГПИ, то адаптер представляет собой механизм для генерации реализации ГПИ с использованием конкретной технологии.
В текущем примере адаптер для HTML сопоставляет визуальные типы тегов HTML5; адаптер PyQt создаёт соответствующие классы QWidget, QVBoxLayout. Основные соответствия типов компонентов и вариантов размещения для этих адаптеров приведены в табл. 1.
Таблица 1.
Соответствие типов компонентов и вариантов размещения в HTML и PyQt
|
Тип компонента или размещения |
HTML |
PyQt |
|
Label |
<span> |
QLabel |
|
Div |
<div> |
QWidget |
|
Input |
<input type="text"> |
QLineEdit |
|
Button |
<button> |
QPushButton |
|
Вертикальное размещение элементов |
display: flex; flex-direction: column |
QVBoxLayout |
|
Горизонтальное размещение элементов |
display: flex; flex-direction: row |
QHBoxLayout |
Логическая схема показана на рис. 3. Один источник описания может быть реализован посредством любого из N адаптеров, каждый из которых создаёт собственное представление. Адаптеры, таким образом никак не зависят друг от друга, только от абстрактного представления через онтологический каркас. Соответственно, возможно добавление произвольного количества адаптеров и таким образом – произвольного количество технологий для реализации ГПИ.
Для добавления нового адаптера требуется определить отображение поддерживаемых онтологическим описанием типов компонентов, типов пространственного размещения и, затем проверить согласованность на общем наборе примеров.

Рисунок 3. Платформонезависимая генерация пользовательских интерфейсов посредством адаптеров
Изменение названия компонента, текста лейбла или пространственного отношения выполняется в общем описании, после чего адаптеры получают одинаковые исходные сведения. Таким образом сохраняется структурная согласованность между реализациями, не означающая, однако, полного попиксельного совпадения интерфейсов, сгенерированных разными адаптерами.
Примеры генерации
Именованное поле ввода
Именованное поле ввода описано тремя индивидами компонентов: контейнером «Компонент контейнер именованное поле ввода», лейблом «Компонент лейбл имени» с текстом «Имя» и полем ввода «Компонент поле ввода имени». Два интерфейса со значением домена «вложен в» помещают лейбл и поле внутрь контейнера; третий интерфейс со значением «над» задаёт расположение лейбла над полем. В текущей направленной семантике поле ввода является владельцем выхода, лейбл - владельцем входа, поэтому значение «над» читается как «лейбл находится над полем ввода». Схема индивидов приведена на рис. 4.

Рисунок 4. Онтологическое описание именованного поля ввода
Адаптер HTML отображает контейнер в «div», лейбл — в «span», поле — в «input». Вертикальный порядок выражается через «display: flex» и «flex-direction: column». Полученное HTML-представление показано на рис. 5.

Рисунок 5. Именованное поле ввода, сформированное для HTML
Адаптер PyQt формирует «QWidget» с «QVBoxLayout», внутри которого последовательно размещаются «QLabel» и «QLineEdit». Qt-представление приведено на рис. 6.

Рисунок 6. Именованное поле ввода, сформированное для Qt
Композиция элементов и окно входа
Онтологический подход позволяет концептуально рассматривать более сложный UI как композицию ранее определённых элементов. Окно входа состоит из двух пар «лейбл + поле ввода» для логина и пароля, дополненных кнопкой «Войти».
Адаптер HTML формирует окно входа с двумя полями и кнопкой; результат приведён на рис. 7.

Рисунок 7. Окно входа, сформированное для HTML
Из того же онтологического описания адаптер PyQt создаёт окно с вертикальным «QVBoxLayout». Qt-представление показано на рис. 8.

Рисунок 8. Окно входа, сформированное для Qt
Заключение
Представлен онтологический каркас для платформонезависимого описания пользовательских интерфейсов. Каркас разделяет компоненты, их интерфейсы и домены; пространственное сопряжение оформляется самостоятельным индивидом с направленными ролями владельцев входа и выхода.
Ограничениями подхода являются рост трудоёмкости сопровождения онтологии по мере увеличения числа компонентов и связей. Добавление новых типов требует согласованного расширения всех адаптеров. Также поскольку не все платформы обладают одинаковыми выразительными свойствами в отношении позиционирования и стилистики элементов не всегда можно добавиться полной идентичности между ГПИ, реализованными на разных технологиях.
Единое онтологическое описание используется адаптерами HTML и PyQt для генерации примеров компонентов именованного ввода и окна входа. На данных примерах подтверждено сохранение набора и порядка элементов. Таким образом, благодаря общему описанию и использованию схемы, расширяемой по адаптерам, достигается независимость от конкретной технологии для реализации ГПИ.

