Лекция 6. Оценка трудоемкости и сроков разработки ПО

Оценка — вероятностное утверждение

Стив Макконнелл [1] пишет, что мы от природы склонны верить, что сложные формулы вида

всегда обеспечивают более точные результаты, чем простые формулы

Трудоемкость = КоличествоФакторов х СредниеЗатратыНаФактор

Однако, далеко не всегда это так. Сложные формулы, как правило, очень чувствительны к точности большого числа параметров (в приведенном примере формул COCOMO II содержится 21 параметр), которые надо задать, чтобы получить требуемые оценки.

Первое, что необходимо понимать при оценке проекта, это то, что любая оценка это всегда вероятностное утверждение. Если мы просто скажем, что трудоемкость данного пакета работ составляет М чел.*мес. (Рисунок 34), то это будет плохой оценкой потому, что одно единственное число ничего не скажет нам о вероятности того, что на реализацию этого пакета потребуется не более, чем М чел.*мес. Вряд ли мы можем считать себя «предсказамусами», которые точно знают что произойдет в будущем и сколько потребуется затрат на реализацию этого пакета работ.


Рисунок 34. Точечная оценка трудоемкости пакета работ ничего не скажет нам о вероятности того, что на реализацию этого пакета потребуется не более, чем М чел.*мес.

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

· Может ли вводиться несколько номеров?

· Должна ли быть проверка номеров на действительность?

· Простая или сложная проверка?

· Если реализуем простую проверку, то не захочет ли клиент заменить ее на более сложную?

· Должна ли проверка работать для иностранных номеров?

· Можно ли воспользоваться готовым решением?

· Каково должно быть качество реализации? Вероятность ошибки после поставки?

· Сколько времени потребуется на реализацию и отладку? (зависит от конкретного исполнителя).

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

То, что наша оценка должна быть вероятностным утверждением, означает, что для нее существует некоторое распределение вероятности (Рисунок 35), которое может быть очень широким (высокая неопределенность) или достаточно узким (низкая неопределенность).


Рисунок 35. Оценка — всегда вероятностная величина

Если M — наиболее вероятное значение, то это не означает что это хорошая оценка, поскольку вероятность того, что фактическая трудоемкость превысит эту оценку, составляет более 50%.

Какая оценка может считаться хорошей? Стив Макконнелл утверждает [1]: «Хорошей считается оценка, которая обеспечивает достаточно ясное представление реального состояния проекта и позволяет руководителю проекта принимать хорошие решения относительно того, как управлять проектом для достижения целей».