К.А. Дыкина (студент), Е.В. Резниченко (аспирант) МЕТОДИКИ

advertisement
К.А. Дыкина (студент), Е.В. Резниченко (аспирант)
МЕТОДИКИ РАСЧЕТА ЗАТРАТ НА СОЗДАНИЕ ПРОГРАММНОГО ПРОДУКТА
г. Томск, Томский политехнический университет
Расчет затрат на создание программного обеспечения является важным и необходимым этапом его разработки. Только при наличии верной и
обоснованной оценки можно организовать эффективное руководство проектом, получить результат в срок и правильно распределить затраты. Несмотря на наличие проверенных методик оценки, на практике предпочтение отдается линейному подходу[1], как самому простому. Однако такой
подход дает лишь приблизительную субъективную оценку. Поэтому целью данной работы является изучение методик расчета трудоемкости ПО,
исследуется возможность их практического применения с целью получения более объективной и достоверной оценки малых и средних проектов.
Наибольшее внимание уделено методике СОСОМО II как наиболее распространенной и эффективной.
В простейшем случае определить стоимость разработки ПО можно
исходя из количественной оценки трудозатрат Т (в неких единицах, например человеко-месяцах или человеко-часах) и их удельной стоимости
Ц:
С= Т∗Ц
Сами же трудозатраты можно определить исходя из следующей
формулы:
Т=З∗П,
где Р – размер исходного кода ПО; П – временная производительность. Эта примитивная формула активно применяется и по сей день, хотя ее несостоятельность очевидна.
О том, что трудоемкость и, соответственно, стоимость программного проекта нелинейно зависит от объема работ, было известно еще в
1
1970-х годах, когда появились первые научные публикации. Вероятно,
первой нелинейной моделью, использующей эмпирические данные и нашедшей практическое применение при оценке стоимости ПО, стала SLIM
(Software Life-cycle Model), предложенная в 1978 г. Лоуренсом Патнамом
(Lawrence Putnam) [2].
Модель SLIM была создана для проектов, объемом больше 70 000
строк кода, основывается на утверждении, что затраты на разработку ПО
распределяются согласно кривым Нордена-Рэйли, которые являются графиками функции, представляющей распределение рабочей силы по времени. Однако модель получила небольшое распространение в силу своей
специфичности (применима только для крупных проектов).
Самой популярной моделью оценки малых и средних программных
продуктов на сегодняшний день является СОСОМО II. Она представляет
собой усовершенствованную модель Барри Боэма СОСОМО. Для оценки
трудозатрат на базовом уровне модели COCOMO применялась следующая формула:
Т= а∗Р∗b,
где a и b – константы, которые зависят от режима использования
модели.
В соответствии с этой формулой трудозатраты вообще нелинейно
зависят от размера проекта и скачкообразно изменяются при смене режима. Другая интересная особенность COCOMO – рост трудозатрат при переходе к более высокому режиму не означает безусловного увеличения
длительности (F) выполнения проекта, которая вычисляется по формуле:
F = 2,5 ∗ T ∗ k.
В 1997 методика была усовершенствована и получила название
COCOMO II [3]. В данной методике формула оценки трудоёмкости проекта в человеко-месяцах имеет вид:
PM = A ∗ SIZE ∗ ∏
EM ,
2
где А=2,94, Е = В + 0,01 ∗ ∑
SF , В=0,91,
SIZE — размер продукта в KSLOC,
EMi — множители трудоемкости,
SFj — факторы масштаба,
n=7 — для предварительной оценки,
n=17 — для детальной оценки.
Для того чтобы адекватно спланировать проект и оценить его трудоемкость, необходимо выполнить предварительное проектирование программного продукта. В результате декомпозиции мы получаем некоторое
количество компонентов (N), которые составляют программный продукт.
Методика COCOMO II определяет следующую последовательность
вычисления трудоемкости проекта при многокомпонентной разработке.
1. Суммарный размер продукта рассчитывается, как сумма размеров
его компонентов:
2.
SIZE =
SIZE
Базовая трудоемкость проекта рассчитывается по формуле:
PM = A ∗ (SIZE ) ∗ SCED,
где SCED — сжатие расписания (Very Low — 75% от номинальной
длительности; Very High — 160% от номинальной длительности).
3.
Затем рассчитывается базовая трудоемкость каждого компо-
нента:
4.
PM = PM ∗
SIZE
SIZE
На следующем шаге рассчитывается оценка трудоемкости
компонентов с учетом всех множителей трудоемкости, кроме множителя
SCED.
PM ′ = PM ∗
EM
3
5.
И, наконец, итоговая трудоемкость проекта определятся по
формуле:
PM =
PM ′
Длительность проекта в методике COCOMO II рассчитывается по
формуле:
TDEV = C ∗ (PM )
где С = 3,67; D = 0,28;
. ∗ .
∗∑
∗
SCED
100
PMNS — трудоемкость проекта без учета множителя SCED, определяющего сжатие расписания.
Главной особенностью методики является то, что для того, чтобы
оценить трудоемкость, необходимо знать размер программного продукта
в тысячах строках исходного кода. Размер программного продукта может
быть оценен экспертами с применением метода PERT или функциональных точек.
Метод PERT - метод событийного сетевого анализа, используемый
для определения длительности программы при наличии неопределенности в оценке продолжительностей индивидуальных операций. Он был
практически одновременно разработан специалистами Главного морского
штаба ВМС США в ходе создания ракеты "Полярис" и экспертами корпорации "Дюпон", где получил своё второе название - метод критического пути. Длительность операций в нём рассчитывается как взвешенная
средняя оптимистического, пессимистического и ожидаемого прогнозов.
Задача метода функциональных точек разбить систему на мелкие
части так, чтобы они могли быть лучше понимаемы и анализируемы, что
обеспечивает более структурированный подход для решения проблемы.
Функциональные точки - единицы измерения проекта и они остаются по-
4
стоянными в независимости от программистов или языка реализации
проекта.
Различают две основные модификации метода функциональных точек: Mark II и FPA IFPUG.
Метод Mark II более удобен для оценки сложных систем, т.к. использует единое понятие транзакции, имеющей вход, обработку и выход.
Метод FPA разработан на основе опыта реализации множества проектов создания ПО и поддерживается международной организацией IFPUG (International Function Point User Group). Согласно данной методике трудоемкость вычисляется на основе функциональности разрабатываемой системы, которая, в свою очередь, определяется на основе выявления функциональных типов — логических групп взаимосвязанных
данных, используемых и поддерживаемых приложением, а также элементарных процессов, связанных с вводом и выводом информации.
В состав функциональных типов включаются следующие элементы
приложений разрабатываемой системы:
− Внутренний логический файл (ILF)
− Внешний интерфейсный файл (EIF)
− Входной элемент приложения (EI)
− Выходной элемент приложения (ЕО)
− Внешний запрос (EQ)
Для каждого функционального типа подсчитывается количество
входящих в его состав функциональных точек.
В результате суммирования количества функциональных точек по
всем
функциональным
типам
получается
общее
количест-
во функциональных точек без учета поправочного коэффициента. Значение поправочного коэффициента определяется набором из 14 общих характеристик системы (GSC, General System Characteristics) и вычисляется
по следующей формуле:
5
VAF = 0.65 + (
GCS ∗ 0.01)
Значения GSC варьируются в диапазоне от 0 до 5.
После вычисления поправочного коэффициента VAF, вычисляется
итоговая оценка количества функциональных точек:
где
AFP = UFP ∗ VAF
UAF = EI + EO + EQ + ILF + EIF
Таким образом, для практического применения при оценке малых и
средних проектов наиболее эффективна модель СОСОМО II, в которой
для определения объёма проекта применяется метод функциональных точек. Эта реализация сможет наиболее достоверно оценить затраты по
созданию программного обеспечения. Разработанная авторами прикладная программа, реализующая описанную методику расчета, может быть
применена как в учебных целях, так и для реальной оценки трудоемкости
создания программного продукта.
Литература
1. Орлов С.А. Технологии разработки программного обеспечения.
– СПб.: Питер, 2003. – 480 с.
2. Одинцов И.О. Профессиональное программирование. Системный подход. – СПб.: БХВ-Петербург, 2002. – 512 с.
3. Брауде Э. Технология разработки программного обеспечения. –
СПб.: Питер, 2004. – 655 с.
6
Download