...

Title ソフトウェアリポジトリにおけるコードクローン作成者 ・利用者関係

by user

on
Category: Documents
1

views

Report

Comments

Transcript

Title ソフトウェアリポジトリにおけるコードクローン作成者 ・利用者関係
Title
ソフトウェアリポジトリにおけるコードクローン作成者
・利用者関係分析手法とその適用
Author(s)
森脇, 匠哉; 井垣, 宏; 山中, 裕樹; 吉田, 則裕; 井上, 克郎; 楠
本, 真二
Citation
電子情報通信学会技術研究報告. SS, ソフトウェアサイエ
ンス. 113(24) P.37-P.42
Issue Date
2013-05-09
Text Version publisher
URL
http://hdl.handle.net/11094/26834
DOI
Rights
Copyright © 2013 IEICE
Osaka University
信学技報
一般社団法人電子{情報通信学会
T
H
EINSTIT日 TE O
FELEGTRONIGS ,
I
N
F
O
R
M
A
T
I
O
NA
N
DGOMMUNIGATION
I
E
I
G
ET
e
c
h
n
i
c
a
lR
e
p
o
r
t
S
S
2
0
1
3
7 (2013-5)
跡的INEERS
ソフトウェアリポジトリにおける
コ}ドクローン作成者・利用者関係分析手法とその適用
森脇匠哉T
井垣
宏f
山中裕樹↑
吉岡則裕行
井上克郎f
楠本真ニ↑
f 大阪大学大学院情報科学研究科
千 565-0871 大阪府吹田市山田丘 1-5 ・
tt 家良先焔科学技術大学院大学情報科学研究科
〒 630-0192 奈良県生駒市高山町 8916-5
5凶1: t{m-takuya,igaki ,y-yu由, inoue ,kusumoω}@ist.osaka-u 肌jp ,↑↑[email protected]
あらまし
一般に,ソースコードやライブラリの再利用は Y フトウェア開発における生産性や信頼性,コスト等の改
善に繋がると言われている.一方でソ}スコードの再利用は,対象となるソースコードを十分に理解し,利用する必要
があるため,非常に困難なタスクであると考えられている
そのため,再利用しやすいソースコードの特徴や開発者が
どのようなときに袴利用を行うかといった統存の再利用動向の分析は,再利用支援において非常に重要である
しか
しながら,綴数のプロジェクトを対委員とした再利用分析において,具体的に誰がどのような再利用を行っているかを
定盤的に分析した事例は非協'に限られているのが現状である
そこで本研究では,コードクローン検出ツーノレと版管
理システムを用い,綴数プロジェクトを対象としたコードクローン利用者と作成者の分析手法を提案し,実際に OSS
を対象とした分析を行った.その結果,開発者ごとに再利用動向が異なり,分析を進める価値があることを示した
キーワード
ソフトウェア得利用,ヨードクローン,版管理システム,
CodeA
u
t
h
o
r
s
h
i
p
A Cases
t
u
d
yonHowC
l
o
n
eAuthorandU
s
e
rI
n
t
e
r
a
c
t
i
nS
o
f
t
w
a
r
eR
e
p
o
s
i
t
o
r
y
HiroshiIGAKI•, YukiYAMANAK Al,
K乱tsuro INOUEt ,乱.nd S
h
i
n
j
iKUSUMOTOt
o
fInforma七ion Science , Osal
<aU
n
i
v
e
r
s
i
t
y
1-5 , Sui七a, Os北a 5
6
5
0
8
7
1Jap叩
Science , NaraI
n
s
t
i
t
u
t
eo
fS
c
i
e
n
c
eandTecnology
8916冊5 , Ikoma-shi , N
ara6
3
0
0
1
9
2Japan
• [email protected]
t
i
m
e
.I
nmanyso此~ware d
e
v
e
l
o
p
m
e
n
torganizations , r
e
u
s
e
D
e
v
e
l
o
p
e
r
si
ns
u
c
horgan間前ions a
r
er
e
q
u
i
r
e
dt
oimp
l
e
m
e
n
t
r
e
l
i
a
b
l
es
o
u
r
c
ec
o
d
e
. Ont
h
eo
t
h
e
rhand , s
o
u
r
c
ec
o
d
er
e
u
s
ei
se
s
p
e
c
i
a
l
l
y
d
e
v
e
l
o
p
e
r
st
ounders回ld 七he s
o
u
r
c
ec
o
d
ef
u
l
l
y
.I
no
r
d
e
rt
oe
n
c
o
u
r
a
g
e
r
e
u
s
eb
e
h
a
v
i
o
r
sin 七he e泊sting projec阻 However, t
h
e
r
ee
x
i
s
t
s
d
e
v
e
l
o
p
e
r
.I
nas
o
f
t
w
a
r
ed
e
v
e
l
o
p
m
e
n
torgan目前ion, d
e
v
e
l
o
p
e
r
su
s
u
a
l
l
y
r
e
s
e
a
r
c
hindicated 主hat もhe s
i
t
u
a
t
i
o
no
ft
h
er
e
u
s
ed
i
f
f
e
r
sbydevelopers , and
o
f
t
e
nr
e
u
s
e
s
. Therefore, i
nt
h
i
spaper, wep
r
o
p
o
s
eaS
Q
u
r
c
ec
o
d
er
e
u
s
e
p
r
o
j
e
c
t
sw
i
t
hu
s
i
n
gmul抗ple s
o
f
t
w
a
r
ereposi七ories. Asaresult , weshow
o
ft
h
ed
i
f
f
e
r
e
n
c
ebe七ween e
a
c
hd
e
v
e
l
o
p
e
ri
sworthy 七o bec
o
n
d
u
c
t
e
d
Clone , V
e
r
s
i
o
nC
o
n
t
r
o
lSystem, CodeAu七horship
- 37i
t
sp
o
l
i
s
h
e
da
n
d/
o
re
x
t
e
n
d
e
dv
e
r
s
i
o
nmayb
ep
u
b
l
i
s
h
e
de
l
s
e
w
h
e
r
e
C
o
p
y
r
i
g
h
t<
1
:
l
2
0
1
3 b
yI
E
I
C
E
1.はじめに
Y フトウェアの実装において,保守性や信頼性,生産性と
いった品質の確保は非常に重要である.そのため,多くのソフ
トウェア開発現場において,生産性や信頒性の向上を目的とし
た既存ライプラ F やソースコードの再利用が行われている [1]
組織内での再利用率を高めるためには,開発者による再利用
(a) ケース 1
しやすいソースコードの実装と,品質の高い Y ースコードの
再利用を支援する枠組みが重要である
一方で,再利用可能な
図 1
2 リピジョン閥的改}
Y ースコード部品の開発や既存 Y ースコードの再利用は困難で
あることもよく知られている[勾
そのため,再利用支援の一
環として,開発者の再利用動向を分析する調査が複数実縮され
ている [3]. 聖書崎らは Y ースファイノレやディレクトリ単位のメト
ロタスと再利用実綴を比較し,再利用性の高いソースコードの
特徴を示す研究を行っている [4].
しかしながら,開発者個人
に翁目 G ,誰が開発したソ]スコードをどの開発者がどのよう
に利用したかをソフトウェア日ポジトリを対象として分析した
事例はほとんど存在しないー実際に Manuel Sojer らは数百人
の OSS の掬発者にアンケ}トを実施し,既存ソースコードの
再利用傾向が掬発者ごとに具なる可能性があることを示してい
る [5]
;
さらにはグループ開発での主主護憲後, í愛護費殺のi向上殺害警など, :
フトウニ"7 の品質向上 lこ繋がると設われている [1]. そのため,
多くのソフトウェア開発で統移のライブラ P やソ…ス Zコードの
再利用が行われている.
再利用支援を悶約とした潟1'I]ß諸事業向。っ分統iま数多く干すわれて
いる
Sojer らは数百人の OSS の ß寄議議?にアンケ…トを災絡し,
既存ソ}スコードの得手IJ苅傾向が医著書善寺普緩やブ口ジ'"タトの性
質,プロジェクトのフェーズによって畿なることを王詳した [5].
この研究では再利用のメリットをよく警襲警護しており,多くのプ
ロジェクトに関与している開発者iまま子野手j践をま資j義的 i乙行う傾
向にあるということがアンケートによって審議霊草されている.結
そこで我々は Y フトウェアリポジトりを対象とした開発者個
人レベノレでの再利用関係を定盈的に分析する手法を提案する,
:;7 トウェアリポジトリを対象とした再利用分析では,コード
クローン検出ツーノレ [6]
][叫が利用されることが多い [3].
7
[
こ
果として,開発者単位での得税期傾向について笈重量的で容線的
な分析が重要であることが示されている,
定盤的な再利用傾向の分折としては,護遺産寄らがソースブァイ
ノレやディレクトリ単位の符利用メトりクス{険者昔を 102 磯提言設
こでコードクローンとは,ソースコード中で互いに類似または
し,実際の祷平IJ用実綴と比較し,符~Ij ß間伎の言語いソースコード
一致した部分を持つコード片のことである [9]. さらに,互いに
の特控を抽出する研究を行っている開
類似するコードクロ}ンの集合のことをクローンセットと呼ぶ.
:;-只コードの再利用を行う場合,再利用元と先の Y ース
コードはコードクローンとなることが多いそこで,本研究で
は版管理シ只テム (Version
lSystem)
o
r
t
n
o
C
の保持する Y フ
設た Prakriti 沿ivedi
らは,ソフトウェアの再利用性についてのメトリクス計総手訟
を提案している [1]
この研究では,ソフトウぉア羽ンポーネン
トについて結合J!Æや凝鋒皮についてのメトリクス告と求めること
で,そのソフトウエアコンポーネントを平等利用した溺合にソフ
トウ z アリポジトりを対象としてコードクローン検出ツーノレを
トウェアの信籾性にどの穏皮影響を l子えるかを参事的している
用い,複数プロジェタトにまたがった開発者ごとの:;-7.コ}
Balint らはあるプ口ジェクトの特定のリピジョンを対象として
再利用傾向の分析におい
コードクローンを検出し,検出されたコ}ドクローンに開発者
ては,再利用された Y ースコードのオリジナノレが誰によって開
情報を付与することで,コードクローンが首位にいっ綴採された
発されたのかをリポジトリ分析によって明らかにすることで,
かを可視化 G ,分析を行っている [11].
ド再利用傾向についての調査を行う
再利用されたソースコードの開発者(コードクロ}ン作成者)
このように再利用傾向についての分続は数多く行われている
と再利用を行った開発者(コードクロ}ン利用者)の隠係をよ
が,特定のコミュニティにおける複数のプロジェクトを対象と
り正確に分析することが可能となると考えている.
して,版管理システムが保持する Y ブトウェアリポジトリを対
分析に際して設定した Research Question は以下に示すとお
りである
2.
2.1
象として再利用傾向がどのように変遷しているかを分析した研
究は著者らの知る磁り存在しない
背
我々は次節で詳述する 2 パージョン問でのコードクローンの
』歪L
R宅L
遜移情報分析手法 [12] を利用し,複数プロジェクト問の複数日
ビジョンを保持するリポジトりを対象として,得利用傾向を分
ソフトウエアの再利用
Y ブトウェアの再利用とは,ソアトウェア開発の分析,設計,
析する手法を提案する
実装の各工程において,既存のジフトウェアで起きた問題とそ
2.2 コードクローン遷移分析
の問題に対する解法などの知識を,開発中の Y フトウェアに対
コードクローンの遜移情報を分析するためには,連産売する 2
既存の Y フトウェアの知識を活
リビジョン Rî' Ri刊に含まれるコードクローンの対応関係を
して適用することである [10]
用することで,新たなソフトウェア開発が容易となる
一般に,
求める必婆がある
:;7 トウェアの再利用は開発時間の短縮や開発コ旦トの削減,
-
38 ー
ここでは,
y ビジョン R, に存在する全て
ン Ri+l に存在する全
図 3
AIこ対応するコード片 B
A の関始行番号と終
, B が C色 H に含まれる場合,
コードクロ」ン AIこ対応するコ}ドクロ}ンは B となる.ま
た,図 l(b) では,コ}ドクロ}ン A の llfJで綴鋒操作は行われ
ていないため,対応するコード!t B の開始行番号l立 A の開始
行番号と悶じになる.一方, AIこ 2 行の挿入が行われているた
めに , B の終了行番号ば A の終了行幸番号lこ 2 行追加した{直と
なる
B が Oi+l ,こ含まれる場合,
::>-ドクローン A に対応す
るコ}ドクロ}ンは B となる.このように,あるコードクロー
ン A E Ci に対応するコード片をその関始行幸番号と終了行番号
の対応 lこ基づいて求め,そのコード片 B がコードタ口一ンと
なっている場合,コ}ドクローン A とコードクローン B の隠
に履歴関係があると定違議する. 2 リピジョン防のコードクロー
ンの履際関係を分析することで, Ri+1 に存在するクローンが
新たに追加されたク口}シ (Added Clone) なのか,変更された
クロ}ン (Modified Clolle) なのかといった分類を行うことが
可能となる.さらに,注目ドク口、ーンの分類を利用することで,
そのコードタロー;与ををきむとケロ}シセットに立すしても,新たに
eS~t) ,変更があったのか (Changed
n
)
(
l
発生したのか (New C
Olone 目前)とい?た分類が可能となる.
ヌド織では,このような 2 パ}ジョン関のコードクローン漆移
情報にもとづき;:,, 3 ィタマジョン以上にまたがるコードクローン
走塁移情報を毒事i封じ,開発者ごとの符利用傾向を分析する手法を
提案するに
2;3 蒋税局分析におセけるコードウローン作成者とコードウ
口ーン利用者以
通常, jff;j:1]用はある開発者が爽銭したソースコードを自分自
身もしくは他の開発者がコピ}することで行われる
本研究で
は,再利用元の司T ド片を一番去を初に実装した開発者のことを
コ}ドクローン作成者,作成者が実装した~-スコードを直接・
間接的にコピ}じで;fiJ尽した開発者のことをコードクローン利
用者と呼ぶ.作成者ど利用者の関係を図 2 に示す.我々はソフ
トウェヘアリポジトロとバ}ジョン間のコードクローン遷移情報
を利用するヘことで,対委員となる Y フトウェアシステムのライフ
サイクルを通じた再利用傾向分析の実現を目指す
-
3.
3.1
複数ジポジトリからのチェックアウト
提案手法
概要
システムの手順を以下に示す
入力
複数プロジェタトのリポジトリ
STEPl: 複数 F ポジトリからのチェックアウト
複数のリポジトリからリピジョンの時系列順にチェッタアウト
を行い,合成リポジト日を生成する
STEP2: 隣接リビジョン問でのクローン遜移情報の導出
合成リポジトリの隣接するリビジョン閉それぞれについてコー
ドクロ}ンを検出し, 2 リピジョン間のクローン遜移情報を導
出する.
STEP3: クローンセット履歴の抽出
29 ビジョン問のタロ}ン遜移情報を組み合わせてクローンセッ
ト履歴として抽出する
STEP4 コードクローン作成者と利用者の特定
クローンセット駿歴に基づいてクローンセットごとのコードタ
ロ」ン作成者及び利用者の特定を行う.
出カ
クローンセットごとのコードクローン作成者,発生リビジョン,
コ}ドクロ}ン利用者及びコード片に関する各種情報
3.2
STEPl
複数リポジトリからのチェッウアウト
本研究では,プロジェクト間コードクローンを検知するため
に,複数のリポジトリからファイノレのチェックアウトを行う
3.2.1
チェッタアウト手法
例として,
9 ポジトリ A ,
リポジトリ B からブアイノレを
チェックアウトする様子を図 3 に示す.最初に, 2 つのリポジ
トリ A ,
B の内,最もコミット自時の古いリポジト 9 A の
revl のディレクトリ内容をチェックアウトする
この時,各リ
ポジトリに伺名のファイノレが存在する場合の競合を防ぐため,
ディレクトリ A を作成しその中にチェックアウトを行う,以降,
時系列j慣にファイノレをチzックアウトしていくことで,ある時
点での各リポジトリのファイノレ内容を保持するディレクトリが
得られる
このディレクトリに対して分析を行うことで複数日
ポジト日間のコードクローンの分析が可能である.
39 ー
、
OASE2
R,.,
,
R
H2
R
RtH
図 4
RUl
クローンセット変更の様子
この Step によって,複数プロジz クトのある時点における
)OAS関
c
(
各リポジトリのファイノレ内容を保持するディレクトリが得られ
図 B
る.ここでは各ディレクトリのことを複数プロジェクトの合成
コードクロ…ン作成為替毒事滋
リビジョン,合成リビジョンの集合のことを合成リポジトリと
呼ぶ図 3 の例では,リポジトリ A , B の合成 H ポジトリ C
3.5.1
を件')iX; したことになる.
3.3 STEP2:I隣接リビジョン隔でのウローン遷移嫡報の
コードクローン作成若手と前IjJ自殺の分好
ある合成リビジョンで新たに議集したとコ…ドタ口…ンについ
て,そのコードクローンの CodoA羽生ho開hip からとヨ…ドクロー
毒事出
Step1 で得られた合成リポジトリを対象として 2 リピジョン
隣接する合成担ピジョンを対象として, 2.2 節で説明した山
中らの手法を用い,クローンセットの遷移情報を求める.罰 3
の例では,合成リピジョン 1 と合成リピジョン 2 聞でのクロー
ンセ y トの遷移情報,合成リヒ、ジョン 2 と合成リビジョン 3 問
でのクローンセットの遷移情報山,合成リビジョン 4 と合成リ
ここでは 2 Y ビジョン問でのクローン遷移を全合成リビジョ
ン関でのコードクローンの遷移情報に拡張したものをクローン
セット履歴と呼ぶー
Rt+l> R-件2
があったときに,
Rt+l と Rt+2 聞でそれぞれクローンセット遷
移情報が算出されていた場合,クローンセットごとに遜移情報
を結合することで Rt
"R件2
'
までのクローンセット緩歴を得
ることができる.なお,ここでは隣接するりビジョン問で変化
が無いクローンセット及び新たに発生したクローンセットを対
象として結合処理を行った.全隣接リビジョン問において遷移
情報の結合を行うことで,全合成りビジョンを通したクロ}ン
セット履歴の取得が可能となる
ク口ーンセット履歴は,クローンセットごとに追加された
コードタロ}ンの情報(リビジョン番号,パス,各行の Code
Authorship) を持っている
ここで Code
p[13J とは
i
h
s
r
o
h
t
u
A
ノ〈ージョン管理システムに保存されている行単位の開発者情報
を指すものとする.なお,パスはファイノレパスとコードクロー
ンの凋始行,終了行のことを指す.例えば,図 4 に示すように
クローンセットが遷移していった場合,クローンセット履歴と
して ,
Rt におけるコードクローン A とコードクローン B の
情報
Rt+ヱにおけるコードクローン C の情報
るコードクローン D の情報が保持される.
を特定する.元コード片の各行の Code Authorship を求める
ことでコ}ドダローン作成者をJ葬 tllする
3.5.2 毒事出方法
毒事出方法を以下に示す以下,
R, を分析対象の合成ザピジョ
Ct を R, に含まれる金コードクロ}ンの縫合とする.
ある合成リピジョンでコードクローン α が発生したとす
ウローンセット履歴の抽出
隣接する合成リビジョン Rtt
そして,夕日ーンセット媛擦の分析を行
のリポジトリのどのリビジョンのコード片が先になっているか
ン,
ビジョン 5 関でのクローンセットの遷移情報を求める.
3.4 STEP3
ン利用者を導出する
うことで,ある合成リピジョンで多送金したと2 …ドクローンがえ
間でのクローン遷移情報を導出する
ぬと RHl'
3.5 STEP4 コードウローン作成者と利用者の特定
Rt+3 におけ
る.そのコードクローン C の Code Autho開hip である ß! 籍者
がコードクローン利用者である.最初 iこ,クローンセット内に
親クローンを持つコードクローンがなくなるまで合成リピジョ
ンをさかのぼる.次に,クローンセット内のコードクローンの
各行について,版管理システムを法 lこ Code Authorship とコ
ミット日 i砕を求める
ここで,コードクローン A とコードクローン β が燃するク
口ーンセットにコードクローン C がi盛加されたと仮定して説
明を行う.コードクローン A 内で査をも古いコミット日 I埼の行
のコミット日時を DAold と定暴露し,査をも新しいコミット日時
を DAneω とする.向様に,コードクローン B 内で最も古い
コミット日時の行のコミット日 n寺を DBoid , 査をも新しいコミッ
ト日時を DBnew とする.
CASE1
図 5 (a) に示すように, DAnew が DBoid より古い壌合,コード
p
i
h
s
r
o
h
t
u
クローン C の作成渚はコードクロ}ン A の Code A
である開発者である
CASE2
図 5 (b) に示すように, DBnew が DAold より古い場合,コード
クローン C の作成者はコードクローン B の Code
p
i
h
s
r
o
h
t
u
A
である開発者である
CASE3
図 5 (c) に示すように, CASE1 , CAS呂2 に当てはまらない様
合, DAold と DBold を比較し,より古いコードクローンの
一- 40 ーー
CodeAuthorship である開発者がコードクローン作成者であ
お
"
るーこの例では,コ}ドクロ}ン A の Code Authorship であ
る開発者がコ}ドクローンの作成者である.
結果として,クロ}ンセットごとにクローンセット履歴をま
6
情報(作成したコ}ドクローンの機報)と利用者の関係が符ら
4
れる
o
z
"
' "
。
4
. ケーススタディ
関 6
開発したシステムを用いて,リポジトリのコードクローン作
クローンセット 0
加
毘作成数
.
0
0
e
c
l
i
p
s
e
.
p
l
a
t
f
o
r
m
.
t
e
x
t
(
2
0
0
1
開
E
島
-REP
一,
-G
一。,
,
一 N-e
国 7
-t
M
'
hhu
提案手法に従い,クロ}ンセット!讃際分析を行い,コードク
開発者ごとのコードクローン作成数と再利用数
ロ}ン利用者と作i貴重fを主露出した.そして,導出されたコード
タロ}ン作成者と利用者の情報を主主に分析を行った.
}様
たがって開発を行っている関発者が 2 名いた
一一一党叩
a--u
聞記
一 GQ
・
,.
4
EU
一白河
dee
JEU
」
醐-m
また,阿プロジェクトにま
a幽 EW
均
o
2003/12/18) は 144 ~ビ
幽 Am
ジョンで開発者 3 名の規様である
' v
is
2003/12/22) は 1369 リピジョンで開発者 19 名の規
zgg 醤
' v
回再利用数
毛見
対象として, OS8 の Java プロジz クト eclipse. p
l
a
t
f
o
r
m
.texむ
模であり.回lipse.pde(2002/4/11
1ω
,.
準備
と eclipse.pde を入力としてF司書ました.
1初
ローンセットの関係
本節では, 2 つ
に関するケーススタディについて詳述する.
/
5
/
2
"
"
個別凹
再利用回数の多いクローンセットとユニーク利用者数の多いク
の Java プロジェクトに対して担走塁塁手法を適用した再利用分析
4.1
ーユヱークな稿用者数
8
とめたデ}タ機逃が符られる.さらにコードクローン作成者
成者と frj照者lこ務闘した得利用分析を行った
-再利閉罰数
"
"
"
"
たクローンセットが 156 偲抽出された.その内, 5 つのクロー
本研究では,複数プロジェクトを対象としたコードクローン
ンセットはプロジェクト聞での再利用が行われていた.本ケー
作成者と利用者の分析を行うことで,どの稜度開発者ごとに再
ススタディでは,合成リビジョンにまたがって再利用が行われ
利用傾向が奥なるのかを明らかにすることを目的し,以下の 5
ていた 156 個のクローンセットを対象として分析を行った.
つの分析を行った.
以下に,分析結果を示す
(1) 再利用回数の多いクローンセットとコードクローン利
用者数が多いクロ}ンセットが一致するか
(
2
)
分析内容 1
図 6 に再利用回数の多いクローンセットとユニーク利用者数
コ}ドクロ」ン利用者数の多いコ}ドクローンと,再
利用回数は多いがコ}ドクローン利服者数の少ないコードク
ローンに主主いがあるか
の多いクローンセットについて示すー X 軸には再利用の多い順
にクローンセットを並べている
Yi触はそのクローンセットの
再利用回数とユニーク利用者数を示す
(3) コ}ドクローンの作成数と利用数の多い関発者にどの
ような特徴があるか
ここでユニータ利用者
数とはクローンセットの利用者である側発者が何名であるかを
示す.
(4) コミット数の多い開発者はコ}ドクローンの作成数と
利用数が多いかどうか
分析内容 2
ユニ}クユーザの多いコードクローンとユーザ数に関係なく再
分析内容 1 では,再利用回数の多いコード片では,ユニーク
利用回数の多いコードクローンについて分析を行った.ユニー
な利用者数も比例して多いのかを分析する.この分析では,既
クユーザの多いコードクローンについて,検出されたコードク
存研究で震われるような再利用傾向の差異が際発者問に実際に
存在するかを明ら古河l与することを目的としているー分析内容 2
では,自分で自分の勢いたコ}ドを再利用する場合と,他人の
コ}ドを得利用する場合での対象となるコード片の遠いを知る
ことを目的としている,分析内容 3 では,数多くの再利用に関
わっている関発音について共通の特徴があるかを知ることを罰
的としている.分析内容 4 では,分析 1 とは異なったコミット
という綴点において,際発者間における再利用傾向の差異を知
ることを問的としている.
4.2
給
ローンを調査し,ユーザ・インクープエース(以下, UI と示す)
に関する操作を行うソースコードが再利用されていることが分
かった
また,再利用回数の多いコードクロ}ンについて,検
出されたコードクローンを調査し, 08 ごとに対応した処理を
行う:;-:;<コードが再利用されていることが分かった
分析内容 3
コードクローン作成数と利用数の多かった開発者について,
2
0
5
伺の Eclipse プロジェクト世"のうち,どの程度のプロジェタ
トに関わっているかを調貸した作成数が 37 回で一番多く,再
日山梨
本ケーススタデイいではクローンセットが 969 個検出された
また,複数の合成リピジョンにまたがって再利用が行われてい
-
(桂 1)
c
g
i
41 ー
:
http://d田 h.eclipse.org/dasb向。皿 its/web-app/active-co皿 itters.
利用数が 163 図で二番目に多い開発者 A は, 48 俄のプロジェ
クトに関わっていた
作成数が 2 日田で二番目に多く,再手IJ用
数が 247 回で一番多い開発者 B は, 19 偲のプロジェクトに飼
わっていた作成数が 9 回で三番目に多く,再利用数が 38 回で
三番目に多い開発者 C は, 7 個のプロジェクトに隠わっていた
分析内容 4
図 7 に関発者ごとのコードクローン作成数と再利用数を示す
X 軸は開発者とコミット数を示し,コミット数が多いjI[買に並べ
ている. Yi紬はコードクローン作成数及び再利用数を示す.
4.3
考察
分析結果より得られた考察を以下に示す.分析内容 l につい
て,再利用回数の多いクロ}ンセットとコードクローン利用者
数が多いクローンセットが一致しなかった
この結果より,再
利用回数が多ければユニークユーザ数が多いというわけではな
いことが分かるー分析内容 2 について,再利用回数とユニー
ク利用者数がともに多かったコードクローンの例を ~9 に,ユ
ェーク利居者数の多いコードクローンの例を図 8 に,ユニーク
限 10
ユニーク利用者数が少なく,将利用関委主が多いお…ドクローン
の例
利用者数が少なく,再利用回数が多いコ}ドクローンの例を図
10 に示す図 10 に示すコ}ド片は再利用が 16 回でユニーク
利用者数は 3 名である
また,図 8 に示すコード片は再利用
が 4 回でユエーク利用者数は 3 名である.そして,図 10 に示
すコード片は再利用が 6 回でユニーク利用者数は 1 名である
今回の実験のみでは必ずしも判断できないが,本事例に関して
はユニーク利用者数が多いコードのほうが単純で理解しやす
いものであると判断できた.一方,ユニーク利用者数が少ない
コード片については,汎用性は高いが,ロジックが利用者数が
多いものと比較して複雑になっているものが多くあった.分析
内容 3 について,コードクローンの作成数が多い開発者は比較
的多くのプロジェクトに関わっていることが分かった
コード
クローン作成者の記述した元コード片が他のプロジェタトから
再利用してきたものであることも考えられる.そして,分析内
容 4 について.単純にコミット数が多ければコードクローン作
成数,手IJ用数が多いわけではないことから,開発者ごとの再利
用傾向には特徴があることが分かる
本研究では版管理システムとコードクローン検出システムを
用いて,複数のプロジェクトにおけるコードク口ーンの遷移情
報からコードクローンの作成者と利用者を導出することにより,
開発者ごとの再利用傾向を分析する手法を提案した.
今後,本分析手法を用いた再利用支援の枠組みを構築するこ
とを計臨している.具体的には,再利用を行おうと考えている
ユーザにコ」ドクローン作成者の情報を提示する仕組みやユ
ェータユーザ数の多いコード片から再利用性の高いコード片の
特徴抽出といった仕組みを構築し,より再利用しやすい開発環
境の構築を目指して行きたい.
謝辞本研究は,日;本学術振興会科学研究費補助金若手研究
(B)(課題番号
24700030) の効成を得た.
文献
[
1
]
and Kumar R
a
j
e
e
v
. 80ft,,:四国 Me訂i白
t
oEstima回目。ftware Q
u
a
l
i
t
yu
s
i
n
gSofもware Component
R
e
u
s
a
b
i
l
i
t
y
.IJCSlIntern α tional Jour百 αl ザ GomputerS口一
官 ivedi Prakri色i
一一 42
e
n
c
eIss閣 es, Vol
.9 , p
p
.144句149 , 2
0
1
2
.
Confe昭 ions o
f a used周program sal時m副1:
L
e
s
s
o
n
sl
e
a
r
n
e
d
.I
nProceed帥9' 01 帥 e 1995S,伊npos卸m o
n
p
. 1l~13! NewYOl'k , NY ,
S
o
f
t
w
a
r
eReusability, 88R'95 , p
USA , 1
9
9
5
.ACM.
[
3
] L
a
r
sHeinem叩 n , F
l
o
r
i
a
nDeiss叩 bo開k , M町10 Gleirscher ,
BenjaminHummel , andMa
.
ximianIrlbeclι011 thoExtent
'c
eJavaP
r
o
j
e
c
t
s
.
andNatureo
fS
o
f
t
w
a
r
eReusei
nOpenSoul
I
nProceed叩g5 0
1t
h
e1
2
t
hlnぉrnational 001ザ¢開nce onTop
Product叩 ity T
hroughS
o
f
t
w
a
r
eReuse, lCB乱立 1 , p
p
.2
0
7
222 , Berlin , Heidelberg , 2011
.S
p
r
i
n
g
e
r
-Verlag,
[
2
]
WiIl τ岡田
μl
鷲崎弘宜,森田掬, J完封恭兵,布谷貞夫,依藤勝三官,杉村俊車札悶
洋平組込みソフトウェアの派生開発におけるソ}スコ}ドメ
トリクスによる再利用性ñ~J 1E.ソフトウ'"ア品事変シンポジウム
2012 , 2012
[
5
] ManuelS
o
j
e
randJoachimHonke
.
l 00伽Rou師団 Open
S
o
u
r
c
eS
o
f
t
w
a
r
e Development: Q
u
a
n
t
i
t
a
t
i
v
e Evidence ,
Drivers , andImpediments. J
o
u
r
n
a
l0
]t
h
eAss田ìat叩 n]or
Info門ηα tion Syst町ns, Vo
l
.11 , No.12, 2010
[
6
J L
i
n
g
x
i
a
o Ji a.ng , Ghassan Misherghi ,胡 d Zh阻dong Su
a
ndAccurateτhφB出ed D
e
t
e
c
t
i
o
n
DECKARD:S
c
a
l
a
b
l
e.
o
fCode0
1
0
n
e
5
.1
nP
r
o
c
e
e
d
i
n
g
so
fI
n
t
e
m
a
t
i
o
n
a
l001ザerence
onS
o
f
t
w
a
r
eEngineering , p
p
.96-105 , 2日目 7
[
7
J CCFind町X. http://www.ccfinder.n凶/
[
8
J S
i
m
i
a
n
.http://ww.r .har由iza田畑町内出血/
[
9
J 肥後芳樹,楠本 Ä ニ,井上克郎 コードクローン検出とその
関連技術電子情報通儒学会論文総 l Vo
l
.J91悶D , No.6 , pp
0
0
8
.
1465-1481 , 2
[
1
0
] JohannesSame色inger. S
o
f
t
w
a
r
eE
n
g
i
n
e
e
r
i
n
gw
i
t
hReusαble
Com戸田山 Springer-V
e
r
l
a
gNewYork, 1nc. , NewYork ,
NY, USA , 1997
[
l
1
J MihaiBalint , Tu
dorGirba , a
.
ndR吋uM虹四国cu. How品
velope四 copy. 1
nP
r
o
c
e
e
d
i
n
g
so
fI
n
t
e
r
n
a
t
i
o
n
a
lC
o
n
f
e
r
e
n
c
e
p
.56- 65 , 2006
onProgramComprehension2006, p
[1司 山中絡樹,桂恩言語,吉田則裕,井上克郎,位野建樹.コードクロー
ン変更管理Vステムの開発と実プロジェクトへの遮潟 ソフト
ゥ手ァエンジニアリングシンポジウム 2012 論文集,務 2012 巻,
p
p
.1一戸8 , aug2012
[
1
3
J J回 Harder. CodeCloneAuthorship- A Fi国 Look. STT,
明01. 32 , N
o.2, p
p
.25-26 , 2012
Fly UP