Введение
Оценка процессов разработки программного обеспечения
Модель зрелости возможностей (CMM) — это модель разработки, созданная в 1986 году на основе изучения данных, собранных от организаций, заключивших контракты с Министерством обороны США, финансировавшим данное исследование. Термин "зрелость" относится к степени формализации и оптимизации процессов, начиная от спонтанных практик, до формально определенных этапов, управляемых метрик результатов и, наконец, до активной оптимизации этих процессов. Цель модели — улучшение существующих процессов разработки программного обеспечения, однако она также может применяться и к другим процессам. В 2006 году Институт программной инженерии при Университете Карнеги — Меллона разработал Интегрированную модель зрелости возможностей (CMMI), которая во многом заменила CMM и устранила некоторые из её недостатков.
The Capability Maturity Model (CMM) is a development model created in 1986 after a study of data collected from organizations that contracted with the U. S. Department of Defense, who funded the research. The term "maturity" relates to the degree of formality and optimization of processes, from ad hoc practices, to formally defined steps, to managed result metrics, to active optimization of the processes. The model's aim is to improve existing software development processes, but it can also be applied to other processes. In 2006, the Software Engineering Institute at Carnegie Mellon University developed the Capability Maturity Model Integration, which has largely superseded the CMM and addresses some of its drawbacks.
Обзор
Модель зрелости возможностей была первоначально разработана как инструмент для объективной оценки способности процессов государственных подрядчиков к реализации проектов программного обеспечения по контракту. Модель основана на структуре зрелости процессов, впервые описанной в журнале IEEE Software, а затем в книге Уоттса Хамфри «Управление процессом разработки программного обеспечения» 1989 года. Впоследствии она была опубликована в отчете в 1993 году и в виде книги теми же авторами в 1995 году. Хотя модель возникла в области разработки программного обеспечения, она также используется как модель для совершенствования бизнес-процессов в целом и широко применяется во всем мире в государственных органах, коммерческих организациях и промышленности.
Предварительная потребность в программных процессах
В 1980-х годах использование компьютеров стало более распространенным, гибким и менее дорогим. Организации начали внедрять компьютеризированные информационные системы, и спрос на разработку программного обеспечения значительно возрос. Многие процессы разработки программного обеспечения находились в зачаточном состоянии, и лишь немногие стандартные подходы или "лучшие практики" были определены. В результате рост сопровождался трудностями: провалы проектов были обычным явлением, область компьютерных наук находилась в начальной стадии развития, а амбиции в отношении масштаба и сложности проектов превышали возможности рынка поставлять адекватные продукты в рамках запланированного бюджета. Такие специалисты, как Эдвард Юрдон, Ларри Константин, Джеральд Вайнберг, Том ДеМарко и Дэвид Парнас, начали публиковать статьи и книги с результатами исследований, пытаясь профессионализировать процессы разработки программного обеспечения. В 1980-х годах несколько военных проектов США с участием подрядчиков по программному обеспечению вышли за рамки бюджета и были завершены значительно позже запланированного срока, или вообще не были завершены. В попытке выяснить причины этого, ВВС США профинансировали исследование в Институте программной инженерии (SEI).
Предшественник
Первым применением модели поэтапной зрелости в ИТ было не CMU/SEI, а Ричард Л. Нолан, который в 1973 году опубликовал модель стадий роста для ИТ-организаций. Уоттс Хамфри начал разрабатывать свои концепции зрелости процессов на более поздних этапах своей 27-летней карьеры в IBM.
Интеграция модели зрелости способности
Применение модели CMM в разработке программного обеспечения порой оказывалось затруднительным. Использование нескольких неинтегрированных моделей внутри организации и между подразделениями может быть затратным в плане обучения, аттестации и мероприятий по улучшению. Проект Capability Maturity Model Integration (CMMI) был создан для решения проблемы использования множества моделей для процессов разработки программного обеспечения, поэтому модель CMMI пришла на смену модели CMM, хотя CMM по-прежнему используется как общая теоретическая модель, определяющая возможности процессов, и находится в общественном достоянии. В 2016 году ответственность за CMMI была передана Ассоциации по аудиту и контролю информационных систем (ISACA). ISACA впоследствии выпустила CMMI v2.0 в 2021 году, а в 2023 году она была обновлена до CMMI v3.0. CMMI теперь делает больший акцент на архитектуре процессов, которая обычно визуализируется в виде диаграммы процессов. Доступ к копиям CMMI теперь осуществляется только по подписке.
Приспособленные к другим процессам
CMM изначально разрабатывался как инструмент для оценки способности государственных подрядчиков выполнять проекты по разработке программного обеспечения по контракту. Несмотря на то, что он возник в сфере разработки программного обеспечения, он может, мог и продолжает широко использоваться в качестве общей модели зрелости процессов (например, процессов управления ИТ-услугами) в информационно-технологических (и других) организациях.
Модели погашения
Модель зрелости может рассматриваться как набор структурированных уровней, описывающих, насколько эффективно поведение, практики и процессы организации способны надежно и устойчиво обеспечивать требуемые результаты. Модель зрелости может использоваться как эталон для сравнения и как инструмент для понимания, например, для сопоставительной оценки различных организаций, имеющих общую основу для сравнения. В случае CMM, например, такой основой являются процессы разработки программного обеспечения этих организаций.
Критика
Модель изначально предназначалась для оценки способности государственных подрядчиков выполнять программный проект. Она использовалась и может подходить для этой цели, но критики указали на то, что зрелость процессов согласно CMM не является обязательным условием для успешной разработки программного обеспечения.