Добавить комментарий

Интерфейс: новые направления в проектировании компьютерных систем. Д.Раскин 2003

О ЧЕМ И ДЛЯ ЧЕГО ЭТА КНИГА

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

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

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

Таким образом, рыночно-конъюнктурные соображения, определяющие лицо (лицо ли?) современной технологической стадии цивилизации, рано или поздно ее, эту цивилизацию, и погубит! Есть ли возможность противостоять пагубной тенденции? Разве остановят людей, сознательно наносящих вред потребителю и в целом массе других сопланетников, моральные или религиозные соображения? Отнюдь! Единственную надежду я возлагаю на общественное мнение. Вероятно, для этого придется создать моду на качество, которая постепенно должна перейти в законодательную плоскость (как, наконец-то, это происходит с экологией).

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

С таким положением дел я, как и Раскин, категорически не согласен. Я почитаю надежность и эргономичность важнейшими качествами технического продукта. Я хочу просто работать, а не тратить свое время и нервы на борьбу с глюками техники имярек. Я не считаю нормальным, что купленная за $3000 среда программирования микроконтроллеров не работает под Windows-2000, в то время как нужная ей Windows-98 не желает работать на моем "слишком новом" компьютере. Я не считаю нормальным, что мой сотовый телефон зависает при наборе СМС так, что приходится вытаскивать аккумулятор. И я не желаю тратить время и деньги на поиск и установку бесконечных прошивок и патчей, каждый из которых с вероятностью 90% испортит не меньше, чем исправит. Однако самое ужасное, что потребитель с самого детства приучается считать все это нормальным!

Так вот, Раскин в своей книге открывает глаза на очевидное, которое воспитанный рынком потребитель в упор не желает признавать. Более того, Раскин систематизирует ряд проблем человеко-машинных интерфейсов и дает теоретическую базу для проектирования надежного и эргономичного программного обеспечения.

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

О НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Несколько лет назад представитель одной уважаемой фирмы, производящей банковское программное обеспечение (стоимостью десятки и сотни тысяч долларов, между прочим), в официальной переписке со мной так оправдывал глючность и незащищенность своего софта: "а на то банковским служащим и платят высокую зарплату, чтобы ошибок не делали!".

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

По первому вопросу Раскин справедливо и настоятельно утверждает, что данные пользователя (его овеществленный труд) есть самая большая ценность, которая ни при каких обстоятельствах не должна быть потеряна.
Теперь вспомните, как часто Вы теряли набранный кусок текста при необъяснимой фатальной ошибке Microsoft Word (tm)? Несмотря на наличие полезнейшей опции "автосохранение изменений", я еще не встречал ни одного пользователя, который бы не отмечал, что при использовании этой опции Word слетает с завидной стабильностью от версии к версии; причем заметно чаще, чем при ее отключении.

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

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

Хорошее ПО должно поощрять автоматические навыки работы, что возможно только в том случае, когда интерфейс является стабильным (не изменяет свой вид по каким-то неочевидным для пользователя правилам). Маленький, но яркий контрпример - задержка показа полного меню в пресловутом Word-е. Ниже - более подробно.

О МОДАЛЬНОСТИ ИНТЕРФЕЙСА

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

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

ОБ ЭРГОНОМИЧНОСТИ ИНТЕРФЕЙСА

Одним из самых неэргономичных аппаратных средств персонального компьютера является, естественно, мышь. Если кто-то в этом сомневается, пусть спросит пользователя (того же упомянутого операциониста, которому приходится вводить сотни однотипных документов в день без права на ошибку). Это настолько очевидно, и это жуткое устройство при содействии ленивых программистов попортило пользователю столько крови, что я даже разговаривать на эту тему больше не буду.

Раскин предлагает методику расчета эргономичности интерфейса, основанную на подсчете количества элементарных движений для выполнения тех или иных действий. Хотя она и небесспорна, я впервые встречаю такую методику в литературе.

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

О МАСШТАБИРОВАНИИ ИНТЕРФЕЙСА

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

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

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

Легкое масштабирование изображения привычно пользователям CAD-систем и является еще одним шагом вперед в деле эргономики интерфейса. Об ииспользовании такой технологии для представления любой информации и дальнейшем развитии этой технологии и говорит Раскин.

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

И НЕМНОГО О ФУНКЦИОНАЛЬНОСТИ

По собственной неосторожности я сломал верой и правдой служивший 20 лет ГДР-овский миксер. Пошел покупать новый, но не мог найти ничего похожего.Описывал ту функциональность, которая мне нужна, но продавцы меня не понимали. Они говорили: "Так не бывает. Вам нужен вовсе не миксер, а целый кухонный комбайн. Или несколько отдельных специализированных устройств".

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

Более свежий пример - невозможно найти ни одного сотового телефона, в котором были бы реализованы одновременно все функции - обязательно чего-нибудь да не хватает (хотя очевидно, что технических проблем в этом нет никаких). Я таки нашел подходящий смартфон (Motorola MPX-100),
ждал его полгода, пока не сообщили, что он не будет выпущен - продавцы не проявили заинтересованности в этой слишком хорошей модели. Естественно - кто же тогда будет покупать другие модели! (Забавно, что сегодня сообщений с этой формулировкой в интернете не нашел - тоже симптоматично ;)

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

  • облегчения собственного труда в дальнейшем (дешевле сразу спроектировать максимальную функциональность, чем наращивать ее поэтапно, как правило, путем существенного рефакторинга);
  • более полного удовлетворения потребителя и, следовательно, его уважения к Вам и, следовательно, косвенного увеличения спроса на более качественный продукт от Мастера;
  • наконец, улучшения качества жизни и окружающего мира в целом.

И эта последняя цель мне представляется самой важной и благородной.

Донской Алексей Николаевич
http://simulators.narod.ru