• 検索結果がありません。

7. むすび

7.2. 課題と展望

メトリクスの修 正 に関する短 期 的な課 題 としては,CK メトリクス以 外 のメトリクスを提 案 した 方法により修正し,さまざまな再利用ライブラリに対して適用することがある.現在,筆者が所 属する研究グループにおいてCKメトリクス以外のメトリクスを修正し,適用実験を行っている ところである.本 研 究 における実 験 は,教 育 環 境 における実 験 であったため,一 度 開 発 した ソフトウェアを保 守 したり,何 度 も開 発 を繰 り返 したりする事 例は観 察 されていない.より実 際 的 な繰 り返 し型 ソフトウェア開 発 プロセスにメトリクスを適 用 する実 験 を行 うことで,新 たな知 見と問題が得られるはずである.本論文で議論したコードクローン検出技術についての短期 的 課 題 としては,XP(extreme programming)に代 表 される,リエンジニアリングによる継 続 的な設 計 の変 更を前 提 とした開 発 プロセスが提 案されている.本論 文で議 論 したコードク ローンやクローンに関 するメトリクスがそのような設 計の変 更のための判 断 基 準となるか,ある

いは,コードクローンと設計変更の関係などについて,定量的な評価が必要である.

中 期 的 な課 題 としては,現 在 も発 展 し続 けるソフトウェア開 発 技 術 に対 して,従 来 のメトリ クスあるいはコードクローン検 出 手 法 やその適 用 方 法 は適 切 か,あるいは適 切 ではないなら どのようにすればよいか,という問題がある.ソフトウェア開発技術については,UML,デザイ ンパターン,汎 用 型 による(静 的 な型 チェックを損 なわない)汎 用 コンテナや汎 用 アルゴリズ ム,プログラミング言 語 間 の相 互 運 用 性 の向 上による複 数 言 語 プログラミングなど,多 くの技 術 が登 場 してきている.これらの技 術 が複 雑 度 メトリクスやコードクローンの利 用 に影 響 を及 ぼすと考えられる.

UML により,要求仕様書(あるいはシステムレベルの分析)が構造化された文書として記 述 されるようになり,その振 る舞 いの(動 的 な)複 雑 度 を計 測 するメトリクスが登 場 した.筆 者 が所属 する研究チームにおいても,動的なメトリクスと静的なメトリクスを比 較する研 究 が始ま っている.コードクローンを発 生 させやすい設 計 の特 徴 を調 べたり,設 計 書 からコードクロー ンを予 測 する方 法 を探 るなど,多 くの研 究 課 題 がある.従 来 のオブジェクト指 向 複 雑 度 メトリ クスは,クラス(あるいはシステム全体)を計測対象とすることが多かったが,デザインパターン などの,複数のクラスを(それぞれのクラスに一定の役割を持たせ)組み合わせる考え方が一 般 化 すれば,複 数 のクラスの組 み合 わせを計 測 対 象 とする,あるいはクラスがパターンの中 で果 たしている役 割 を考 慮 する複 雑 度 メトリクスも考 えられる.汎 用 型 を用 いて定 義 されたク ラスは,実 際 に型 パラメータが与 えられるまで,どのようなクラスと関 係 があるかを決 定 できな い.従来の複雑度メトリクスは,クラスの定義だけからクラス間の関係が決定できると仮定して いるため,汎 用 型 を用 いたソースコードにそのまま適 用 することはできない.汎 用 型 によって 共 通 化 コードとして書 き直 せるようなコードクローンも存 在 するため,汎 用型 はコードクローン の書き直しにおいて無視できない問題である.複数言語による開発においては,言語によっ て扱 うオブジェクトの粒 度 が異 なる,あるいは,オブジェクト指 向 言 語 と関 数 型 言 語 の併 用 も 考えられるため,オブジェクト指 向 複 雑度 メトリクスの大 前 提 であるオブジェクトやメソッドの概 念が揺 らいでしまい,適 用が困 難 になるかもしれない.コードクローン検 出 においては,構文 が大 幅 に異 なるプログラミング言 語 で記 述 されたソースファイルから,意 味 的 に似 ているコー ド断片を探し出すことが必要とされるかもしれない.

