Хамфрей считает, что самый верный путь повысить качество ПО - улучшить процесс создания и сопровождения программы. Каждый программист применяет собственный, персональный процесс разработки ПО (ППР), который всегда отличается от ППР другого программиста. Поэтому практически невозможно научить человека программировать без ошибок. Но можно научить тому, что надо делать, чтобы улучшать свой ППР. Для этого предназначен курс PSP, который состоит из 7 этапов. Каждый этап - своего рода неформальный уровень сертификации программиста.
- PSP 0. Понятие ППР. Измерение базовых характеристик работы - числа ошибок и затраченного времени.
- PSP 0.1. Измерение объема проекта.
- PSP 1. Оценка объема проекта.
- PSP 1.1. Оценка времени и других ресурсов, которые планируется затратить на проект. Составление календарного плана.
- PSP 2. Управление качеством. Обзоры проекта и кода.
- PSP 2.1. Проектирование программы.
- PSP 3. Совершенствование ППР. Циклическая разработка.
В заключение программист обучается навыкам коллективной работы, знакомится с принципами конфигурационного управления и т. д. Хамфрей считает, что пока программисты не научатся качественно писать небольшие программы, они не смогут хорошо работать в группе над сложными системами. Он недавно приступил к созданию методологии Team Software Process (TSP), которая будет применяться, если все члены команды прошли курс PSP. С помощью TSP небольшая команда программистов сможет очень эффективно организовать свою деятельность. Что дает методология PSP разработчику? Она помогает ему значительно (нередко в десятки раз) уменьшить число ошибок в своих программах, управлять качеством ПО и точно оценивать свою производительность. А умение составить хороший календарный план и способность выполнить работу с высоким качеством и в срок может сыграть ключевую роль в профессиональном росте, положительно сказаться на зарплате, отношениях с руководством и т. д.
Семь шагов самосовершенствования
Для применения PSP нужен набор из 76 форм, стандартов и инструкций, составленных SEI, на которых основываются формальные методы ведения работы и составляется план улучшения ППР. В России, насколько мне известно, курсов по обучению PSP нет, но даже простое знакомство с PSP способно принести программисту очень большую пользу, в чем я быстро убедился на собственном опыте.
PSP 0. Обучение основным способам измерения своей работы.
Программист знакомится с понятием ППР, в которое входят: сценарий работы, итоговая форма, календарный план проекта, протоколы затраченного времени и обнаруженных ошибок.
Сценарий ППР состоит из трех этапов:
- готовится календарный план, оценивается время на каждый этап;
- создается программа;
- составляется отчет о затраченном времени и найденных ошибках.
Работа осуществляется с помощью методов проектирования и разработки, характерных для конкретного программиста. Эти методы совершенствуются на следующих уровнях PSP. Второй этап сценария более детально выглядит так:
- составляется проект программы;
- исходные тексты компилируются, выявленные ошибки устраняются;
- проводится тестирование программы для выявления максимально возможного числа ошибок;
- составляется протокол работы с фиксацией затраченного времени и описанием найденных ошибок.
В каждой строке временного протокола записывается время начала и конца очередного этапа, время на перерывы и комментарий. В каждой строке протокола ошибок записывается число ошибок на данном этапе работ, тип каждой ошибки, время ее устранения, краткое описание, а также характеристика 'внесенная/обнаруженная'. Ошибка, по терминологии PSP, - все, что должно быть изменено в программе, чтобы ее можно было в дальнейшем нормально разрабатывать, улучшать или использовать. Внесенная ошибка - та, которая была внесена и выявлена до ближайшей компиляции; обнаруженная - выявленная при тестировании. В PSP считается, что число обнаруженных (после компиляции) ошибок должно стремиться к нулю. PSP использует типизацию ошибок, разработанную IBM.