Оценка трудозатрат на разработку ПО
Одной из проблем, которая встала перед нами пару лет назад, была сложность определения трудозатрат на программирование. Мы все время ошибались в наших оценках. Причем ошибались сильно. Чтобы уйти от практики оценки метозом 3П (пол, палец, потолок) мы провели исследование различных существующих методов оценки и в итоге взяв за основу метод функциональных точек, адаптировали его под свои задачи.
Метод функциональных точек
Обзор
Суть метода заключается в выделении в разрабатываемом продукте составляющих элементов, количество которых примерно можно оценить до начала работ. Такие элементы называют «функциональными точками». Затем, на основе статистики по другим проектам определяют отношение всех затрат на разработку к количеству функциональных точек. Это даёт «стоимость» одной функциональной точки. Зная эту «стоимость» и количество предполагаемых функциональных точек рассчитывают стоимость нового проекта.
Литература
- Обзор метода функциональных точек (Лекции по управлению программными проектами); CITForum.
Упрощённый метод ФТ
Это экспериментальный упрощённый вид метода функциональных точек. Оценка, полученная с его помощью, должна проверяться экспертом!
- function-point.ots — таблица рассчитывающая время на программирование по упрощённому методу функциональных точек.
Исходные данные
Исходными данными для расчёта служат:
- Количество объектов данных. Объект данных — это товар, статья, вариант исполнения товара, фотография галереи и т. д. Объектами могут быть производители, категории, фотографии товара и т. д. если у них больше одного свойства (см. ниже).
- Количество свойств у объектов. Каждый объект имеет набор свойств. Для статьи это могут быть заголовок, текст и время добавления, для фотографии — картинка, миниатюра, название.
- Количество представлений информации. Представление — это страница определённого вида. Например, список товара и карточка товара — это два разных представления. Также отдельными представлениями считаются электронные письма, генерируемые файлы и т. д.
- Количество элементов ввода. Элементы ввода — это то, что позволяет посетителю вводить информацию, управлять информацией или перемещаться по сайту. Это поля ввода в формах, это кнопки, ссылки или значки типа «Удалить», «Добавить в корзину», «Вернуться к списку»…
- Количество элементов вывода. Элементы вывода — это количество выводимых свойств объектов. Например в карточке товара, имеющего 10 свойств, как правило, будет 10 элементов вывода.
- Количество транзакций. Транзакция — это передача свойств объектов из БД к посетителю или наоборот. Для добавления товара нужна 1 транзакция: введённые пользователем данные надо поместить в БД. Для изменения товара нужно 2 транзакции: сначала текущие свойства объекта надо передать пользователю, затем записать обратно сделанные изменения.
- Количество дополнительных сложных задач. Об этом ниже.
Всё это — функциональные точки.
Определение количества ФТ
Кол-во объектов и свойств объектов
Это количество определяется при написании эскизного проекта на основе информации от заказчика.
Кол-во представлений
Так же определяется при написании эскиза.
Для каталога (например, каталога товаров), как правило, надо 5 представлений:
- Список объектов (КИ)
- Карточка объекта (КИ)
- Список объектов (АИ)
- Добавление объекта (АИ)
- Изменение объекта (АИ)
Для оформления заказа, как правило, требуется 4 представления:
- Форма заказа (КИ)
- Страница «Заказ отправлен» (КИ)
- Список заказов (АИ)
- Просмотр заказа (АИ)
Кол-во элементов ввода, вывода и транзакций
Примерные значения (для CMS Eresus):
(КСО — количество свойств объекта)
Представление |
Эл. ввода |
Эл. вывода |
Транзакций |
АИ: Диалог настройки |
не менее 4 |
0 |
01) |
АИ: Список объектов |
3-62) |
50-90% от КСО3) |
2-44) |
АИ: Добавление объекта |
КСО + 25) |
0 |
1 |
АИ: Изменение объекта |
КСО + 36) |
0 |
2 |
КИ: Список объектов |
27) |
50-90% от КСО |
1 |
КИ: Карточка объекта |
1 8) |
КСО |
1 |
1) CMS это делает автоматически
2) «Добавить», «Изменить», «Удалить», «Отключить», «Сортировка», переключатель страниц
3) но редко больше 7
4) получение списка объектов, удаление, отключение, сортировка
5) кнопки «Добавить» и «Отмена»
6) кнопки «OK», «Применить» и «Отмена»
7) «Подробнее» и переключатель страниц
8) «Вернуться»