Расчет трудоемкости разработки программного продукта
Для определения трудоемкости разработки прежде всего составляется перечень всех стадий, этапов и видов работ, которые должны быть выполнены. При этом особое внимание уделяется логическому упорядочению последовательности выполнения отдельных видов частных работ. В основе такого упорядочения лежит анализ смыслового содержания каждого вида работ и установление взаимосвязи между всеми видами работ. Важное значение в процессе анализа имеет выявление возможности параллельного выполнения отдельных видов работ, так как это позволяет существенно сократить общую длительность разработки.
Базовыми этапами разработки являются:
- инициализация, системный анализ и первоначальная разработка спецификации требований на программный продукт;
- предварительное (эскизное) и детальное (техническое) проектирование;
- разработка программных компонент, их комплексирование и отладка программного продукта в целом;
- испытания, опытная эксплуатация и распространение программного продукта;
- регулярная эксплуатация, ее поддержка и анализ результатов;
- сопровождение программного продукта, его модификация и совершенствование, создание новых версий.
Типовой перечень стадий, этапов и видов работ по разработке программного продукта независимо от его назначения и области применения дан в приложении 1 в соответствии с ГОСТ 19.102.77.
Расчет трудоемкости методом уточненной модели
Для более точного определения трудоемкости разработки программного продукта по отдельным элементам и операциям процесса может быть использован метод, в котором составляющие затраты труда определяются с учетом особенностей организации, ведущей разработку, и основных параметров программного продукта:
- степени новизны задачи;
- сложности алгоритма;
- количества разновидностей входной и выходной информации;
- сложность организации контроля входной и выходной информации;
- языка программирования;
- использования стандартных модулей и типовых задач.
Трудоемкость разработки программного обеспечения решения задачи можно рассчитать по формуле:
t = t o + t и + t a + t n + t отл + t д,
где t o - затраты труда на подготовку описания задачи, t и - затраты труда на исследование алгоритма решения задачи, t a - затраты труда на разработку блок-схемы алгоритма, t п - затраты труда на программирование по готовой блок-схеме, t отл - затраты труда на отладку программы на ЭВМ, t д - затраты труда на подготовку документации.
Составляющие затрат можно определить через условное число операторов в разрабатываемом программном обеспечении. В их число входят те операторы, которые необходимо написать программисту в процессе работы над задачей с учетом возможных уточнений в постановке задачи и совершенствования алгоритма. Условное число операторов Q в программе может быть определено по формуле:
Q = q c (1 + p),
где q - предполагаемое число операторов, с - коэффициент сложности программы, p - коэффициент коррекции программы в ходе ее разработки. Кроме этого используются коэффициенты квалификации разработчиков алгоритмов и программ - k и увеличения затрат труда вследствие недостаточного или некачественного описания задачи - В.
Коэффициент сложности задачи c характеризует относительную сложность программы по отношению к так называемой типовой задаче, реализующей стандартные методы решения, сложность которой принята равной единице(величина с лежит в пределах от 1,25 до 2); коэффициент коррекции программы p - увеличение объема работ за счет внесения изменений в алгоритм или программу по результатам уточнения постановок и описаний ее, изменения состава и структуры информации, а также уточнений, вносимых разработчиками для улучшения качества самой программы без изменения постановки задачи (величина p находится в пределах 0,05...0,1); коэффициент квалификации разработчика k - степень подготовленности исполнителя к порученной ему работе (он определяется в зависимости от стажа работы и составляет: для работающих до двух лет - 0,8; от двух до трех лет - 1,0; от трех до пяти лет - 1,1 - 1,2; от пяти до семи - 1,3 - 1,4; свыше семи лет - 1,5 - 1,6); коэффициент увеличения затрат труда вследствие недостаточного описания задачи В - качество постановки задачи, выданной для разработки, в связи с тем, что задачи, как правило, требуют уточнения и некоторой доработки (этот коэффициент в зависимости от сложности задачи принимается от 1,2 до 1,5).
Затраты труда на подготовку описания задачи to точно определить невозможно, так как это связано с творческим характером работы. Поэтому рекомендуется определить их экспертным методом.
Затраты труда на изучение описания задачи tи с учетом уточнения описания и квалификации программиста могут быть определены по формуле, чел.-ч:
tи = Q B / (75 – 85) k.
Затраты труда на разработку алгоритма решения задачи ta рассчитывается по формуле, чел.-ч:
ta = Q / (20 – 25) k.
Затраты труда на составление программы по готовой блок-схеме tп определяется по формуле, чел.-ч:
tп = Q / (20 – 25) k.
Затраты труда на отладку программы на ЭВМ tотл рассчитывается по следующим формулам, чел.-ч:
- при автономной отладке одной задачи
tотл= Q / (4 – 5) k;
- при комплексной отладке задачи
t к отл = 1,5 tотл.
Затраты труда но подготовку документации по задаче tд определяются по формуле, чел.-ч:
tд = tдр + tдо,
где t др - затраты труда на подготовку материалов в рукописи, равные Q / (15–20) k; t до - затраты труда на редактирование, печать и оформление документации, равные 0,75 tдр
При создании программного продукта повышение уровня языка программирования способствует снижению затрат на непосредственную разработку программ. Компактность и обобщенное представление алгоритмов задач на языках высокого уровня позволяет исключить ряд классов ошибок и снизить вероятность других. Снижение затрат на разработку наиболее существенно проявляется при создании небольших программ. При разработке сложных программных комплексов реального времени наличие трудоемких этапов системного и структурного проектирования, а также комплексной отладки и испытаний в реальном масштабе времени в значительной степени нивелирует эффект от использования языков высокого уровня.
С учетом уровня языка программирования трудоемкость отдельных этапов разработки программы может быть скорректирована следующим образом:
tкор = t kкор,
где tкор - коэффициент изменения трудоемкости (табл. 1).
Таблица 1
Изменение трудоемкости
в зависимости от уровня языка программирования
Уровень языка программиро-вания | Характеристика языка программирования | Коэффициент изменения трудоемкости |
Покомандный автокод- ассемблер | ||
Макроассемблер | 0,95 | |
Алгоритмические языки высокого уровня | 0,8 - 0,9 | |
Алгоритмические языки сверх высокого уровня | 0,7 - 0,8 |