Оценка затрат на разработку программного продукта
Методика расчета

Оценка затрат на разработку ПО является одним из наиболее важных видов деятельности в процессе создания ПО, хотя она и не выделена в стандарте ISO 12207 как отдельный процесс. При отсутствии адекватной и достоверной оценки невозможно обеспечить четкое планирование и управление проектом.
Недооценка стоимости, времени и ресурсов, требуемых для создания программ, влечет за собой недостаточную численность проектной команды, чрезмерно сжатые сроки разработки и, как результат, утрату доверия к разработчикам в случае нарушения графика. С другой стороны, перестраховка и переоценка могут оказаться ничуть не лучше. Если для проекта выделено больше ресурсов, чем реально необходимо, причем без должного контроля за их использованием, то ни о какой экономии ресурсов говорить не приходится. Такой проект окажется более дорогостоящим, чем должен был быть при грамотной оценке, и приведет к запаздыванию с началом следующего проекта.
Оценка затрат на разработку ПО предполагает выполнение следующих четырех шагов:
- 1. оценка размера разрабатываемого продукта. Для ПО в прежнее время основной мерой оценки являлось количество строк кода (LOC - Lines Of Code), а в настоящее время является количество функциональных точек (FPs - Function Points). Под функциональной точкой понимается любой из следующих элементов разрабатываемого продукта:
- · входной элемент приложения (входной элемент или экранная форма);
- · выходной элемент приложения (отчет, документ, экранная форма);
- · запрос (пара "вопрос/ответ");
- · логический файл (совокупность записей данных, используемых внутри приложения);
- · интерфейс приложения (совокупность записей данных, передаваемых другому приложению или получаемых от него)
- 2. оценка трудоемкости в человеко-месяцах или человеко-часах;
- 3. оценка продолжительности проекта в календарных месяцах;
- 4. оценка стоимости проекта.
Для расчетов используются Функционально ориентированные метрики.
Они косвенно измеряют программный продукт и процесс его разработки. Рассматриваются функциональность и полезность продукта. Используются 5 информационных характеристик:
- 1. Количество внешних входов, т.е., подсчитываются все вводы пользователя по которым, поступают все прикладные данные. Вводы должны быть отделены от запросов.
- 2. Количество внешних выводов (отчёты, экраны, сообщения об ошибках, распечатки) внутри каждого элемента.
- 3. Количество внешних запросов. Запрос - это диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода, при этом диалоговый ввод в приложении не сохраняется, а диалоговый вывод не требует выполнения вычислений.
- 4. количество внутренних логических файлов, т.е., логические группы данных, которые могут быть частью базы данных или отдельным файлом.
- 5. Количество внешних интерфейсных файлов. Подсчитываются все логические файлы из других приложений, на которые ссылается данное приложение.
Вводы, выводы и запросы относятся к категории транзакций - это элементарный процесс, различаемый пользователем и перемещающий данные между внешней средой и программным приложением. В своей работе транзакции используют внутренние и внешние файлы. Приняты следующие определения:
- · Внешний ввод - это элементарный процесс, перемещающий данные из внешней среды в приложение. Данные могут поступать с экрана ввода или поступать из других приложений. Данные могут использоваться для обновления внутренних логических файлов. Могут содержать как управляющую, так и деловую информацию. Управляющие данные не должны модифицировать внутренний логический файл.
- · Внешний вывод - это элементарный процесс, перемещающий данные, вычисленные в приложении во внешнюю среду. В этом процессе могут обновляться внутренние логические файлы. Данные создают отчёты или выходные файлы, посылаемые другим приложением. Отчёты и файлы создаются на основе внутренних логических файлов и внешних интерфейсных файлов.
Дополнительно этот процесс может использовать вводимые данные. Их образуют критерии поиска и параметры, не поддерживаемые внутренними логическими файлами. Вводимые данные поступают из вне, но носят временный характер и не сохраняются во внутреннем логическом файле (ВЛФ).
- · Внешний запрос - это элементарный процесс, работающий как с вводимыми, так и выводимыми данными. Его результат это данные, возвращаемые из внутренних логических файлов и внешних интерфейсных файлов. Входная часть процесса не модифицирует данных ВЛФ, а выходная часть не несёт данных вычисляемых приложением.
- · Внутренний логический файл - это распознаваемая пользователем группа логически связанных данных, которая размещается внутри приложения и обслуживается через внешние вводы.
- · Внешний интерфейсный файл - это распознаваемая пользователем группа логически связанных данных, которая размещена внутри другого приложения и поддерживается им. Внешний файл данного приложения является внутренним логическим файлом в другом приложении.
Данные для расчета сводятся в таблицу:
Имя характеристики |
Ранг, сложность, количество. |
|||
Низкий |
Средний |
Высокий |
Итого |
|
Внешние вводы |
i*3=____ |
i*4 =____ |
i*6 =____ |
= i |
Внешние выводы |
i*4=____ |
i*5 =____ |
i*7 =____ |
= i |
Внешние запросы |
i*3=____ |
i*4 =____ |
i*6 =____ |
= i |
Внутренние логические файлы |
i*7=____ |
i*10 =____ |
i*15 =____ |
= |
Внутренние интерфейсные файлы |
i*5=____ |
i*7 =____ |
i*10 =____ |
= i |
Общее количество = i |
Количество функциональных указателей вычисляется по формуле:

,
где - Fi - коэффициенты регулировки сложности.
Fi - может иметь значения: 0-нет влияния; 1-случайное; 2-небольшое; 3-среднее; 4-важное; 5-основное.
F1 - сколько средств связи требуется для передачи или обмена информации с приложением.
F2 - как обрабатываются распределённые данные.
F3 - нуждается ли пользователь в фиксации времени ответа или производительности.
F4 - насколько распространена текущая аппаратная система на которой будет выполнятся приложение.
F5 - как часто выполняются транзакции.
F6 - какой % информации вводится в оперативном режиме.
F7 - приложение проектировалось для обеспечения эффективной работы конечного пользователя.
F8 - как много внутренних файлов обновляется в транзакции.
F9 - выполняет ли приложение интенсивную логическую или математическую обработку.
F10 - приложение разрабатывалась для удовлетворения требований одного или многих пользователей.
F11 - насколько трудны инсталляция и преобразование приложения.
F12 - насколько эффективно и/или автоматизированы процедуры запуска, резервирования и восстановления.
F13 - была ли спроектирована, разработана и поддержана возможность инсталляции в разных местах для различных организаций.
F14 - была ли спроектирована, разработана и поддержана в приложении простота изменений.
После вычисления FP на его основе формируются метрики трудоемкости, стоимости и так далее:
Произведем расчет следующих характеристик по формулам:
