Первая версия стандарта CMM (Capability Matyrity Model, что переводят как «модель зрелости процесса разработки ПО») была опубликована в 1991 году. Создатель стандарта – американский институт программной инженерии (Software Engineering Institute – SEI).
Главным понятием стандарта является зрелость организации. В модели CMM определено пять уровней зрелости. В результате аттестации организации присваивается определенный уровень, который в дальнейшем может повышаться или (теоретически) понижаться.
Начальный уровень (initial level) описан в стандарте в качестве основы для сравнения со следующими уровнями. На предприятии начального уровня нет стабильных условий для создания качественного ПО. Результат любого проекта целиком и полностью зависит от личных качеств менеджера и опыта программистов (т.е., если такие менеджеры и программисты уходят с предприятия, то качество производимых программных продуктов резко падает).
Повторяемый уровень (repeatable level). Предприятие на основе анализа успешных проектов начинает повторно использовать подходящие процессы создания программного обеспечения (ПСПО). Положительная практика документируется, организуется учеба сотрудников, и определяются пути улучшения ПСПО для их применения в смежных проектах. Создаются внутрифирменные стандарты ПСПО, внедряются процессы планирования и контроля за работой. Налаживается обратная связь с заказчиками. Определяются примерные ресурсы, требуемые для реализации проекта. Однако успех проекта все еще зависит от индивидуальных способностей сотрудников. В критических условиях возможен откат на начальный уровень.
Определенный уровень (defined level). Предприятие детально стандартизирует используемые ПСПО. Каждый раз по завершении проекта ПСПО улучшаются, причины улучшений документируются, и новые проекты реализуются на основе более зрелых процессов. Широко внедряются всевозможные учебные программы. Роль отдельных личностей перестает влиять на результат. Каждый сотрудник – от кодировщика до руководителя – точно знает, что он должен делать. Заказчик в любой момент может получить детальную информацию о текущем состоянии проекта. Фирма подготовлена к любым непредвиденным проблемам и способна их решить.
Управляемый уровень (managed level). Характеризуется эффективным управлением ПСПО, благодаря чему повышается качество создаваемых программных продуктов, и продолжают снижаться требования к ресурсам. Для областей, в которых фирма уже работала, удается точно уложиться в сроки и бюджет, для новых областей детально оговаривается небольшая зона риска. Возникающие проблемы оказывают минимальное воздействие на проект. Менеджеры не только в деталях понимают структуру проекта, но и начинают управлять ПСПО.
Оптимизирующий уровень (optimizing level). Фирма осуществляет непрерывную и неограниченную оптимизацию своих ПСПО. Для каждого процесса определены
сильные и слабые стороны и наиболее подходящие области применения. При работе над проектом менеджеры постоянно улучшают используемые процессы, причем степень улучшения поддается количественной оценке. В ПСПО вносятся новые идеи и технологии, анализируются и исправляются ошибки. Менеджеры не просто понимают процессы, но и осознают возможные пути повышения их эффективности.
При сертификации проводится оценка соответствия по 10–балльной шкале. Для успешной квалификации необходимо набрать не менее шести баллов.
Справка (информация на конец 1999 года):
· В мире совсем немного компаний, которые могут похвастаться наличием у них пятого уровня CMM хотя бы в одном из подразделений – таких всего около 50.
· Насчитывается несколько тысяч компаний, сертифицированных по третьему или четвертому уровню (т.е. существует колоссальный разрыв между оптимизирующим уровнем зрелости и предыдущими уровнями).
· По некоторым оценкам свыше 70 % всех компаний – разработчиков находятся на первом уровне CMM.
CMM создавалась с целью получения обоснованных процедур оценки и последующего развития технологии в тех организациях, которые претендуют на получение заказов по разработке имеющих оборонное значение проектов. Это делалось с подачи Министерства Обороны США (кстати, и SEI как таковой находится на бюджете Пентагона).
Американская компания не получит от правительства серьезный заказ, если она не прошла в SEI тестирование на соответствие, как минимум, третьему уровню: программистская фирма, сертифицированная по третьему уровню СММ, считается фирмой мирового класса.
Интересен вопрос о соотношении уровней CMM со стандартом ISO 9001: на каком уровне CMM должна находиться организация, чтобы получить сертификат соответствия ISO 9001? На первый взгляд, для этого необходимо иметь как минимум третий или четвертый уровень CMM. Тем не менее, существуют примеры организаций первого уровня, имеющих сертификат ISO 9001. Одной из причин для возникновения подобных несуразиц является высокий уровень абстракции ISO 9001 и связанная с этим свобода его интерпретации аудитором.
В 1995 году был опубликован стандарт People CMM, являющийся дополнением к Software CMM и имеющий, в целом, похожую структуру. Пять уровней модели (которые соответствуют уровням Software CMM) представляют стадии в эволюционном переходе от низшего уровня в работе с персоналом к высшему. Внедрение этого стандарта параллельно с обычным CMM обеспечивает организацию целым набором процедур по оценке и развитию всей системы найма, обучения и сохранения квалифицированных сотрудников.
К сожалению, использование CMM затрудняют следующие проблемы:
· Стандарт CMM не является общедоступным, он является собственностью Software Engineering Institute (в частности, дальнейшая разработка стандарта ведется самим институтом, без заметного влияния остальной части программистского сообщества).
· Оценка качества процессов организаций может проводиться только специалистами, прошедшими специальное обучение и аккредитованными SEI.
· Стандарт ориентирован на применение в относительно крупных компаниях (по некоторым данным имеется специальная версия SA CMM для небольших фирм, групп программистов и индивидуальных разработчиков).
Целый ряд известных фирм-производителей ПО посчитали нужным пройти формальную процедуру сертификации на соответствие принятой у них технологии
одному из уровней SEI CMM или стандарту ISO 9000-3. К слову, компания Microsoft мало озабочена проблемой получения такого рода сертификатов. SEI CMM в полной мере применима к фирмам, разрабатывающим сложные, часто встроенные и работающие в реальном времени системы, где дефекты в ПО могут иметь критическое значение. Например, бортовое ПО, используемое на американских космических «челноках», с объемом в три миллиона строк кода, содержит менее одной ошибки в расчете на 10 тыс. строк кода (разработка одного из подразделений IBM). Для Microsoft такие показатели качества недостижимы, да и в принципе не нужны. Компания ориентируется на массовый горизонтальный рынок, который основан на совсем иных критериях.