Софт образцового поведения
АрхивКолонка ЗолотоваКупив пакет прокисшего молока и заработав диарею, вы можете компенсировать затраты на лекарства через комитет по защите прав потребителей. Купив текстовый процессор и потеряв из-за скрытой в нем ошибки результат нескольких дней труда вы можете... начать свою работу с начала. Есть ли шанс возложить ответственность на разработчиков?
Представьте себе, что на пакете, скажем, с молоком, который вы совсем уже было собрались положить в свою корзину в любимом супермаркете, обнаружилось бы следующее предупреждение: производитель снимает с себя всякую ответственность за любые последствия для здоровья человека, употребившего данный продукт по назначению. В смысле, что если вдобавок к обычной белковой смеси в пакете вдруг окажется цианистый калий, предъявить молочному комбинату вы ничего не сможете - и даже не потому, что к тому моменту будете лежать, радуя окружающих по-весеннему свежим, зеленоватым оттенком кожи, а потому что были предупреждены. В реальности такая ситуация исключена - благодаря многоступенчатой системе проверок, сертификаций и, конечно, ответственности за выпущенное и продаваемое. Но это продукты питания, категория, можно сказать, первой необходимости. Между тем каждый день мы потребляем заведомо некачественные продукты программные - и ничего с их производителями поделать не можем по причине, уже обозначенной выше: разработчики сняли с себя всякую ответственность, предупредив нас об этом. Фраза "This software is provided on an "AS IS" basis, without warranty of any kind..." ("продукт поставляется на условиях "как есть", без любых гарантий и обязательств, и прочая, и прочая, и прочая") без сомнения знакома каждому - такая или близкая к ней по смыслу формулировка начинает лицензионное соглашение на каждый программный продукт. Как смогли разработчики софта получить такие привилегии?
Вопрос кажется простым и очевидным, но - только кажется, ибо на самом деле буквально насыщен парадоксами. Можно лишь высказывать предположения, чем на протяжении последних как минимум двух десятков лет и занимаются все кому не лень - юристы, сами программисты и просто праздношатающиеся (собственно пользователи). Одна из самых популярных здесь идей - вечная незрелость программного обеспечения. При том, что термину software сто лет в обед (точнее, через два года исполнится полвека), программные продукты обречены на вечную молодость. Те же продукты питания "тестировались" природой на человеке тысячи лет, причём на протяжении всего периода свойства и потребителя, и потребляемого оставались неизменны. У программистов и времени в запасе поменьше, и свойства систем меняются стремительно: гарантировать одинаковое исполнение одной и той же программы даже на компьютерах одной платформы и архитектуры практически невозможно.
Юристы указывают на два других фактора, стоящих непреодолимым препятствием на пути к прекрасному миру тотальной software liability - миру, в котором разработчики софта отвечают за свои творения своим кошельком. Это невозможность дать чёткое определение понятию дефективности программы и определить уровень компетентности её создателей и тестеров. В самом деле, можно ли вообще строго описать "некорректное" поведение программы, за которое будет предусмотрена выплата компенсации? И можно ли говорить, что обладающий весьма специфическими знаниями ограниченный круг лиц, приложивших руку к созданию программного продукта и его проверке, может предусмотреть все варианты, в которых программа будет использоваться, как она будет использоваться, как себя поведёт и как использоваться не должна?
С последним тесно связан другой парадокс. Вопреки очевидной и обоюдной потребности в программах с нулевым количеством ошибок, практическое существование таковых под вопросом. В смысле, теория это, конечно, допускает, но на практике попытка написать идеальную программу неминуемо приведёт к разорению девелопера. Непомерное давление на разработчиков обязательно отразится и на нас с вами, посредством цены, которая подскочит, включив в себя лишние человеко-годы труда. Тем более что каждый участник индустрии программного обеспечения уже загнан конкуренцией в чрезвычайно узкие рамки, ощутить железный пресс которых на своей шее можно, к примеру, воспользовавшись шутливым симулятором, написанном студентами Стэнфорда: вообразите себя в роли автора робота-медсестры и попробуйте самостоятельно повыбирать между прибыльностью проекта и его надёжностью-предсказуемостью.
Есть, наконец, и ещё один парадоксальный момент, объясняющий низкое качество коммерческого софта. Дело в том, что баги не являются источником дохода. Понимайте буквально: заработать на ошибках невозможно. Невозможно продать новую версию программы, если она отличается от старой только лишь отсутствием ошибок. Десять лет назад это сказал Билл Гейтс - и старая истина справедлива и сегодня. Без давления извне, со стороны потребителей, чистка кода никогда не была и не станет приоритетной задачей для производителей.
Суммируя сказанное выше, приходим к печальному, но и в чём-то обнадёживающему выводу: лишив разработчиков программного обеспечения их вечной привилегии "постороннего наблюдателя", мы лишь ухудшим ситуацию, однако, есть ненулевая вероятность компромисса. Переложив часть затрат на пользователя и предоставив ему некоторые гарантии, производители в состоянии на порядок повысить качество своей виртуальной продукции. Примеры реальной эксплуатации такой схемы есть - так, в частности, работают QNX Software Systems и Oracle. Конечно, стоимость лицензии и внедрения, записываемая числом со многими нулями, должна быть по крайней мере сопоставима со стоимостью информации, для работы с которой предназначается продукт. И поэтому-то нам с вами, рядовым юзерам, рассчитывать особенно не на что. Нет, те данные, которыми оперируем мы, тоже оценили и ценят, но - сравнительно дешевле. Хотите знать точную цифру? Действительно хотите? Загляните в лицензионное соглашение бета-версии продукта Microsoft Windows AntiSpyware. Программа эта ещё молода и несовершенна, поэтому частенько ошибается (говорят, зачисляет в разряд вредного софта браузер Firefox, а некоторые независимые веб-порталы блокирует как распространяющие цифровую заразу). Так вот на случай, если вдруг работа программы приведёт к каким-то повреждениям на компьютере пользователя, последний вправе рассчитывать на компенсацию своих прямых потерь в размере до... 5 (пяти) американских долларов. Большего себе не может позволить даже Microsoft.