НовостиСобытияКонференцииФорумыIT@Work
Open Source:

Блог

ППО и СПО одинаково некачественны

Сергей Бобровский
13.05.2013 11:50:10

Это показал анализ 450 миллионов строк кода.

Coverity опубликовала отчет, в котором приведены результаты анализа 450 миллионов (!) строк кода различных проектов, СПО и ППО. Всего же сервис Coverity Scan, оценивающий качество исходного кода и отыскивающий в нем ошибки и потенциальные уязвимости, проверил за последние семь лет 850 млн. строк практически всех ведущих СПО-проектов (Linux, Apache, PHP, ...).

Общие итоги таковы: количество багов на тысячу строк кода для СПО составляет 0,69, для ППО -- 0,68; различие наверняка в пределах погрешности, хотя огромный суммарный объем проанализированных проектов нивелирует множество различий, связанных с организационно-техническими профилями проектов. То есть пресловутый один баг на тысячу строк кода как фиксировался со времен зарождения структурного программирования и первых методологий разработки типа "водопада" много десятков лет назад, так и по сей день, несмотря на развитие программной инженерии, качественно перебороть его не удается. Но тема провала этой борьбы вопрос отдельный, в данном же исследовании интересен совсем другой факт.

Посмотрите на эту картинку из отчета:


В СПО проектах удается выдерживать хорошее качество (0,44) для проектов среднего размера (0,5-1 млн. строк кода, типовые КИС или фреймворки), а вот в крупных задачах виден провал в качестве почти вдвое. С ППО ситуация обратная: на средних проектах уровень ошибок весьма высок (0,98), а вот в крупных проектах ситуация заметно получше (0,66).
Продолжает улучшаться Linux: в 2011-м в его 6,8 млн. строк кода находилось 0,62 бага на тысячу операторов; в 2012-м объем составил 7,4 млн. строк, качество немного просело до 0,66, а вот в текущем году нынешняя версия объемом 7,6 млн. строк уже тщательно вычищена, и плотность багов в ней всего 0,59.

Причины разницы в структуре распределения ошибок достаточно очевидны, но я всё же их озвучу. Проект СПО среднего размера обычно удается реализовывать "на коленке", без инвестиций в дорогостоящие процессы тотального тестирования и дополнительные накладные организационные расходы и вложения в реализацию особо устойчивой архитектуры системы. В итоге баги, вносимые бесплатными разработчиками (качество работы которых наверняка разнится очень сильно) удается успешно вылавливать именно из-за открытости системы, которую может поизучать любой добровольный тестер, а таковых находится немало.

Однако крупные СПО проекты подразумевают прежде всего очень качественное проектирование, для чего профи должны инвестировать в такие процессы существенные временные ресурсы, а где их взять. Скорее всего, рост плотности багов по мере роста СПО-проекта связан уже с антагонистическими архитектурными недоделками.

В ППО ситуация прямо противоположна. Под средние проекты набираются разработчики невысокого класса с улицы, а вложения в тестирование весьма ограничены и несравнимы, конечно, с СПО. А вот в больших ППО-проектах и бюджеты соответствующие, за счет чего к процессам проектирования привлекаются лучшие кадры.

Комментариев: 3

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии

13.05.2013 12:01:52

Исследование некорректное. СПО-проект - это уже внедрённое решение, доработанное под заказчика. Нельзя сравнивать программы для конечного пользователя с программами для интегратора smile:).

13.05.2013 12:34:29

Ну почему, Linux, PHP, MySQL миллионы людей используют самостоятельно. Да и коду ведь по фигу, для какой цели он пишется.

13.05.2013 12:42:01

И "коду пофиг" - это тоже аргумент smile:). Ведь ППО и СПО - это характеристики не особо технические. Допустим, была программа закрытой, а стала свободной. Результаты "исследования" можно выбрасывать.

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии