Категории методологий

 

В мире существует довольно много типовых процессов производства программного обеспечения. ISO9001, ISO12207, ISO15504, CMM (Capability Maturity Model), MSF (Microsoft Solution Framework), RUP (Rational Unified Process), SCRUM, XP (eXtreme Programming), Crystal Clear, ASD (Adaptive Software Development), Lean Development – все это разновидности процессов производства программного обеспечения, семейства процессов и методологии.

Под методологией понимается набор методов, практик, метрик и правил, используемых в процессе производства ПО. Согласно Алистеру Кобурну, методология нужна для того, чтобы:

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

обеспечить взаимозаменяемость людей;

распределить ответственность;

произвести впечатление на спонсора/заказчика;

демонстрировать видимый прозрачный процесс;

создать учебную базу для своих сотрудников.

По определению Джима Хайсмита - «Настоящее назначение методологий – это увеличение производительности, обеспечивающее решения для заказчиков».

Методологии можно условно разбить на 3 категории – тяжелые, легкие и средние. Упрощенно, каждая из которых предназначена для работы в условиях, соответственно, больших, малых и средних проектов.

Первая категория методологий – «тяжелые методологии», появилась на свет раньше всех и является неотъемлемой частью моделей качества программного обеспечения. Тяжелые методологии отличаются тем, что охватывают все аспекты деятельности компании, производящей программное обеспечение – от управления требованиями и планирования процесса до регламентирования взаимоотношений с субподрядчиками и описания требований к вспомогательным процессам. Все методологии данной категории нетерпимы к изменениям и рассматривают людей как обычный ресурс. Примеры: CMM, ISO9000, SPICE.

Вторая категория методологий – «легкие методологии», появилась на свет в качестве некоторой совокупности методов и практик, применявшихся небольшими командами разработчиков в успешных проектах. Здесь огромное значение уделяется взаимоотношениями между людьми внутри команды, учитываются вопросы терпимости и другие психологические аспекты. Если попытаться сформулировать основной смысл легких методологий, то получится следующее: «Обеспечение максимальной скорости и качества разработки ПО при минимуме ограничений и условностей». В частности, во всех легких методологиях предусмотрен лишь необходимый минимум документов, т.к. отдается должное принципу «Документация – это не есть понимание». Существенным отличием данных методологий от методологий первого типа является отношение к планированию. Лучше всего суть этого отличия выразил Джим Хайсмит: «В традиционном планировании отклонения от плана являются ошибками, которые должны быть устранены. Однако, в адаптивном процессе, отклонения ведут нас к правильному решению». Примеры: SCRUM, XP (eXtreme Programming), Crystal Clear.

В третью категорию методологий – «средние методологии», попадают так называемые «универсальные» процессы. Самым ярким и известным представителем данной категории является RUP. Основной характеристикой подобных процессов является масштабируемость – т.е. процесс может быть настроен как на работу в малой команде над небольшим проектом, так и в большой команде над большим и серьезным проектом.

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

Рис. 1. Возможности команды при использовании методологий разного веса

 

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