
- •1. Передумови
- •1.1. Визначення інтерфейсу
- •1.2. Простої повинне залишатися простим
- •1.3. Орієнтація на людину і на користувача
- •1.4. Інструменти, що перешкоджають новим ідеям
- •1.5. Розробка інтерфейсу як частина загального циклу розробки
- •1.6. Визначення человекоориентированного інтерфейсу
- •2. Когнетика і локус уваги
- •2.1. Ергономіка і когнетика: що ми можемо і чого не можемо
- •2.2. Когнітивне свідоме і когнітивне несвідоме
- •2.3. Локус уваги
- •2.3.1. Формування звичок
- •2.3.2. Одночасне виконання задач
- •2.3.3. Сингулярность локусу уваги
- •2.3.4. Джерела локусу уваги
- •2.3.5. Експлуатація єдиного локусу уваги
- •2.3.6. Поновлення перерваної роботи
- •3.2. Режими
- •3.2.1. Визначення режимів
- •3.2.2. Режими, користувальницькі настроювання і тимчасові режими
- •3.2.3. Режими і квазирежимы
- •3.3. Моделі "іменник-дієслово" і "дієслово-іменник"
- •3.4. Видимість і заможність
- •3.5. Монотонність
- •3.6. Міф про дихотомію "новачок-експерт"
- •4.2. Модель швидкості печатки goms
- •4.2.1. Тимчасові інтервали в інтерфейсі
- •4.2.2. Розрахунки по моделі goms
- •4.2.3. Приклади розрахунків по моделі goms
- •4.2.3.1. Інтерфейс для Хола: варіант 1. Діалогове вікно
- •4.2.3.3. Інтерфейс для Хола: варіант 2
- •4.3.1. Продуктивність інтерфейсу для Хола
- •4.3.2. Інші рішення інтерфейсу для Хола
- •4.4. Закон Фитса і закон Хика
- •4.4.1. Закон Фитса
- •4.4.2. Закон Хика
- •5.1. Уніфікація й елементарні дії
- •5.2. Каталог елементарних дій
- •5.2.1. Підсвічування, вказівка і виділення
- •5.2.2. Команди
- •5.2.3. Екранні стани об'єктів
- •5.3. Імена файлів і файлові структури
- •5.4. Пошук рядків і механізми пошуку
- •5.4.1. Роздільники в шаблоні пошуку
- •5.4.2. Одиниці взаємодії
- •5.5. Форма курсору і методи виділення
- •5.7. Ліквідація додатків
- •5.8. Команди і трансформатори
- •6.1. Інтуїтивні і природні інтерфейси
- •6.2. Поліпшена навігація: ZoomWorld
- •6.3. Піктограми
- •6.4. Способи і засоби допомоги в человекоориентированных інтерфейсах
- •6.4.1. Вирізувати і вставити
- •6.4.2. Повідомлення користувачу
- •6.4.3. Спрощення входу в систему
- •6.4.4. Автоповтор і інші прийоми роботи з клавіатурою
- •6.5. Лист від одного користувача
- •7.1.2. Важливість ведення документації при створенні програм
- •7.2. Режими і кабелі
- •7.3. Етика і керування розробкою інтерфейсів
5.8. Команди і трансформатори
Гарний дизайн є більш важливим, чим ви думаєте.
Рекс Хефтмэн
Коли складність деякого чи продукту частини програмного забезпечення, чи комп'ютерної системи перевищує наші в ній потреби і створює труднощі, це цілком виправдано викликає в нас роздратування. Навіть якщо нам потрібно попрацювати з якимсь простим текстом, ми змушені розбиратися в чи сотнях, як у випадку з Mіcrosoft Offіce, навіть тисячах команд і методів, що нам не потрібні. З іншого боку, якби ми могли користатися цими командами в міру виникнення в них необхідності, це зняло би відчуття надмірності і величезного когнітивного вантажу, навіть якби вся система стала від цього настільки ж складної, якої було до цього сам додаток.
Мрія про те, щоб продукти були споконвічно дійсно (а не зовні) прості й у той же час гнучкі, може бути досягнута на основі підходу, у якому система не повинна бути складніше, ніж ваші потреби в даний момент, і при який можливості системи можна нарощувати поступово. Щоб зрозуміти, як це зробити, згадаємо, що в розділі 5.1 було сказано про те, що майже всі дії, виконувані за допомогою комп'ютера, включають зміст, що ви чи вводите одержуєте, і набір операцій, що ви застосовуєте до цього змісту. Також згадаємо, що інтерфейс для будь-якої такої операції складається з двох частин: виборі змісту і виклику операції. Наприклад, у грі потрібно убити монстра, чи, виражаючи більш прозаїчною мовою, виконати операцію по зміні зображення монстра на зображення вибуху. Зміст вибирається за допомогою курсору (курсор підводиться до монстра), а операція викликається за допомогою клавіші на ГУВ. Між іншим, це досить гарний інтерфейс - швидкий і результативний.
Виклик команди для застосування до вибірки може дати три можливості:
1. Операція може бути застосована до вибірки.
2. Операцію безглуздо застосовувати до даної вибірки.
3. Операція може бути застосована до даної вибірки за умови, що ця вибірка буде модифікована.
У першому випадку операція виконується і зміст видозмінюється. В другому випадку зміст залишається без зміни. У третьому випадку для виконання операції повинний бути викликаний інший процес, за допомогою якого вибірка попередньо модифікується.
Припустимо, що ви вибираєте частину фотографії, на якій зображений вид міської вулиці, і намагаєтеся застосувати до неї команду перевірки орфографії. Виклик цієї команди припускає наявність деякої послідовності символів (тексту), але тут виявляється фотографія (растрове зображення). Однієї з можливостей комп'ютера є можливість перетворювати зміст з одного типу даних в інший39. У цьому випадку дані є растровим зображенням, а команда застосовна тільки до текстів, тому комп'ютер повинний визначити, чи мається який-небудь трансформатор для перетворення растрових зображень у текст. Узагалі такі трансформатори існують. Це так називані програми для оптичного розпізнавання символів (optіcal character recognіtіon programs). Звичайно програми для оптичного розпізнавання знаків (OCR-програми) використовуються для конвертування даних, отриманих за допомогою сканера, у текст, якому можна редагувати. (Деякі з цитат, що приводяться в цій книзі, були отримані за допомогою сканування відповідних статей і наступного використання OCR-програми для конвертування отриманого растрового зображення в текст.) Допустимо, що в комп'ютері мається така програма. Тоді ця програма автоматично запускається й аналізує растрове зображення. Якщо програма виявляє якісь розпізнавані символи (наприклад, знак зупинки і знак, що частково читається, з написом "Перша північна уица"), то починається перевірка орфографії цих текстів, у результаті якої видається повідомлення про те, що виявлене невідоме слово "уица", і пропонуються можливі варіанти виправлення: "вулиця", "утица", "ушица", "обличчя".
Програмне забезпечення замість того, щоб складатися з операційної системи і набору додатків, розглядається человекоориентированным інтерфейсом як набір команд, деякі з який є трансформаторами, автоматично викликуваними в тих випадках, коли тип даних, передбачених командою, не відповідає типу даних обраного об'єкта. При цьому може бути викликане більш одного трансформатора. Припустимо, що за допомогою одного трансформатора виробляється конвертація з А в В, а за допомогою іншого - з B у С. Якщо команда передбачає обробку даних типу З, а дані вибірки являють собою тип А, те перед виконанням команди повинні бути запущені два трансформатори. Якщо необхідних трансформаторів не мається, ніяких змін з вибіркою не виробляється. Користувачу при необхідності видається спеціальне повідомлення, а вибірка залишається без змін.
При такому підході замість прикладних програм розроблювачі будуть поставляти набори команд, що представляють собою сукупність взаємозалежних операцій. Наприклад, замість програми для обробки фотозображень розроблювач буде пропонувати ряд окремих команд, що у сукупності будуть давати ті ж можливості, що і програма. Користувач зможе встановлювати стільки команд, скільки йому необхідно, замість того, щоб установлювати цілий додаток, з якого йому може знадобитися тільки деяка частина. За допомогою Інтернету передовий розроблювач зможе продавати своє програмне забезпечення окремими командами і навіть передбачити знижки на покупку визначених чи наборів визначеного числа команд.
Коли користувачі ремствують на неймовірну складність додатків і просять, щоб програми були простіше, "без цих непотрібних дзвіночків і свистків", розроблювачі відповідають, що полегшені ("lіte") версії програмного забезпечення найчастіше не мають успіху на ринку. Невдачі з полегшеними версіями програмних пакетів можуть бути пояснені в такий спосіб. Оскільки користувач ніколи не знає, які саме можливості повного пакета можуть йому знадобитися, він купує весь пакет, тому що це єдиний спосіб одержання цих можливостей. Якщо користувач придбає обмежену версію за меншою ціною, єдиний спосіб, яким він зможе обновити цю версію, - це купити повний пакет, навіть якщо користувач хоче одержати тільки якусь одну невелику функцію з цієї програми. Тому виходить, що краще відразу купувати повну версію і примиритися з її складністю. У результаті не дивно, що ми виявляємося як би в пастці. Більш гуманним підходом було би надання можливості купувати команди по окремості.
У різних оглядах повідомляється про велику кількість ніколи не використовуваних елементів того чи іншого програмного забезпечення. В останнє десятиліття це число зросло приблизно з 15% до майже 50%. Це створює велике безладдя. Якщо ж замість додатків використовувати набори команд, кожна з який може бути встановлена незалежно від інших, користувачі зведуть показники цієї статистики майже до 0. Іншими перевагами такого підходу для розроблювачів є можливість поступенчато поліпшувати свої продукти, а також більш простим образом і частіше поставляти (тобто продавати!) нові елементи додатків, оскільки в цьому випадку виробникам не прийдеться щораз випускати весь пакет заново. Інтернет є самим придатним засобом для здійснення таких багаторазових поштучних продажів.
Розроблювачі (необов'язково ті ж, хто випускає набори прикладних команд) також можуть робити трансформатори. І вони теж можуть продаватися поштучно. Якщо більшість користувачів регулярно використовує більшість команд текстової обробки, випущених розроблювачем А, і розроблювач У придумає якусь корисну команду, що розроблювач А не поставляє, то розроблювач У зможе продавати цю команду покупцям продукту, виробленого розроблювачем А. Однак розроблювач У може використовувати іншу структуру даних. У цьому випадку він може запропонувати також і трансформатор для перекладу з однієї структури даних в іншу, і навпаки. Якщо продуктом, виробленим розроблювачем А, користається велике число споживачів, розроблювач У може створити версію даної команди, що працює безпосередньо зі структурою даних, передбаченої розроблювачем А. Крім того, третій розроблювач (З) може спеціалізуватися на розробці трансформаторів. Для користувачів може стати звичайною практикою купувати трансформатори саме в таких розроблювачів, а для розроблювачів команд - давати ліцензії на відповідні трансформатори. Ця комерційна структура частково вже існує сьогодні, і різні компанії (наприклад, DataVіz) спеціалізуються на розробці трансформаторів.
Елементи такого комп'ютерного середовища "команди плюс трансформатори" також існують, і їхній неважко буде зібрати в єдину робочу систему. Для користувачів такі системи будуть простіше у використанні і більш гнучкими в порівнянні із сьогоднішніми розробками, обмеженими застосуванням додатків. Таке рішення може зменшити ступінь надмірності і складності, зняти проблему сумісності між додатками і необхідність багаторазово вирішувати ту саму проблему. Згодом операційна система може цілком зникнути з полючи зору користувача. Якщо цього підходу будуть дотримувати належним образом, то навіть загальноприйнята версія операційної системи - робочий стіл - не збережеться в її сьогоднішньому виді.
Звичайно, не всі програми повинні бути побудовані по описаному принципі. Гри, наприклад, повинні просто запускатися і працювати самостійно. Запуск повинний здійснюватися звичайного шляхом - за допомогою вибору ( чимишею іншим способом) імені гри (можливо, з тексту, що включає список імен ігор) і потім використання команди Виконати (Execute). У розділі 6.2 також буде описаний альтернативний метод.
________________________________________
Чемне програмування: додатка як гості
Представимо, що ви були запрошені погостювати в будинку ваших гарних друзів Гримблсов. І навіть їхній собака здається вам дуже милої. Єдина проблема - це портрет їхньої улюбленої тіточки Астабьюлы, що висить над вашим ліжком. Цей портрет викликає у вас і вашої дружини нервове тремтіння, і ви не можете навіть спати в кімнаті, у якій на вас дивиться з портрета тіточка Астабьюла. Ви не зважуєтеся сказати про всім цьому Гримблсам. Як би ви надійшли в такій ситуації, будучи гостем у будинку своїх друзів?
1. Зняли би картину і спалили її.
2. Сховали б її у винному льосі, щоб Гримблсы після місяця пошуків знайшли її там.
3. Поставили б її в шафу, щоб Гримблсы знайшли її небагато раніш.
4. Поставили би картину в шафу і потім, перед від'їздом, повернули б її на своє місце.
Любою чемний гість знає, що варіант 4 є самим правильної. Принцип полягає в наступному: якщо ти робиш по тим чи іншим причинам зміни в або середовищу, подбай про те, щоб поставити всі речі на свої місця до того, як повернеться хазяїн.
Сучасні комп'ютери мають безліч параметрів зміни робітничого середовища, у тому числі голосність динаміків, дозвіл екрана і глибину зображення, вид меню, шрифт за замовчуванням. У комп'ютері Macіntosh маються сотні настроювань, а в ІBM-совместимых комп'ютерах, що працюють з операційною системою Wіndows і пакетом Mіcrosoft Offіce, це число перевищує тисячу. У чому жздесь паралель з візитом до Гримблсам? Якщо ви використовуєте або машину і змінюєте в ній які-небудь настроювання, то перед відходом ви, як людина чемний, повинні повернути всі зміни назад.
Багато програм для нормальної роботи вимагають визначеного дозволу екрана, визначеного числа біт на пиксел чи якогось іншого настроювання параметрів. Якщо ж параметри набудовані в системі неправильно, поводження програми може варіюватися в діапазоні від вихованого до грубуватого чи навіть варварського. Нижче приводяться реакції різних протестированных мною програм у випадках, коли параметри монітора не відповідали необхідним:
1. Повне відмовлення системи, після якого приходилося вручну робити перезавантаження комп'ютера.
2. Повне відмовлення системи з видачею незрозумілого числового повідомлення, після чого приходиться натискати на кнопку Перезапуск, щоб зробити перезавантаження комп'ютера.
3. Видається повідомлення про помилку, у якому говориться про необхідність настроїти параметри екрана. Коли ви натискаєте на кнопку OK, це приводить до повного відмовлення системи.
4. Видається повідомлення про помилку, у якому говориться про необхідність настроїти параметри екрана. Після натискання на кнопку OK ви можете відкрити панель керування і виконати необхідні настроювання.
5. Видається запит про тім, потрібно чи виконати зміну параметрів екрана. Якщо ви натискаєте на кнопку OK, настроювання автоматично змінюються. Якщо ви натискаєте на кнопку Скасування, запуск програми припиняється, а параметри екрана залишаються без зміни.
6. Параметри екрана змінюються без усякого попередження, і програма запускається.
7. У спеціальному діалоговому вікні видається повідомлення про те, що можна змінити настроювання екрана. Якщо ви натискаєте на кнопку OK, настроювання змінюються, і програма запускається. Після завершення роботи програми настроювання автоматично повертаються в початкове положення.
Читач з майбутнього може подумати, що повне відмовлення системи - це вуж занадто. Жоден з вищенаведених варіантів не можна назвати гідним увічливого гостя, хоча варіант -7 наближається до тому.
Найкращим варіантом є сполучення, що включає запит, згаданий у пункті -5, і спосіб виходу з програми, описаний у пункті -7. У малоймовірному випадку того, що зміна настроювань екрана може перешкодити проходженню іншого, рівнобіжного чи фонового процесу, такий запит дозволить відмовитися від запуску програми.
8. Параметри екрана змінюються без усякого попередження, і програма запускається. По завершенні роботи програми настроювання встановлюються в початкове положення.
Іншими словами, при запуску програми вона буде просто виконуватися передбаченим образом, не впливаючи на роботу інших програм. Це може служити визначенням вихованої комп'ютерної системи. Але що відбудеться, якщо дві програми, що вимагають різних екранних настроювань, одночасно будуть видавати якісь зображення? Імовірно, це буде ситуація, коли кінь буде відображатися з однією колірною палітрою, а риба з іншим дозволом.
Варіант із пункту 7, що розповсюджений і може показатися прийнятним, є невдалим, оскільки в ньому видається "діалогове" вікно, що, по суті, не дає ніякого діалогу. Це просте зловживання, тому що на повідомлену інформацію користувач не може дати якісну відповідь, що тільки приводить до порожньої витрати часу. (Метод прозорих повідомлень, описаний у розділі 5.2.3, дозволяє вирішити цю проблему.)
Прикладні програми, по суті, є тягарем для користувача, але раз вуж нам приходиться працювати з ними, давайте зробимо так, щоб вони працювали як випливає (див. також Raskіn, 1993). Узагальнюючи сказане, повторимо, що програма, чи в майбутньому команда, повинна автоматично виконувати перенастроювання параметрів, якщо це необхідно для її нормальної роботи. Після завершення роботи програми (чи переривання користувачем) усі параметри повинні бути відновлені у вихідне положення. Якщо відновлення неможливе чи може привести до небажаних побічних наслідків, повинне видаватися спеціальне попередження, у якому повідомлялося б про ці наслідки і пропонувалося б користувачу вирішити: чи продовжити чи дію ні.
В даний час ми не можемо застосовувати до одного екрана різні режими дозволу одночасно. Але це вже проблема іншого роду. Проте , на мій погляд, користувачі були б задоволені, якби робота кожного інтерфейсу керувалася пунктом 8.
________________________________________
________________________________________
27 Звичайно, якщо у вашій операційній системі неприпустимі довгі імена, то тут з'являється ще одна проблема.
28 Лівий символ звичайно віддаляється командою Backspace. - Примеч. науч. ред.
29 Зовсім недавно мені случилося покористуватися текстовим процесором з таким обмеженням на розмір абзацу. Я перевищив це обмеження вже як тільки вставив в абзац фотографію. Коли я сказав про це розроблювачам, вони визнали, що ніколи не думали про це. Таким чином, ніколи не слід ставити обмеження тільки тому, що так писати програму легше. Такі обмеження завжди будуть занадто вузькими.
30 Усе це стосується сучасних систем. У майбутніх, человекоориентированных системах користувачу ніколи не прийдеться явно робити збереження інформації.
31 Доктор Джеймс Уинтер (James Wіnter) з Іnformatіon Applіance продовжив такого роду уніфікацію структури, указавши на те, що в англійській мові вже мається аналогічна ієрархічна структура із символам-роздільникам, що використовується для відображення вищих рівнів організації тексту.
32 Того ж саме стосується і файлового імен і меню, що були запропоновані в цій книзі.
33 Тут я використовую термін послідовність у математичному змісті, щоб позначити безліч об'єктів, що включає перший об'єкт, другий і т.д.
34 Пошук може бути або зі збільшенням (покроковий (іncremental) пошук), або зі зменшенням (excremental).
35 Аналогічною проблемою є використання зарезервованих слів у мовах програмування.
36 Напевно, колись буде створений музей форм взаємодії, аналогічна музеям старого програмного й апаратного устаткування. Такий музей міг би бути створений в Інтернету.
37 Для того щоб середній час відповіді не перевищило 250 мс, можна використовувати такі методи, як предпросмотр і індексування.
38 Цей приклад ще раз показує, наскільки важливо проводити тестування інтерфейсів за допомогою аудиторії, на яку продукт орієнтований.
39 Цей клас функцій іноді називається фільтрами. Однак термін фільтр має на увазі скоріше добір, чим перетворення. Тому я віддаю перевагу терміну трансформатор, що рідко використовується в науці про комп'ютери (і часто використовується в описах схем), тоді як термін фільтр використовується набагато частіше (як, наприклад, у вираженні програма цифрової фільтрації (dіgіtal fіlter program)).
6. Навігація й інші аспекти человекоориентированных інтерфейсів
Середня людина випробує великі страждання від борошна нової ідеї.
Адмірал Вільям С. Симс
Одним із самих хвалебних термінів, використовуваних у відношенні інтерфейсів, є слово "інтуїтивний". При ближчому розгляді це поняття зникає так само безвісти, як кулька в наперстках, і заміняється більш простим терміном "знайомий".
Існуючі сьогодні системи навігації, що, потрібно відразу сказати, не є вдалими в будь-якому випадку, абсолютно не підходять для цілей обробки терабайт інформації, що ми змушені переглядати. Однак люди і тварини мають тисячолітню практику переміщення усередині складних середовищ і за цей час зуміли придбати деякі корисні навички. Ці здібності, що склалися протягом багатьох епох, можуть бути притягнуті для наших цілей - для створення того, що можна назвати масштабируемым інтерфейсом.