<<
>>

Размер проекта

Важнейшим фактором влияния в оценке программного обеспечения является размер разрабатываемой программы, потому что он подвержен наибольшему разнообразию по сравнению со всеми остальными факторами.

На рис. 5.1 показана зависимость роста объема работ в среднем проекте бизнес-системы при увеличении размера проекта с 25 ООО до 1 ООО ООО строк кода. Размер проекта на рисунке выражается в строках программного кода (LOC), но динамика останется одной и той же независимо от того, в чем измеряется размер — в функциональных пунктах, длине списка требований, количестве веб-страниц или любых других показателях, выражающих те же диапазоны.

72 Глава 5 • Факторы, влияющие на оценку

Как видно из диаграммы, система, состоящая из 1 ООО ООО строк кода, потребует гораздо большего объема работы, чем система, состоящая из 100 ООО строк.

Утверждение о том, что размер проекта является основным фактором, определяющим затраты, покажется кому-то тривиальным, однако многие организации часто нарушают этот основополагающий принцип в двух отношениях: затраты, объем работы и сроки оцениваются без информации о размере проекта; затраты, объем работы и сроки не регулируются при сознательном увеличении размера проекта (то есть в ответ на запросы о внесении изменений).

Рис. 5.1. Рост объема работ в типичном проекте бизнес-системы. Конкретные числовые показатели имеют смысл только для средних бизнес-систем, но общая динамика применима к программным проектам всех типов

Объем

работы

(человеко-

месяцы)

Л              Л              ^              Л              jD

,0' ,?gt;' ,0' ^5' .O' ,Os ,?gt;

^              amp;              amp;              amp;              amp;              .«S'              lt;$

Размер проекта (LOC)

Источник: По данным модели оценки Cocomo il

при номинальных издержках масштаба (Boehm, et al 2000)

Рис.

5.1. Рост объема работ в типичном проекте бизнес-системы. Конкретные числовые показатели имеют смысл только для средних бизнес-систем, но общая динамика применима к программным проектам всех типов

СОВЕТ № 24

Приложите соответствующие усилия для оценки размера программы, над которой вы работаете. Размер вносит наиболее значительный вклад в определение объема работы и сроков.

Почему в книге размер задается в количестве строк программного кода?

Люди, не имеющие опыта оценки, иногда спрашивают, действительно ли количество строк программного кода является содержательным показателем для измерения размера программы. Во-первых, многие современные среды программирования

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

Издержки масштаба

Мы часто полагаем, что на построение системы, в 10 раз большей другой, потребуется в 10 раз больше усилий. Однако объем работы для системы в 1 ООО ООО строк превышает 10-кратный объем работы для системы в 100 ООО строк, а последний более чем в 10 раз превышает объем работы для системы в 10 000 строк.

Основная проблема заключается в том, что крупные проекты требуют координации между большим количеством групп, которым приходится больше общаться между собой (Brooks 1995). С ростом размера проекта число коммуникационных путей связи между людьми растет в квадратичной зависимости от количества участников проекта[4]. Динамика роста показана на рис. 5.2.

® ® ®

Рис.<div class=

5.2. Количество коммуникационных путей в проекте возрастает пропорционально квадрату числа участников" />

Коммуникационный путь Коммуникационный путь с 5 участниками              с              10              участниками

Рис. 5.2. Количество коммуникационных путей в проекте возрастает пропорционально квадрату числа участников

Следствием экспоненциального роста количества коммуникационных каналов (наряду с другими факторами) является экспоненциальный рост трудоемкости с увеличением размера проекта. Данное явление называется издержками масштаба (diseconomy of scale).

Вне области программного обеспечения мы обычно говорим об экономии масштаба, а не об издержках масштаба. Экономия масштаба означает примерно следующее: «Если построить больший обрабатывающий завод, мы сможем сократить стоимость единицы товара». Другими словами, чем больше объем, тем ниже стоимость.

