Неигрушечные цифры

12 февраль, 2009 - 15:13Андрей Зубинский

Выудил из отчёта об эффективности одной методологии програмимрования интересные данные о реальных программных проектах. Интересные в первую очередь в смысле оценки реальных масштабов, а то всяких urban legends много, а конкретных данных - мало.

Итак, четыре команды двух ведущих производителей ПО - три от Microsoft, одна - от IBM.

Команда IBM.
Специализация - разработка драйверов устройств из класса торговых терминалов (POS, Point Of Sale).
Опыт работы всей команды - около десяти лет.
Специфика проекта - сопровождение устоявшегося продукта и его модификаций (семь релизов с конца 1998 года), в том числе и глубоких - полная смена платформы в 2002 году, совершенно новые аппаратные средства.
Инструментарий - Java и очевидное сопутствующее (JavaPOS, например)
Численность команды - 9 человек.
Проект распределённый, 5 человек - в США (Северная Каролина), 4 - в Мексике.
В начале проекта опыт профессиональной работы только трёх программистов был от шести до десяти лет, остальных - менее пяти. Трое из команды практически не знали Java.
Никто из команды не участвовал  в проектах где использовалась TDD-методология.
Масштаб проекта - 41 KLOC (тысяча строк).
Срок исполнения - 119 человеко-месяцев.

Команда №1 Microsoft.
Специализация - разработка повторно используемой библиотеки, используемой более чем 50 внутренними подсистемами ОС Windows (различные сетевые примитивы и проч.).
Специфика - разработка "с нуля".
Инструментарий - C/C++
Численность команды - 6 человек
Проект локальный.
Практически все программисты - опытные (5 человек с опытом профессиональной работы от шести до десяти лет, всего один - до пяти лет).  Уровень знания инструментария и прикладной области - очень высокий.
Масштаб проекта - 6 KLOC.
Срок исполнения - 24 человеко-месяца.

Команда №2 Microsoft.

Специализация - разработка кода Web-сервиса в интересах подразделения MSN.
Специфика - разработка "с нуля", переменный состав команды.
Инструментарий - С++/C#
Численность команды - от 5 до 8 человек
Проект локальный.
Все программисты - опытные, но уровень знаний прикладной области и инструментария можно оценить как средний.
Масштаб проекта - 26 KLOC.
Срок исполнения - 46 человеко-месяцев.

Команда №3 Microsoft.
Специализация - программирование одной из функциональных подсистем среды разработки Visual Studio.
Специфика - разработка "с нуля".
Инструментарий - С#.
Численность команды - 7 человек.
Проект локальный.
Все программисты - очень опытные, с высоким знанием прикладной области и инструментария.
Масштаб проекта - 155,2 KLOC.
Срок исполнения - 20 человеко-месяцев.

Такая вот реальная картина.

Получается следующее.

За один человеко-месяц команда численностью 7-9 человек может разрабатывать от 0,34 до 7,76 тысяч строк кода весьма высокого качества.

Наибольшая производительность - у "инструментальщиков" (т.е., разработчиков инструментальных средств, команда №3 Microsoft).

Наименьшая - у работающих на уровне "железа", особенно незнакомого.

Близки к ним и разработчки отвественных повторно используемых компонент и библиотек.

Ну и, конечно, чем выше уровни применяемых инструментальных средств и знания их программистами, тем лучше. Кстати, C# себя показывает в этом смысле с лушей стороны, посему всяких идеологических противников платформы Mono можно не слушать. Как, впрочем, любых идеологических противников. Не до них.