Качество открытого кода вполне на уровне проприетарного

27 февраль, 2012 - 15:05Игорь Дериев

Утверждение далеко не очевидное и потому регулярно вызывающее дискуссии (к примеру, как здесь). Однако в данном случае оно подтверждено независимым исследованием, проведенным компанией Coverity, которая специализируется на анализе программного кода.

В очередном ежегодном отчете Coverity Scan приводятся результаты изучения 45 open source проектов общим объемом в 37 млн строк кода (в среднем по 832 тыс строк, только 8 – свыше 1 млн). Coverity практикует так называемый статический анализ, т.е. собственно кода, вне зависимости от его исполнения. В качестве метрики используется плотность дефектов, т.е. их среднее кол-во на тысячу строк, причем учитываются только дефекты высокой и средней степени опасности. Общий результат по всей open source базе составил 0.45. Это отличный показатель, т.к. в среднем по софтверной индустрии он равен 1.0, соответственно, значения менее единицы считаются «хорошими». Чтобы не ограничиваться «средней температурой по больнице», приводятся также результаты трех конкретных проектов: Linux 2.6, PHP 5.3, PostgreSQL 9.1 – 0.62, 0.20, 0.21.

Сравниваемая проприетарная база состояла из 300 млн строк кода 41 анонимного проекта (в среднем, 7.5 млн строк). Плотность дефектов составила 0.62 – больше, чем у open source. В этом случае также сделан срез по отраслям (на которые ориентировано ПО): там, где к безопасности предъявляются повышенные требования (медицина, энергетика, машиностроение и пр.), плотность дефектов составляла 0.32, по остальным – 0.68.

Стоит, однако, обратить внимание, что исследуемые проприетарные проекты фактически были на порядок крупнее открытых. Плотность дефектов, как относительный показатель, достаточно объективна, однако кажется очевидным, что меньший объем кода легче поддерживать и обслуживать. Это заметно и внутри одной категории ПО: в трех упомянутых выше open source проектах (в том же порядке) – 7, 0.5 и 1 млн строк кода. Соответственно, и результаты двух последних ощутимо лучше. В PHP, правда, применяют инструменты анализа Coverity, но дело ведь не в том, как выявлять дефекты, а в том, как их устранять и не допускать в будущем. Также, возможно, стоило бы отдельно исследовать проекты с «генеральным разработчиком», который создал базовый код и оказывает определяющее влияние на его развитие.

Наконец, последняя оговорка. Оценки Coverity, вообще говоря, не характеризуют собственно ПО – только качество его программного кода. Аналогично, выявляются дефекты в основном формальные, ошибки же, допущенные на логическом уровне, требуют анализа динамического (т.е. во время или после исполнения). Таким образом, речь идет, скорее, о культуре программирования и управления проектом.

Тем не менее, следует признать, что по качеству кода популярные open source проекты не уступают проприетарным. Таким образом, у потенциальных заказчиков есть все основания доверять им и, соответственно, делать выбор в их пользу. Что это означает в «реальном» мире, говорит Gartner – согласно ее прогнозу, к 2016 г. open source решения будут присутствовать среди критичных приложений в 99% корпораций списка Global 2000 (в 2010 г. – только в 75%).