PR

チームによるソフトウエアの開発能力を評価する基準

 職業プログラマは普通,企業に所属して,チームでソフトウエアを開発します。ソフトウエアに限らず,チーム開発は難しいものです。狙い通りの品質のソフトウエアを,狙い通りの納期とコストで実現できる組織は,そう多くないのではないでしょうか。

 ダメな組織に外注すれば,間違いなく後で苦労します。また,自らがダメな組織なら,改善していかなけばいけません。といっても,ソフトウエアの開発プロセスはどういう状態なら好ましいのかは,わかりにくいのが現状です。逆に,こうしたプロセスをうまく評価する基準があれば,どの組織に開発を外注すればよいかとか,自分の組織をどのように改善していけばいいのかがわかって有用でしょう。

 こうした目的で利用できるソフトウエア開発プロセスの評価モデルが「CMM(Capability Maturity Model for Software)」です。ソフトウエアの開発組織としての成熟度を,五つのレベルで評価します。米国政府の依頼を受け,米Carnegie Mellon大学ソフトウエア工学研究所が開発しました。現在のバージョンは1.1で,米国をはじめ,インド,中国など全世界で広く使われています。

五つのレベルはけっこう厳しい

 CMMが定義する五つのレベルは,以下のようなものです。

(1)Initial(初期)
(2)Repeatable(繰り返せる)
(3)Defined(定義されている)
(4)Managed(管理されている)
(5)Optimizing(最適化する)

(1)がもっとも未成熟な状態,(5)がもっとも成熟した組織です。もうちょっと詳しく見ていきます。自分が属する組織が,どのレベルにあたるか,考えながら読んでみてください。

 (1)のInitialは,ソフトウエアの開発プロセスが場当たり的で,ときおりほとんど混沌とした状態です。ほとんどの開発プロセスは定義されていません。開発が成功するかどうかは,個人の努力や納期間際の度を越えたふんばりなどに依存しています。

 (2)のRepeatableは,スケジュール,コスト,機能性に関する基礎的なプロジェクトを管理するプロセスが確立されていて,同じような領域では成功を繰り返すことができる状態です。

 (3)のDefinedは,プロジェクト管理と,ソフトウエア開発のプロセス両方が標準化されて,文書としてまとまっており,統合化されている状態です。すべてのプロジェクトは,文書化されたプロセスか,そのプロジェクトのために作られたプロセスにしたがって進められています。

 だんだん高度になってきましたが,この先にさらに二つのレベルがあります。

 (4)のManagedは,ソフトウエア開発プロセスと製品の品質が定量的なデータとして収集されている状態です。このデータから,開発プロセスと製品の品質を制御できます。

 (5)のOptimizingは,プロセスの改善を,実施しているプロセスからのフィードバックと,新しい技術の取り込みによって持続的に実施できる状態です。

 さて,あなたが所属する組織のレベルはどうでしたか? レベル3以上であれば,優秀なソフトウエア開発組織ということができるようです。

日本でも取得を目指す動き

 CMMはソフトウエア開発プロセスを対象にしたモデルですが,2000年にはハードウエアを含むシステム開発プロセスと統合したCMMI(CMM統合)が登場しました。2001年ごろからは,日本企業でもCMM取得を目指す動きが目立ってきました。例えば,日本IBMの社内情報システム開発部門は,レベル5を取得しています。取得したことを非公開にできるので実際の取得組織数はわかりませんが,現在,レベル2からレベル3の取得を目指している,またはすでに取得した企業が増えつつあるようです。