Оценка программных проектов: искусство или наука?

Оценка программных проектов: искусство или наука?

В настоящее время исследования в области оценки программных проектов сосредоточены на совершенствовании методов оценки, чтобы передовые организации могли прогнозировать результат с точностью ±5 % вместо ±10 %. В этих методах.
Введение.
задействованы интенсивные вычисления, их понимание требует хорошей математической подготовки и усердного, направленного изучения, а необходимая обработка данных выходит далеко за рамки того, что можно проделать на ручном калькуляторе. Такие методы лучше всего работают в виде специализированных коммерческих пакетов оценки программных проектов. Я буду называть их научными методами оценки.
С другой стороны, типичная фирма-разработчик вовсе не стремится к повышению точности с ±10 % до ±5 %. Она пытается избежать оценок, ошибочных на 100 % и более. (На то есть много причин, которые подробно рассматриваются в главах 3 и 4.).
Мы от природы склонны верить, что сложные формулы вида
всегда обеспечивают более точные результаты, чем простые формулы
Однако сложные формулы не всегда лучше. Программные проекты находятся под влиянием множества факторов, противоречащих многим допущениям, задействованным в сложных формулах научной оценки. Соответствующая динамика будет рассмотрена далее в книге. Более того, многие практические работники не имеют ни свободного времени, ни желания изучать сложную математику, необходимую для освоения научной оценки.
По этой причине в книге основное внимание уделяется эмпирике, процедурам и простым формулам, высокоэффективным и одновременно понятным для практикующих профессионалов в области программного обеспечения. Такие методы не обеспечивают оценок с точностью до ±5 %, но они сократят ошибку оценки до ±25 % и менее; для большинства проектов этого вполне достаточно. Я буду называть совокупность этих методов неформальной оценкой.
Материал книги основан как на научных, так и на неформальных методах, но в целом книга ориентируется на оценку программного обеспечения как искусство.
Почему и для кого написана эта книга.
Литература, посвященная оценке программных проектов, весьма обширна. Исследователи опубликовали сотни статей, и многие из них достаточно полезны. Однако у среднестатистического практика нет времени следить за десятками статей в малопонятных технических журналах. Ранее было опубликовано несколько книг, посвященных научной оценке. Такие книги содержат по 800-1000 страниц, требуют хорошей математической подготовки и пишутся в основном для профессиональных оценщиков — консультантов или специалистов, которые часто занимаются оценкой крупных проектов.
Я написал эту книгу для разработчиков, руководителей и специалистов по тестированию, для которых построение оценок является лишь одной из многих составляющих повседневной работы. Полагаю, многие практики хотели бы улучшить точность своих оценок, но не располагают свободным временем для получения докторской степени в области оценки программных проектов. Им при-.
Основные преимущества книги 15.
ходится решать практические вопросы: как обойти политические проблемы, связанные с оценкой; как представить оценку, чтобы она была принята начальством; и что нужно сделать, чтобы посторонние не могли изменить оценку по своему усмотрению. Если вы относитесь к этой категории, значит, книга написана для вас.
Методы, представленные в книге, применимы к разработкам для Интернета и интрасетей, разработке встроенного программного обеспечения, коммерческим системам, новым проектам, наследным системам, крупным проектам, мелким проектам — словом, к оценке практически любых видов программного обеспечения.
Основные преимущества книги.
Ориентируясь на неформальное искусство оценки, книга освещает ряд важных вопросов.
• Что такое «оценка»? (Вероятно, вы думаете, что ответ на этот вопрос вам уже известен, однако этот термин часто употребляется в неточном контексте, мешающем эффективной оценке.).
• Факторы, из-за воздействия которых ваши прошлые оценки оказались менее точными, чем могли бы.
• Способы отличить хорошую оценку от плохой.
• Различные приемы, помогающие лично вам создавать хорошие оценки.
• Некоторые приемы, которые помогут другим участникам вашей группы создавать хорошие оценки.
• Пути создания хороших оценок в вашей организации. (Между методиками личными, групповыми и организационными существуют важные различия.).
• Оценочные методы, работающие для проектов на базе гибких (agile) технологий, и методы, ориентированные на традиционные, то есть последовательные (плановые) проекты.
• Оценочные методы, предназначенные для мелких проектов, и методы, работающие на крупных проектах.
• Искусство лавирования в бурных политических водах, часто окружающих проблему оценки программных проектов.
Помимо лучшего понимания общих принципов оценки, материал книги поможет вам лучше оценивать конкретные атрибуты программных проектов, в том числе:.
• Разработка новых проектов, включая планирование, объем и стоимость работ.
• Планирование, объем и стоимость работ по наследным системам.
• Количество функций, обеспечиваемых той или иной итерацией цикла разработки.
• Объем функциональности, обеспечиваемой для всего проекта при фиксированном временном графике и размере группы.
• Доля других необходимых операций, связанных с разработкой, включая руководящую работу, постановку требований, конструирование, тестирование и исправление недостатков.
• Параметры планирования: соотношение между затратами и временем, оптимальный размер группы, размер страховочного буфера, пропорции между численностью разработчиков и специалистов по тестированию и т. д.
• Параметры качества: время, необходимое для исправления дефектов, решение проблем с дефектами, оставшимися в программном продукте во время выпуска, и другие факторы.
• И вообще практически все, что вы захотите оценивать.
Во многих случаях описанные в книге методы можно немедленно применять на практике.
Многим практическим специалистам даже не потребуется выходить за рамки концепций, представленных в книге. Тем не менее понимание изложенных принципов заложит основу для последующего перехода к другим методам, базирующимся на математических расчетах.
Чего нет в книге.
В книге не рассматриваются вопросы оценки очень крупных проектов (более одного миллиона строк программного кода, или более 100 человеко-лет). Очень крупные проекты должны оцениваться профессионалами, прочитавшими десятки статей в малопонятных технических журналах, изучившими книги по 800-1000 страниц, знакомыми с коммерческими оценочными программами, поднаторевшими как в научных, так и в неформальных методах оценки.
С чего начать.
Выбор отправной точки зависит от того, что вы хотите получить от этой книги.
• Если вы купили книгу, потому что вам нужно составить оценку прямо сейчас... Начните с главы 1, а затем переходите к главам 7 и 8. После этого кратко пройдитесь по рекомендациям в главах 10-20 и найдите те методы, которые принесут вам максимальную непосредственную пользу. Кстати, приводимые в тексте рекомендации выделены и пронумерованы, и все они (118) также собраны в приложении В, «Рекомендации по оценке программных проектов».
• Если вы хотите повысить личную квалификацию в области оценки, улучшить свою репутацию в организации или стремитесь лучше разобраться в области оценки программных проектов в целом... Прочитайте всю книгу. Если вы хотите понять общие принципы перед тем, как погружаться в детали, читайте все подряд. Если же вы предпочитаете сначала ознакомиться с деталями, а затем выводить из них общие заключения, начните с главы 1, прочитайте главы 7-23, а потом вернитесь к пропущенным главам.
Бельвью, Вашингтон Новый год 2006