|
|
|||||
Технологии
Компьютерные баги - своего рода цифровые зловредные существа - биты ошибочного компьютерного кода, которые вносят хаос в самые известные программные продукты. И, несмотря на, попытки производителей программного обеспечения искоренить их, баги, напротив, распространяются еще быстрее.
В своем небезызвестном заявлении в начале года глава Microsoft Билл Гейтс (Bill Gates) сделал упор, в том числе, на борьбу с компьютерными багами, и 7.000 разработчиков компании в рамках программы улучшения надежности ПО получили возможность пройти специальный месячный курс по технологии избавления от багов. Но далеко не только Microsoft страдает от багов. Это относится ко многим производителям, в том числе к таким гигантам как Oracle или производителям видеоигр вроде Electronic Arts. Кроме того, всякий, кто использует программное обеспечение, наверняка не раз сталкивался с проблемами, которые могут принести имеющиеся в программах баги. "Некоторые из последних космических миссий на Марс не удались именно по вине ошибок в ПО", - прокомментировал Майкл Лоури (Michael Lowry), глава исследовательского отдела NASA. Почему же, собственно, возникают баги? Причины - в природе компьютерного кода и определенных условиях, влияющих на его создание. По словам вице-президента консультационной группы Gartner Джона Пескатора (John Pescatore) программирование - это наука, которая все еще развивается. Он сравнивает ее с химией: "прошел не один век, прежде чем люди научились создавать искусственные химические соединения, а ведь они долгое время просто смешивали и взрывали какие-то вещества, методом проб и ошибок". Многие программы пишутся, когда нужно быстро решить какую-то конкретную проблему, это, как правило, небольшие программы, в них не так много строк и если и попадаются баги, то они не имеют разрушительного воздействия. Но если это касается серьезных и больших программ, таких как операционные системы, вроде Windows XP, состоящей из миллионов строк кода, возможность возникновения ошибок, багов (равно как и сила их возможного отрицательного воздействия) возрастает во много раз. Есть примеры и таких багов, которые программистам часто просто не под силу устранить, несмотря на то, что у них есть достаточно времени, чтобы проанализировать и проверить код. Например, баг, связанный с переполнением буфера данных, недавно обнаруженный и в Windows XP и America Online Instant Messenger. Переполнение буфера, как известно, происходит тогда, когда программа пытается разместить в буфере больший объем информации, чем для этого выделено на диске. Хорошо написанная программа проигнорирует информацию, выходящую за пределы буфера (то есть, попросту "обрежет" данные) или попытается задействовать дополнительный участок памяти. Но в большинстве случаев программы будут записывать информацию, выходящую за пределы буфера, на другие участки диска, даже поверх уже имеющихся данных. Хакеры используют этот недочет, чтобы привести атакуемый компьютер к сбою или запустить на нем зловредную программу. Представитель SecurityFocus Альфред Хугер (Alfred Huger) отметил, что "написанию надежного компьютерного кода не учат в школах, этому программисты обычно учатся уже на рабочих местах". Кроме того, причиной неисправленных ошибок в коде служит обычное для программистов желание побыстрее дописать программу и выпустить ее, а также давление со стороны руководства и жесткие временные рамки, им устанавливаемые. Так, например, происходило в Microsoft, когда приоритетом для программистов было быстрое написание большого количества новых дополнительных программ и подпрограмм, или создание новых возможностей для уже существующих, тогда как чистоте и надежности кода не уделялось должного внимания. Теперь же все усилия руководства направлены на изменение этих приоритетов в сторону обеспечения надежности. Уоттс Хапри (Watts Humphrey) из Carnegie Mellon Software Engineering Institute предложил взять за основу при создании надежного кода следующий принцип: лучше с самого начала, с базы - писать чистый код, проверять "костяк" программы, чем выискивать и исправлять баги в уже созданной программе. Он аргументировал свое предложение относительной неэффективностью производимых программистами тестов на "отлавливание" багов. Тогда как специальные тестирующие программы могут проверить миллионы строк компьютерного кода и заметить ошибки, многие из багов может найти только человек, искусственный интеллект с этим не справится. В больших программах, вроде операционных систем, поиск бага можно сравнить с поиском неправильно размещенной записи в национальном телефонном справочнике. В прошлом покупатели ПО не отдавали предпочтения какой-то из программ только потому, что она была известна как bug-free (свободна от ошибок в коде). Но времена меняются. И компании-производители программного обеспечения, такие как Oracle и Microsoft, используют самые разные маркетинговые стратегии, чтобы привлечь внимание клиентов к своим технологиям "очистки" программ от багов; в том числе в рамках этих стратегий запланировано участие компаний в High-Dependability Computing Consortium, организованной NASA и Carnegie Mellon University. Бывший администратор NASA Дэн Голдин (Dan Goldin) отметил, что надежность программного обеспечения становится непременным фактором. И тогда как необходимость обеспечения надежности ПО для NASA очевидна, потому, что правительство не может допускать провалов космических экспедиций, частные компании не намерены отставать в своих разработках, чтобы обеспечить должный уровень конкурентоспособности. "В 1970-х состояние автомобильной индустрии походило на то, что сейчас происходит в индустрии программного обеспечения. Тогда как американские производители автомобилей пытались добавить как можно больше модных усовершенствований, больше влияющих на внешний вид, дизайн машин, чем на качество ее работы, японские производители концентрировались как раз на качестве. И можно видеть сейчас, каким большим упущением со стороны американцев была эта стратегия", - прокомментировал г-н Голдин. NASA занимается сейчас созданием специальной технологии для эмпирической оценки качества программных разработок. Исследования были начаты в январе этого года и на их осуществление были выделены значительные средства.
Рекомендуем
Обсуждение новости
|
|