Pull to refresh

Оценка сложности задач

Reading time 2 min
Views 12K

Оценка задач


При оценке сложности задач очень часто сложно выдать абсолютную оценку. Гораздо легче оценить относительный размер двух задач, т.е., например, сказать, что задача А в два раза больше задачи Б.
При agile-процессе разработки приходится оценивать много пользовательских историй.
Используя попарное сравнение снижается погрешность в определении оценок, и более того, эту погрешность можно вычислить.

Теория


Допустим нам надо оценить n историй. Обозначим размер каждой истории через si.
Чтобы найти размер каждой истории, мы оцениваем размер каждой истории относительно всех других историй и записываем результат aij в матрицу Anxn:

Матрицы
Отмечу, что заполнению подлежит только верхняя часть матрицы, т.к. aij = 1 / aji.

Расчет размера историй


Чтобы вычислить средний относительный размер истории mrsi нужно найти среднее геометрическое для i-той строки матрицы, т.е.

Среднее геометрическое     (1)

Средний относительный размер истории мало о чем нам говорит, поэтому размер истории, в нужных нам единицах, рассчитывается с учетом истории, размер которой нам известен sсправ:

Расчет размер истории,     (2)

где sсправ — размер справочной истории в нужных нам единицах (стори-поинтах, часах и т.п.), mrsсправ — относительный размер справочной истории, вычисленный по формуле (1).

Числовой пример


Представим что у нас есть четыре пользовательских истории для оценки, которые кратко опишем так:
  1. Регистрация/Авторизация
  2. Добавить пост
  3. Показать список постов
  4. Классификация постов

Заполним матрицу с относительным оценками:
1 2 3 4 Относительный размер mrsi Оценка si
1. Регистрация/Авторизация * 1 0.33 2.00 3.00 1.19 10
2. Добавить пост 3.00 1 3.00 5.00 2.59 21.83
3. Показать список постов 0.50 0.33 1 0.50 0.54 4.52
4. Классификация постов 0.33 0.20 2.00 1 0.60 5.08


Историю №1 мы взяли за справочную величину и оценили ее в 10 стори-поинтов. Размер историй № 2, 3, 4 вычислили по формуле (2).

Расчет индекса сходимости и доверительного интервала



Дисперсия оценок в матрице Anxn вычисляется по формуле [1]:

Дисперсия

Квадратный корень из дисперсии называется индексом сходимости:

Индекс сходимости

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

Погрешность

Доверительный интервал

Реализация


Я попытался реализовать этот функционал на Javascript. Выложил тут estimateit.ru.

Планы на будущее


Очевидным недостатком при использовании данного метода является то, что при росте числа оцениваемых историй, растет количество необходимых сравнений. Этого можно избежать используя не все сравнения, а только минимально необходимые.
Также есть методика для поиска несогласующихся оценок в матрице А.

Литература:

[1] Sizing User Stories Using Paired Comparisons // Eduardo Miranda, Pierre Bourque, Alain Abran
Tags:
Hubs:
+19
Comments 18
Comments Comments 18

Articles