それがCMMです。
皆さんの会社でもITベンダーにソフトウェア開発を依頼したことがあると思いますが、依頼前に想定した品質、予算、納期で開発が終了していますか?
品質、予算、納期のいずれか、ひどい場合は3つ全てがうまくいかず、カッカした経験はありませんか?
CMMは、システム開発を依頼するベンダー選定の尺度の一つとして活用することができます。
実際、アメリカではソフトウェアの最大ユーザーである国防総省が入札条件としてCMMレベル3を要求しています。日本でも政府調達案件の選定基準に採用する動きが出ています。
CMMというのはCapability Maturity Modelの略で、日本語にすると「能力成熟度モデル」です。
昔から何とかしようとしていた
今から15年ほど前になりますが、プログラムの開発工程そのものをプログラムしようと研究されていたOsterweilというアメリカの先生がいました。その先生が日本で講演されたセミナー資料を見せてもらったのですが、頭がぶんなぐられたような印象を受けました。
プログラマやシステムエンジニアがひらめきや経験で作りあげていくソフトウェア開発工程をプログラミングするという発想は新鮮でした。(これがプロセス・プログラミングという考え方です。)
時代は流れますが、ソフトウェア開発の現場ではあいかわらずQCTが問題になっています。
Q(品質) | バグの発生 |
C(コスト) | 予算オーバー |
T(リードタイム) | 納期遅れ |
プロセスという考え方
そこでソフトウェアの開発工程を何とかしようとして出てきたのがプロセスという考え方です。つまりソフトウェアの開発を、「知識や条件を入力し、求められる結果を導出するプログラムを出力する」プロセスととらえます。
ソフトウェアの開発工程を工場の生産管理のようにとらえて、しっかり管理しようということです。
CMMはこのようなプロセスのレベルを5段階に設定しています。またITベンダーには恒常的なプロセス改善を行い、この段階を1段階づつ上げていってほしいという目安になっています。
プログラマやSEの個人差は10倍から20倍ぐらいあると言われていますが、そういう属人的な部分をなるべくなくし、プロセスに注力して、何とかしていこうというのがCMMです。
では、CMMの各レベルを見てみましょう。前回の成熟度と同様に5段階になっています。
CMM
レベル1 | 担当者ごとにプロジェクトの管理を実施 |
レベル2 | プロジェクトを計画通りに組織的に実行 |
レベル3 | 定義された標準プロセスがあり状況によって改善しながら実行 |
レベル4 | レベル3を定量的に把握管理 |
レベル5 | レベル4を基にプロセスを改善し最適化 |
実はほとんどのITベンダーはレベル1です。なぜなんでしょう?解説は次ページで