Задача
В качестве примера в настоящей статье используется расчет трудоемкости и стоимости проекта, состоящего из одной задачи.
В рамках проекта необходимо реализовать форму для расчета заработной платы сотрудника. Форма должна содержать поле для выбора сотрудника из списка сотрудников, таблицу для ввода табеля учета рабочего времени, dropdown список ставок НДФЛ (налогов на доходы физических лиц, например для нерезидентов ставка НДФЛ составляет 30%).
По результатам работы формы в зарплатной ведомости должна появится запись: год, месяц, сотрудник, зарплата, налог (НДФЛ). В таблице Табель учета рабочего времени должно появиться несколько строк, привязанных к строке зарпланой ведомости. Каждая строка соответствует одному отработанному сотрудником дню и содержит реальное количество отработанных часов.
Шаг 1. Функциональные компоненты
В данном проекте можно выделить следующие компоненты.
Вводы (External Inputs — EI):
-
Ввод данных сотрудника
-
Ввод табеля учёта времени
-
Обновление налоговых кодов
ИТОГО: 3 поля ввода средней сложности
Выводы (External Outputs — EO):
-
Генерация платёжной ведомости
-
Формирование налогового отчёта
ИТОГО: 2 вывода средней сложности
Запросы (External Inquiries — EQ):
-
Поиск и просмотр информации о сотруднике
-
Просмотр данных по текущей зарплате выбранного сотрудника
ИТОГО: 2 запроса низкой сложности
Внутренние логические файлы (Internal Logical Files — ILF):
-
Табель учета рабочего времени сотрудников
-
Платежная ведомость по месяцам
ИТОГО: 1 файл (таблица) низкой сложности, 1 файл средней
Внешние интерфейсные файлы (External Interface Files — EIF):
-
Таблица ставок НДФЛ
ИТОГО: 1 файл (таблица) низкой сложности
Шаг 2. Расчёт нефакторизированных функциональных точек (Unadjusted Function Points, UFP)
Используем стандартные веса IFPUG:
| Компонент | Низкая | Средняя | Высокая |
|---|---|---|---|
| Вводы (EI) | 3 | 4 | 6 |
| Выводы (EO) | 4 | 5 | 7 |
| Запросы (EQ) | 3 | 4 | 6 |
| Внутренние файлы (ILF) | 7 | 10 | 15 |
| Интерфейсные файлы (EIF) | 5 | 7 | 10 |
Теперь считаем:
-
EI: 3×4 =
-
EO: 2×5 =
-
EQ: 2×3 =
-
ILF: 1×7+1×10 =
-
EIF: 1×5 =
Итого UFP = 12 + 10 + 6 + 17 + 5 = 50
Шаг 3. Расчёт фактора корректировки (Value Adjustment Factor, VAF)
Оцениваем 14 общих характеристик системы. Для каждой характеристики нужно проставить значение от 0 до 5 в соответствии с нефункциональными (как правило) требованиями к проекту (например, требования к производительности, удобству, распределённой обработке и т.д.).
Ниже приведена таблица с характеристиками и назначенными нами коэффициентами.
| Характеристика | Балл |
|---|---|
| Передача данных | 3 |
| Распределённая обработка | 2 |
| Производительность | 1 |
| Интенсивно используемое окружение | 2 |
| Частота транзакций | 3 |
| Онлайн-ввод | 2 |
| Эффективность пользователя | 4 |
| Онлайн-обновление | 3 |
| Сложная обработка | 4 |
| Повторное использование | 2 |
| Простота установки | 2 |
| Простота эксплуатации | 2 |
| Использование на нескольких площадках | 1 |
| Поддержка изменений | 4 |
Допустим, суммарная оценка (Total Degree of Influence, TDI): — 35 баллов.
Формула VAF:
Шаг 4. Итоговые функциональные точки
× VAF =
Шаг 5. Перевод функциональных точек в трудозатраты и стоимость
Предположим, что в рамках оценки проекта, для реализации нашего проекта будут заложены следующие характеристики:
-
Продуктивность: 20 FP (фукнциональных точек) за 1 человеко-месяц
-
Часовая ставка: 2 500 рублей в час
-
Команда: 2 разработчика среднего уровня
Произведем необходимые расчёты:
-
Трудоёмкость в месяцах:
50 FP / 20 FP в месяц = 2.5 человеко-месяца -
Продолжительность:
2.5 человеко-месяца / 2 человека = 1,25 месяца -
Трудоемкость в часах:
2.5 человеко-месяца × 160 часов (20 рабочих дней) = 400 человеко-часов -
Стоимость:
400 × 2 500 = 1 000 000 рублей
Вывод
-
Функциональных точек: 50
-
Трудозатраты: 2.5 человеко-месяца
-
Срок: ~1.25 месяца (при команде из 2 человек)
-
Бюджет: 1 000 000 рублей
Заключение
На данном примере проекта можно увидеть, что:
-
Метода FPA является практичным для ранней оценки трудозатрат и стоимости проекта
-
Вполне оправдан при анализе проектов с бизнес-приложениям средней сложности
-
Метод дает возможность объективной оценки, не зависящей от технологий
- Так как на выходе метод дает функциональные точки (FP), можно сравнивать разные проекты между собой на объективной основе
Система для расчёта зарабоной платы (как в примере) - хороший кандидат для FPA, потому что:
-
проект имеет чёткие входы и выходы
-
взаимодействует с внутренними и внешними данными
-
содержит хорошо понятную бизнес-логику средней сложности
