Метод автоматической генерации контекстно-зависимой помощи, основанный на задачах пользователя

Авторы: В.В. Грибова, Н.Н. Черкезишвили

Источник: http://www.iacp.dvo.ru/is/publications/Gr%20Ch.doc

Введение

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

    1. В настоящее время существуют два основных типа помощи пользователям программных средств: контекстно-независимая и контекстно-зависимая. Их создание является очень дорогой и трудоемкой задачей. Так, в настоящее время, в большинстве программных средств используется контекстно-независимая помощь, реализованная либо в виде статических руководств, либо в виде обучающих систем. Статические руководства, в свою очередь, могут быть представлены в виде онлайновой помощи и реализованы с помощью различных средств (Microsoft Winhelp, Microsoft Compressed HTML Help, HTML Help 2.0, AP Help 1.0 [1]). Однако, стоимость поддержки систем помощи, выполненных в виде статических руководств, является отдельной сложной задачей, так как при изменении программного средства также необходимо обновлять и систему помощи. Контекстно-зависимая помощь, реализованная в некоторых моделеориентированных средствах (CTTE [2], TWIW [3], CACTUS [4], FUSE [5], UIDE [6]), имеет ряд преимуществ перед контекстно-независимой помощью, основными из которых являются ее автоматическая генерация и использование текущего состояния при формировании ответов на вопросы пользователей, однако, основным недостатком является невозможность ее расширения.

В данной работе представлена концепция и метод реализации расширяемой контекстно-зависимой помощи, основанной на задачах пользователя.

Концепция проектирования и автоматической генерации контекстно-зависимой помощи в программных средствах

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

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

С каждым вопросом пользователя, на который он может получить ответ, связан алгоритм, который генерирует ответ на поставленный вопрос. Входными данными для каждого алгоритма является текущее состояние, в котором находится пользователь, а также информация о задачах, решенных им на предыдущих шагах. Основная идея каждого алгоритма - зная текущее состояние произвести обход дерева задач пользователя (модель задач пользователя представляется размеченным деревом) и, анализируя отношения между задачами, сформировать ответ на поставленный вопрос. Таким образом, пользователь обращается к алгоритмам генерации помощи через множество предоставляемых ему вопросов.

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

Алгоритмы реализации помощи описываются на абстрактном языке и помещаются в базу алгоритмов помощи. Таким образом, достигается расширяемость системы помощи.

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

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

Модель онтологии задач пользователя

Модель онтологии задач пользователя (ОЗП) описывает задачи, которые он может решить с помощью программного средства: ОЗП=<CommonTask, Tasks>, где CommonName – имя общей задачи, Tasks – задачи пользователя, т.ч. Tasks=<TypeSet,{Taski}>, где TypeSet – тип множества, Taski – задача пользователя.

Тип множества TypeSet указывает на отношения между задачами, Type Set={ «выбор», «объединение», «разрешение» }. Множество «выбор» означает, что может выполняться любая задача из множества {Taski}, независимо от выполняемых на текущем шаге задач и исхода их выполнения. Например, пусть подмножество «выбор» состоит из элементов {«Вставка диаграммы», «Установка формата ячейки», «Вставка рисунка»}. Это означает, что пользователь интерфейса может начать выполнение любой задачи данного подмножества, но как только выбор сделан, пусть выбрана задача «Вставка диаграммы»; данная задача должна быть завершена, прежде, чем станет возможным выполнение другой задачи данного подмножества - «Установка формата ячейки» или «Вставка рисунка».

Множество «объединение» означает, что может быть выполнена любая задача из множества {Taski}, но при этом выполнение некоторой задачи Taski может начаться только после окончания выполнения предыдущих задач из данного множества. Например, пусть подмножество «объединение» состоит из элементов {«Просмотр сообщений», «Отправка сообщений»}. В этом случае задачу «Отправка сообщений» можно выполнить, до того, как полностью закончено выполнение задачи «Просмотр сообщений».

Множество «разрешение» означает, что множество {Taski} является упорядоченным и только успешное выполнение задачи с именем Taski приводит к возможности выполнения задачи Taski+1 этого подмножества. Например, пусть подмножество «разрешение» состоит из элементов {«Ввод данных в ячейку», «Распространить значение ячейки на соседние ячейки»}. Это означает, что только успешное выполнение задачи «Ввод данных в ячейку» дает возможность выполнить задачу «Распространить значение ячейки на соседние ячейки».

Каждая задача группа Taski характеризуется парой, Taski =<TaskNamei, Tasksi >, где TaskNamei – имя задачи (все имена задач должны быть различны), Tasksi – множество подзадач задачи TaskNamei, Tasksi=Tasks.