С издержками масштаба дело обстоит наоборот — с увеличением масштаба системы стоимость каждой единицы повышается. Если бы в области программного обеспечения проявлялся эффект экономии масштаба, то стоимость системы в 100 ООО строк была бы меньше 10-кратной стоимости системы из 10 ООО строк. На практике почти всегда наблюдается обратное явление.

На рис. 5.3 продемонстрированы типичные издержки масштаба в области программного обеспечения по сравнению с увеличением объема работы, ассоциируемого с линейным ростом.

10 ООО до 100 000 строк кода" />

Объем

работы

(человеко-

месяцы)

Рис. 5.3. Издержки масштаба в типичных проектах бизнес-систем от 10 ООО

до 100 000 строк кода

Размер проекта (строк кода)

Источник: По данным модели оценки Cocomo II

при номинальных издержках масштаба (Boehm, et al 2000)

Как видно из графика, в данном примере на систему в 10 000 строк кода потребуется 13,5 человеко-месяцев. Если бы объем работ возрастал линейно, то система в 100 000 строк потребовала бы 135 человеко-месяцев, но в действительности она требует 170 человеко-месяцев.

На рис. 5.3 эффект издержек масштаба не выглядит особенно впечатляющим. Действительно, в диапазоне от 10 000 до 100 000 строк он не так уж силен. Тем не менее два фактора способны сделать эффект издержек масштаба более радикальным. Один фактор — это большие различия в размерах проекта, а другой — условия проекта, снижающие производительность при росте размера проекта. На рис. 5.4 изображен диапазон результатов для проектов в интервале от 10 ООО до 1 ООО ООО строк. Кроме номинальных издержек масштаба, на графике также показаны издержки в наихудшем случае.

Рис. 5.4. Издержки масштаба в проектах с большими различиями в размерах, а также издержки в худшем случае

Объем

работы

(человеко-

месяцы)

Размер проекта (строк кода)

Источник: По данным модели оценки Cocomo II при номинальных и худших издержках масштаба (Boehm, et al 2000)

Рис. 5.4. Издержки масштаба в проектах с большими различиями в размерах, а также

издержки в худшем случае

Из графика видно, что объем работы при худших издержках растет гораздо быстрее, чем при номинальных, а при больших размерах проекта эффект выражен гораздо ярче. В соответствии с кривой номинального роста, объем работы для 100 000 строк кода превышает объем работы для 10 000 строк не в 10, а в 13 раз. При 1 000 000 строк кода объем работы превышает объем работы для 10 000 строк уже не в 100, а в 160 раз.

С худшими издержками дело обстоит еще хуже. Объем работы для худшего случая при 100 000 строк кода в 17 раз превышает объем для 10 000 строк, а при 1 000 000 строк он больше не в 100, а в целых 300 раз!

В табл. 5.1 продемонстрирована общая связь между размером проекта и производительностью.

Цифры, приведенные в таблице, действительны только для сравнения между диапазонами размеров. Тем не менее представленная ими общая тенденция весьма важна. Производительность в мелких проектах в 2-3 раза превышает производительность в крупных проектах, а между тем самый мелкий проект может превосходить самый крупный по производительности в 5-10 раз.

Таблица 5.1. Связь между размером проекта и производительностью

Размер проекта (в строках кода)

Строк кода на человеко-год (в скобках — номинальное значение Cocomo II)

10К

2000-25 000 (3200)

юок

1000-20 000 (2600)

700-10 000 (2000)

ЮМ

300-5000 (1600)

Источник: По данным «Measures for Excellence» (Putnam and Meyers 1992), «Industrial Strength Software» (Putnam and Meyers 1997), «Software Cost Estimation with Cocomo II» (Boehm et al 2000) и «Software Development Worldwide: The State of the Practice» (Cusumano etal. 2003).

СОВЕТ № 25

