Объекты интерфейса прямого манипулирования и их представления. Существует три основных типа объектов интерфейсов прямого манипулирования: объекты-данные, объекты-контейнеры и объекты-устройства.
Объекты-данные снабжают пользователя информацией. Это могут быть тексты, изображения, электронные таблицы, музыка, видео и т. п., а также любая их комбинация. В рамках операционной системы таким объектам соответствуют приложения, которые запускаются при раскрытии объекта. В масштабе приложения объекту соответствует одна или несколько форм, в которых содержимое объекта представляется в разных видах.
Операции с содержимым объекта реализуются обработчиками событий формы.
Объекты-контейнеры могут манипулировать своими внутренними объектами, в том числе и другими контейнерами, например, копировать их или сортировать в любом порядке.
К типичным контейнерам относятся папки, корзины т. п. При раскрытии контейнера демонстрируются сохраняемые им компоненты, и появляется возможность ими манипулировать. Компоненты при этом могут обозначаться пиктограммами или представляться в виде таблицы.
Объекты-устройства часто представляют устройства, существующие в реальном мире: телефоны, факсы, принтеры и т.д. их используют для обозначения этих устройств в абстрактном мире интерфейса. При раскрытии такого объекта, как правило, можно увидеть его настройки.
Итак, каждому объекту соответствует, по крайней мере, одно окно. В исходном состоянии это окно представлено пиктограммой, но при необходимости его можно раскрыть и выполнить требуемые операции, например настройки объекта. Окно объекта в раскрытом состоянии может содержать меню и панели инструментов. Пиктограмме же должно соответствовать контекстное меню, содержащее перечень операций над объектом.
Имя пиктограммы формируют по-своему для каждого типа объектов. Так пиктограммам объектов-данных присваивают имена, соответствующие именам хранимых данных, а тип данных кодируется самой пиктограммой. Имя пиктограммы-контейнера или пиктограммы устройства обозначает сам объект, а потому не зависит от содержимого.
Следует иметь в виду, что различие между типами объектов является условным, так как один и тот же объект в разных ситуациях может вести себя то, как объект-данные, то, как объект-устройство, то, как объект-контейнер. Например, принтер обычно рассматривают как объект-устройство, но он может обладать и свойствами объекта-контейнера, так как может содержать объекты-данные в очереди на печать. Соответственно в Windows объект контейнер/устройство Принтер имеет, помимо пиктограммы (рис. 8.22, а), еще два представления: окно очереди на печать (рис. 8.22, б) и окно настроек
254
(рис. 8.22,
в). Имя представления в этом случае целесообразно указывать в заголовке окна объекта.
Технология Drag and Drop. Технология Drag and Drop («перетащил и бросил»)
определяет основные принципы прямого манипулирования, описанные в руководстве по разработке пользовательских интерфейсов фирмы IBM (CUA - Common User Access):
•
результат перемещения объекта должен соответствовать ожиданиям пользователя;
•
пользователи не должны неожиданно терять информацию;
•
пользователь должен иметь возможность отменить неправильное действие.
Эта технология также определяет основные принципы визуализации операции прямого манипулирования:
•
исходное выделение - используется в качестве обратной связи пользователю, чтобы сообщить ему, что объект захвачен, в Windows с этой целью используется выделение цветом;
•
визуализация перемещения - используется для идентификации выполняемого действия;
255
•
целевое выделение - используется для идентификации пункта назначения, показывая, таким образом, куда «упадет» объект, если его отпустить в текущий момент времени;
•
визуализация действия - используется для обозначения времени ожидания завершения операции, обычно с этой целью применяют анимацию или изменение формы курсора на
«песочные часы».
Следует также иметь в виду, что существует два вида пунктов назначения: один принимает объект, а другой его копию. Например, если пользователь «бросает» документ в
«корзину», то уничтожается сам документ, который при этом удаляется с экрана. А если тот же документ он «бросает» на «принтер», то документ не пропадает: на принтер передается копия документа.
В Windows соответствующие действия идентифицируется появлением символа копирования «+» около пиктограммы документа в тот момент, когда он перемещается над пиктограммой устройства, на которое передается копия документа. Если для некоторого устройства возможны оба вида действий, то следует предусмотреть возможность уточнения вида действия. Так Windows в этом случае осуществляет копирование при нажатой клавише
CTRL и перемещение в противном случае.
Проектирование интерфейсов прямого манипулирования. Проектирование интерфейсов прямого манипулирования выполняется на основе графов диалога, разработанных для конкретного программного обеспечения, и включает следующие процедуры:
•
формирование
множества объектов предметной области, которое должно быть представлено на экране, причем в качестве основы в этом случае используют не варианты использования, а концептуальную модель предметной области;
•
анализ
объектов, определение их
типов и
представлений, а также перечня
операций с этими объектами;
•
уточнение
взаимодействия объектов и построение матрицы
прямого манипулирования; •
определение
визуальных представлений объектов;
•
разработка
меню окон объектов и
контекстных меню; •
создание
прототипа интерфейса;
•
тестирование на
удобство использования. Пример 8.6. Разработать пользовательский интерфейс прямого манипулирования для системы решения комбинаторно-оптимизационных задач.
Поскольку единственно напрашивающаяся аналогия - это выполнение операций вручную, интерфейс строим, используя метафору «рабочий стол».
Множество объектов-кандидатов формируем, анализируя концептуальную модель предметной области (см. рис. 6.9) и варианты использования. Для каждого объекта определяем тип и набор операций, связывающих эти объекты с остальными объектами предметной области (табл. 8.3).
256
Таблица 8.3
Объект
Тип
Действия, связанные с р
Примечание
Протокол Контейне
Сохранить,
Включает Задание, лить, распечатать после решения задачи -
Список Контейне
Очистить
— токолов
Задание
Данные
Выполнить
Бланк задания входит в протокола
Данные
Данные
Связать с
- колом, удалить,
Список Контейне
Очистить
ных
Результат
Данные
-
Если получены, то
Заданием и Данными, т. е. ся в Протоколе
Бланк
Данные
-
Бланк протокола кола бланк задания
Бланк Данные
- ных
Компьюте Устройст
—
—
Принтер Устройст
-
-
Корзина Устройст
-
-
Основной объект проектируемой системы - Протокол. Он будет объединять Задание,
Данные и Результаты. В процессе работы пользователю понадобиться создавать новые
Протоколы. При этом целесообразно, чтобы новый Протокол уже содержал бланк Задания.
Данные разрешим создавать отдельно, для чего предусмотрим Бланк Данных. После заполнения бланка Данные можно будет включить в Протокол, сохранить в Списке данных, распечатать или выбросить. Результаты будут добавляться в Протокол после решения задачи, т. е. выполнения Задания. Предусмотрим возможность сохранения Протокола в Списке протоколов на любом шаге заполнения, печати и удаления его со стола и из Списка протоколов.
К множеству объектов системы, помимо указанных выше, добавлены объекты- устройства: Компьютер, Принтер, Корзина, необходимые для отображения операций
Выполнить, Распечатать, Удалить.
257
Далее строим матрицу (таблицу) взаимодействия объектов. В этой таблице по вертикали располагаем объекты, которые согласно метафоре можно перемещать
{исходные), а по горизонтали - объекты, которые могут служить конечными пунктами перемещения (конечные). В самой таблице фиксируем действия, которым будет соответствовать операция перемещения начального объекта на конечный.
Для рассматриваемого примера исходными объектами являются Протокол, Список протоколов, Задание, Данные, Список протоколов, Бланк задания и Бланк данных (табл.
8.4). Их можно перемещать на объекты-контейнеры: Протокол, Список протоколов, Список данных, а также объекты устрой-
Таблица8.4
Операции,
выполняемые при перемещении объектов
Конечные объекты
Исходные объекты
Протоко л
Список протоколов
Список данных
Компьютер
Принтер
Корзина
Рабочий стол
Протокол
—
Добавить протокол в список
Выполнить задание*
Распечатат ь протокол*
Удалить протокол
Список протоколов
-
-
-
Удалить все протоколы
Задание
Занести задание в протокол
;
Удалить задание
Данные
Занести данные в протокол
Добавит ь данные в список
Удалить данные
Список данных
-
-
-
-
-
Удалить все данные
-
Бланк протокола
-
-
-
-
-
-
Создать протокол*
Бланк данных
-
-
-
-
Создать данные*
* Операция выполняется с копией объекта, сам объект остается на своем месте.
258
ства: Компьютер, Принтер, Корзина и Рабочий стол. Далее анализируем взаимодействие объектов в соответствии с принятой метафорой. Так, если объект Протокол перенести на объект Список протоколов, то по смыслу это можно интерпретировать как желание пользователя добавить Протокол в список. Аналогично заполняем всю таблицу, которая затем будет использоваться при программировании соответствующих событий.
На рис. 8.23 представлен внешний вид интерфейса системы. (В качестве пиктограмм объектов использованы стандартные пиктограммы Windows.)
После этого необходимо разработать представление окон объектов.
Пример 8.7. Разработать представление окна объекта Протокол.
Объект Протокол является контейнером, который может содержать Задание, Данные и
Результаты. В момент создания Протокола автоматически формируется чистый бланк
Задания.
На рис. 8.24 показано стандартное представление объекта-контейнера, которое может быть использовано в данном примере.
Отдельно изображено, как это окно будет выглядеть в разные моменты времени. Окно содержит меню, включающие пункты: Данные, Правка, Вид и Помощь. Первый пункт позволяет определить данные: Создать или Открыть. Второй - отвечает за работу с общим буфером и содержит пункты Вырезать, Копировать и Вста-
259
вить. Третий - традиционно управляет видом окна: Крупные значки, Мелкие значки, Список и Таблица. Четвертый - используют для вызова справки.
Поскольку используемая метафора рабочего стола позволяет, необходимо предусмотреть возможность выполнения стандартных клавиатурных команд с объектом Протокол. К ним относят операции Вырезать (Ctrl-X), Копировать (Ctrl-C), Вставить (Ctrl-V).
После завершения проектирования представлений всех объектов создают прототип интерфейса и передают его на тестирование удобства использования.
8.8. Интеллектуальные элементы пользовательских
интерфейсов
В последние годы появилось много новых перспективных элементов пользовательских интерфейсов, в основном привносящих в интерфейс элементы искусственного интеллекта, что проявляется в их названиях: Мастер, Советчик, Агент. Сделано множество попыток создания социализированно-
260
го пользовательского интерфейса. В основе такого интерфейса лежит идея создания персонифицированного, т. е. «имеющего личность», интерфейса. Развлекающие программы, такие как Cats (Кошки) и Dogs (Собаки), реализующие достаточно сложное поведение домашних животных в разных ситуациях, показывают, что технически это вполне решаемая задача. Однако в этой области существуют психологические проблемы.
В качестве примера вспомним, что даже «безобидный» Советчик Microsoft Office, рассмотренный ниже, вызывает у многих пользователей резко отрицательную реакцию.
Пока попытки создания такой «личности» успеха не имели.
Советчики. Советчики представляют собой форму подсказки. Обычно их можно вызвать с помощью меню справки, командной строки окна или из всплывающего меню.
Советчики помогают пользователям в выполнении конкретных задач, но только, если пользователь представляет, что ему нужно сделать. Например, пользователь, работающий в
Microsoft Word, собирается вставить в документ рисунок, но не знает как. Он активизирует
Помощника-Скрепку и вводит вопрос в специальное поле (рис. 8.25, а). Справочная система анализирует вопрос и формирует список тем, косвенно связанных с интересующей пользователя, в расчете, что пользователь сам выберет нужную справку (рис. 8.25, б).
Мастера. Программу-мастер используют для выполнения общераспространенных, но редко выполняемых отдельным пользователем задач, таких,
261
как установка программ или оборудования. Выполнение подобных действий требует от пользователя
принятия сложных взаимосвязанных решений, последовательность которых и диктует программа-мастер. Интеллектуальные Мастера способны на каждом шаге демонстрировать в окне просмотра результаты ответов пользователя на предыдущие вопросы, помогая последнему сориентироваться в ситуации.
Мастер реализует последовательный или древовидный сценарий диалога, поэтому его целесообразно использовать для решения хорошо структурированных, последовательных задач (рис. 8.26). При этом необходимо:
• предоставить пользователю возможность возврата на предыдущий шаг;
•
предусмотреть возможность отмены работы Мастера;
•
нумеровать шаги и сообщать пользователю количество шагов Мастера, особенное, если таких шагов больше трех;
•
пояснять пользователю каждый шаг;
•
по возможности демонстрировать результат уже выполненных операций на каждом шаге.
Программные агенты. Наибольший интерес на настоящий момент представляют программные агенты, используемые для выполнения рутинной работы. Такой программный агент является элементом программного обеспечения, которому пользователь может передать часть своих обязан-
262
ностей. Основными функциями Агентов-Помощников являются: наблюдение, поиск и управление. Различают:
•
программы-агенты, настраиваемые на выполнение указанных задач;
•
программы-агенты, способные обучаться, например, фиксируя действия пользователя
(по типу магнитофона).
Создание агентов последнего типа, например, доступно через механизм макросов
Microsoft Office.
Большинство интересных и достаточно сложных программных агентов в настоящее время «живет» в Интернете, где и можно найти последнюю информацию по данной теме.
Контрольные вопросы и задания
1.
Назовите основные типы интерфейсов. Чем характеризуется каждый из них? Какими средствами реализуется? Какие типы интерфейсов являются основными в наше время?
2.
Перечислите психофизические особенности человека, которые необходимо учитывать при проектировании интерфейсов. Какие ограничения это накладывает на интерфейс?
3.
Что понимают под термином «диалог»? Сколько диалогов может реализовывать программное обеспечение?
4.
Назовите основные типы диалога и его формы. Какие модели используют для описания диалогов? Что служит исходными данными для проектирования диалогов?
5.
Постройте граф диалога для простейшего графического редактора. Почему он имеет такой вид? В каких ситуациях граф диалога имеет вид цепи или дерева?
6.
Предложите меню графического редактора. Сравните это меню с меню известных вам графических редакторов. Проанализируйте отличия.
7.
Перечислите основные компоненты графических пользовательских интерфейсов. В каких случаях используют каждый из них?
8.
Предложите интерфейс прямого манипулирования для графического редактора. В чем состоит основная сложность проектирования таких интерфейсов? В каких случаях их целесообразно использовать?
9.
Какие интеллектуальные компоненты пользовательских интерфейсов существуют в настоящее время? Каковы их основные назначения? В каких случаях их целесообразно применять?
263
9. Тестирование программных продуктов Тестирование - очень важный и трудоемкий этап
процесса разработки программного обеспечения, так как правильное тестирование позволяет выявить подавляющее большинство ошибок, допущенных при составлении программ.
Процесс разработки программного обеспечения предполагает три стадии тестирования: автономное, комплексное и системное, каждая из которых соответствует завершению соответствующей части системы.
Различают два подхода к формированию тестов: структурный и функциональный.
Каждый из указанных подходов имеет свои особенности и области применения.
9.1. Виды контроля качества разрабатываемого программного обеспечения Недостаточно выполнить проектирование и кодирование программного обеспечения, необходимо также обеспечить его соответствие требованиям и спецификациям. Многократно проводимые исследования показали, что чем раньше обнаруживаются те или иные несоответствия или ошибки, тем больше вероятность их правильного исправления (рис. 9.1,
а) и ниже его стоимость (рис.
9.1,6) [7].
Современные технологии разработки программного обеспечения предусматривают раннее обнаружение ошибок за счет выполнения контроля результатов всех этапов и стадий разработки. На начальных этапах такой контроль осуществляют в основном вручную или с использованием CASE-средств, на последних - он принимает форму тестирования.
Тестирование - это процесс выполнения программы, целью которого является выявление ошибок. Никакое тестирование не может доказать отсутствие ошибок в хоть сколько-нибудь сложном программном обеспечении. Для такого программного обеспечения выполнение полного тестирования, т. е. задания всех возможных комбинаций исходных данных, становится невозможным, а, следовательно, всегда имеется вероятность того, что в программном обеспечении остались невыявленные ошибки. Однако соблюдение
264
основных правил тестирования и научно обоснованный подбор тестов может уменьшить их количество.
Примечание. Обычно на вопрос о цели тестирования начинающие программисты отвечают, что целью тестирования является «доказательство правильности программы». Это абсолютно неверное мнение. Г. Майерс [47] предлагает очень удачную аналогию для пояснения этого положения. Представьте себе, что вы пришли на прием к врачу и пожаловались на боль в боку. Врач выслушал вас и направил на обследование. Через некоторое время вы возвращаетесь к врачу с ворохом заключений и результатов анализов, и во всех этих бумагах написано, что все исследуемые параметры у вас в норме. Но бок то болит, значит, что-то не в порядке, хотя анализы этого и не показывают... Так и сложное программное обеспечение, безошибочно работающее на всех тестовых наборах, может содержать и обычно содержит некоторое количество ошибок.
Процесс разработки программного обеспечения, в том виде, как он определяется в современной
модели жизненного цикла программного обеспечения, предполагает три стадии тестирования:
•
автономное тестирование компонентов программного обеспечения;
•
комплексное тестирование разрабатываемого программного обеспечения;
•
системное или оценочное тестирование на соответствие основным критериям качества.
Для повышения качества тестирования рекомендуется соблюдать следующие
основные принципы: 265
•
предполагаемые результаты должны быть известны до тестирования;
•
следует избегать тестирования программы автором;
•
необходимо досконально изучать результаты каждого теста;
•
необходимо проверять действия программы на неверных данных;
•
необходимо проверять программу на неожиданные побочные эффекты на неверных данных.
Следует также иметь в виду, что вероятность наличия необнаруженных ошибок в части программы пропорциональны количеству ошибок уже найденных в этой части.