長 期 的 な課 題 としては,複 雑 度 メトリクスの構 造 に関 する研 究 がある.現 在 乱 立 している 複 雑 度 メトリクスを,一 定 の構 造 化 により比 較 する研 究 が行 われつつある.また,より根 本 的 な問 題 として,現 在 の複 雑 度 メトリクスは,人 間 が起 こすエラーを予 測 するのに使 われるが,

人 間 の認 識 に関 するモデルを内 包 していない.多 くの複 雑 度 メトリクスは,「ソフトウェアを何 らかのグラフで表 現 したときに,頂 点 や辺 が多 いほど複 雑 である」という定 義 を用 いている

(本 論 文 においても,メトリクスの性 質 を議 論 する際 に,このような形 式 の定 義 を用 いた.3.4 参 照 ).複 雑 度 メトリクスは,いずれ,人 間 の記 憶 力 の限 界 や,人 間 はどのようにエラーを起 こすかといった,人間の認識に関する研究と統合される必要があるだろう.

謝辞

本研 究を行 うにあたり,常日 頃 より適切 なご指 導を賜 りました井上 克 郎 教授 に深く感謝い たします.講義などを通じて,さまざまなご指導とご教示を賜った,都倉信樹教授に深く感謝 いたします.講 義 や国 際 会 議 などを通 じて,さまざまなご指 導 とご教 示 を賜 った,菊 野 亨 教 授に深く感謝いたします.

講 義 などを通 じて,さまざまなご指 導 とご教 示 を賜 った,今 川 正 治 教 授 ,柏 原 敏 伸 教 授 , 北 橋 忠 宏 教 授 ,谷 口 健 一 教 授 ,萩 原 兼 一 教 授 ,橋 本 昭 洋 教 授 ,東 野 輝 夫 教 授 ,藤 原 融 教授,増澤利光教授,宮原秀夫教授,村田正幸教授,首藤勝元教授(現大阪工業大学教 授),故西川清史教授,故藤井護教授に心から感謝いたします.

本 研 究 の遂 行 にあたり,さまざまなご配 慮 とご協 力 をいただいた,日 本 ユニシス株 式 会 社 の毛 利 幸 雄 氏 ,齋 藤 滋 氏 ,高 橋 優 亮 氏 ,小 谷 野 圭 司 氏 ,尾 畑 祐 一 氏 ,川 南 理 恵 氏 に深 く 感謝いたします.

研 究 会 や会 議 における質 疑 応 答 を通 じて有 益 なご意 見 を賜 った鳥 居 宏 次 副 学 長 (奈 良 先端科学技術大学院大学)に心から感謝いたします.

特に 6 の内容に関して,ミーティングなどを通じて有益なご意見をいただきました佐藤慎 一氏(株式会社NTTデータ),加藤裕史(株式会社NTTデータ),門田暁人助手(奈良先 端 科 学 技 術 大 学 院 大 学 ),中 江 大 海 氏 (奈 良 先 端 科 学 技 術 大 学 院 大 学 )に深 く感 謝 いた します.

本 論 文 をまとめるにあたり,楠 本 真 二 助 教 授 には,常 に適 切 なご指 導 を賜 り,また細 部 に わたる議論に応じていただきました.ここに深く感謝いたします.松下誠助手には,ミーティン グにおける議論などを通じてご助言を賜りました.心から感謝いたします.高林修司氏(現松 下通信工業 株式会社),柏本隆志氏 (現株式会社日立製作 所),上村拓也氏(現ソニー株 式会社パーソナル IT ネットワークカンパニー),竹原元康氏,藤井邦浩氏(現奈良先端科 学 技 術 大 学 院 大 学 ),ならびに大 阪 大 学 大 学 院 基 礎 工 学 研 究 科 情 報 数 理 系 専 攻 ソフトウ ェア科 学 分 野 井 上 研 究 室 の方 々には,ミーティングなどを通 じてさまざまなご助 言 をいただ きました.深く感謝いたします.

参考文献

