“レビュー”とは、責め合うものではなく、品質を高め合うものソフトウェアレビューのワークショップ開催

» 2009年07月03日 00時00分 公開
[内野宏信,@IT]

 奈良先端科学技術大学院大学と、ドイツ・フラウンホーファ実験的ソフトウェア工学研究所が共同設立したソフトウェアレビュー/インスペクション研究の国際連携ワーキンググループは7月2日、開発途上のソフトウェアの欠陥を早期に発見するプロセス、「ソフトウェアレビュー/インスペクション(以下、レビュー)」に関するワークショップを開催した。講師を務めた奈良先端科学技術大学院大学の森崎修司氏、日本IBMの細川宣啓氏らは、受講者らによるレビューの実践も交えつつ、ソフトウェアの品質向上に対するレビューの有効性を訴えた。

技法に沿って行えば、レビューの効果は必ず出る

 ビジネスや社会におけるITシステムの浸透に伴い、ソフトウェアの品質向上に対するニーズは年々高まっている。その品質に問題があれば、ビジネスなら機会損失や社会的信用の失墜、社会インフラなら公共交通機関のトラブルなど、深刻なダメージにつながりかねない。そうした状況を受けて、ソフトウェアテスト(以下、テスト)だけではなく、レビューも実施することで、その品質に確実を期す企業は年々増えつつある。

 レビューとは、設計仕様書をはじめとするドキュメントや、プログラムのソースコードを人が読み込んで問題個所を発見するプロセス。プログラムを動作させて欠陥を発見するテストより、早期に問題を発見できる点が特徴だ。

 ただ、その具体的な技法がテストに比べて浸透していないほか、「人が読み込む」という一見シンプルな取り組みだけに、“自己流”で行われている例が珍しくない。結果、ソフトウェアの品質向上の一環としてレビューを実施しているものの、“ただ文字を目で追うだけ”“数人で集まって読み合わせをするだけ”など、なおざりにされている例が多く、期待する効果を享受できていないケースが多い。

 ワークショップ冒頭の講義で、森崎氏はそうした現状を指摘し、「レビューには数々の技法が存在し、それにのっとって行えばより効率的に行える」と解説した。例えば、レビューの参加者が知識の浅い初級プログラマの場合、実行頻度の高いユースケースや、ユーザーにとって重要なユースケースから読み込んでもらい、ベテランのプログラマには最も複雑なクラス群から読んでもらう──こうした役割分担を行うだけでもレビューの効果・効率は大きく変わるという。

 また、ソフトウェア開発は常に納期に追われている以上、レビューに掛けられる時間には限りがある。そこで、ユースケースの重要度に応じて、掛ける時間を決めておくことも有効だという。

写真 奈良先端科学技術大学院大学の森崎修司氏

 例えば「壁紙のダウンロード」「クレジットカードによる決済」というユースケースがあれば、後者により多くの時間を配分する。人が読み込む前にツールを使って自動的にレビューを行い、比較的単純な欠陥を洗い出しておくことも効率的だという。

 森崎氏は、「レビューは“ただ読んで間違いを探すだけ”といったものではない。いま開発しているソフトウェアに求められる要件、機能、開発スケジュールなどに応じて、まずはレビューを行う対象、掛ける時間を明確化し、参加するメンバーの役割もきちんと決め込んでおく。さらに、“今回は保守性を精査する”など、レビューのテーマ(目的)と、それに基づいた“問題個所を探す観点”を絞り込むことで、初めて大きな効果が望める」と指摘。あらためてレビューの基本概念を説くことで、その有用性を訴えた。

ツールを併用して、人は高度な問題発見に集中すべき

 一方、日本IBMの細川氏は、同社内で10年ほど使っているというソフトウェアの品質確保の技法「IBM Quality Inspection」を紹介した。開発プロジェクトの上流から下流、リリースまでの全ライフサイクルで実施しており、「実施効率・効果の両面で大きな成果を挙げている」という。

 ポイントは、ツールを使って比較的シンプルな欠陥を抽出したうえで、人が読み込むこと。それだけでも効率的だが、ツールを使うことで欠陥の記録・統計も残しておける。これにより、レビューの実施者が“ありがちな欠陥パターン”を事前に把握できるため、常に「こうしたケースにはこんな間違いがあるのではないか」といった予測を立てて、より確実に読み込むことができるのだという。ドキュメントやソースコードを書く際にも、同じ間違いの再発防止に寄与するそうだ。

写真 日本IBM エンタープライズ・アーキテクチャー&テクノロジー クオリティ・エンジニアリング シニアITアーキテクトの細川宣啓氏

 また、ツールを組み合わせた技法、手順を確立しているため、「レビュー実施者のスキル・経験といった属人的な要素に左右されず、レビュー全体の質と効果の底上げ、安定化を実現している」という。すなわち、“システマティックに行えば確実に効果が望める”といった森崎氏の解説をあらためて裏付ける形となった。現在、このIBM Quality Inspectionを、1つのサービスとして、顧客企業にも提供しているという。

 また、興味深かったのは「レビューで欠陥が発見できる仕組み」だ。写真は動物園の割引券のパンフレットだが、割引額「1oo$」と書いてある。この文字列を見て「100$」と理解する人もいれば、「1.00$の誤植」と理解する人もいるはずだ。しかし、そのどちらも正しいとは限らない。ほかの文章も読み込んで、文章全体のロジックに対して「100$」か「1.00$」か、どちらが適切かを判断して、初めて“正解”を得ることができる。

