GQMについて調べた

2023-05-29
GQM
メトリクス

はじめに

このブログポストは、ダラダラと書いたので、とりとめがありません。

発端

お仕事にて、色々とメトリクスを収集しているのだけど、いまいち「だから何なの?」感が拭えない。

例えば、テストカバレッジというメトリクスがある。品質を上げるための指標の一つであることは間違いないのだが、上がったから何なのだとなる。カバレッジが70%超えたとして、それは何に寄与するのか、数字を改善することに果たして「品質を上げている感」以外の効果があるのか?

レガシーコード改善ガイド(参1)では、「はじめに」において下記の定義がされています。

私にとって、レガシーコードとは、単にテストのないコードです。

じゃあ、テストカバレッジが上がることで、レガシーコードが少なくなるからハッピーなのか?と。一面では合っているように見えるけど、どうも核心がつけていない。カバレッジを上げることはどれほどの意味があるのか?コスパもタイパも悪そうにみえるエッジケースや、ほとんど使われていないコードにまでテストを書いて、そんなによいことなのかと?

目的が抜けている

メトリクスの収集以前に、なんのためにメトリクスを収集するのかという目的意識が足りないから、こんな自体に陥るのではないか?このあまり効率的でない状況について、すでに学問などで定義がされていて「メトリクスを改善するための改善をする非生産的状態」みたいなものにバシッと名前がついてるのでは?教えて偉い人!って感じになってた。

そんなときに出会ったのが、Software Architecture Metrics(参2)の第十章に書いてあったGQMだった。

GQM自体は1984年には提唱されていたようなので、目新しい方法論というわけではないらしいのだけど、目を引いたのは、Goal(目的)指向でメトリクスを選定するという考え方でした。

これまでの自分は、とりあえずメトリクスを取ってみてなんか考えるというボトムアップのアプローチでした。GQMは、必然的にトップダウンのアプローチになるし、メトリクスを取ったあとに、なんでこのメトリクス取っているんだっけ?という迷走状態に陥りづらそう。良さそう!

というわけで、GQMやってみようと思ったのだけど、その前にGQM自体について調べてみようと思ったのが今回の趣旨。

GQMの原点

1984年のBasilli教授の書いた論文から始まっているので、ここが原点になっている。

A Methodology for Collecting Valid Software Engineering Data

論文の要点

論文自体にQGMという言葉はでてこない。

目的至高のデータ収集が重要だということが強調されている。そして、データ収集時はデータ分類スキームを用いて目的に基づいたデータを収集することが大事。

データ収集時のデータ分類スキーム

  • データの種類
  • データのソース
  • データの形式
  • データの粒度

目的思考のデータ収集という高次の概念になっているので、ソフトウェア開発以外でも適用できるものだったことがGQMが広まった理由の一つらしい。(どっかの記事に書いてあった)

GQM+Strategies

GQMを拡張して、経営にも役立てようというのがGQM+Strategiesという方法論らしい。

Utilizing GQM+Strategies for Business Value Analysis

要するに、「GQMのゴールと、経営目標のすり合わせをして、数値を経営指標として使うことで、より良い経営判断が出来るようにしよう。」ということらしい。

GQM+Strategiesについては、IPAのセミナー動画があったので、興味がある人は見ると良さそう

https://gqmstrategies.wordpress.com/%E9%96%A2%E9%80%A3%E7%A0%94%E7%A9%B6/

ゴール&ストラテジ入門 残念なシステムの無くし方という書籍もでている。サラッ読んでみたけど、はじめてのGQMというよりは、ちょっと固いお勉強という感じ。

個人的にツボったこと

メトリクスを改善するための改善をする非生産的状態

「負のホーソン効果」という言葉があるようです。ソースになりそうな情報は医療系の記事だったのですが、メトリクスが本来の目的を果たさなくなった状態のことを指すようです。

GQMをとりあえず始めてみようっていう、私のようなニュービーには、こっちの本のほうが良さそうでした。題材がソフトウェアですし、メトリクスの取り方とか、複雑度の計算方法みたいな基本的な話に始まって、経営陣へのメトリクス説明といったところまでカバーされてます。私にはけっこう刺さった本です。

まとめ

結局のところ「目的も決めずにメトリクスを取ってると、道に迷ってしまうよ」ということですね。GQMは、まずはスモールスタートすることがおすすめされているので、ひとまず小さく初めて様子を見たいと思います。まずは、目的ですね。手段と目的みたいな、実に基本的な話に「GQM」っていう立派な名前がついていたということですね。

参照

  1. レガシコード改善ガイド(翔泳社, マイケル・C・フェザーズ, 2009)
  2. Software Architecture Metrics(O’Reilly Media Inc, Christian Ciceri et al, 2022)

その他のGQM情報リソース