Газета "Наш Мир" br> Газета «Наш
Мир»
Пара ошибок в коде программы — и добро пожаловать в техногенную катастрофу!
Сейчас банковскими кредитами пользуются многие.
И отлично известно, что, если хоть на день запоздать с очередным
платежом, банк-кредитор радостно включает штрафные санкции в виде
весьма ощутимых процентов по кредиту. А теперь представьте себе такую
ситуацию: в положенный срок вы приходите в банк сделать очередной
платеж, но это оказывается невозможным, потому что компьютерная
система, обслуживающая банк и обеспечивающая все его операции,
"подвисла". Назавтра уже все в порядке, но срок вышел, и почему-то
штраф налагается на вас, хотя вы-то в опоздании никоим образом не
виноваты. Фантастика? Ничуть, такое, увы, случается весьма нередко. И
даже если сумма вынужденной переплаты оказывается незначительной,
неприятно оказаться "без вины виноватым".
Куда приятнее было бы, если бы банкомат вдруг начислил на пластиковую карточку 20 миллионов рублей,
как это случилось однажды с неким господином Бородиным. Заметив такое,
г-н Бородин обратился в банк, сняв для подтверждения значительную сумму
(при этом банкомат еще подарил ему 20 миллиардов рублей). Разумеется, с
ошибкой разобрались, и громогласно восславили честность этого человека.
Но ведь гораздо чаще бывает наоборот. И обратное гораздо менее приятно:
человеку было необходимо срочно снять значительную сумму со счета в
банке — на следующий день была назначена сделка по покупке квартиры.
Удобней всего было воспользоваться банкоматом, но, указав необходимую
сумму и подтвердив намерение снять эти деньги, человек ничего не
получил. Чека он не запрашивал, и решил попробовать еще раз. Вторая
попытка ничего не изменила, и только в третий раз он запросил чек,
после получения которого ситуация прояснилась: банкомат деньги со счета
списывал, как выданные. Общение с банком помогло восстановить
справедливость, но время было упущено и сделка сорвалась: продавцы не
стали ждать. А другая квартира обошлась уже дороже.
Очень не повезло Токийской международной бирже, когда из-за сбоев в компьютерной системе она не могла проводить торги. Убытки составили очень существенную сумму даже для международной биржи.
Вроде бы ничего особенного — мы периодически все
сталкиваемся с различными проблемами с техникой. А в масштабах
всемирных это обязательно где-нибудь происходить будет в силу
принципиальной невозможности создать идеально надежное техническое
устройство. Но когда технические неполадки происходят у нас или наших
близких, друзей, знакомых, невольно приходится задумываться: в чем
причина такой ситуации? Виноват ли сам банк? И дело только ли в
излишнем доверии технике?
Развитие и улучшение — не одно и то же
Космическими челноками управляет едва ли не самое совершенное программное обеспечение в мире.
Ответственность программистов, создающих его, могла бы послужить хорошим примером
для большинства их коллег. Фото: NASA
Взглянув на заголовки компьютерных новостей,
можно заметить, что очень часто в них фигурируют слова "новая версия",
"новая модель", "обновление", и тому подобное. Не успели пользователи
привыкнуть к новшествам в одной версии, например, программы, как
выходят обновления, дополнения, а то и еще более новая версия. Создавая
новые продукты, производители преследуют главную цель — опередить
конкурентов и, соответственно, занять, удержать или расширить свою нишу
в каком-либо сегменте рынка или укрепить свои позиции на нем. Но в
погоне за результатом многие производители часто упускают очень важные
для нас, потребителей, факторы: надежность, удобство и безопасность их
продукции. А ведь зачастую именно это рекламируется как отличительная
черта производимой продукции по сравнению с конкурентами.
Частоты процессоров возрастают, ядра множатся,
объем доступной компьютерной памяти увеличивается, и при этом все
дешевеет — аппаратная часть компьютера становится доступней. Но
компьютер без программ — кусок железа, и ничего более. Лишь "наполнив"
память компьютера программами, мы получаем полноценный инструмент.
Фактически, пользователь превращается в хирурга (примем эту аналогию):
компьютер, как скальпель в опытных руках, позволяет делать очень тонкую
работу аккуратно. А представьте, что случится, если неожиданно, в самый
ответственный момент операции, в руках хирурга скальпель начнет
дергаться, выскальзывать из пальцев и неожиданно станет тупым?
Нечто подобное происходит, если программа,
которой поручено обрабатывать очень ответственную информацию, станет
"жить своей жизнью": производить непонятные действия, выдавать ошибки и
неожиданно самопроизвольно завершать работу, не сохранив обрабатываемую
информацию. А это может быть и программа в автоматизированной системе
управления опасным производством, и банковская система обслуживания
пластиковых карт. Да все, что угодно! Ведь компьютеры проникли
практически во все сферы нашей жизни.
Чарльз Фишман в статье "Они пишут правильную вещь" рассказывает о группе программистов из корпорации Lockheed Martin.
Эта группа в составе 260 человек производит ПО, которое управляет
космическими кораблями многоразового использования (Space Shuttle) на
всех этапах полета этого аппарата. Эта группа разработчиков — одна из
всего четырех организаций в мире, которая достигла пятого уровня по
правительственной шкале Института разработки программного обеспечения (Software Engineering Institute
— SEI) — меры сложности и надежности тех методов, при помощи которых
они делают свое дело. Ответственность, возлагаемая на работу
разрабатываемой этой группой программы, так велика, что ее качеству и
надежности отводится самая главная роль. И результатом этого являются
всего лишь семнадцать ошибок в одиннадцати последних версиях их детища!
И это при условии, что каждая версия имела порядка 420 000 строк кода.
Коммерческие программы подобного уровня
сложности имели бы в среднем пять тысяч ошибок: одно из исследований,
посвященных изучению надежности коммерческого программного обеспечения,
показало, что программы содержат от шести до шестнадцати ошибок на
каждую тысячу строк исполняемого кода. Согласно результатам другого исследования (T. Ostrand, E. Weyuker, 2002),
ситуация еще более тяжелая: частота ошибок в программах находится в
пределах от двух до семидесяти пяти на каждую тысячу строк исполняемого
кода.
Компьютерный палеолит
"Этот
кошмар со скорейшим выпуском новых версий продолжается и сегодня.
Давай, давай, давай! Нам никогда этого не сделать. Я говорил уже об
этом? Почему мы всегда так оптимистичны в наших планах по выпуску новых
версий? Я просто не понимаю. Приходим на работу к 9.30, уходим в 23.30.
В обед — домино. И три диетические Колы". Это сценарий Дугласа
Коупленда из книги "Поколение Икс". Но он очень точно описывает жизнь современной софтверной компании. И это доминирующий образ индустрии разработки программного обеспечения:
поколение "программеров" в спортивных майках с обезумевшими взглядами,
выжимающее слишком много "геройского" кода за слишком малое время.
Описаный мир, ставший известным, романтическим и даже неизбежным
благодаря историям из Sun Microsystems, Microsoft и Netscape, является отражением архаичности индустрии разработки коммерческого ПО.
"Это подобно дошумерской цивилизации, — говорит Брэд Кокс (Brad Cox), автор программ для компьютера NeXT и профессор университета имени Джорджа Мэйсона. — Тот способ, которым мы создаем ПО — это эра охотников и собирателей".
Программное обеспечение может быть двигателем
для постиндустриального мира, но его создание остается доиндустриальным
ремеслом. Согласно исследованиям, около 70% программистских организаций
застряли на первых двух уровнях по шкале SEI: хаос и нечто чуть лучшее,
чем хаос. Ситуация настолько тяжелая, что некоторые пионеры
программирования ушли из компаний, подобных Microsoft, чтобы
преподавать искусство создания ПО.
Марк Полк,
старший член технического совета SEI, говорит, что успех ПО делает его
недостатки еще более драматичными. "Мы разработали продукт, который
является невероятно сложным и невероятно мощным. Мы очень сильно от
него зависим, — говорит Полк, — к тому же все жалуются на то, насколько
оно плохое, со всеми его дефектами. Если бы вы купили автомобиль с 5000
дефектов, вы бы тоже были расстроены!"
На глиняных ногах
Взять хотя бы Microsoft: какие только хвалебные
слова по отношению к готовящимся к выпуску их программным продуктам не
услышишь перед его (программного продукта) поступлением в продажу! Не
стала исключением и последняя их операционная система (ОС) Windows Vista: если верить рекламе, кроме самой ОС пользователям для антивирусной безопасности не понадобится
более ничего. Между тем, задолго до выхода Vista практически все ее
нововведения были раскритикованы специалистами: их эффективность и даже
обоснованность наличия новых опций в ОС для многих экспертов является
большим вопросом.
Например, участникам конференции DefCon,
проходившей с 4 по 6 августа 2006 года в Лас-Вегасе (штат Невада, США),
было предложено "предпринять все усилия" и попробовать взломать
предоставленную специально для этого готовящуюся к выпуску операционную
систему Windows Vista. Этим компания намеревалась убедить всех, что ее
новое программное обеспечение будет самым надежным на рынке. Но вышло
не совсем так, как задумали в корпорации: пока ее представители долго и
подробно рассказывали о новых системах безопасности, в соседнем
конференц-зале участники с интересом слушали доклад по обходу этих
самых систем.
В основе идеи хакерской программы Blue Pill — популярный фильм "Матрица",
в котором именно такая пилюля открывала дорогу в "реальный мир".
Польская исследовательница Джоанна Рутковска продемонстрировала, что системы безопасности в Vista могут быть обойдены программой Blue Pill.
Внедренные докладчицей дополнительные небольшие программы, которые
фактически были средствами управления этим компьютером с другого на
любом расстоянии без ведома владельца, позволили получить полный
доступ, в обход установленных ограничений. Вместе с тем в своем докладе
она отметила, что использовала не самую последнюю версию для своего
исследования. По ее словам, в реальности обеспечить 100-процентную
защиту для системы с архитектурой Windows "невероятно сложно". Также
докладчица продемонстрировала метод, при помощи которого можно обойти
систему защиты User Account Control, активно рекламируемую Microsoft, и как ограниченный в правах пользователь может получить полный доступ в Vista.
Участники проводившихся Microsoft семинаров и
конференций во время слушаний о нововведениях в ПО чаще всего задают
докладчикам один и тот же вопрос: "Как это можно отключить?". Он
задается, по словам участников, куда чаще, чем все остальные вместе
взятые. А ведь с этими нововведениями будут сталкиваться не только
специалисты, но и обычные пользователи. И им разобраться в этих
хитросплетениях куда сложнее. И дело здесь даже не в том, что не
существует методов и средств, обеспечивающих разработку качественного
ПО — они, конечно же, есть. Проблема в том, что использование этих
средств — еще не гарантия написания качественной программы. Программы
пишут люди (программисты), и управляют ими такие же люди (менеджеры,
руководители проектов и пр.), которые могут ошибаться — и ошибаются. А
обнаружить ошибки и исправить их можно только при тщательном
тестировании программы, написанной с девизом "Качество и надежность", а
не выпуском "полусырой" программы под девизом "Быстрее, быстрее и еще
раз быстрее!!!". И получается, что главное для производителей программ
— не качество или удобство для пользователя, а соревнование, кто
выпустит быстрее на рынок новый продукт, пусть даже и с ошибками. А
пользователи потом страдают и ждут обновления, в которых эти ошибки
будут исправлены.
Но низкое качество только по причине ошибок при
написании программ — полбеды. Например, в последней версии операционной
системы Windows Vista Microsoft реализовала систему DRM (Digital Rights Management, Управление цифровыми правами). Питер Гутман резко раскритиковал
изменения, которые Microsoft внесла в Vista для защиты авторских прав.
Согласно его анализу, эти нововведения мало того, что увеличат
стоимость комплектующих (ведь для работы этой системы требуются
вычислительные ресурсы), но также приведут к неработоспособности
комплектующих, которые не поддерживают DRM аппаратно. И здесь
зависимость рядовых пользователей от Microsoft становится почти
рабской: контроль за любыми действиями будет наиполнейший, и если Vista
что-то не понравится, то ее реакцией будет ухудшение качества,
например, воспроизводимого фильма или музыки, а то и просто отключение
какого-либо устройства.
Но пострадают не только пользователи: в
зависимость попадают и производители компьютеров, которые для
обеспечения работоспособности своего оборудования под управлением Vista
должны будут встроить поддержку DRM в это оборудование. И,
соответственно, пользователи лишатся возможности устанавливать
операционные системы и программы, не поддерживающие DRM.
Сколько стоят компьютерные "глюки"
Между
тем, ответственность производителей коммерческого ПО крайне мала.
Фактически она стремится к нулю. Достаточно прочитать лицензию к
офисному пакету той же Microsoft — перечисление только заголовков
нескольких пунктов уже настораживает: отказ от гарантий, исключение
ответственности за ущерб, ограничение ответственности и размера
возмещения ущерба. Согласно последнему пункту, ответственность
корпорации составляет не более $5: нулевая ответственность при отнюдь
не нулевой стоимости (более $150 за самую урезанную и ограниченную
версию). Во множестве лицензионных соглашений присутствует пункт,
согласно которому программа поставляется "как есть" (as it is), то есть
производитель вообще никакой ответственности не несет за ее
работоспособность!
Конечно, не все выпускаемые программы низкого
качества: утверждать такое было бы неразумно, но… Но дело в том, что
"хорошие" программы в основном узкоспециализированные, где надежность
крайне необходима — примером является программа управления шаттлом. А
мы к тому же, как основные пользователи, привыкли в большинстве своем к
тому, как выглядит и работает Windows и MS Office, не желая попробовать
что-то новое или даже совсем не задумываясь, что есть альтернатива. Мы
"подсели на иглу" в виде ПО Microsoft, и неизвестно, кто в этом
виноват. На этой волне мы своими же руками возвели Microsoft в ранг
монополиста, и теперь эта фирма диктует свои условия пользователям и
даже производителям программ и комплектующих!
И именно поэтому Брюс Шнайер на конференции LinuxWorld OpenSolutions Summit
отметил, что, по его мнению, разработчики программного обеспечения
должны с большей ответственностью подходить к разработке продуктов, а
не уповать на то, что некоторые недоработки можно исправить выпуском
последующих обновлений.
А теперь обратим внимание на саму "железную
начинку" нашего "вычислительного друга". Тут ситуация немного лучше:
хотя самая толстая книга, вынимаемая из коробки только что привезенного
сервера, обычно имеет название "Limited warranty" ("Ограниченная
гарантия"), в целом покупатель при поломке может выставить продавцу или
производителю претензии (в определенных ситуациях). Но если вы из-за
неполадок с этим сервером что-то потеряете, то возместить потерю за
счет продавца или производителя не сможете ни на копейку — это будет,
как кто-то написал в одном из форумов, "вашей личной интимной
проблемой".
Получается, что покупатель сам виноват, что
купил у производителя его продукцию: если вы купили новую видеокарту
для компьютера своего ребенка, но драйверы, которые идут с ним в
комплекте, неработоспособны, что-либо предъявить производителю вы не
сможете. В сервисном центре вам в лучшем случае скажут, что проблема
известна, и над ней работают, и посоветуют заглянуть на их web-сайт
попозже, когда выйдет новая версия.
Человечество, вступив в эру цифрового общества,
стало всецело зависеть от цифровых технологий. И сбой в работе
вычислительной системы может привести к параличу банковской системы,
системы управления технологическими процессами на производстве, и так
далее. А последствия все могут достаточно ясно себе представить: уже
снято множество фильмов, темой которых являются техногенные
катастрофы...
|