[1] A.Abran and P. N. Robillad, Function Point Analysis: “An Empirical Study of Its Measurement Process,” IEEE Trans. on Software Eng., Vol. 22, No. 12, pp. 895-909 (Dec., 1996).

[2] 青 木 淳: オ ブ ジ ェ ク ト 指 向 シ ス テ ム 分 析 設 計 入 門, 株 式 会 社 ソ フ ト ・ リ サ ー チ ・ セ ン タ ー (1993).

[3] B. S. Baker: “On finding Duplication and Near-Duplication in Large Software System,”

Proc. of The Second IEEE Working Conf. on Reverse Eng., pp. 86-95, Tronto, Canada (Jul., 1995).

[4] V. R. Basili, L. C. Briand, W. L. Mélo: “A validation of object-oriented design metrics as quality indicators,” IEEE Trans. on Software Eng., Vol. 20, No. 22, pp. 751-761 (1996).

[5] I. D. Baxter, A. Yahin, L. Moura, M. Sant’Anna, and L. Bier: “Clone Detection Using Abstract Syntax Trees,” Proc. of The IEEE Int’l Conf. on Software Maintenance (ICSM) ’98, pp. 368-377, Bethesda, Maryland (Nov., 1998).

[6] R. V. Binder: Testing Object-Oriented Systems - Models, Patterns, and Tools -, Addison-Wesley Longman, Inc., (2000).

[7] G. Booch: Object Oriented Analysis and Design with Applications, The Benjamin / Cummings (1994).

[8] G. Bracha, M. Odersky, D. Stoutamire, and P. Wadler: “GJ Specification.”

<http://cm.bell-labs.com/cm/cs/who/wadler/pizza/gj/>

[9] L. C. Briand, P. Devanbu, and W. Mélo: “An Investigation into Coupling Measures for C++,” Proc. of The IEEE 19th Int'l Conference on Software Eng., pp.412-421, Boston, USA (May, 1997).

[10] L. C. Briand, J. Daly, V. Porter and J. Wüst: “Predicting Fault-Prone Classes with Design Measures in Object-Oriented Systems,” Proc. of the IEEE 9th Int'l Symposium on Software Reliability Eng., pp.334-343, Paderborn, Germany (Nov., 1998).

[11] L. C. Briand, J. W. Daly, and J. Wüst: “A Unified Framework for Coupling Measurement in Object-Oriented Systems,” IEEE Trans. on Software Eng., Vol. 25, No. 1. pp. 91-121 (1999).

[12] L. C. Briand, J. Wüst, J. W. Daly, D. V. Porter: “Exploring the relationships between design measures and software quality in object-oriented systems,” The Journal of Systems

and Software, No. 51, pp. 245-273 (2000).

[13] S. R. Chidamber, D. P. Darcy, and C. F. Kemerer: “Managerial Use of Metrics for Object-Oriented Software: An Exploratory Analysis,” IEEE Trans. on Software Eng., Vol.

24, No. 8, pp. 629-639 (1998).

[14] S. R. Chidamber and C. F. Kemerer: “A metrics suite for object-oriented design,” IEEE Trans. on Software Eng., Vol. 20, No.6, pp.476-493 (1994).

[15] P. Coad and E. Yourdon: Object Oriented Analysis, 2nd ed., Yourdon Press (1991).

[16] J. S. Collofello and S. N. Woodfield: “Evaluating the effectiveness of reliability-assurance techniques,” Journal of Systems and Software, Vol.9, No.3, pp.191-195, Berlin, Germany (Mar., 1989).

[17] P. Devanbu, S. Kartsu, W. Melo, and W. Thomas: “Analytical and Emprical Evaluation of Software Reuse Metrics,” Proc. of the IEEE 18 th Int’l Conf. of Software Eng., pp.

189-199 (1996).

[18] A. Diller: Z - An Introduction to Formal Methods, 2nd Ed., John Wiley & Sons, Inc.

(1994).

[19] S. Ducasse, M. Rieger, and S. Demeyer: “A Language Independent Approach for Detecting Duplicated Code,” Proc. of IEEE Int'l Conf. on Software Maintenance (ICSM) '99, pp. 109-118, Oxford, England (Aug., 1999).

