Лучшей стратегией составления хорошего КП в PSP считается максимально возможная детализация всех работ в рамках проекта. Для этого надо учиться выявлять отдельные подзадачи, которые программист способен оценить достаточно точно.
КП составляется следующим образом:
- Определяются требования к продукту и основные модули, реализующие логику программы. Оценивается размер этих модулей в СК. Без данного этапа оценить размер всей программы практически невозможно, так как будет непонятна ее внутренняя структура.
- Объем работ в СК переводится в рабочие часы и определяется время на создание каждого модуля. На основе этих оценок и календаря составляется график работ. В дальнейшем программист должен периодически составлять отчеты о проделанной работе. Это необходимо для анализа персонального процесса разработки (ППР) и контроля за отклонением фактически затраченного на отдельные подзадачи времени от запланированного. Если это отклонение становится существенным (на план влияют непредвиденные события, неожиданные сложности и возникающие ошибки) или понадобилось внести в план новые работы, то необходимо переписать весь план заново - PSP не допускает его корректировки, потому что, как показывает статистика, было выяснено, что процесс корректировки плана значительно сложнее планирования с нуля и обычно служит источником новых ошибок. По реально затрачиваемому на первые этапы времени можно затем точнее прогнозировать время завершения всего проекта.
PSP 2. Управление качеством.
К критериям измерения работы добавляется новый - число ошибок. Программист учится выявлять дефекты в своих программах. Для этого применяется методика обзоров кода (code reviews) и проекта программы в сочетании с технологией иерархического проектирования ПО. Число ошибок прогнозируется по этапам плана. На каждом этапе фиксируется размер просмотренного кода, затраченное на просмотр время и число найденных ошибок.
В КП дополнительно включаются новые этапы по устранению дефектов - своеобразные фильтры ошибок. По окончании проекта анализируется, на каких этапах произошло отклонение числа ошибок от запланированных величин и в чем причина этого расхождения. Если программист внимательно просмотрит свой отчет по обнаруженным ошибкам, он сможет определить их главные источники и попытаться найти наиболее эффективные способы снижения их числа. Основная методика, предлагаемая PSP для выявления ошибок, - обзор кода, интуитивно названный отечественными программистами 'методом пристального взгляда'. Цель обзора - найти как можно больше ошибок в новом коде перед его первой компиляцией. Компилятор не рекомендуется применять даже для выявления синтаксических ошибок, как ни удивительно это покажется подавляющему большинству программистов! Это самый принципиальный элемент PSP. Дело в том, что, согласно статистике, компилятор языка Си++ не замечает 9,4% синтаксических ошибок, и не только опечатки (вместо оператора цикла for набрано foe, что можно обнаружить на основе анализа контекста автоматически). Например, вместо индекса i используется j. И та, и другая переменные описаны в программе, поэтому такая ошибка компилятором не распознается, а на этапе тестирования время на устранение подобных ошибок увеличивается в десятки раз.
Обзор кода - это визуальный просмотр текста программы, анализ логики выполнения отдельных операторов и другие методы проверки и поиска ошибок, формализованные инструкциями PSP. Например: проверка всех параметров модулей на выход за границы допустимых значений, проверка циклов и рекурсий на нормальное и ненормальное завершение, анализ взаимосвязей объектов и т. д. Обычно такие проверки реализуются программно, но гораздо важнее и эффективнее попытаться это сделать, не прибегая к тестированию, чтобы сразу выявить первопричины возможной некорректной работы. По данным разных исследований, при обзоре кода одна ошибка выявляется и ликвидируется в среднем каждые 5-20 мин (на этапе тестирования модулей - каждые 15-30 мин) и на этапе комплексного тестирования - каждые 8 ч. При этом число ошибок, устраняемых на этапе компиляции, снижается с 76 на одну тысячу СК до 13, а выявляемых при тестировании - с 34 до 10.