воскресенье, 20 февраля 2011 г.

Как делать эстимейты? Часть 2


В этой заметке мне хотелось бы снова поднять тему эстимейтов.

В предыдущем сообщении я рассказал о двух подходах, которые инженер может применять для оценки проекта. Один из них называется функциональная декомпозиция. Он заключается в том, что инженер дробит изначально большую задачу на небольшие части и затем оценивает каждую часть независимо от другой. Общая оценка получается в виде суммы оценок всех частей. Основанием для дробления является функция. Именно по этой причине сам подход и называется функциональной декомпозицией.

Данный подход можно использовать двояко:

В первом случае прикидываются затраты на реализацию пользовательских функций без учёта архитектуры программы и разбиения её на модули и компоненты.

Во втором случае разработчик оценивает каждую пользовательскую функцию с учётом текущего дизайна системы, т.е. прикидывает, какие изменения потребует реализация отдельной пользовательской функции в различных частях программы, и оценивает трудозатраты по объёму этих изменений.

Первый случай я условно называю оценкой в "системе координат" пользователя, а второй – оценкой в "системе координат" разработчика.

В прошлой заметке я приводил примеры эстимейтов, данных в "системе координат" пользователя. В этой же заметке мне бы хотелось привести пример оценки, сделанной в "системе координат" разработчика.

воскресенье, 13 февраля 2011 г.

Как делать эстимейты?

Нередко программисту приходится делать эстимейты, т.е. заранее оценивать, сколько времени займёт его работа, сколько времени придётся потратить на тот или иной проект.

В этой заметке я расскажу о нескольких подходах к созданию эстимейтов. Надеюсь, изложенная информация будет полезной.

Первый подход можно назвать "функциональной декомпозицией". Его суть заключается в том, что инженер "дробит" изначально большую задачу на ряд подзадач по функциональному основанию. Каждая из подзадач должна отвечать за выполнение некоторой полезной функции. Дробление следует осуществлять до тех пор, пока инженеру не станет понятно, сколько времени займёт реализация той или иной подзадачи.

Функциональная декомпозиция подходит как для грубой оценки проектов, так и для оценки отдельных задач в рамках конкретного проекта.

В общем случае, хочется дать такие рекомендации: