ソフトウェアプロセスの改善を考える
特集 いま話題のCMMとは何か?

NEC
宮下洋一(システム企画本部 技術企画統括マネージャー)
込山俊博(Eラーニング事業部 エキスパート)
2001/9/28

3 能力成熟度をモデル化したCMM

 それでは現在、デファクトスタンダードとして世界的に広く採用されているCMM Ver.1.1 (Capability Maturity Model Version 1.1)について解説しよう。このモデルは、ソフトウェアプロセスの発展過程を指し示したモデルであり、その他のCMMファミリ(システムエンジニアリング用CMM、調達用CMMなど)と区別するために、SW-CMM(CMM for Software)と表記することがある。通常、単にCMMと表記されている場合は、このCMM Ver.1.1のモデルを指すことが多く、ここでもこの表記法に従う。

CMMの構造

 CMMは、混沌とした未成熟なソフトウェア組織が、自律的な改善を継続的に行える成熟した組織に発展するためのロードマップを与えている。提示されたロードマップに沿って、ソフトウェア組織が体系立ててプロセスの改善に取り組めるように、CMMは図2に示すような構造を持っている。

図2 CMMの構造。数字は、それぞれに含まれる構成要素の数。The CMM structure: Capability Maturity Model for Software Version 1.1 (CMU/SEI-93-TR-24) by SEIによる。

 それでは、実際にCMMを構成する5つのコンポーネントである(1)成熟度レベル(2)キープロセスエリア (3)ゴール(4)コモンフィーチャ(5)キープラクティスの概念と相互の関係を説明し、CMMの構造の意味を明らかにしよう。

(1)成熟度レベル

 CMMの基本的な考え方の1つに、“優れたツールや技法もその組織の発展段階に応じて導入しなければ効果を生まない”というものがある。この考え方に基づいて、CMMの最上位構造に5段階の成熟度レベルが定義されている(表1)。この5段階の成熟度レベルによって、アセスメントで対象とするプロセスの絞り込みや優先すべき改善課題の特定が容易に行え、プロセスの評価改善が効果的かつ効率的に行える。

成熟度レベル
概要
特徴
1:初期レベル レベル2に到達していない組織のレベル ・作業の仕方が場当たり的で、ときには混沌的
・ほとんどのプロセスは未定義
2:反復できるレベル 基本的なプロジェクト管理が実施できているレベル ・日程、費用、機能性の初歩的管理プロセスを確立
・同じ領域の成功経験を反復できるプロセス規律の存在
3:定義されたレベル 組織的にプロセス管理を行っているレベル ・管理プロセスと開発プロセスの定義と統合化
・全プロジェクトが文書化されたプロセスを遵守
4:管理されたレベル プロセスおよびプロダクトの定量的管理が実施できているレベル ・プロセスとプロダクトの詳細な品質データを収集
・ データに基づいたプロセスとプロダクトの理解と制御
5:最適化するレベル プロセス改善に全員が参加し、改善活動が日常化しているレベル ・プロセスからフィードバックと革新的技術の志向による持続的な改善
表1 5段階あるCMMの成熟度レベル

 一連の成熟度レベルは、ソフトウェア組織の発展の大きな方向性を指し示している。成熟度の各レベルは、ソフトウェア組織のプロセス能力を示している。プロセス能力とは、当該プロセスに沿ってソフトウェア開発を実施した場合に、達成が期待できる成果の範囲のことである。ここでいう成果には、品質、費用、納期などが含まれる。また、プロセス能力と対比して、実際に達成された結果をプロセス実績という。

 プロセス評価改善への取り組みで重視すべきことは、狭義のプロセス能力の向上(レベルの達成)を第一義の目的とせず、プロセス実績の向上に主眼を置いた改善活動に取り組むことである。そのためには、QCD(品質、コスト、納期)などの視点から組織としてのプロセス実績の目標(尺度および目標水準)を明確にしたうえで、計測と分析を行い、常にプロセス改善に伴う効果に関心を払う必要がある。

 図3に、各成熟度レベルのプロセスの特徴と期待される成果を示す。この図では、レベルの向上に伴って、平均実績値と目標値との乖離が少なくなり(予測能力の改善)、プロジェクト間の実績のばらつきが小さくなり(制御能力の改善)、より高い目標値が達成可能になる(効率の改善)ことが示されている。CMMで期待されるこれらの効果を論理的に証明することは困難であるが、効果を裏付ける多くの事例が報告されている。

