После обучения программистов методологии PSP...
- ...в фирме Union Switch and Signal на этапах внедрения и промышленного использования пяти заказных КИС не встретилось ни одной ошибки. Все работы были выполнены точно в срок;
- ...в фирме Motorola в 18 проектах общим размером около 25 тыс. строк была обнаружена только одна ошибка;
- ...в фирме AIS время тестирования выпускаемых продуктов сократилось с 2 месяцев до 5 дней.
Согласно статистике, внедрение PSP снижает число ошибок в программах в среднем на 73%, точность оценки объема предстоящих работ возрастает на 26%, точность оценки времени работы над проектом - на 40%. При этом производительность труда программистов (число строк кода в час) увеличивается на 21%.
Уотс Хамфрей находит источник ошибок
С наличием в программах ошибок сегодня смирилось абсолютное большинство разработчиков и руководителей проектов. Ошибки считаются неотъемлемым атрибутом программирования, а не результатом некачественной работы.
Как сегодня выполняется крупный программный проект? Составляется календарный план, разработчикам (программы, функциональной модели, схемы базы) выдается задание, назначается руководитель, периодически проверяющий творчество подчиненных в рамках цикла 'написал - протестировал - выявил ошибки - исправил'. Чем больше таких циклов за время проекта удастся прокрутить, тем больше ошибок можно выявить и устранить. Ни о каком целенаправленном управлении качеством продукта речь не идет. Все так же тратятся бесконечные часы на отлов одних и тех же ошибок 30-летней давности. Немудрено, что главным достоинством хорошего менеджера проекта становится прежде всего способность организовать авральную работу программистов по ночам.
Может показаться, что управлять количеством ошибок в коде невозможно и их число зависит только от способностей конкретного человека. Это не совсем так. В конце 80-х - начале 90-х годов в программной индустрии был проведен ряд серьезных исследований эффективности труда программистов. Вот данные американского института программной инженерии SEI. Профессиональные программисты со стажем 10 и более лет на 1000 строк кода (СК, строка исходного текста, которая содержит программную инструкцию) допускают в среднем 131,3 ошибки. Следовательно, большая система размером миллион СК содержит 100 тыс. ошибок! Из них до 50% выявляется на этапе компиляции (если транслятор имеет развитую систему предупреждений). На этапе тестирования отдельных модулей (типичный программный модуль по определению SEI содержит от 5 до 5 тыс. СК) обнаруживается половина оставшихся ошибок. Получается, что перед этапами внедрения и комплексного тестирования в продукте еще скрывается 25 тыс. ошибок. Для их устранения на заключительных этапах тратится от 10 до 40 человеко-часов на ошибку, т. е. на доведение продукта до идеального состояния потребуется 125 лет работы.
Другая статистика. Типичный американский проект имеет объем 50 тыс. СК. Его создают 5 программистов, делая при этом 100 ошибок на тысячу СК. 50% ошибок выявляется на этапе компиляции с незначительными расходами времени, устранение ошибок на этапе тестирования занимает 90% времени. Стоимость устранения одной ошибки в готовом продукте оценивается в 4 тыс. долл. (по данным IBM, одна ошибка в ее продуктах обходится в 20 тыс. долл.).
Корень зла кроется в неправильных акцентах при управлении качеством ПО. Корреляция между числом ошибок, обнаруженных при тестировании отдельных модулей, и числом ошибок, найденных пользователями в готовом продукте, равна 0,91! Отсюда вывод - если на тестирование поступит некачественный продукт, он таким и будет выпущен в продажу.
Уотс Хамфрей, сотрудник SEI, активно участвовавший в разработке модели CMM (Capability Maturity Model), разработал технологию PSP (Personal Software Process), которая дает возможность программистам значительно повысить качество создаваемого ПО. PSP позволяет выявить максимальное число ошибок (в среднем 76,5%) именно на этапе тестирования модулей.