インスペクションで何を指摘するべきか
一歩進んだインスペクションにむけて
一部のエンジニアにとってインスペクションは「やらなければならない会議の1つで、通過儀礼」という認識ではないでしょうか。また、プロジェクトリーダの中にも「プロジェクト計画書の『インスペクション実施予定日』を埋めるための会議」と考えている方もいるのではないでしょうか。インスペクションは技法の導入、やり方、観点といった点に留意することにより、その効果を飛躍的に向上できます。
一方で、欠陥の指摘は誰もが苦手とする分野であり、作成者自身を批判してしまうような指摘では、指摘の効果が減ってしまいます。発見の技法だけでなく、作成者が思わず修正したくなるような指摘のしかたを身につける必要があります。筆者の担当記事では、欠陥という呼び方をしてきましたが、欠陥という呼び方ではあらさがしをしているイメージを与えるため「エラー」「不備」「心配点」と呼んでいる組織もあります。
さらなる情報が必要な方に
インスペクションの歴史は長く、最初に文献として発表されたのは1970年代にFagan氏がIBM Systems Journalで発表した「Design and code inspections to reduce errors in program development」(http://www.research.ibm.com/journal/sj/153/ibmsj1503C.pdf)です。
標準化文書では、IEEE 1028 Software Reviews and Auditsが、マネジメントレビュー、テクニカルレビュー、インスペクション、ウォークスルー、監査(Audit)を定義しています。ほかの文書と比較して詳細に書かれているので、何らかの標準が必要になる場合に、参考になるでしょう。ISO 9001(Quality management system)、JIS Q 9001(品質マネジメントシステム)では、文書管理と設計・開発の(ソフトウエアに限定しない)レビューの項目があります。
CMMIではキープロセスエリア「検証(VER)」でピアレビューに関する言及があります。SWEBOK(SoftWare Engineering Body Of Knowledge)では「ソフトウエアエンジニアリング マネジメント」の章の「レビューおよび評価」節に簡単な記述があります。
SQuBOK(Software Quality Body Of Knowledge)では、「ソフトウエア品質マネジメント」の一要素として「レビューのマネジメント」の章でインスペクションのプロセスが述べられています。また、「ソフトウエア品質技術」の一要素として「レビューの技法」でピアレビュー、インスペクション、チームレビュー、ペアプログラミング、ピアデスクチェック、パスアラウンド、ラウンドロビンレビュー、ウォークスルー、アドホックレビューが紹介されています。
学術論文ではLaitenbergerの「A Survey of Software Inspection Technologies」が包括的なサーベイとなっています。CiteSeer等のサイトからダウンロードできるものもあるようです。
最近では、オープンソース開発でソースコードリポジトリへの登録の前にコードレビューを実施することを推奨したり、義務付けたりすることがあるようです。Googleが公開しているGoogleにおけるコードレビューのビデオ(http://video.google.com/videoplay?docid=-8502904076440714866)では、プロセスとツールをまじえた説明があります。
ソフトウエア開発自体と同様に、インスペクションにもプロジェクトやソフトウエアの事情にあわせたカスタマイズが必要になります。最終回である次回では海外事例を紹介します。
[参考文献]
文献[1] Petersen K. , Ronkko K. and Wohlin C. “The impact of time controlled reading on software inspection effectiveness and efficiency: a controlled experiment”, In the Second ACM-IEEE international Symposium on Empirical Software Engineering and Measurement p. 139-148 (2008)
文献[2] Karlsson, J.; Ryan, K, “A cost-value approach for prioritizing requirements”, IEEE Software, Vol. 14, No. 5, pp. 67-74 (1997)
文献[3] 田村 晃一, 亀井 靖高, 上野 秀剛, 森崎 修司, 松村 知子, 松本 健一 “見逃し欠陥の回帰テスト件数を考慮したコードレビュー手法”, 電子情報通信学会技術研究報告, Vol.108, No.173, p.61-66 (2008)
文献[4] Morisaki S. , Monden A. , Matsumura T. , Tamada H. and Matsumoto K. , “Defect Data Analysis Based on Extended Association Rule Mining,” In Fourth International Workshop on Mining Software Repositories (MSR 2007), p.17-24 (2007)