図3 成熟度レベル向上による期待効果。Process capability as indicated by maturity level: Capability Maturity Model for Software Version 1.1 (CMU/SEI-93-TR-24) by SEI による

(2)キープロセスエリア

 成熟度レベルには、そのレベルに到達するうえでの主要なプロセス群が含まれる。これらをキープロセスエリアと呼ぶ。ただし、成熟度レベル1はプロセス指向の考え方はほとんど根付いていない状態を表しており、成熟度レベル1にはキープロセスエリアは含まれない。図4にあるように、キープロセスエリアは成熟度レベル2〜5に合計18個存在する。

図4 各成熟度レベルごとのキープロセスエリア。

 キープロセスエリアは、それを含む成熟度レベルに到達するための主要な活動を特定するものである。ただし、このことは、それ以外のプロセスを実施する必要がないことを意味するものではない。上位の成熟度レベルのキープロセスエリアを効果的かつ効率的に実践するには、それより下位の成熟度レベルのキープロセスエリアが、組織に定着した形で実践されていることが求められる。つまり、明示的ではないが、CMMではレベルを横断したキープロセスエリア間の関係が意識され、下位の成熟度レベルに含まれるキープロセスエリアは、より上位の成熟度レベルのキープロセスエリアを効果的に実装するための前提条件として機能している。表2に成熟度レベル2のキープロセスエリアの目的と概要をまとめた。

表2 成熟度レベル2のキープロセスエリアの目的と概要(表をクリックすると、拡大して表示できます)。

 なお、参考までに成熟度3のキープロセスエリア(目的と活動概要は省いている)を表3としてまとめた。

表3 成熟度レベル3以上のキープロセスエリア

(3)ゴール

 キープロセスエリアには、達成すべきゴールが定義されている。定義されているゴールの数は、キープロセスエリアごとに2つから4つであり、合計52のゴールが定義されている。ゴールは、後述するキープラクティスと図5のように関連付けられている。

図5 ゴールとプラクティスの関係の例

 ゴールは、それに関連付けられた一連の活動の趣旨を要約したものであり、組織あるいはプロジェクト内で実践されている活動が効果的に行われているかを判定するための視点を与える。アセスメントを実施する局面では、個々のキープラクティスに対応する作業がそれぞれに行われているかどうかより、ゴールに関連する複数のキープラクティスに対応する作業群を見渡して、一連の活動がゴールで示された趣旨を満たしているかが重視される。

(4)コモンフィーチャ

 図5に示したように、CMMではゴールを達成するための作業がキープラクティスにより記述されているが、キープラクティスの切り出しは5つのコモンフィーチャの視点から体系的に行われている。この5つの視点は、すべてのキープラクティスで共通である。5つのコモンフィーチャのうち、「実施される活動」はキープロセスエリアで実施すべき作業が実装されているかを取り上げる属性である。そして「実施のコミットメント」「実施能力」「計測と分析」「履行検証」は、組織内でそれらの作業が制度化されているかを取り上げる属性である。つまりCMMでは、あるキープロセスエリアで実施されるべき活動がある時点、あるプロジェクトで実装されていることだけでなく、それが組織あるいはプロジェクト内の制度として定着した形で行われていることが求められる。

 CMMを構成するコンポーネントのうち、5つのコモンフィーチャが定義されている意義を理解することは難しい。そこで、スポーツ選手の筋力強化を1つのキープロセスエリアにたとえ、5つのコモンフィーチャの意義を明確にしてみよう。

 あるスポーツチームの監督が直近の大会での優勝に向けて、筋力強化専任のトレーナーを任命し、“毎日1時間以上の筋力トレーニングの実施”という指針を出した。これは「実施のコミットメント」に相当する活動である。この指針に沿って、筋力トレーニングする前に、必要な機器を取りそろえ、機器のメーカー担当者から説明を受けるなどして、その使用方法をトレーナーや各選手が習得する必要がある。これは、「実施能力」に相当する活動である。そのうえで、各選手はトレーナーと相談して日々の筋力トレーニングの計画を立て、それを遂行し、遂行実績を記録・報告する。これらは、「実施される活動」に相当する活動である。

 監督とトレーナーから各選手に対して、遂行実績を記した日誌に機器ごとのトレーニング時間を記録し報告することを求め、各選手の筋力トレーニング実施率(筋トレ実施日数/経過日数)、平均筋力トレーニング時間(累積筋トレ実施時間/経過日数)を算出し、遂行状況をトレースする。これは、「計測と分析」に相当する活動である。さらに、トレーナーは各選手から報告される日誌と各選手との個別ミーティングにより、監督はトレーナーからの報告および毎週ごとに行われるチームの全体ミーティングにより、筋力トレーニングの遂行状況や遂行上の問題点の報告を受け、適切なアドバイスを与え、必要に応じて抜本的な対策を打つ。これは、「履行検証」に相当する活動である。

 以上によって、筋力強化のプロセスを指針に沿って確実に実施するうえで、5つのコモンフィーチャに沿って実践すべき作業を切り出すことが有効であることが理解できるであろう。CMMでは、あらゆるプロセスに対して、これら5つのコモンフィーチャに則って活動を遂行することを求めている。