写真 動物園の割引券のパンフレット。割引額「1oo$」と書いてある。この文字列を見て「100$」と理解する人もいれば、「1.00$の誤植」と理解する人もいるはずだが、文章全体のロジックから判断しなければ真意は得られない

 「複数人で検査をしても、読み合せをしても、机上でじっくり検査しても、ただ文字を目で追うだけではこうした欠陥は発見できない。常に“自分が理解したことは正しいが、自分の理解が真意と異なっている可能性がある”と思いながら読み、さらにそれを声に出して、周りの実施者と議論・検討することが大切だ。“理解の齟齬(そご)”や“真意との乖離(かいり)”には、そうして初めて気付くことができる」(細川氏)

 大切なのは、ただ漫然と文字を“目で追う”のではなく、あらゆる仮説を立てながら“読み込むこと”──細川氏は、「簡単な間違いはキカイに任せて、人間は人間にしか見つけられない欠陥の発見に注力すべき。そうすればレビューの効果・効率はおのずと向上する」と付け加えた。

事実だけをシンプルに伝えることが、レビュー成功の秘けつ

 森崎氏が紹介した3つのリーディング技法を使った受講者らによるレビュー実践をはさんで、最後に行われたパネルディスカッションでは、自ら手を挙げ、実践の感想を述べる受講者の姿も目立った。中には「明確な技法にのっとって行ったため、普段より多くの量をこなせた」といった意見もあり、技法の“効果”を実感した様子だ。

 また、ワークショップの事前アンケートによると、レビューの工程を設けてはいるが「機能していない」とする回答が78%に及ぶなど、その効果に期待しながら何らかの問題を抱えていることが分かった。そのためか、ディスカッション中にも多数の質問が寄せられた。

 中でも真っ先に挙がったのは、「常に納期に追われているが、短時間で効率的にレビューを行うポイントは何か」といった質問だ。これに対して細川氏は「例えば目的がバグの検出にあるなら、バグの検出のみに集中し、その直し方までは議論しない。ツールを使うなどして同じバグを再発させないことも大切」など、目的に応じた“割り切りと工夫”の重要性を示唆した。

 また、レビューはソフトウェアの品質向上のために行うものに過ぎないが、コーディングという業務に対する自信や愛着の裏返しとして、“自分が書いたコードの欠陥をお互いにあげつらうのは辛い、傷つく”といったように、ネガティブに受け止められてしまうケースも多い。議論ではこうしたセンシティブな側面にも触れ、“発見するテクニック”とともに、“指摘する・伝達するテクニック”もあるのではないか、というテーマにも及んだ。

写真 パネルディスカッションでは、IT分野に特化したブログメディア「Publickey」編集長で、前@IT発行人の新野淳一氏がモデレータを務め(写真左端)、受講者も交えて活発に意見を交わした。写真右から森崎氏、越水氏、細川氏。

 これに対して森崎氏は、「レビューで洗い出すエビデンス(証拠・根拠)を、あらかじめ明確に定義して、参加者の全員が事前に納得しておくことが大切。レビューの目的と指摘内容がはっきりしていれば、人を責める取り組みではないと理解できるし、個人的な感情論に陥ることも防げる」とアドバイス。細川氏も「問題個所は○○、原因は××、今後の方策は○○といったように、主観をさしはさまず、事実だけを伝えることが大切」と解説した。

写真 受講者は総勢93人。ワークショップは大いに盛り上がり、“プロ”としての強い意欲がうかがえた。

 一方、当日、レビューを効率化するツールとして「Rational AppScan Developer Edition」「Rational Software Analyzer」を紹介した日本IBM ソフトウェア事業 ラショナル事業部の越水善之氏は、「入社したての初心者こそ、ツールを使って欠陥パターンを学んでほしい」と、別の側面からレビューの有効性を指摘。「欠陥パターンを知ることは、合理的なプログラミングを体得するうえでとても勉強になるし、品質確保に対する自覚も育つ。キャリアアップにも役立つはず。若手社員にこそツールを与えてあげてほしい」と、人材育成の観点からレビュー定着の道標を示した。

 そして最後に「レビュー成功のヒント」として、森崎氏と細川氏は「レビューに関わる参加者全員の納得が大切」と強調。「目的、手段、期待効果に納得していれば、開発サイドは効率的にレビューを進められ、ソフトウェアのユーザーサイドにも優れた品質の“裏付け”を提供できる。そうした関係者全員の納得を基に、レビューを軌道に乗せられれば、関係者同士がお互いに成果物の品質を高めあう“雰囲気”が、おのずと醸成されるはずだ」(森崎氏)という。

 森崎氏は「レビューは技法、手順、ツールに関する情報がまだ十分に整備されておらず、技術者間にもその情報が浸透していない。しかし、技術者間で交流の機会を持ち、意見交換し合えば、お互いに、いまよりもずっと効率的な手法が見つかるはず。今回のワークショップも、ぜひ今後の交流の一つのきっかけにしてほしい。次の開催機会も前向きに考えていきたい」とまとめた。

Copyright © ITmedia, Inc. All Rights Reserved.