Оригинал материала находится по адресу www.computerra.ru/think/sentinel/37125/
15.12.2004

Баги счет любят

Всякий раз, когда речь заходит о качестве программного обеспечения (читайте: количестве ошибок, производительности и подобных параметрах), находится кто-то, кто вспоминает популярный постулат: продукты, развиваемые на принципах open source только кажутся более качественными, нежели продукты проприетарные, в силу своей сравнительно меньшей популярности. Избитый пример, построенный на сопоставлении двух вечных антагонистов, Linux и Microsoft Windows, объясняет эту позицию легко. Linux используется в лучшем случае в десятки раз реже, нежели Windows, так что и внимания к ней привлечено меньше, и уязвимости обнаруживаются сравнительно реже.

Однако эта точка зрения не учитывает важного нюанса: принципиальной разницы в подходах к разработке проприетарного и свободного софта. В случае с программным обеспечением с закрытым кодом разработчикам платят за их труд. В случае с open source-продуктами девелоперы трудятся либо из чистого интереса, либо получая вознаграждение не напрямую; кроме того, они неизбежно взаимодействуют с массой разработчиков разных интересов и квалификации. Так почему бы свободному программному обеспечению и в самом деле не содержать меньше ошибок? Эта теория безусловно имеет право на жизнь, но что самое интересное - подтверждается фактами из жизни. В начале недели такого рода свидетельство взбудоражило западную компьютерную прессу.

Виновником беспокойства стала американская компания Coverity, а причиной - опубликованный ею отчёт об исследовании исходных текстов ядра операционной системы Linux. Потратив четыре года на совершенствование методов выявления ошибок в программном коде, эксперты Coverity "прошерстили" около шести миллионов строк Ядра версии 2.6 и обнаружили в нём немногим менее одной тысячи ошибок. Работа проделана большей частью в автоматическом режиме, программой SWAT, основные принципы функционирования которой основатели Coverity сформулировали ещё в бытность студентами Стэнфордского университета.

Задача SWAT - выявление ошибок в статическом коде C и C++, так что доступные всем исходники ядра свободной ОС пришлись как нельзя кстати. Впрочем, интересно другое: много это или мало, тысяча ошибок на почти шесть миллионов строк? Сравнивая с известной работой другой группы исследователей (Carnegie Mellon University), анализировавших качество кода некоторых проприетарных программ, можно утверждать, что мало. По самым скромным оценкам, в ядре Linux ошибки встречаются в шесть раз реже, нежели в программах с закрытым кодом.

По прочтении этого напрашиваются два вопроса. Первый: если специалисты Coverity сумели отыскать аж тысячу ошибок в ядре Linux, которое принадлежит всем нам в равной степени, почему бы не сделать следующий шаг и не опубликовать результаты поисков, дабы разработчики Ядра смогли устранить недоработки? И не станет ли Linux в результате идеальной системой - ведь все ошибки будут исправлены?

На самом деле публикация результатов ведётся с апреля и к настоящему моменту большая часть багов, открытых Coverity, уже исправлена. Но предполагать, что устранение выявленных программным инструментом ошибок сделает продукт идеальным, наивно. Алгоритмы автоматической идентификации багов в исходных текстах программ за последние несколько лет сделали большой шаг вперёд и в настоящий момент тот же SWAT на каждые четыре ошибки выдаёт всего одну ложную (читайте статью сооснователя компании в LinuxMagazine, "Squashing Bugs at the Source"). Но и по сей день "автоматика" умеет выявлять лишь самые простые, можно сказать очевидные баги. Такие автоверификаторы используются многими крупными компаниями, среди которых и Microsoft, но качество кода Windows всё ещё невообразимо далеко от идеального. Так что не следует ожидать каких-то чудес и по отношению к Linux.

Вопрос второй: разве исследование Coverity единственное? Конечно, нет. Велись аналогичные изыскания и другими коллективами, часть из которых подтверждает выводы Coverity, часть опровергает их. Но у Coverity есть одно неоспоримое преимущество, о котором уже шла речь выше: результаты работы этой компании опубликованы и уже применены с пользой для компьютерного сообщества. Так что оснований доверять сегодняшнему отчёту больше. А у линуксоидов появился ещё один повод для гордости.


open_source,Linux,Coverity,качество,программирование,баг

На форуме есть подходящий раздел.