- •Введение
- •1. Измерения и оценки метрик в программотехнике
- •2. Оценка трудоемкости и стоимости разработки программного продукта на основе его размера
- •Определение параметров программного продукта на основе оценки числа строк кода для каждого функционального блока.
- •3. Определение параметров проекта на основе оценки трудоемкости выполнения отдельных работ (Метод оценки усилий)
- •Распределение усилий на выполнение отдельных работ при разработке каждого блока (в человеко-месяцах)
- •4. Использование эмпирических моделей для оценок программных продуктов.Ресурсная модель комост
- •Коэффициенты уравнений комост
- •5. Метод функциональных точек
- •6. Производительность труда в группе разработчиков
- •6.1А. Учет числа взаимосвязей между разработчиками в группе.
- •Задание 5. Определение производительности труда группы взаимодействующих исполнителей Методические указания к выполнению задания 5
- •6.1.B Связи каждого участника группы с остальными
- •Методические указания к выполнению задания 6
- •6.2. Применение модели Филиппа
- •6.3. Применение модели Путнема
- •Рекомендуемая литература
- •Список использованных сокращений
- •Содержание
2. Оценка трудоемкости и стоимости разработки программного продукта на основе его размера
Общее описание метода.
Естественный подход к решению любой проблемы, если она слишком сложная, заключается в ее разделении на более простые, пока они не окажутся пригодными для решения. Затем каждая из подпроблем решается отдельно, при этом предполагается, что все решения могут быть объединены в одно общее. Оценка проекта программного продукта - это также форма решения проблемы и в большинстве случаев эта проблема также слишком сложная. Поэтому проблема , которую требуется решить, должна быть предварительно представлена в виде более простых и более управляемых подпроблем.
Размер программного продукта, оцениваемый числом строк иходного кода, относится, как уже отмечалось, к размеро-ориентированным метрикам, которые могут быть непосредственно измерены для каждого разработанного проекта.
Как правило, организации, занятые разработкой программного обеспечения, ведут регистрацию основных параметров каждого выполненного проекта-в виде записей базы данных. О каждом проекте собирается и храниться обычно следующая информация:
• трудозатраты (в человеко-месяцах);
стоимость разработки (в соответствующей валюте);
объем написанных программ (в строках исходного кода);
численность разработчиков (человек);
объем документации (в страницах) и т.п.
" В результате обработки этих данных, собранных по многим проектам, может быть получен, кроме основных, ряд производных базовых метрик, позволяющих проводить впоследствии оценки средней производительности труда разработчиков, стоимости разработки одной строки кода, относительного числа страниц документации на тысячу строк кода и т.д.
Перечисленные метрики позволяют прогнозировать трудоемкость и стоимость разработки новых проектов. Однако прежде всего возникает необходимость определения размеров будущего программного продукта, выраженных в тысячах строк исходного кода.
При разработке программного проекта менеджеру требуется оценить параметры проекта уже на самом начальном этапе системного анализа. Вместе с тем использование числа строк исходного кода (СИК) для оценки размеров программного изделия требует определенной степени детальности описания будущего продукта, что может быть достигнуто только в результате предварительной функциональной декомпозиции изделия.
В связи с вышесказанным последовательность действий для получения основных оценок программного проекта можно себе представить следующим образом.
На основе предварительного системного анализа должны быть определены основные функциональные подсистемы будущего программного продукта и ассмотрено их содержание с точки зрения сложности их программной реализации как отдельного функционального блока программ.
Каждый функциональный блок необходимо оценить, используя экспертную оценку его размера в строках исходного кода. Очевидно, что после декомпозиции новной функции системы оценка каждого блока может быть выполнена более точно, чем оценка всей системы в целом.
В процессе экспертной оценки размеров каждого блока должны определяться доверительные границы каждой оценки.
Суммирование оценок числа строк кода по всем блокам и вычислениеобщей дисперсии суммарного среднего позволяет определить среднее число строк исходного кода программного продукта и границы доверительного интервала полученной оценки. Эти данные становятся исходными для последующих рачетов.
5. Для определения стоимости и трудоемкости разработки проекта требуются данные о производительности труда исполнителей (строк кода в человеко-месяцах) и средней стоимости создания строки кода. Эти данные обычно характеризуют уровень производства, достигнутый в организации на данный период времени и должны быть взяты из базы данных о предыдущих проектах подобного типа. Такая база данных может создаваться в организации, где планируется разработка программного проекта, но может использоваться информация из хранилищ других организаций. На практике использование этих исторических данных обычно дополняется их экспертной корректировкой, учитывающей особенности, сложность и объемы каждого из блоков.
Используя данные об оценках размера каждого блока и данные о производительности труда исполнителей и о затратах на одну строку кода (также применительно к конфетному блоку), легко определить трудоемкость и стоимость разработки каждого блока с указанием значений на границах доверительного интервала.
В результате суммирования данных по всем блокам получаем оценки трудоемкости и стоимости разработки всего изделия и степень доверия этих оценок.
Задание 1. Оценка трудоемкости, длительности и стоимости разработки программного продукта на базе оценки его размера в строках исходного кода
Методические указания к выполнению задания 1
На основании анализа требований заказчика на проектирование программного продукта (для случая курсового проекта) или на основе задания преподавателя провести функциональное разбиение системы на совокупность блоков. Для каждого блока с учетом используемого процедурного языка провести экспертную оценку его предполагаемых размеров. Оцениваются наименьший и наибольший возможный и наиболее вероятный размеры. На основе этих данных следует оценить средние значения размера каждого блока и их среднеквадратичные отклонения. Учитывая уровень сложности каждого блока, выбрать в. нормативной базе (или принять произвольные значения) статистические данные о средней производительности труда и стоимости разработки одной строки кода и определить стоимость и трудоемкость разработки каждого блока.
На основе полученных оценок найти оценки суммарного размера программного продукта и общую трудоемкость и стоимость его разработки, указав границы доверительных интервалов этих оценок с вероятностью 0,997 попадания в этот интервал.
При выполнении задания для расчетов использовать табличный процессор.
Примечание. Задание может быть выдано преподавателем с указанием блоков и их предполагаемых размеров, одновременно для каждого блока указываются производительность труда (строк в человеко-месяцах) и стоимость разработки одной строки исходного кода.
Последовательность выполнения задания.
Таким образом, последовательность действий по оценке размеров программного продукта, а затем трудоемкости и стоимости его разработки может быть представлена в следующем виде:
1) в результате предварительного анализа требований пользователя должен быть определен состав функциональных блоков, образующих автоматизированную систему;
после детального исследования особенностей каждого блока провести экспертную оценку возможного диапазона значений его размеров в строках исходного кода. При этом эксперт для каждой компоненты оценивает наименьший (оптимистический), наибольший (пессимистический) и наиболее вероятный размер рассматриваемого функционального компонента;
на основе экспертных данных для каждого функционального блока определить среднее значение для числа строк кода и среднеквадратическое отклонение от среднего, т.е. установить границы доверительного интервала для размеров каждого блока.
Среднее значение (математическое ожидание) для размера блока вычисляется по формуле МО=(а + 4m + b) / 6, где
а - наименьший возможный размер блока,
b - наибольший возможный размер блока,
m - наиболее вероятный размер блока.
Среднеквадратическое значение в предположении нормального распределения для оценки определяется по формуле СКВ = (b - а) /6;
на основе результатов подсчета размеров отдельных блоков определить средний размер всего продукта как сумму математических ожиданий размеров блоков и общее среднеквадратическое отклонение как корень квадратный из суммы квадратов среднеквадратических отклонений для отдельных блоков;
на основании общего среднеквадратического отклонения установить границы доверительного интервала для размеров программного продукта, которые использовать затем для подсчета оценок трудоемкости и стоимости разработки проекта;
для определения стоимости и трудоемкости разработки отдельных блоков использовать исторические данные о средней производительности труда (СИК/ЧМ) и стоимости разработки одной строки кода, собранныепо предыдущим проектам. Значения этих показателей определяются особенностями функциональных блоков и их значения также выбираются экспертами;
определить общую стоимость и трудоемкость разработки суммированием соответственно стоимостей и трудозатрат для отдельных функциональных блоков;п
деление общей стоимости и трудоемкости на размер программногопродукта даст соответственно значения средней стоимости разработки одной строки кода и среднюю производительность труда исполнителя (число строк в человеко-месяцах). Провести оценку доверительных интервалов для ожидаемых стоимости и трудоемкости разрабатываемого проекта.
Пример расчета параметров проекта.
Оценку числа строк кода программного продукта и определение трудоемкости и стоимости его разработки удобно выполнять в табличной форме, используя для расчетов табличный процессор. Пример такого представления . параметров программного продукта приведен в табл. 1 .
Таблица 1