Продолжаем разговор о модели CMM
Сергей Бобровский
Как разработать программный продукт с требуемым качеством и точно в срок? Как правильно организовать работу по производству ПО? Как при этом обойтись без привлечения сверхдорогих менеджеров и суперпрограммистов?
Институт программной инженерии SEI, входящий в состав американского университета Карнеги - Мелона, разработал соответствующую технологию в начале 90-х годов. Она называется Capability Maturity Model for Software, CMM-SW, т. е. “эволюционная модель развития способности компании разрабатывать ПО” (CMM иногда еще расшифровывается как Common Maturity Model, но это не совсем корректно). Сегодня в США невозможно получить крупный (от 2 млн. долл.) государственный или военный заказ на создание ПО, если компания не сертифицирована как минимум по третьему из пяти уровней CMM. Более подробно о CMM можно прочитать в статье “Искусство бюрократии” (см. PC Week/RE, № 3/98, с. 50). Автору этих строк удалось пообщаться с человеком, который организовал в своем подразделении работу в соответствии с требованиями CMM.
Наш собеседник - Владимир Шепелев, зав. сектором системной среды проектирования Института проблем проектирования в микроэлектронике (ИППМ) Российской академии наук.
PC Week: Почему вы решили внедрить у себя CMM?
Владимир Шепелев: Четыре года назад я работал в американском университете Карнеги - Мелона в качестве приглашенного сотрудника. Там мне довелось послушать доклады специалистов по этой технологии. И познакомившись с CMM поближе, я решил использовать ее в своем коллективе. Наше подразделение занимается вопросами построения системной среды САПР. Поскольку САПР - это большие и сложные программные комплексы, особое внимание у нас уделяется правильной организации труда. Поэтому мой интерес к CMM вполне объясним.
Сегодня мы умеем пользоваться CMM, но поскольку ИППМ - институт научный, то технологии подобного рода у нас не всегда полностью применимы. CMM ориентирована прежде всего на программистские фирмы, когда разработку ПО надо поставить на поток, по аналогии с выпуском автомобилей на конвейерах Форда, и доля исследовательской работы в процессе создания ПО - небольшая. В науке же многие ключевые практики (key practices) CMM неприменимы. Тем не менее использование CMM даже в таких условиях приносит большую пользу. У нас есть опыт работы на втором, третьем и даже четвертом уровнях. С учетом, конечно, специфики, о которой я только что сказал.
PC Week: Вы упомянули о пользе применения CMM. В чем она заключается?
В. Ш.: Польза от освоения CMM, как, впрочем, и других подобных технологий, многогранна. На мой взгляд, главное - это повышение культуры, образованности программистской компании. Общеизвестно, что фирма, способная работать на третьем уровне, является фирмой мирового класса. Я могу это только подтвердить. Такая фирма подобна специалисту с дипломом престижного университета. С ним каждый готов иметь дело. Так что главное, что получает от CMM программистская компания, - это уверенность при работе на рынке “производства” ПО. Если на вашей фирме поставлен процесс создания программного продукта на основе CMM, а конкурент работает по старинке, то предпочтение будет в большинстве случаев отдано именно вам. Я знаю, что многие зарубежные фирмы просто не разместят заказ в компании, не аттестованной по CMM. То же самое будет и в России, причем довольно скоро.
У нас данный аспект применения CMM сыграет, возможно, решающую роль. В России по-прежнему много очень хороших программистов. Почему их потенциал не может реализоваться? Почему большинство отечественных программистских предприятий не в состоянии конкурировать с западными компаниями? На мой взгляд, причина только в одном: сказывается недостаток культуры программистских коллективов (имеет значение, конечно, еще и то, что для конкуренции с Западом необходимы очень большие инвестиции в маркетинг. - Прим. автора). Как фирма - разработчик ПО может выдержать жесткую конкуренцию, если она не в состоянии гарантировать завершение проекта точно в срок, обеспечить высокое качество продукта и должный уровень его сопровождения? На Западе миф о суперпрограммистах давно уже развеялся, как дым. Пришло время слаженных, высокоорганизованных программистских коллективов. Хочется, чтобы это как можно скорее случилось и у нас. В этом смысле применение технологии CMM - наш хороший шанс.
PC Week: В чем польза CMM при организации внутренней деятельности компании?
В. Ш.: При работе над проектом нередко возникает эффект “испорченного телефона”, когда заказчик хочет от системы одно, представитель фирмы-разработчика понимает его требования немного по-другому, руководитель проекта ставит перед программистами вообще непонятно какую задачу, и можете себе представить, что напишут в конце концов сами программисты. Организовать труд людей таким образом, чтобы все делалось в соответствии с достаточно жесткими требованиями, очень сложно - но без этого невозможно поточно создавать качественные продукты. CMM здесь хорошо помогает.
Я работаю в области программирования довольно долго, с конца 60-х годов. И время от времени сталкиваюсь с одной и той же картиной: программисты разработали сложную систему, сдают ее заказчику, и в самый ответственный момент никто из них не может с уверенностью сказать, где лежат последние версии программных модулей, документации, библиотек. А если спросить их об этом через год? И что делать заказчику, если как раз через год в его версии продукта обнаружилась ошибка? А что произойдет, если программиста, допустившего ошибку, нет на месте? Сможет ли кто-то другой быстро разобраться в его программе?
Подобных ситуаций можно избежать, если пользоваться CMM. В нашем коллективе не было случаев потери результатов работ, потому что мы применяем средства управления конфигурациями. И разобраться в чужой программе тоже можно, потому что все программисты используют единый стандарт кодирования и должным образом комментируют и документируют свои программы. Конечно, и рядовые сотрудники, и руководители тратят на это дополнительное время, но такие затраты оправданы, экономически выгодны. Они окупаются.
PC Week: Что лежит в основе CMM?
В. Ш.: В основе CMM лежит понятие процесса создания качественного ПО. По степени отработанности этого своего процесса организация может быть аттестована по одному из пяти уровней зрелости. Предполагается (и опыт многих фирм это подтверждает), что правильно построенный процесс позволит создать качественное ПО и уменьшить затраты.
Структура уровня CMM
Процесс в компании один. Но в зависимости от специфики выполняемых проектов он приспосабливается к их конкретным нуждам.
Все уровни CMM тесно связаны друг с другом. Более высокий уровень представляет собой развитие предыдущего, при этом ужесточаются требования к организации работ, деятельность программистов и руководителей загоняется в более жесткие рамки, она все тщательнее стандартизуется и контролируется. Начиная с четвертого уровня вся работа с процессом организована исключительно на основе метрик, а не на основе чьих-то волевых решений.
PC Week: Что такое метрики?
В. Ш.: Это любые параметры процесса, которые можно измерить, будь то отклонения от графика выполнения работ или количество ошибок, обнаруженных в разрабатываемом продукте. Стратегия работы с метриками - это один из компонентов организационной политики, поскольку набор метрик зависит от того, что для фирмы важнее. Например, высокое качество или сжатые сроки.
Очень большое значение имеет деятельность по накоплению и использованию метрик. Кто-то из великих сказал, что знание только тогда является таковым, когда облачено в форму чисел. Так вот, метрики - это настоящие, не умозрительные знания о вашем собственном процессе, о его сильных и слабых сторонах. Только оперируя ранее накопленными метриками, вы можете с достоверностью оценить степень риска в новом проекте и гарантировать его успех.
PC Week: Расскажите, пожалуйста, об общей структуре CMM.
В. Ш.: Каждый уровень модели - это набор областей ключевых процессов (ОКП), состоящих из ключевых практик. ОКП - это основные виды деятельности на данном уровне. Для каждой ОКП в модели описан набор целей (goals), которые показывают, что мы достигнем в рамках данной ОКП, выполнив ее ключевые практики. Ключевые практики определяют, что надо сделать, чтобы эти цели были достигнуты, но не указывают, как (“как” является полной прерогативой конкретной компании). Поскольку ключевых практик на каждом уровне много, то для удобства работы они всегда распределяются по пяти группам. (Модель CMM выросла из разработанных в Америке в начале XX века методик управления качеством для промышленных предприятий; в основу этих методик положены пять принципов управления качеством. - Прим. автора).
PC Week: Каковы эти группы?
В. Ш.: Первая - “Договоренность выполнить” (Commitment to Perform). Руководством фирмы должна быть определена ее организационная политика. Ведь практически всегда работа с использованием CMM организуется “в приказном порядке”, волевыми решениями высшего руководства компании. Надо иметь очень квалифицированный и определенным образом воспитанный коллектив программистов, чтобы инициатива внедрения CMM родилась снизу.
CMM требует от сотрудников написания большого числа документов. Это одна из главных трудностей внедрения данной методологии. В компании могут быть прекрасные программисты, но им не всегда удается изложить смысл своей работы на бумаге. И если руководители высшего звена не стремятся организовать такую деятельность, то модель не работает.
Вторая группа ключевых практик - “Способность выполнить работу” (Ability to Perform). Она нацелена на учет и оценку людских и материальных ресурсов, обучение сотрудников и т. д.
Следующая группа - “Выполняемые действия” (Activities Performed). В ней описаны действия по отработке требований к будущему ПО, планированию проекта, отслеживанию хода проекта, поддержке коллективной работы программистов и руководителей и др.
Четвертая группа - “Измерение и анализ” (Measurement and Analysis), предназначена для оценки состояния деятельности в ОКП на основе метрик.
Последняя группа - “Проверка реализации” (Verifying Implementation), обеспечивающая контроль за выполнением любых действий в компании в строгом соответствии со стандартным процессом. Значительная роль здесь принадлежит руководителям, в том числе и самого высокого ранга.
PC Week: Какие ОКП входят в CMM второго уровня?
В. Ш.: Их шесть. Это “Управление требованиями”, “Планирование проекта”, “Контроль за ходом проекта”, “Управление работами с субподрядчиком” (сторонними разработчиками), “Контроль качества ПО” и “Управление конфигурациями”.
“Управление требованиями”, например, описывает, что надо сделать, чтобы появились понятные всем сторонам требования к конечному продукту. Исполнители вместе с заказчиком должны подробно изложить на бумаге, что же они реально хотят сделать.
PC Week: Почему в CMM этому этапу придается такое большое значение?
В. Ш.: Зарубежная статистика показывает, что просчеты на ранних этапах проекта, особенно на этапе выработки требований, обходятся дороже всего. И их очень трудно исправить. Но многие руководители, я это знаю, продолжают экономить время именно за счет ранних этапов.
PC Week: ОКП напоминают этапы работ, распределенные по времени.
В. Ш.: Нет, это не совсем так. Хотя практики некоторых ОКП второго уровня выполняются последовательно, многие действия выполняются на всех стадиях. Это, например, практики из ОКП “Управление конфигурациями” или “Контроль качества”.
PC Week: И последний вопрос. Насколько велик интерес к CMM за рубежом?
В. Ш.: Интерес к CMM за рубежом очень велик и постоянно растет. Информация по CMM общедоступна (www.sei.cmu.edu. - Прим. автора). Имеются фирмы, специализирующиеся на обучении работе с CMM.
Как я имел возможность убедиться, лекции по CMM собирают очень большие аудитории. Например, во время 18-й международной конференции по программной инженерии, проходившей два года назад в Берлине, громадный зал не смог вместить всех желающих послушать доклад об опыте промышленного использования CMM. Люди сидели на ступенях в проходах.
Что касается России, то вызывает сожаление, что CMM у нас недостаточно известна и популярна. Наше программистское сообщество в очередной раз оказалось в изоляции, и причины этого мне непонятны. Осмысление CMM и других подобных технологий, ознакомление с зарубежной культурой производства ПО, безусловно, очень важно, и заниматься этим в России обязательно надо.
PC Week: Полагаю, многие согласятся с вашим мнением.
С Владимиром Шепелевым можно связаться по телефону: (095) 532-5579 или по E-mail: shepelev@ici.ru.