GQM

GQM (じーきゅーえむ; Goal, Question, Metric)は、メリーランド大学のビクター・バシリ教授によって開発された、ソフトウェア工学における計測の枠組みおよびモデル化手法である

。

ソフトウェア工学におけるあらゆる計測は、無目的にメトリクスやデータを集めるのではなく、何のために測定するのか、前提となるモデルは何か、結果をどう解釈するかなどを明確にした上で実施されるべきである。 GQM 法はこれらを定義する枠組みとして代表的なものの一つであり、測定モデルを以下の3つの層で定義する。

 ゴール層 (G、概念レベル) 測定を行う目的の定義。測定の対象、理由、観点、およびコンテキストを定めるものである。
 クエスチョン層 (Q、運用レベル)  目的の達成のために評価すべき質問の定義。ゴールが達成されたか否かを判断する具体的な基準となるものである。
 メトリクス層 (M、定量レベル)  前提となるモデルに基づいて測定可能なメトリクス。上記の質問に対する答えを提供するのに必要な情報を提供するものである。

各層の要素は多対多の関係にある。すなわち、一つのGは複数のQに結び付けられるし、各Qへの回答は複数のMに基づいて決定される。逆に、一つのMは複数のQのために使用可能である。

GQM法を実施する具体的なプロセスは次の6つのステップに分けることができる。最初の3つがG、Q、Mの決定、後の3つがデータ収集の実施と結果の利用に関するものである。
 対象となる組織やプロジェクトにおけるビジネスゴール、それを結びつく計測ゴールを設定する
 上記のゴールを定量的に定義する質問を(モデルに基づいて)生成する
 得られた質問に対する答えを得るのに必要な指標を定める
 データ収集のための準備を行う
 データの収集、検証および解析をリアルタイムで行い、必要に応じてプロジェクトに修正をフィードバックする
 測定終了後に詳細な解析を行い、ゴールが達成されたかの判定、将来の改善のための提言を行う

GQMゴールテンプレート 
GQM法において、ゴール(G)を定義することは最も重要なステップであるといえる。概念的には、計測が行われる際のステークホルダーがそれぞれビジネスゴールを持っており、それらに基づいて計測を行う際のゴールが決定されると捉えられる。このように明確な意思を持って適切なゴールを吟味・議論する行為自体が意味のある計測を実現する上で不可欠であるというのがGQM法の背景となる主張でもある。この意味で、GQMは手法であると同時に計測に関する一種のパラダイムであるともいえる。

ゴール定義をある程度定型化して実施を容易にするために、バシリ教授は以下のような5つの要素からなるテンプレートの使用を提案している。
 対象: 「○○を解析する」 (例: プロセス、プロダクト、モデル)
 目的: 「○○のために」 (例: 特徴づけ (characterize)、理解 (understand)、評価 (evaluate)、予測 (prediction)、改善 (improve) )
 フォーカス: 「○○に関して」 (例: コスト、欠陥除去数、変更点、信頼性、等)
 ステークホルダー: 「○○の観点で」 (例: 組織、会社、顧客、マネージャー、開発者、ユーザー、研究者、等)
 コンテキスト: 「以下の文脈の下で行う： ○○」 (ゴールが設定された文脈を示すさまざまな要素: 問題設定、人的要因、リソース要因、プロセス要因、等)

このテンプレートを使ったゴール定義は例えば次のようになる: 「組織の観点で、コード再利用率に関する特徴づけのために以下の文脈で成果物を解析する: 団体AのソフトウェアXは言語Lを用いて開発者Y人によりZヶ月で開発された・・・」

GQM の利用 
GQM は比較的シンプルな定義にもかかわらず高い記述力を持つため応用範囲は広く、エンピリカル・ソフトウェア工学分野の論文では研究目的が GQM ゴールの形式で記述されることも一般的である。

脚注 

ソフトウェア工学