Баги счет любят
АрхивКолонка ЗолотоваСпециалисты компании Coverity сумели отыскать в исходниках ядра Linux почти тысячу грубых ошибок. Впрочем, в проприетарных программах того же размера грубых ошибок может быть и шесть тысяч, и даже сорок...
Всякий раз, когда речь заходит о качестве программного обеспечения (качестве кода: количестве ошибок, производительности и подобных параметрах), находится кто-то, кто вспоминает популярный постулат: продукты, развиваемые на принципах 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, уже исправлена (все заинтересовавшиеся могут найти подробную информацию на специальном разделе сайта компании, linuxbugs.coverity.com). Но предполагать, что устранение выявленных программным инструментом ошибок сделает продукт идеальным по меньшей мере наивно. Алгоритмы автоматической идентификации багов в исходных текстах программ за последние несколько лет сделали большой шаг вперёд и в настоящий момент тот же SWAT от Coverity на каждые четыре ошибки выдаёт лишь одну ложную (читайте статью сооснователя компании в LinuxMagazine, "Squashing Bugs at the Source"). Но и по сей день "автоматика" умеет выявлять лишь самые простые, можно сказать очевидные баги. Такие автоверификаторы используются многими крупными компаниями, среди которых и Microsoft, но качество кода Windows всё ещё невообразимо далеко от идеального. Так что не следует ожидать каких-то чудес и по отношению к Linux.
Вопрос второй: разве исследование Coverity единственное? Конечно, нет. Велись аналогичные изыскания и другими экспертными группами, часть из которых подтверждает выводы Coverity, часть опровергает их. Но у Coverity есть одно неоспоримое преимущество, о котором уже шла речь выше: результаты работы этой компании опубликованы и уже использованы с ощутимой пользой для компьютерного сообщества. Так что оснований доверять сегодняшнему отчёту больше. А у линуксоидов появился ещё один повод для гордости.