Реализация системы контекстно-зависимой помощи

На рис. 1 изображена схема взаимодействия программного средства с контекстно-зависимой помощью.

Рис. 1 Общая схема взаимодействия пользователя и программного средства с контекстно-зависимой помощью

Ассистент – это интерфейс системы помощи, через который пользователь взаимодействует с системой помощи. Объектная шина – средство взаимодействия ассистентов c программным средством. Объектная шина реализована с помощью технологии CORBA (Common Object Request Broker Architecture). С одним программным средством в один момент времени может работать множество ассистентов. Ассистенты могут быть реализованы на любых языках, для которых существуют реализации ORB (Object Request Broker), совместимые с JacORB, например ORBit, Visibroker, TAO. Каждый ассистент имеет доступ к распределенным объектам, существующим в адресном пространстве системы помощи.

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

Рис. 2 Прикладная программа с интегрированной системой помощи

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

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

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

Взаимодействие ассистентов с системой помощи происходит через ядро системы помощи. Одним из назначений ядра системы помощи является предоставление ассистентам функций для взаимодействия с системой помощи. Также ядро интегрирует систему помощи в прикладную программу после его запуска. Наиболее важными функциями ядра являются: внедрение делегатов в прикладную программу; подсветка графических элементов управления; выполнение анимационных обучающих роликов; генерация контекстно-зависимой помощи (выполнение алгоритмов).

Когда объект ядра системы помощи создается, сразу же создается распределенный объект, предоставляющий ассистентам доступ к функциям ядра. Запускаемый ассистент, прежде всего, ищет объект ядра системы помощи и регистрируется в нем, так как только зарегистрированный ассистент может получать информацию от системы помощи. Ассистент находит объект ядра системы помощи по IOR (каждый CORBA объект имеет уникальный IOR идентификатор).

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

Технология разработки системы контекстно-зависимой помощи

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

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

  2. Произвести интеграцию системы помощи в код программного средства.

  3. Создать анимационные обучающие ролики.

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

Интеграция системы помощи в программное средство производится путем пометки графических элементов пользовательского интерфейса аннотациями (специальными комментариями, предназначенными для компилятора), что полностью исключает изменение логики кода: внутренней структуры классов, переменных, функций и т.д.

Анимационный ролик создается, когда система помощи интегрирована в программное средство. Создание ролика производится выполнением разработчиком действий в программном средстве, которые записываются менеджером скриптов. Далее ролик добавляется к соответствующей задаче в модели задач.

Заключение

В настоящее время система генерации контекстно-зависимой помощи реализована и проходит опытную эксплуатацию в отделе интеллектуальных систем ИАПУ ДВО РАН. Основными особенностями системы являются: расширяемость системы помощи; генерация помощи в зависимости от текущего состояния прикладной программы, что обеспечивает актуальность предоставляемой пользователю информации; генерация ответов на вопросы пользователя в текстовом виде с объяснением последовательности шагов и подсветкой этих шагов в интерфейсе (по желанию пользователя); предоставление помощи в виде интерактивных обучающих роликов.

Список литературы

  1. Википедия [Электронный ресурс] : Свободная энциклопедия –http://en.wikipedia.org/wiki/Online_help

  2. Mori, G., Paterno, F., Santoro, C. CTTE: Support for Developing and Analyzing Task Models for Interactive System Design / G. Mori, F. Paterno, C. Santoro // 2002.- Vol. 28, No. 8.- P. 797-813

  3. Moriyon, R. Automatic Generation of Help from Interface Design Models / R. Moriyon // Conference companion on Human factors in computing systems: 1994.- Режим доступа: http://citeseer.ist.psu.edu.- Загл. с экрана.

  4. Garcia, F. CACTUS: Automated Tutorial Course Generation for Software Applications / F. Garcia // Intelligent User Interfaces: 1998.- Режим доступа: http://citeseer.ist.psu.edu.- Загл. с экрана.

  5. Lonczewski, F., Schreiber, S. The FUSE–System: an Integrated User Interface Design Environment / F. Lonczewski, S. Schreiber // 1996.- Режим доступа: http://citeseer.ist.psu.edu.- Загл. с экрана.

  6. Foley, J.D., Kim, W.C., Kovacevic, S., Murray, K.: UIDE - An Intelligent User Interface Design Environment / J.D. Foley, W.C. Kim, S. Kovacevic, K. Murray // Intelligent User Interfaces: 1991.- P. 339-384