четверг, 27 декабря 2012 г.

Привычнология


Привычнология (habitology- придуманная мной наука, о которой я впервые написал в этом блоге в сентябре 2010 года в сообщениях "Обычнология" и "Ещё раз о правиле движения на круговой развязке".
В добавление к приведенному там примеру упрощения правила поведения на круговой развязке, можно привести немало иных примеров, когда своевременная привычнологическая экспертиза помогла бы сохранить немалые ресурсы (в том числе деньги потребителей сервисов, сделанных сейчас привычнологически безответственно). Особенно важна такая экспертиза при проектировании умолчаний.
Скажем, всякому, кто имел сомнительное удовольствие подключать WCF веб-сервисы средствами Visual Studio 2010, настраивая многочисленные параметры подключения, понятно желание избежать этой головной боли. 
Привычнологическая безответственность идеологов такого подключения особенно бросается в глаза, когда клиента сервиса заставляют заботиться о параметрах внутренней «кухни» подключения (нпр. maxBufferPoolSize="524288" maxReceivedMessageSize="65536", и т.п.).
Чтобы оценить уровень естественности подобного проектирования, представьте себе, что Вы готовите к отправке обычную почтовую посылку, а от вас требуют, кроме адреса получателя, описать также уровень квалификации и привычки работников почты, да ещё и с учётом веса,  стоимости и содержимого вашей посылки.
Привычнологическая экспертиза должна была бы требовать, чтобы клиенту было достаточно указать лишь тот единственный параметр, без которого обслуживание действительно невозможно - адрес сервиса (URL).
Кстати, именно так сделано подключение  "старых" ASMX сервисов.
Все остальные настройки полезны клиенту только тогда, когда его потребности особые, выходят за рамки привычного. Например, он особо заинтересован в скорости, соблюдении особой секретности и т.п.

Привычнологию можно определить как науку, изучающую привычный порядок вещей, оценивающую ущерб от действий, изменяющих привычный порядок, изобретающую методы защиты от нежелательных изменений, в особенности носящих принудительный характер, а также предлагающую при настоятельной необходимости обоснованные варианты обновлённого порядка, предназначенного стать привычным, действующим без специальных указаний, т.е. по умолчанию.
Другими словами, эта наука о противодействии вздорным изменениям (изменениям, навязываемых без особой нужды, в сущности, из-за шила у кого-то в известном месте J) и, тем более, противодействия изменениям злонамеренным.
Таким образом, привычнологию можно считать естественным обобщением экологии (с живой природы на весь жизненный уклад).
 Цель привычнологии – способствовать максимальной осторожности при внесении изменений. 
Осторожность при внесении изменений в программу, особенно программу работающую – существенный аспект квалификации программиста. Хотелось бы, чтобы это лучше было понято не только собственно программистами.
С другой стороны, когда изменения обоснованы, а тем более необходимы (с чем постоянно работают программисты и любые управленцы вообще), привычнология призвана способствовать тому. чтобы изменения вносились максимально осторожно и ответственно, минимально усложняя жизнь в условиях обновлённого порядка без специальных указаний (другими словами, по умолчанию).
Иначе говоря, привычнология - наука о «правильных», «естественных» правилах «привычного» поведения системы, когда ей специально ничего не предписывают, её не настраивают. Вполне могу претендовать на авторство идеи этой науки, хотя Дейкстра может считаться, как минимум, её вдохновителем (см. Критерий Дейкстры в «ЯП»).
Замечание. Ранее в этом блоге я использовал слово «обычнология». Теперь я думаю, что термин «привычнология» точнее отражает замысел.  Привычное (сообществу людей) может показаться совсем не обычным (даже очень не обычным и очень интересным) совсем другим людям.


2 комментария:

  1. В Финляндии в университетах (по крайней мере в технических) есть курс под названием usability - удобство пользования. Обязательный для студентов IT специальностей. Рассматриваются как раз такие ошибки проектирования систем.

    ОтветитьУдалить
    Ответы
    1. Я об этом не слышал. С другой стороны, в определении usability (например, в Википедии) или тестирования usability отсутствует какой-либо намёк на особое внимание к изменениям привычного, а также на какое-либо подобие привычнологической экспертизы в описываемом мною смысле.

      Удалить