(5)キープラクティス

 各キープロセスエリアには、そのゴールの達成に寄与するキープラクティスが記述されている。個々のキープラクティスがどのゴールに寄与するかは、上記の図5に示したような形で対応付けられている。この図からも明らかだが、キープラクティスには1つのゴールの達成に寄与するものもあれば、複数のゴールの達成に寄与するものもある。

 アセスメントを行う局面では、キープラクティスが評価の視点として利用される。個々のキープラクティスに沿って、組織およびプロジェクト内で実践されている活動の状況が文書レビュー、インタビューなどにより洗い出され、収集された情報に基づいてゴールの達成が判定される。

 判定の際の重要な考え方として、ゴール志向の判定というものがある。各キープラクティスで識別された活動の状況が、関連付けられたゴールの達成に寄与する形で実施されているか否かを重視することである。従って、あるキープラクティスに対応する活動がCMMで要求されているからという理由で形式的に実践され、ソフトウェア開発の現場から見ると負荷要因としてしか認識されていないといった事実が判明した場合には、改善事項として対処しなければならない。

 また、キープラクティスには、ソフトウェア組織がプロセス活動を効果的かつ効率的に推進するうえで参考になる情報が記述されている。ただし、キープラクティスは実施すべき活動をWhatのレベルで記述しているのであり、Howを記述しているのではない。つまり、各キープラクティスの実践の仕方には、組織特性、製品特性、顧客要求、開発方針などに応じたバリエーションがある。多くのキープラクティスには、アセスメントとプロセス改善の局面で参考となる、実装時の推奨事項や実装例がサブプラクティスまたは補足事項として記述されているが、これらは絶対的な要件ではない。最も重要なことは、ソフトウェア組織内で実際にソフトウェア開発管理に携わっている要員にとって役に立つ活動が実践されることであり、CMMがプロセス評価改善活動においてそれを促進する形で活用されるようにすることである。

 CMMに取り上げられた316のキープラクティスを理解することは、管理者、実務者を問わずソフトウェア開発に携わる方々にとって有意義なことと考えるが、限られた紙面でこれらを列挙し解説することは難しい。ここでは、表3でCMMに記述されている典型的なキープラクティスのパターンを、コモンフィーチャごとに表で示すにとどめておく。

コモンフィーチャ
概要
キープラクティスに含まれる事項
実施のコミットメント プロセスが確立され、持続することを確実なものにするために、組織が取らなければならない処置を記述 組織方針
リーダーシップ
実施能力 ソフトウェアプロセスを十分に実装するために、プロジェクトや組織に存在しなければならない前提条件を記述 職務、 資源
権限委譲、
トレーニング
オリエンテーション
実施される活動 キープロセスエリアを実装するのに必要な役割や手順を記述 計画・手順の確立
作業の実施
実施状況の確認
必要に応じた是正処置
計測と分析 プロセスの計測と計測値の分析の必要性を記述 実施される活動の状況・有効性の測定
履行検証 確立されたプロセスを遵守して活動が実施されることを確実なものにするための処置を記述 上級管理者によるレビュー・監査
プロジェクトマネージャによるレビュー・監査
ソフトウェア品質保証によるレビュー・監査
表3 コモンフィーチャに含まれる典型的なキープラクティス

3/4
CMMのあるべき姿を考える

Index
いま話題のCMMとは何か?
  1 CMMが注目を集めている理由
  2 ソフトウェアのプロセス改善とCMM
3 能力成熟度をモデル化したCMM
  4 CMMのあるべき姿を考える
自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。