He следует предполагать, что объем работ линейно зависит от размера проекта. Рост происходит по экспоненте.

В том, что касается издержек масштаба, имеются как положительные, так и отрицательные стороны. Начнем с отрицательных: при существенных различиях в размере проектов новый проект нельзя оценивать применением простого масштабного коэффициента к объему работ, известному по предыдущим проектам. Скажем, если объем работ для предыдущего проекта в 100 ООО строк кода составил 170 человеко-месяцев, можно предположить, что производительность составляет 100 000/170, то есть 588 строк кода на человеко-месяц. Данное предположение может быть разумным для другого проекта примерно такого же размера, но если новый проект в 10 раз больше, такая оценка производительности может оказаться смещенной на величину от 30 до 200 %.

Впрочем, это еще не все: в области неформальной оценки не существует простой методики, которая бы позволяла учесть значительные различия в размерах двух проектов. Если вы оцениваете проект, по размеру значительно отличающийся от тех проектов, с которыми ранее имела дело ваша организация, вам потребуется оценочная программа, использующая научные методы для вычисления оценки нового проекта по результатам старых проектов. Моя компания предлагает бесплатную программу Construx© Estimate™, выполняющую подобные оценки. Программу можно загрузить по адресу www.construx.com/estimate.

СОВЕТ № 26

Используйте специализированные программы для вычисления влияния издержек масштаба.

Когда можно смело игнорировать издержки масштаба

После всех плохих новостей настал черед хороших. Как правило, проекты, которыми занимается организация, имеют сходные размеры. Если новый проект по размеру мало отличается от прошлых проектов, обычно при его оценке можно

использовать простой масштабный коэффициент — скажем, количество строк кода на человеко-месяц. На рис. 5.5 показаны относительно малые различия при линейном и экспоненциальном росте в конкретном диапазоне размеров.

300

250

200

150

100

— Линейный рост

              Типичный рост

0 “I              i              i              i              I              I              I              I              I              I              I

alt="Рис. 5.5. Различия между оценками, полученными с применением простых коэффициентов, и оценками с учетом издержек масштаба, в одном диапазоне размеров будут более или менее минимальными" />

Размер проекта (строк кода)

Источник: По данным модели оценки Cocomo II

при номинальных издержках масштаба (Boehm, et al 2000)

Рис. 5.5. Различия между оценками, полученными с применением простых коэффициентов, и оценками с учетом издержек масштаба, в одном диапазоне размеров будут более

или менее минимальными

СОВЕТ № 27

Если ранее вы уже завершали предыдущие проекты, размер которых незначительно отличается от размера оцениваемого проекта (в диапазоне, в котором самый большой проект превосходит самый мелкий не более чем в 3 раза), для оценки нового проекта можно смело использовать масштабный коэффициент (скажем, количество строк кода на человеко-месяц).

Важность издержек масштаба при оценке программных проектов

В мире оценки программных проектов на точное определение влияния издержек масштаба направляются значительные усилия. Несмотря на важность этого фактора, следует помнить, что главным определяющим фактором в оценке является простой размер проекта. Эффект издержек масштаба является фактором второго порядка, поэтому основные усилия следует направить на получение хорошей оценки размера. О том, как создаются оценки размера, будет рассказано в главе 18.

<< | >>
Источник: Макконнелл С.. Сколько стоит программный проект. 2007

Еще по теме Размер проекта:

- Public relations (PR) - Антикризисное управление - Банковский менеджмент - Иновационный менеджмент - Контроллинг - Корпоративное управление - Маркетинг - Менеджмент организаций - Основы менеджмента - Отраслевой менеджмент - Стратегический менеджмент - Управление персоналом - Управление продажами - Управление проектами - Управленческие решения - Финансовый менеджмент -
- Аудит - Банки - Бизнес - Бухгалтерский учет - Макро и Микроэкономика - Маркетинг - Менеджмент - Философия - Финансы - Экономика -