著者
門田暁人 佐藤慎一 神谷 年洋 松本 健一
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.44, no.8, pp.2178-2188, 2003-08-15

ソフトウェアに含まれるコードクローン(重複するコード列)は,ソフトウェアの構造を複雑にし,ソフトウェア品質に悪影響を与えるといわれている.しかし,コードクローンとソフトウェア品質の関係はこれまで定量的に明らかにされていない.本論文では,20年以上前に開発され,拡張COBOL言語で記述されたある大規模なレガシーソフトウェアを題材とし,代表的なソフトウェア品質である信頼性・保守性とコードクローンとの関係を定量的に分析した.信頼性の尺度として保守工程で発見された「フォールト数/LOC(Lines of Code)」を用い,保守性の尺度として「モジュールの改版数」を用いた.分析の結果,コードクローンを含むモジュール(clone-includedモジュール)は含まないモジュール(non-cloneモジュール)よりも信頼性(平均値)が約40%高いが,200行を超える大きさのコードクローンを含むモジュールは逆に信頼性が低いことが分かった.また,clone-includedモジュールはnon-cloneモジュールよりも改版数(平均値)が約40%大きく(すなわち,改版のためにより多くの保守コストが費やされてきた),さらに,モジュールに含まれるコードクローンのサイズが大きいほど改版数がより大きい傾向にあることが分かった.
著者
角田 雅照 大杉 直樹 門田暁人 松本 健一 佐藤慎一
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.46, no.5, pp.1155-1164, 2005-05-15
被引用文献数
12

ソフトウェア開発における工数予測を目的として,過去のソフトウェア開発プロジェクトにおいて記録された多種類のソフトウェアメトリクス値を入力データとし,協調フィルタリングにより予測工数を求める方法を提案する.協調フィルタリングは,未計測の値(欠損値)が大量に含まれているデータを入力とした場合でも予測が行えるという特長があるが,ソフトウェア工数予測に適用する方法はこれまで提案されていない.提案方法では,まず,入力となるメトリクス値を正規化し,値域を揃える.次に,正規化したメトリクス値を用いて,予測対象(開発中)のプロジェクトと,過去に行われたプロジェクトとの類似度を計算する.最後に,類似度の高い(予測対象プロジェクトと類似した)プロジェクトの工数を類似度で加重平均した値を,予測対象プロジェクトの工数とする.ケーススタディとして,株式会社NTTデータにおいて1 081件のソフトウェアプロジェクトから計測された14種類のメトリクス(約60%の欠損値を含む)を用いて試験工数を予測した.その結果,提案方法は従来方法(欠損値処理法を用いたステップワイズ重回帰分析)よりも高い精度を示し,予測試験工数の相対誤差の平均値(1プロジェクトあたり)が22.11から0.79に改善された.To predict software development effort, this paper proposes an effort prediction method based on the Collaborative Filtering (CF) which uses as input various software metrics recorded in past software development projects. The CF has an advantage that it can conduct a prediction using "defective" input data containing a large amount of missing values. There are, however, no researches which propose a method for applying the CF to Software effort prediction. Our proposal consists of three steps. In the first step, we normalize values of metrics to equalize their value range. In the next step, we compute the similarity between target (current) project and past (completed) project using normalized values. In the last step, we estimate the effort of target project by computing the weighted sum of efforts of high-similarity projects (that are similar to the target project) using the similarity of each project as a weight. In a case study to evaluate our method, we predicted the test process effort using 1,081 software projects including 14 metrics whose missing value rate is 60%, which have been recorded at NTT DATA Corporation. As a result, the accuracy of our method showed better performance than conventional methods (stepwise multiple regression models); and, the average accuracy per project was improved from 22.11 to 0.79.
著者
門田暁人 佐藤慎一 神谷 年洋 松本 健一
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.44, no.8, pp.2178-2188, 2003-08-15
被引用文献数
19

ソフトウェアに含まれるコードクローン(重複するコード列)は,ソフトウェアの構造を複雑にし,ソフトウェア品質に悪影響を与えるといわれている.しかし,コードクローンとソフトウェア品質の関係はこれまで定量的に明らかにされていない.本論文では,20年以上前に開発され,拡張COBOL言語で記述されたある大規模なレガシーソフトウェアを題材とし,代表的なソフトウェア品質である信頼性・保守性とコードクローンとの関係を定量的に分析した.信頼性の尺度として保守工程で発見された「フォールト数/LOC(Lines of Code)」を用い,保守性の尺度として「モジュールの改版数」を用いた.分析の結果,コードクローンを含むモジュール(clone-includedモジュール)は含まないモジュール(non-cloneモジュール)よりも信頼性(平均値)が約40%高いが,200行を超える大きさのコードクローンを含むモジュールは逆に信頼性が低いことが分かった.また,clone-includedモジュールはnon-cloneモジュールよりも改版数(平均値)が約40%大きく(すなわち,改版のためにより多くの保守コストが費やされてきた),さらに,モジュールに含まれるコードクローンのサイズが大きいほど改版数がより大きい傾向にあることが分かった.Existing researches suggest that the code clone (duplicated code section) is one of the factors that degrades the design and structure of software and lowers the various quality attributes. However, the influence of code clones on software quality has not been quantitatively clarified yet. In this paper, we quantitatively analyzed the relation between code clones and the software reliability and maintainability of twenty years old software, which is written in an extended COBOL language. We used the number of faults per LOC (Lines of Code) as a reliability metric, and the revision number of modules as a maintainability metric. As a result, we found that modules having code clones (clone-included modules) are 40{%} more reliable than modules having no code clone (non-clone modules) on average. Nevertheless, the modules having very large code clones (more than 200 SLOC) are less reliable than non-clone modules. We also found that clone-included modules are 40{%} less maintainable (having greater revision number on average) than non-clone modules; and, modules having larger code clone are less maintainable than modules having smaller code clone.