インスペクションを自在にカスタマイズ
TAQtICによる読み方シナリオ
シナリオはTAQtICの主要な構成要素の1つです。ここでは文献[1]で報告されている実際の開発プロジェクトでのシナリオの事例を観点(パースペクティブ)と共に紹介します。最初に紹介するシミュレーションソフトウエアでの事例では導入、指示、質問から構成されます。
このプロジェクトでは、機能性や正確性を品質ゴールとしており、次のようなシナリオが初級開発者、エキスパート開発者それぞれに与えられています。初級開発者のシナリオは、よく実行されるユースケースから順番にはじめて、ユーザーとのやりとり部分で例外処理が抜けていないかをチェックしながらソースコードを読んでいくものです。エキスパート開発者のシナリオは、複雑なクラス(群)から順番にはじめて、性能問題、浮動小数点の扱いが正しいか、再利用性のための工数が適切に使われているか、をチェックしながらソースコードを読んでいくものです。
まず、初級開発者のシナリオは以下のようになります。
■ 導入
自身を対象システムに関する知識が少ない開発者だとして、インスペクションではユースケースを中心に進めてください。
■ 指示
・実行頻度の高いユースケース、ユーザーにとって重要なユースケースを選んでください。それが終われば、実行頻度が少ないユースケース、異常系のユースケースを選んでください。
・それぞれのユースケースにおいて必要となる機能を実現しているクラスとメソッドを選び出し、実行される可能性のあるコントロールフローを追ってください。
■ 質問
・機能を理解するときやソースコードが正しいかどうかを判断するために、ソースコード中のコメントやドキュメントが十分でしたか?
・ユーザーの操作が関与する部分すべてにおいてエラー処理や例外処理はありますか?
・エラーやデバッグのためのログ出力は適切な場所で行われていますか?
続いて、エキスパート開発者のシナリオは以下のようになります。
■ 導入
対象ソフトウエアに関する知識をもつ開発者として、システム全体でどのクラスがもっとも重要か、あるいは、どのクラスがもっとも複雑化かを考えてください。また、システム全体の機能を正確に理解する上でもっとも重要なクラス群、あるいは、わかりにくいやりとりをするクラス群はどれかを考えてください。
■ 指示
もっとも複雑なクラス群から順番に読んでください。
■ 質問
・データ構造は適切に使われていますか?また、実行速度やメモリ使用量とのトレードオフは考慮されていますか?
・浮動小数点の扱いは正しいですか?
・これまでの経験から、このクラスで実現されている機能は今後の開発でも必要になりそうですか?もし必要になりそうであれば、再利用性を高めるための追加工数をかける価値がありそうですか?
ほかの事例と効果
観点は必ずしも、欠陥や不具合を検出するためだけのものではありません。ドキュメントやソースコードの不備や漏れを指摘する事例も報告されています。文献3によると、NASAのJet Propulsion Laboratoryでは、クラスライブラリの再利用性を高めることを目的として、クラスライブラリ作成者の観点で、もっとも複雑な機能をもつクラスやメソッドから順番にソースコードやそのドキュメントが十分かどうかをインスペクションでチェックしたことが報告されています。
図3はIESEがTAQtICを活用し、インスペクションを企業に導入、改善した結果もたらされた効果の一例です。図3中の組み込みシステムを開発する大企業では、TAQtICの全社展開を目指しているそうです。
本連載では、フラウンホーファ実験的ソフトウェア工学研究所とソフトウェア開発組織が連携して実施したインスペクションプロセスのカスタマイズの方法やカスタマイズの事例を紹介しました。ご自身の組織でもTAQtICをはじめとしたインスペクションを導入してみたいと思われた方はIESE testing & inspections department の部門長Robert Eschbach(mailto:robert.eschbach @ iese.fraunhofer.de)、奈良先端科学技術大学院大学 森崎 修司(mailto: smrs @ is.naist.jp)までご連絡ください。
[参考文献]
[1] C. Denger, F. Shull: A Practical Approach for Quality-Driven Inspections. IEEE Software 24(2), pp. 79-86 (2007)
[2] O. Laitenberger and J. DeBaud, Perspective-based reading of code documents at Robert Bosch GmbH, Journal of Information and Software Technology, 39, pp.781-791 (1997)
[3] F. Shull: TAQtIC: Tailorable Inspections for Dependable Software Engineering, http://fc-md.umd.edu/softwareday/presentations/Session%205/Shull.pdf (2006)