[20] N. E. Fenton, and S. L. Pfleeger, Software Metrics, A Rigorous & Practical Approach.

2nd ed., Thomson, London (1996).

[21] E.Gamma,R.Helen,R. Johnson, and J. Vlissides, Design Patterns, Addison-Wesley Publishing Co., (1995).

[22] M. H. Halstead: Element of software science, New York, Elsevier North-Holland (1977).

[23] 飯 塚 悦 功 監修 ,「ソフトウェア分野における ISO9000」研 究会 編: ソフトウェア品 質 システ ム審査登録 ガイド ソフトウェアISO9000, 日科技連(1996).

[24] I. Jacobson: Object-Oriented Software Engineering - A Use Case Driven Approach -, Addison-Weslay Publishing Co., (1992).

[25] I. Jacobson, G. Booch, and J. Rambaugh: “The Unified Process,” IEEE Software, May/June 1999, pp. 96-102 (1999).

[26] I. Jacobson, M. Griss, and P. Johnson: Software Reuse - Architecture Process and Organization for Business Success -, ACM Press (1997)

[27] J. H. Johnson: “Identifying Redundancy in Source Code using Fingerprints,” Proc. of IBM

Centre for Advanced Studies Conference (CAS CON) '93, pp. 171-183, Toronto, Ontario (Oct., 1993).

[28] S. H. Kan: Metrics and Models in Software Quality Engineering, Addison-Wesley (1995).

[29] E. M. Kim, O. B. Chang, S. Kusumoto, and T. Kikuno, Analysis of metrics for object-oriented program complexity, Proc. of The 18th IEEE Computer Software &

Application Conference (COMPSAC) ’94, pp. 201-207, Taipei (Nov., 1994).

[30] 久米 均, 飯塚 悦功: 回 帰分析 シリーズ入門 統計的方法2, 岩波書店 (1987).

[31] B. Laüge, E. M. Merlo, J. Mayrand, and J. Hudepohl: “Assessing the Benefits of Incorporating Function Clone Detection in a Development Process,” Proc. of IEEE Int'l Conf. on Software Maintenance (ICSM) '97, pp. 314-321, Bari, Italy (Oct., 1997).

[32] W. Li: “Another metric suite for object-oriented programing,” The Journal of Systems and Software, No. 44. pp. 155-162 (1998).

[33] M. Lorenz and J. Kidd: Object-Oriented software metrics, New Jersey, Prentice Hall (1994).

[34] G.C. Low and D. R. Jeffery: “Function Points in the Estimation and Evaluation of the Software Process,” IEEE Trans. on Software Eng., Vol. 16, No. 1, pp. 64-71 (1990).

[35] 前谷 俊三: 臨床生存分 析 生存データと予後因子 の解析, 南江堂 (1996).

[36] J. Mayland, C. Leblanc, and E. M. Merlo: “Experiment on the Automatic Detection of Function Clones in a Software System Using Metrics,” Proc. of IEEE Int'l Conf. on Software Maintenance (ICSM) '96, pp. 244-253, Monterey, California (Nov., 1996).

[37] T. J. McCabe: “A complexity measure,” IEEE Trans. on Software Eng., Vol. SE-2, No.4, pp.308-320 (1976).

[38] 中谷多哉子, 玉井哲雄, : “オブジェクトの進化モデル構築に向けて,” 情報処理学会研 究

報告 (SE-115), Vol. 97, No. 74, pp.133-140 (1997)

[39] P. Nesi and T. Qurci: “Effort estimation and prediction of object-oriented systems,” The Journal of Systems and Software, pp. 89-102 (1998).

[40] P. Oman and S. L. Pfleeger: Applying Software Metrics, IEEE Computer Society Press (1997).

[41] M. C. Paulk, et al: The Capability Maturity Model: Guidelines for Improving the Software Process, Addison Wesley Publishing Co., Inc. (1995).

[42] J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy and W. Lorensen: Object Oriented Modeling and Design, Prentice Hall (1991).

関連したドキュメント