2012 28th IEEE International Conference on Software Maintenance (ICSM)

Configuration Selection Using Code Change Impact Analysis for Regression Testing ⌸㡈攨᰼솜艌⌸ 솜 愈岠 㡈램㡈⌸㡈  攨⌸ 슐攨  怼 솜슐⌸㡈龈攨 뵼㡈ㄼ龈램슐ㄼ슐 愈怴攨攨㡈ㄼ ㄼ슐ㄼ㡈岠  㡈ㄼ⌸⏄ 怴㞬龈愈쿨 뚼 ⌸㡈攨稄솜⌸ 솜 㡈岠 㡈램㡈⌸㡈 攨⌸ 슐攨 녈 솜슐㡈岠攨   Abstract— Configurable systems that let users customize system behaviors are becoming increasingly prevalent. Testing a configurable system with all possible configurations is very expensive and often impractical. For a single version of a configurable system, sampling approaches exist that select a subset of configurations from the full configuration space for testing. However, when a configurable system changes and evolves, existing approaches for regression testing select all configurations that are used to test the old versions for testing the new version. As demonstrated in our experiments, this retest-all approach for regression testing configurable systems turns out to be highly redundant. To address this redundancy, we propose a configuration selection approach for regression testing. Formally, given two versions of a configurable system, S (old) and S' (new), and given a set of configurations CS for testing S, our approach selects a subset CS' of CS for regression testing S'. Our study results on two open source systems and a large industrial system show that, compared to the retest-all approach, our approach discards 15% to 60% of configurations as redundant. Our approach also saves 20% to 55% of the regression testing time, while retaining the same fault detection capability and code coverage of the retest-all approach. Keywords- Configurable System Testing; Configuration Selection; Regression Testing; Static Program Slicing; Change Impact Analysis.

怼 怼 ፠㞬怴 怼፠ 솜슐 㡈슐 슐攨 뵼㡈ㄼ 㡈슐 ㄼ岠攨ㄼ ㄼ슐슐ㄼ ⌸㡈 ⌸  攨솜 㡈⌸램 㡈岠⌸⌸⌸ㄼ슐 슐攨 㡈슐  ㄼ 㡈⌸⌸램 攨 岠攨 ⌸⏄솜ㄼ 攨 岠솜슐攨⌸ ㄼ ⌸ 㞬슐ㄼ슐configure ㄼ슐攨 뵼㡈ㄼ램슐ㄼ⌸ ⏄ ㄼ⌸攨뵼 㡈⌸岠㡈⌸攨  ㄼ ㄼㄼ 岠ㄼ슐 㡈 ⏄⌸ ⏄ 攨 ㄼ㡈솜ㄼ슐  㡈 㡈ㄼ 岠攨슐ㄼ⌸岠 攨 ㄼ㡈솜ㄼ슐 㡈攨 ⌸ 램 ㄼ슐램슐ㄼㄼ 㡈⌸攨 怼⌸슐뵼ㄼ瀜 攨뵼  㡈ㄼ슐⌸ ⏄㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ솜 ㄼ ⌸ ㄼㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐ㄼ 攨슐ㄼ슐 ⌸ ㄼㄼ  㡈솜슐枼侈侈댨枼侈댨枼⟀댨 ㄼ 岠ㄼ ⌸ ⌸슐 ㄼ슐⌸㡈ㄼ 攨 ㄼ슐 㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ ㄼ 㡈솜슐⌸ㄼ램뵼⌸ 㡈攨슐슐⌸ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐솜ㄼ 㡈솜슐⌸ㄼ ㄼ슐⌸ ⏄ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸슐 솜슐솜㡈램 ⌸ ㄼ㡈슐⌸ㄼ 枼侈댨 ㄼ岠ㄼ  뵼攨瀜 㡈슐 슐 攨뵼   㡈 㡈攨㡈岠 ㄼ슐 슐솜岠  㡈슐 Combinatorial Interaction Testing 怴怼 荬岠㡈 ⌸攨ㄼ ㄼ岠攨슐舜ㄼ ㄼ岠⌸ㄼ ㄼ슐슐 攨  ㄼ슐⌸ ⏄ 㡈 슐⌸ ⏄ㄼ ㄼ슐⌸攨  攨  㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ 램 sampling ㄼ 솜岠攨 ⌸⏄솜㡈⌸攨 슐㡈岠ㄼ枼侈侈댨枼侈⟀댨枼侈댨枼⟀댨ㄼS ㄼ㡈ㄼ슐⌸攨 攨 㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ뵼⌸ 㡈ㄼ슐슐솜⌸ㄼT㡈  ㄼCSㄼ㡈슐㡈ㄼ 슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐 攨ㄼ슐⌸ ⏄S뵼 ⌸岠  ⌸슐 ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 怴怼  㡈攨㡈岠  ፠솜 ㄼ⌸攨솜슐 뵼攨瀜 枼侈쿨댨 슐 攨뵼슐  㡈 솜

⌸ ⏄  ㄼ 솜 ㄼ슐 슐솜⌸ㄼ T 솜 ㄼ ㄼ㡈岠  岠攨 ⌸⏄솜㡈⌸攨  ⌸  CS 攨 ㄼ슐⌸ ⏄ S ⌸슐 ⌸⏄ 램 ㄼ 솜 㡈  攨 㡈 ㄼ슐슐 ⌸슐ㄼ 솜 㡈 岠램攨솜ㄼ⌸攨솜슐뵼攨瀜⌸ 攨 솜岠ㄼ 㡈test

case selection 㡈攨㡈岠 ⏄⌸ㄼ 㡈 ㄼ ⌸슐⌸ ⏄ㄼ슐슐솜⌸ㄼT솜슐ㄼ  攨 ㄼ슐⌸ ⏄ S 솜 ㄼ 㡈 岠攨 ⌸⏄솜㡈⌸攨  C∈ CS 攨솜 ㄼ⌸攨솜슐 㡈攨㡈岠  枼侈쿨댨 슐ㄼㄼ岠슐 㡈 슐솜슐ㄼ T’⊆T 攨 ㄼ슐⌸ ⏄ S 솜 ㄼ 㡈 ⌸ ㄼㄼ 岠攨 ⌸⏄솜㡈⌸攨 C’∈CS 攨뵼ㄼㄼ ㄼ岠 㡈ㄼ ⏄ㄼ슐攨 ㄼ슐⌸ ⏄㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ 㡈슐攨ㄼ슐⌸슐슐⌸  㡈ㄼ 슐㡈⏄ㄼ슐 攨   ㄼ슐攨 뵼㡈ㄼ⌸ ㄼ岠램岠ㄼ 뵼 ㄼㄼ

ㄼ뵼ㄼㄼ㡈슐ㄼ攨  ㄼ슐램슐ㄼ ㄼ 攨ㄼ 㡈슐S’荬솜슐ㄼregression tested ㄼ CS’ ㄼ ㄼ슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈 뵼⌸ ㄼ솜슐ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ S’ ዼ ⌸슐⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ㄼ슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 슐ㄼㄼ岠 㡈 岠攨 ⌸⏄솜㡈⌸攨 슐  㡈 㡈ㄼ 솜슐ㄼ  攨 ㄼ슐  ㄼ 攨  ㄼ슐⌸攨 슐 攨 ㄼ슐⌸ ⏄  ㄼ ㄼ뵼 ㄼ슐⌸攨 ⌸ㄼCS’蒤CS龈솜岠 retest-all岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ岠⌸攨  㡈攨㡈岠  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 攨뵼ㄼㄼ 岠㡈  ㄼㄼ ㄼ 슐⌸ㄼ ⌸ 슐⌸ㄼ攨 솜슐⌸ ⏄ ㄼ怴怼 슐㡈⌸ ⏄㡈攨㡈岠 攨슐ㄼㄼ岠㡈슐솜슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨  ㄼ 솜 岠攨 ⌸⏄솜㡈⌸攨  슐㡈岠ㄼ 攨 ㄼ 㡈ㄼ 㡈슐 ㄼ攨 슐㡈ㄼ  ⌸  攨솜 ㄼ⌸攨솜슐 뵼攨瀜 枼侈댨 뵼 ㄼ   ㄼ 怴怼  슐㡈ㄼ CS 뵼㡈슐 솜슐ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 㡈 㡈⏄ㄼ 슐램슐ㄼㄼ㡈岠 岠攨 ⌸⏄솜㡈⌸攨 ㄼ稄솜⌸ㄼ ㄼ⌸⏄  攨솜슐攨ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐㡈 ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄攨 㡈岠攨 ⌸⏄솜㡈⌸攨 슐⌸  ㄼ怴怼  슐㡈ㄼCSㄼ稄솜⌸ㄼ 㡈攨슐 ㄼㄼ뵼ㄼㄼ瀜슐

攨 㡈 ㄼ슐슐  ⌸슐 攨ㄼ 攨솜 ㄼ⌸攨솜슐 뵼攨瀜 枼侈댨 ⌸ 攨 솜岠ㄼ 㡈configuration prioritization㡈攨㡈岠 攨ㄼ攨 ㄼ  ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐攨 ㄼㄼ⏄ㄼ슐슐⌸攨  ㄼ슐ㄼ  ㄼ⌸攨⌸⌸ 㡈⌸攨  㡈攨㡈岠  ⌸攨ㄼ슐  ㄼ rate 攨  㡈솜 ㄼㄼ岠⌸攨  솜⌸ ㄼ⌸ ㄼ ⌸슐岠㡈 슐 ㄼ 솜 㡈  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼㄼ岠슐 㡈  ㄼ 㡈솜슐 ㄼㄼ岠ㄼ  램  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  怼   ⌸슐 㡈ㄼ 뵼ㄼ ⌸ 攨 솜岠ㄼ 㡈 configuration selection 㡈攨㡈岠   㡈 슐ㄼㄼ岠슐 㡈 슐㡈 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 CS 뵼 ⌸ㄼ슐⌸ㄼ㡈⌸ ⌸ ⏄ ㄼ fault detection capability ㄼ㡈슐솜ㄼ  램  ㄼ 솜ㄼ 攨  ㄼㄼ岠ㄼ  㡈솜슐荬 攨   ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  攨㡈램 ⏄⌸ㄼ  뵼攨ㄼ슐⌸攨 슐攨 㡈 岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ S 攨 荬㡈 S' ㄼ뵼荬 㡈  ⏄⌸ㄼ  㡈 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 CS 攨 ㄼ슐⌸ ⏄ S 攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐 㡈 슐솜슐ㄼ CS' ⊆ CS 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ S' ፠솜 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠  솜슐ㄼ슐슐⌸岠⌸ ⏄舜㡈슐ㄼ 岠攨 ㄼ岠 㡈 ⏄ㄼ⌸㡈岠㡈 㡈램슐⌸슐枼댨攨㡈슐슐⌸슐 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  愈슐 ㄼ攨 슐㡈ㄼ  ⌸  攨솜 슐솜 램 龈ㄼ岠⌸攨  怼怴荬 攨솜 㡈攨㡈岠  岠㡈  㡈⏄ㄼ램 ㄼ 솜岠ㄼ  ㄼ ㄼ 솜 㡈 岠램攨  ㄼㄼㄼ슐舜㡈㡈攨㡈岠  뵼⌸ 攨솜 슐㡈岠⌸ ⌸岠⌸ ⏄ ㄼ 㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램

ㄼ 슐㡈ㄼ 攨   ㄼ 㡈 ⌸  岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ ㄼ슐⌸ ⏄ ⌸슐 슐솜㡈⌸ ㄼ ⌸  愈ዼ怼‫ޜ‬愈⌸  ㄼ㡈ㄼ⌸ ⌸岠㡈ㄼ슐 㡈 ㄼ ⌸攨⌸⌸ 㡈⌸攨 㡈攨㡈岠 ㄼ슐㡈ㄼ 攨㡈⌸岠㡈ㄼ 攨슐⌸ ⏄ㄼㄼ슐⌸攨  슐램슐ㄼ슐 愈슐 슐 攨뵼  ⌸   ⌸슐 㡈ㄼㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 㡈슐 ㄼㄼ  ㄼ ㄼ 슐⌸ㄼ램 ㄼ슐ㄼ㡈岠 ㄼ  㡈  ㄼ ㄼ슐 岠㡈슐ㄼ ㄼㄼ 枼侈댨枼댨枼㷤댨 뵼 ㄼㄼ㡈슐  ㄼ 攨ㄼ 攨  ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 㡈  ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ㄼㄼ 㡈슐 ㄼ岠ㄼ⌸ㄼ  ㄼ램 ㄼ슐슐 㡈ㄼ ⌸攨  ፠솜 ㄼ⌸攨솜슐뵼攨瀜枼댨㡈  ㄼ㡈攨㡈岠 攨攨슐ㄼ ⌸  ⌸슐㡈ㄼ ⌸⏄ ⌸⏄ ㄼ ⌸  ㄼ㡈ㄼ荬㡈 ㄼ슐슐ㄼ슐 ⌸슐㡈岠瀜

쿨舜侈舜쿨㷤舜㷤侈舜㷤껤侈껤㷤侈艴侈怼ዼዼዼ

129

2012 28th IEEE International Conference on Software Maintenance (ICSM)

愈ዼ怼

ዼ龈 愈 ዼ፠  ዼ愈 怼怴፠ 怼壌㞬 愈ዼ龈 俸龈 ዼ艌 ዼ龈 怼壌 

Single Version Testing

Regression Testing

Selection

枼侈侈댨枼侈⟀댨枼侈댨枼⟀댨

Focus of this paper

Prioritization

愈

枼侈댨

Selection

枼侈쿨댨

枼댨枼㷤댨㡈

Prioritization

愈

枼侈댨㡈

Problems

Configuration Level

Test Case Level

㡈 ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ㄼ岠 ⌸稄솜ㄼ슐㡈 ㄼㄼ슐岠㡈슐ㄼ ㄼㄼ㡈ㄼ㡈⌸ㄼ 攨 㡈ㄼ舜岠攨 ⌸⏄솜㡈⌸攨 㡈슐⌸슐 攨 岠攨 ⌸⏄솜㡈ㄼ슐攨 뵼㡈ㄼ슐램슐ㄼ

፠ㄼ㡈攨솜㡈ㄼ㡈瀜ㄼ슐 ㄼ 攨攨뵼⌸ ⏄岠攨 ⌸솜⌸攨 슐 · ·

演ㄼ⌸ 攨 솜岠ㄼ ㄼ ⌸슐岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ岠⌸攨 㡈攨㡈岠  攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ슐 演ㄼㄼ㡈솜㡈ㄼ攨솜㡈攨㡈岠 攨 뵼攨攨ㄼ  슐攨솜岠ㄼ슐램슐ㄼ슐 㡈 㡈㡈⏄ㄼ⌸ 솜슐⌸㡈슐攨 뵼㡈ㄼ슐램슐ㄼ፠솜슐솜 램ㄼ슐솜슐 슐 攨뵼  㡈 岠攨㡈ㄼ  攨  ㄼ retest-all 㡈攨㡈岠  攨솜 㡈攨㡈岠  ⌸슐岠㡈 슐 侈⟀‫ ﵈‬攨 ‫ ﵈‬岠攨 ⌸⏄솜㡈⌸攨 슐 㡈슐 ㄼ 솜 㡈  㡈  岠㡈  슐㡈ㄼ ‫ ﵈‬攨 ⟀⟀‫ ﵈‬攨   ㄼ ㄼ슐⌸ ⏄ ⌸ㄼ뵼 ⌸ㄼㄼ㡈⌸ ⌸ ⏄ ㄼ슐㡈ㄼ 㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램 㡈 岠攨 ㄼ岠攨ㄼ㡈⏄ㄼ攨  ㄼㄼㄼ슐舜㡈㡈攨㡈岠 

ㄼㄼ슐 攨   ㄼ㡈ㄼ ⌸슐 攨⏄㡈 ⌸ ㄼ  㡈슐 攨攨뵼슐 龈ㄼ岠⌸攨  怼怼 ㄼ슐ㄼ 슐  ㄼ 㡈岠瀜⏄攨솜  ㄼ稄솜⌸ㄼ  攨 솜 ㄼ슐㡈 ⌸ ⏄ 攨솜 㡈攨㡈岠  龈ㄼ岠⌸攨  怼怼怼 ㄼ슐岠⌸ㄼ슐 攨솜 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠  솜슐⌸ ⏄ 㡈  ⌸솜슐㡈⌸ㄼ ㄼ 㡈ㄼ  ㄼ 슐솜 램 ㄼ슐⌸⏄  㡈  ㄼㄼ슐솜슐㡈ㄼㄼ슐ㄼ ㄼ ⌸  龈ㄼ岠⌸攨 怼 ⌸ 㡈램 龈ㄼ岠⌸攨   ⌸슐岠솜슐슐ㄼ슐  ㄼㄼ㡈ㄼ ⌸ㄼ㡈솜ㄼ㡈  龈ㄼ岠⌸攨  怼 岠攨 岠솜 ㄼ슐 攨솜㡈ㄼ뵼⌸ 攨⌸ ㄼ슐攨 솜솜ㄼ뵼攨瀜 怼怼 愈怴瓤壌 ፠㞬愈፠ 愈 怼፠龈 怼   ⌸슐 슐ㄼ岠⌸攨  뵼ㄼ 攨⌸ ㄼ  ㄼ 㡈슐⌸岠 㡈岠瀜⏄攨솜  攨  岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ슐 龈ㄼ岠⌸攨 怼怼愈荬㡈 岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ ㄼ슐⌸ ⏄ 龈ㄼ岠⌸攨  怼怼荬㡈⌸岠솜㡈램 configuration generation 솜슐⌸ ⏄ ㄼ怴攨⌸ 㡈攨⌸㡈怼 ㄼ㡈岠⌸攨  ㄼ슐⌸ ⏄ 怴怼 荬슐㡈⌸ ⏄ 㡈攨㡈岠 枼댨枼侈侈댨枼侈⟀댨⌸슐 ㄼ슐岠⌸ㄼ  龈ㄼ岠⌸攨 怼怼侈荬荬演ㄼ㡈슐攨 ⌸ 攨 솜岠ㄼstatic program slicing 龈ㄼ岠⌸攨 怼怼怴荬뵼 ⌸岠 ⌸슐솜슐ㄼ  램攨솜 㡈攨㡈岠  攨 㡈 㡈램 ⌸ ⏄  ㄼ⌸㡈岠 攨  岠攨 ㄼ 岠 㡈 ⏄ㄼ슐

ㄼ 攨㡈⌸攨 슐 ⌸ 攨 솜岠ㄼ  ⌸   ⌸슐 슐ㄼ岠⌸攨  뵼⌸ ㄼ 솜슐ㄼ   攨솜⏄ 攨솜 ㄼㄼ슐攨  ㄼ㡈ㄼ A. Configurable Systems and Configurations 愈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ 㡈슐 㡈⌸攨솜슐 岠攨 ⌸⏄솜㡈ㄼ options  㡈 岠攨 攨  ㄼ 슐램슐ㄼ슐 ㄼ ㄼ岠솜⌸攨  ㄼ 슐ㄼ岠⌸ ⌸岠 ㄼ ㄼ岠솜⌸攨  攨   ㄼ 슐램슐ㄼ ㄼㄼ 슐 攨   ㄼ 㡈岠솜㡈 values 슐솜⌸ㄼ  攨  ㄼ슐ㄼ 攨⌸攨 슐 攨 ㄼ 㡈ㄼ Internet Explorer (IE) 㡈 攨솜㡈 뵼ㄼ攨뵼슐ㄼ⌸슐㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ 怼  IE솜슐ㄼ슐 岠㡈  슐ㄼㄼ岠 ⌸ ㄼㄼ 㡈솜ㄼ슐 攨 슐ㄼ⌸ ⏄슐荬 攨  ㄼ岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 privacy 攨allow all cookies攨block all cookies 壌⌸ㄼ  㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ S 뵼ㄼ 솜슐ㄼ S 攨 ㄼ 攨ㄼ 攨   ㄼ岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼS㡈 ⌸슐슐攨솜岠ㄼ岠攨 ㄼ荬ㄼ솜슐 ㄼ 攨ㄼ  ㄼ슐ㄼ攨 m岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐램P蒤뚼P1, P2, P3, …, Pm녈 愈 㡈⌸岠솜㡈 㡈슐슐⌸⏄ ㄼ  攨  㡈솜ㄼ슐 攨 ㄼ㡈岠  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  攨슐㡈configuration instance ㄼ 攨ㄼ 㡈슐C怼  ⌸슐 㡈ㄼ 뵼ㄼ 솜슐ㄼ  ㄼ ㄼ 岠攨 ⌸⏄솜㡈⌸攨  㡈  岠攨 ⌸⏄솜㡈⌸攨 

130

⌸ 슐㡈 岠ㄼ⌸ ㄼ岠 㡈 ⏄ㄼ㡈램 攨ㄼ㡈岠 Pi ㄼPi ㄼ ㄼ 솜ㄼ 攨  㡈솜ㄼ슐  㡈  ㄼ 솜슐ㄼ슐 岠㡈  岠 攨攨슐ㄼ 攨  ⌸슐 攨⌸攨  愈岠岠攨 ⌸ ⏄램 ㄼ㡈岠  攨슐슐⌸ㄼ 㡈솜ㄼ 攨  攨⌸攨  Pi ⌸슐 ㄼ 攨ㄼ 㡈슐 pij 뵼 ㄼㄼ j ∈ 枼侈 Pi 댨 攨 ㄼ㡈岠  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  Pi ㄼ  岠 攨슐ㄼ  攨 뚼pij j ∈ 枼侈 Pi 댨녈 ㄼㄼ슐ㄼ   ㄼ 㡈솜ㄼ 㡈슐슐⌸⏄ ㄼ  攨 Pi ⌸  岠攨 ⌸⏄솜㡈⌸攨  C ㄼ 岠ㄼ  ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼC岠㡈 ㄼㄼㄼ슐ㄼ ㄼ 램 ㄼ슐ㄼ뚼  ꄰ 녈愈 岠攨ㄼ岠⌸攨 攨 CS蒤k슐솜岠 岠攨 ⌸⏄솜㡈⌸攨 ⌸ 슐㡈 岠ㄼ슐뚼C1C2C3 ꄰCk녈솜슐ㄼ  攨ㄼ슐⌸ ⏄S⌸슐 ㄼ 攨ㄼ 㡈슐CS B. Configurable System Testing ዼ ㄼ岠⌸ㄼ램ㄼ슐⌸ ⏄㡈岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼㄼ稄솜⌸ㄼ슐 㡈 ㄼ 슐램슐ㄼ ⌸슐 ㄼ슐ㄼ  뵼⌸  ⌸슐 ㄼ슐 슐솜⌸ㄼ 솜 ㄼ ⌸ ㄼㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 枼侈侈댨枼侈댨枼⟀댨 ㄼ 岠ㄼ 㡈攨㡈岠 ㄼ슐 攨 ㄼ슐⌸ ⏄ 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ슐 岠攨 슐⌸ ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈  ㄼ슐 岠㡈슐ㄼ슐 演⌸  솜 ㄼ 슐 攨 ㄼㄼ   攨솜슐㡈 슐 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸  㡈岠⌸岠ㄼ ⌸ ⌸슐 攨 攨슐슐⌸ㄼ 攨ㄼ 㡈솜슐⌸ㄼ램ㄼ슐 㡈 슐램슐ㄼ뵼⌸ 㡈攨슐슐⌸ㄼ岠攨 ⌸⏄솜㡈⌸攨 ⌸ 슐㡈 岠ㄼ슐 攨㡈 ㄼ슐슐  ⌸슐 攨ㄼ ㄼ슐⌸ ⏄ 㡈攨㡈岠 ㄼ슐 솜슐ㄼ configuration generation 攨 슐㡈ㄼ 㡈 슐솜슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 攨 ㄼ슐ㄼ攨 㡈攨슐슐⌸ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐 攨ㄼ슐⌸ ⏄ 怴攨⌸ 㡈攨⌸㡈 怼 ㄼ㡈岠⌸攨  ㄼ슐⌸ ⏄ 怴怼 荬 枼댨 ⌸슐 㡈 슐램슐ㄼ㡈⌸岠㡈 㡈 㡈솜攨㡈ㄼ 㡈攨㡈岠  攨 ㄼ岠攨 ⌸⏄솜㡈⌸攨  ⏄ㄼ ㄼ㡈⌸攨  攨岠ㄼ슐슐 怴怼  㡈슐 ㄼㄼ  슐 攨뵼  攨 ㄼ 슐솜ㄼ⌸攨 攨 攨  㡈 攨 㡈  ㄼ 㡈솜슐⌸ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ⏄ㄼ ㄼ㡈⌸攨  㡈攨㡈岠 ㄼ슐 枼侈댨枼侈댨 ዼ⌸⌸岠㡈 슐솜 ⌸ㄼ슐 枼侈侈댨枼侈⟀댨 攨  ㄼ㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ슐 㡈ㄼ 슐 攨뵼   㡈 怴怼  ⌸슐 ㄼ ㄼ岠⌸ㄼ ⌸  ⏄ㄼ ㄼ㡈⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ슐⌸ ⏄ ㄼ㡈슐솜ㄼ  램 ㄼ 㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램 俸⌸㡈  ㄼ 㡈 枼⟀댨 㡈ㄼ 슐 攨뵼   㡈 岠攨 ⌸⏄솜㡈⌸攨 슐 ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 怴怼  㡈攨㡈岠  岠㡈  ㄼㄼ岠 岠攨 ⌸⏄솜㡈⌸攨 舜 ㄼㄼ ㄼ  㡈⌸솜ㄼ슐 㡈  岠 㡈㡈岠ㄼ⌸ ㄼ 㡈솜슐 攨ㄼ ㄼ ⌸岠⌸ㄼ 램 岠攨㡈ㄼ  攨  ㄼ ㄼ 㡈솜슐⌸ㄼ ⏄ㄼ ㄼ㡈⌸攨  㡈攨㡈岠 ㄼ슐  怴怼  ⌸슐 㡈슐攨 㡈 뵼⌸ ㄼ램 솜슐ㄼ  ㄼ岠 ⌸稄솜ㄼ ⌸   ㄼ ⌸ 솜슐램枼댨 1) The CIT Approach 攨 㡈 ⏄⌸ㄼ  岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ  ㄼ 怴怼  㡈攨㡈岠  攨 ㄼ슐⌸슐岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐㡈  ㄼ⌸㡈슐슐攨岠⌸㡈ㄼ 㡈솜ㄼ슐 㡈  岠攨⌸ ㄼ슐 ㄼ 슐램슐ㄼ㡈⌸岠㡈램슐攨  㡈 㡈 岠攨⌸ 㡈⌸攨 슐 攨 㡈솜ㄼ슐 攨 ㄼ㡈岠  t舜뵼㡈램 t 侈荬 岠攨⌸ 㡈⌸攨  攨 攨⌸攨 슐㡈ㄼ ㄼ슐ㄼ  攨⏄ㄼ ㄼ 枼댨 ㄼㄼ t⌸슐岠㡈ㄼ  ㄼ슐ㄼ ⏄ 攨 ㄼ슐⌸ ⏄ 㡈  ㄼ岠㡈슐ㄼ뵼 ㄼ t蒤⌸슐岠㡈ㄼ pair-wiseㄼ슐⌸ ⏄

愈ዼ怼怼슐 攨뵼슐㡈㡈⌸㡈슐ㄼ攨 岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐㡈   ㄼ⌸ 㡈솜ㄼ슐 攨  ㄼ ㄼ  ㄼ ⌸攨 vim 㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ

ㄼㄼ㡈ㄼ 攨솜 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 P蒤뚼P1 P2 P3 P4녈 P1 P2㡈 P3 㡈ㄼ⌸ 㡈램攨⌸攨 슐 뵼⌸ 뵼攨攨슐슐⌸ㄼ㡈솜ㄼ슐荬⌸ㄼ  P1蒤 P2蒤 P3蒤P4 㡈슐 ㄼㄼ攨슐슐⌸ㄼ㡈솜ㄼ슐 ⌸ㄼP4蒤㷤荬 뵼⌸ p41蒤 p42蒤㡈 p43蒤쿨愈攨㡈攨 P1ӔP2ӔP3ӔP4蒤 ӔӔӔ㷤蒤  岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 㡈ㄼ 攨슐슐⌸ㄼ ዼ 㡈솜슐⌸ㄼ램ㄼ슐⌸ ⏄ 㡈 攨슐슐⌸ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 ⌸슐 ⌸ ㄼ㡈슐⌸ㄼ 攨 슐램슐ㄼ슐 ⌸  㡈岠⌸岠ㄼ 㡈 攨ㄼ  㡈 ⌸슐 㡈 ㄼ슐슐ㄼ 램 ㄼ怴怼 㡈攨㡈岠 

愈ዼ 怼怼怼 슐 攨뵼슐  ㄼ 슐ㄼ CS蒤뚼C1 C2 ꄰ C6녈 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 㡈⌸舜뵼⌸슐ㄼ 怴怼  㡈攨㡈岠  뵼 ⌸岠 ㄼ稄솜⌸ㄼ슐 㡈㡈攨슐슐⌸ㄼ㡈솜ㄼ岠攨⌸ 㡈⌸攨 슐攨 ㄼ㡈岠  㡈⌸攨 攨⌸攨 슐 攨㡈램4C2蒤㡈⌸슐攨 攨⌸攨 슐荬슐 攨솜 㡈ㄼ㡈 ⌸ 㡈ㄼ㡈슐攨 ㄼ攨  ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐

2012 28th IEEE International Conference on Software Maintenance (ICSM)

攨ㄼ 㡈ㄼ ㄼㄼ㡈ㄼP1ӔP2蒤㡈솜ㄼ岠攨⌸ 㡈⌸攨 슐 攨  ㄼ 㡈⌸ P1蒤background P2蒤autoread荬 뵼 ⌸岠  㡈ㄼ dark ar荬  dark noar荬  light ar荬 㡈  light noar荬 怼  愈ዼ 怼怼怼 ㄼ슐 㡈 ㄼ 攨 ㄼ슐 ㄼ 攨ㄼ ㄼ슐ㄼ 攨솜 㡈솜ㄼ岠攨⌸ 㡈⌸攨 슐 ዼ㡈岠 攨  ㄼ슐ㄼ 㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 슐 攨솜 ㄼ 岠攨ㄼㄼ 램 㡈  ㄼ㡈슐 攨 ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ㄼ 㡈솜ㄼ 㡈⌸ 攨  dark ar荬 ⌸슐 岠攨ㄼㄼ ⌸ C1 lightnoar荬⌸슐岠攨ㄼㄼ ⌸ C2 darknoar荬⌸슐 岠攨ㄼㄼ ⌸  C3 㡈  lightar荬⌸슐岠攨ㄼㄼ ⌸  C4 怼 ⌸슐 ㄼ㡈슐램 攨  ㄼ⌸ 램 攨 愈ዼ 怼怼怼  㡈 攨  ㄼ 攨 ㄼ ⟀ 㡈⌸슐 background tabstop荬  background textwidth荬  autoread tabstop荬 autoread textwidth荬 㡈  tabstop textwidth荬㡈 㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 㡈ㄼ 岠攨ㄼㄼ  ⌸  㡈 ㄼ㡈슐 攨 ㄼ 攨   ㄼ 슐⌸  岠攨 ⌸⏄솜㡈⌸攨 슐 솜 㡈슐 슐 攨뵼  ⌸  攨솜 ㄼ⌸攨솜슐 뵼攨瀜 枼侈댨 ㄼㄼ  ⌸  ㄼ 솜ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐⏄ㄼ ㄼ㡈ㄼ 램 ㄼ㡈⌸舜 뵼⌸슐ㄼ怴怼 㡈攨㡈岠 ⌸슐솜岠  슐㡈ㄼ 㡈  ㄼ 솜ㄼ 攨 㡈 攨슐슐⌸ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ ⌸슐 슐⌸ ㄼ램 ㄼ ㄼ 슐⌸ㄼ 㡈  ㄼ 솜 㡈 㡈슐攨솜ㄼ ㄼ⌸ㄼ 슐 ㄼ攨 슐㡈ㄼ⌸ 龈ㄼ岠⌸攨 怼怴荬 攨 ㄼ솜  㡈 岠攨 ⌸⏄솜㡈⌸攨 슐 ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 怴怼  㡈攨㡈岠  ㄼ슐ㄼ岠⌸㡈램⌸ 㡈ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ㄼ ⌸攨 ㄼ 뵼⌸ ⌸ㄼ㡈  ㄼ슐攨솜岠ㄼ岠攨 슐㡈⌸ 슐

愈ዼ怼怼

ㄼ S ㄼ 㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ 㡈 슐솜攨슐ㄼ  㡈  ㄼ  岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ ㄼ攨ㄼ슐 攨 S 攨 㡈 ㄼ뵼 ㄼ슐⌸攨  S’

ㄼ슐攨솜岠ㄼ岠攨 ㄼ 攨 S’⌸슐슐 攨뵼 ⌸  ⌸⏄솜ㄼ侈ㄼ솜슐㡈슐슐솜ㄼ  㡈攨 램⌸ ㄼ쿨 㡈슐岠 㡈 ⏄ㄼ ㄼ뵼ㄼㄼ ㄼ슐⌸攨 슐S㡈 S’ㄼ ∆ S, S’荬 ㄼ 攨ㄼ ㄼ岠 㡈 ⏄ㄼ슐⌸  ㄼ岠攨 ㄼㄼ뵼ㄼㄼ S㡈 S’怼  ⌸⏄솜ㄼ侈∆ S, S’荬蒤뚼쿨녈ㄼimp(∆ S, S’荬荬ㄼㄼ슐ㄼ  ㄼ岠攨 ㄼ  㡈⌸슐슐㡈⌸岠㡈램⌸㡈岠ㄼ 램 ㄼ岠 㡈 ⏄ㄼ∆ S, S’荬怼  S’ ㄼ 攨뵼㡈  슐⌸岠ㄼ 攨  ⌸ ㄼ 쿨 ⌸ 岠솜 ㄼ슐 ⌸ ㄼ슐 쿨 侈 㡈  侈㷤 ⌸⏄ ⌸⏄ ㄼ ⌸   ㄼ ⌸⏄솜ㄼ荬⌸ㄼimp(∆ S, S’荬荬蒤뚼쿨侈侈㷤녈 龈⌸ 岠ㄼ ㄼ⌸㡈岠攨  ㄼ岠 㡈 ⏄ㄼ 岠攨 ㄼ ⌸⌸㡈램⌸ 岠솜 ㄼ슐  ㄼ 岠 㡈 ⏄ㄼ  岠攨 ㄼ ⌸슐ㄼ  ∆ S, S’荬 ⊆ imp(∆ S, S’荬荬 攨 攨솜 ㄼ 㡈ㄼ 岠攨 ㄼ ⌸  ⌸⏄솜ㄼ 侈 뵼ㄼ ㄼ㡈슐솜ㄼ  ㄼ 岠 㡈 ⏄ㄼ 㡈  ⌸슐 ⌸㡈岠 㡈  ㄼ ⌸ ㄼ ⏄㡈 솜㡈⌸램 怼  ⌸슐 㡈ㄼ  攨뵼ㄼㄼ 뵼ㄼ  ㄼ㡈슐솜ㄼ  ㄼ 岠 㡈 ⏄ㄼ 㡈  ⌸슐 ⌸㡈岠 㡈  ㄼ 솜 岠⌸攨  ⏄㡈 솜㡈⌸램

怴፠ 怼壌㞬 愈ዼ፠ 怼፠龈愈愈㞬ዼ龈፠ VIM P1

P2

P3

P4

background

autoread

tabstop

textwidth

Options

Values of Options

㡈瀜

㡈





⌸⏄ 

攨㡈

侈





愈ዼ怼怼怼

쿨

怴፠ 怼壌㞬 愈 怼፠龈壌ዼዼ 愈 ዼ俸愈怼 舜演怼龈ዼ怴怼  ፠ VIM P1

P2

background

autoread 

P3

P4

tabstop

textwidth





C1

㡈瀜

㡈 

C2

⌸⏄ 

攨㡈 

侈

쿨 

C3

㡈瀜

攨㡈

侈



C4

⌸⏄ 

㡈

侈



C5

⌸⏄ 

㡈





C6

㡈瀜

攨㡈





 

쿨 



 



C. Static Program Slicing 龈㡈⌸岠 攨⏄㡈 슐⌸岠⌸ ⏄ ⌸슐 ⌸ 攨 솜岠ㄼ  램 演ㄼ⌸슐ㄼ 枼댨 ㄼ ㄼ슐 攨  ㄼ 岠攨솜㡈⌸攨  攨  program points  㡈 ㄼ ㄼ岠 攨 㡈ㄼ㡈 ㄼ岠ㄼ 램㡈⏄⌸ㄼ 攨⏄㡈攨⌸  ㄼforward slice攨  㡈 攨⏄㡈 攨⌸  ⌸ 岠솜 ㄼ슐 㡈  ㄼ 攨⏄㡈 攨⌸ 슐 ⌸   ㄼ 攨뵼㡈  岠攨 攨 攨뵼 㡈 ㄼ岠ㄼ  램  ㄼ 岠攨솜㡈⌸攨  攨 岠攨 ⌸⌸攨 㡈ㄼ슐㡈 ㄼ攨⏄㡈攨⌸ 攨⏄㡈攨⌸ 슐㡈ㄼ ㄼ 攨슐 㡈슐⌸岠 㡈⏄ㄼ 슐 攨   ㄼ 슐攨솜岠ㄼ 岠攨 ㄼ 愈 攨⏄㡈 㡈램 岠攨 㡈⌸ 솜⌸ㄼ ⌸ㄼ슐㡈 ⌸ㄼ㡈램岠攨 㡈⌸ 솜⌸ㄼ 솜 岠⌸攨 슐 㡈 솜 岠⌸攨  㡈램 岠攨 㡈⌸  솜⌸ㄼ ⌸ ㄼ슐 㡈  㡈 ⌸ ㄼ 㡈램 岠攨 㡈⌸  솜⌸ㄼ 攨⏄㡈 攨⌸ 슐 愈 岠 㡈 ⏄ㄼ 攨 㡈 岠 㡈 ⏄ㄼ 攨岠瀜岠㡈 ㄼ岠攨 슐⌸ ㄼㄼ 㡈슐㡈슐ㄼ攨 攨⏄㡈攨⌸ 슐

 ⌸⏄솜ㄼ侈 ㄼ 攨뵼㡈 슐⌸岠ㄼ攨 sum=0

怼怼怼

፠㞬 愈 ፠愈怴

怼   ⌸슐 슐ㄼ岠⌸攨  뵼ㄼ ㄼ슐岠⌸ㄼ 攨솜 㡈攨㡈岠  攨  슐ㄼㄼ岠⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ슐 怼  龈ㄼ岠⌸攨  怼怼怼愈 뵼ㄼ ㄼ슐岠⌸ㄼ  ㄼ 攨ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨 솜슐⌸ ⏄㡈슐⌸ㄼㄼ 㡈ㄼ뵼 ⌸岠 뵼⌸㡈슐攨ㄼ솜슐ㄼ 攨 ⌸솜슐㡈ㄼ 攨솜 㡈攨㡈岠  怼  龈ㄼ岠⌸攨  怼怼怼 뵼ㄼ ㄼ슐岠⌸ㄼ  ㄼ 㡈⌸攨솜슐 슐ㄼ슐⌸  攨솜 㡈攨㡈岠  怼  龈ㄼ岠⌸攨  怼怼怼怴 뵼ㄼ 攨⌸ ㄼ  ㄼ⌸ㄼㄼ 㡈⌸攨  ㄼ㡈⌸슐攨 攨솜㡈攨㡈岠  A. Example and Problem Description 龈솜攨슐ㄼ S ⌸슐 㡈 슐⌸ㄼ 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ 㡈슐 슐 攨뵼 ⌸  ⌸⏄솜ㄼ  S 岠攨 㡈⌸ 슐 ㄼ⌸⏄  솜 岠⌸攨 슐 f1 攨 f8 S 㡈슐  ㄼㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸ㄼ P蒤뚼P1 P2 P3녈 愈슐 슐 攨뵼  ⌸ 

愈ዼ 怼 ㄼ㡈岠  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  ⌸슐 ⌸ 㡈램㡈  㡈램 ㄼ ㄼ⌸ ㄼ True 攨 False ⌸ㄼ P1蒤P2蒤P3蒤p11蒤p21蒤p31蒤True 㡈  p12蒤 p22蒤 p32蒤False. 愈 ⏄⌸ㄼ  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  攨  슐램슐ㄼ S Pi 岠㡈  ㄼ 㡈ㄼ  攨 ⌸슐 岠攨ㄼ슐攨 ⌸ ⏄ configuration variables 솜슐솜㡈램솜슐ㄼ 攨ㄼ岠ㄼ⌸ㄼ ㄼ㡈솜ㄼ슐攨   ㄼ 攨⌸攨 슐 攨  ㄼ 솜슐ㄼ荬 ⌸   ㄼ 슐攨솜岠ㄼ 岠攨 ㄼ 攨  S 怼  攨솜 ㄼ 㡈ㄼ ㄼ㡈岠  攨  ㄼ岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐P1P2㡈 P3㡈ㄼ 㡈ㄼ  攨 攨 ㄼ 岠攨 ⌸⏄솜㡈⌸攨  㡈⌸㡈ㄼ 攨   ㄼ 슐㡈ㄼ 㡈ㄼ 솜 슐⌸⏄ ㄼ ⏄攨㡈⌸ ㄼ⏄ㄼ슐P1P2㡈 P3⌸ ⌸ ㄼ슐攨荬⌸   ㄼ 슐攨솜岠ㄼ 岠攨 ㄼ ㄼ슐ㄼ 岠攨 ⌸⏄솜㡈⌸攨  㡈⌸㡈ㄼ슐 㡈  ㄼ 岠ㄼ  ㄼ⌸ 岠攨ㄼ슐攨 ⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨  攨⌸攨 슐 岠攨 攨  ㄼ ⌸ ㄼㄼ ㄼ ㄼ岠솜⌸攨 슐攨 Sㄼimp Pi荬ㄼㄼ슐ㄼ  ㄼ岠攨 ㄼ⌸ S  㡈 ⌸슐 슐㡈⌸岠㡈램 ⌸㡈岠ㄼ  램  ㄼ 岠攨 ⌸⏄솜㡈⌸攨  㡈⌸㡈ㄼ슐 岠攨ㄼ슐攨 ⌸ ⏄ 攨 Pi 愈슐 뵼ㄼ ㄼ㡈슐솜ㄼ  ㄼ ⌸㡈岠 㡈  ㄼ 솜 岠⌸攨  ⏄㡈 솜㡈⌸램 imp Pi荬 ⌸슐 㡈 슐ㄼ 攨  솜 岠⌸攨  岠㡈슐 㡈攨 ⏄  ㄼ슐㡈⌸岠㡈 슐⌸ S 㡈㡈ㄼ⌸㡈岠ㄼ 램Pi

ㄼ怴攨 攨 攨뵼壌㡈  怴 壌荬攨  S⌸슐슐 攨뵼  ⌸  ⌸⏄솜ㄼ 㷤怼  ㄼ怴 壌㡈 㡈슐 ㄼ 㡈攨뵼⌸ ⌸岠㡈ㄼ슐㡈 솜 岠⌸攨 岠㡈 攨

131

2012 28th IEEE International Conference on Software Maintenance (ICSM)

슐 攨뵼 ⌸ 攨솜ㄼ⌸攨솜슐뵼攨瀜枼侈댨⌸⌸슐슐⌸ㄼ램ㄼ ㄼ 슐⌸ㄼ攨 ㄼㄼ슐㡈 ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ ⌸ ⌸⌸슐㡈ㄼ㡈⌸ㄼ램슐㡈슐ㄼ ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 㡈⌸舜뵼⌸슐ㄼ 怴怼  㡈攨㡈岠  ㄼ슐ㄼ岠⌸㡈램 ⌸  㡈 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ㄼ ⌸攨 ㄼ  뵼⌸  ⌸ㄼ 㡈  ㄼ슐攨솜岠ㄼ 岠攨 슐㡈⌸ 슐 솜 ㄼ攨ㄼ슐攨ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐⌸ 攨ㄼ ㄼ㡈램 슐ㄼ솜攨ㄼ ㄼ㡈 뵼 ⌸岠 뵼⌸㡈 슐솜슐㡈 ⌸㡈㡈 ⌸⌸攨 㡈ㄼ슐⌸ ⏄ 岠攨슐 ⌸ 㡈램 㡈슐 ㄼ攨 슐㡈ㄼ  램 攨솜 ㄼ ㄼ⌸ㄼ 㡈 ㄼ슐솜슐 ㄼ슐ㄼ ㄼ ⌸ 龈ㄼ岠⌸攨 怼怴 ㄼㄼㄼ슐舜㡈㡈攨㡈岠 솜 슐攨솜攨 ㄼ ⌸⏄ 램ㄼ 솜 㡈 ⌸ 攨슐岠㡈슐ㄼ슐⌸⌸슐攨슐슐⌸ㄼ攨㡈岠 ⌸ㄼㄼ  ㄼ슐㡈ㄼ 㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램攨  ㄼㄼㄼ슐舜㡈㡈攨㡈岠  뵼⌸ 㡈슐㡈슐솜슐ㄼ攨 CS ㄼㄼ 攨ㄼ⏄⌸ㄼ 뵼攨ㄼ슐⌸攨 슐攨 㡈 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ S 㡈  S’ 㡈  ⏄⌸ㄼ  㡈 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 CS 攨 ㄼ슐  ㄼ 攨  ㄼ슐⌸攨  S  ㄼ 攨ㄼ 㡈 ㄼ슐슐ㄼ  램  ⌸슐 㡈ㄼ ⌸슐 攨 슐ㄼㄼ岠 㡈 슐㡈 슐솜슐ㄼ CS’ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸  CS  㡈 ㄼ㡈⌸ 슐  ㄼ 岠攨 ㄼ 岠攨ㄼ㡈⏄ㄼ 㡈  ㄼ⏄ㄼ슐슐⌸攨  㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램 攨   ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠 

ㄼ 㡈ㄼ 솜 岠⌸攨 슐 f2 㡈  f6 岠㡈  ㄼ 솜 岠⌸攨  f1 ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 㡈⌸㡈ㄼ슐荬 ⌸⏄ ⌸⏄ ㄼ  램 슐 㡈 ㄼ  ⌸㡈攨 슐⌸  ㄼ怴 壌 ㄼㄼ⌸ ㄼ뵼 ⌸岠 슐㡈⌸岠㡈 슐㡈ㄼ㡈瀜ㄼ  ⌸  ㄼ슐攨솜岠ㄼ岠攨 ㄼㄼㄼ ⌸ ⏄攨  ㄼ㡈솜ㄼ슐슐솜⌸ㄼ  攨 ㄼ  ㄼㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 슐ㄼㄼ  슐㡈⌸岠 㡈 슐 e1 攨 e7荬 㡈ㄼ 攨슐슐⌸ㄼ⌸ 攨솜ㄼ 㡈ㄼ岠攨 ㄼ怼 攨솜ㄼ 㡈ㄼ슐㡈⌸岠㡈 슐e1 e2 e5 e6 㡈  e7 㡈ㄼ ⌸㡈岠ㄼ  램  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  㡈⌸㡈ㄼ荬P1e6㡈 e7램P2㡈 e3㡈 e4 램P3  1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.

int f1(int x){ return ++x; } int f2(int x){ int s = -f1(x); return s; } int f6(int x){ int s = f1(x)%4; return s; } void f3(){ printf("f3"); } void f4(){ printf("f4"); } void f5(){ printf("f5"); } void f7(){ printf("f7"); } void f8(){ printf("f8"); } //configurable options unsigned int P1; unsigned int P2; unsigned int P3;

 

29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.

void main(){ int x; if (x == 0) { if(P1) f1(1); else f2(2); } // end x==0 else { // x != 0 f3(); if(x < 0){ f5(); if(P3) f4(); // end x < 0 } //x > 0 else{ if(P1){ if(P2) f8(); else f7(); } else f6(6); } // end x > 0 }

// end x != 0

58. }











⌸⏄솜ㄼ ㄼ슐攨솜岠ㄼ岠攨 ㄼ攨 攨솜ㄼ 㡈ㄼ岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼS

愈ዼ怼

怴፠ 怼壌㞬 愈ዼ፠ 怼፠龈愈愈㞬ዼ龈፠  S

Options

P1

P2

P3

True

True

True

False

False

False

Values of Options

攨 S 㡈 攨㡈 攨  P1ӔP2ӔP3蒤 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 㡈ㄼ攨슐슐⌸ㄼ演ㄼ㡈⌸ㄼ 㡈⌸舜뵼⌸슐ㄼ怴怼 枼侈侈댨枼侈⟀댨攨⏄ㄼ ㄼ㡈ㄼ㡈 슐솜슐ㄼ攨  攨솜岠攨 ⌸⏄솜㡈⌸攨 슐 攨ㄼ슐⌸ ⏄ ㄼ⌸ ⌸⌸㡈ㄼ슐⌸攨 攨   ㄼ 슐램슐ㄼ S ㄼ 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼ ⏄ㄼ ㄼ㡈ㄼ  램 㡈⌸舜뵼⌸슐ㄼ 怴怼  CS蒤뚼C1 C2 C3 C4녈 ⌸슐 슐 攨뵼  ⌸  愈ዼ  攨솜⏄  怴怼  ⌸슐 솜슐ㄼ  ⌸   ⌸슐 ㄼ 㡈ㄼ 㡈  攨솜 ㄼ ㄼ⌸ㄼ 슐 ⌸   ⌸슐 㡈ㄼ 攨솜 슐ㄼㄼ岠⌸攨  㡈攨㡈岠  攨ㄼ슐 攨 ㄼ稄솜⌸ㄼ  㡈  ㄼ 攨⌸⏄⌸ 㡈슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐ㄼ⏄ㄼ ㄼ㡈ㄼ 램怴怼  ㄼ솜슐㡈슐슐솜ㄼ 㡈㡈 ㄼ뵼ㄼ슐⌸攨 攨 攨솜ㄼ 㡈ㄼ슐램슐ㄼ S’ 㡈슐ㄼㄼ ㄼㄼ㡈슐ㄼ ㄼ솜슐㡈슐攨㡈슐슐솜ㄼ 㡈攨 램 ㄼ슐攨솜岠ㄼ 岠攨 ㄼ攨  ㄼ 솜 岠⌸攨  f1 㡈슐ㄼㄼ 攨 ⌸ ⌸ㄼ ㄼ뵼ㄼㄼ  S 㡈 S’ ⌸ㄼ ∆ S, S’荬蒤뚼f1녈 ㄼ 攨ㄼ 뵼ㄼ 슐ㄼㄼ瀜 攨 슐攨ㄼ ⌸   ⌸슐 㡈ㄼ⌸슐攨슐ㄼㄼ岠㡈슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐CS’ 攨CS蒤뚼C1C2 C3 C4녈 攨 ㄼ슐⌸ ⏄ S’ 愈  㡈뚰ㄼ 㡈攨㡈岠 ⌸슐  ㄼ retest-all 㡈攨㡈岠  뵼 ⌸岠  ⌸슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 S’ 뵼⌸  㡈 攨솜 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ㄼ CS’ 蒤 CS ㄼ⌸㡈램㡈 㡈 㡈⏄ㄼ攨  ㄼ ㄼㄼ슐舜㡈㡈攨㡈岠 ⌸슐 㡈CS’㡈岠 ⌸ㄼㄼ슐 ㄼㄼ슐攨슐슐⌸ㄼ岠攨 ㄼ 岠攨ㄼ㡈⏄ㄼ㡈  㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램 攨뵼ㄼㄼ ㄼㄼ㡈ㄼ슐ㄼㄼ㡈 ⌸슐㡈 㡈 㡈⏄ㄼ슐뵼⌸  ㄼㄼㄼ슐舜 㡈 㡈攨㡈岠  攨솜⏄   ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  㡈램 슐岠㡈ㄼ 攨 슐㡈슐램슐ㄼ슐슐솜岠 㡈슐 ㄼ攨 ㄼ⌸ 攨솜⌸솜슐㡈⌸ㄼㄼ 㡈ㄼ ㄼ ㄼㄼ슐舜㡈㡈攨㡈岠 ⌸슐⌸㡈岠⌸岠㡈 攨㡈⏄ㄼ⌸ 솜슐⌸㡈슐램슐ㄼ슐 뵼⌸  솜 ㄼ 슐 攨 ㄼㄼ   攨솜슐㡈 슐 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 愈슐

132

 ⌸⏄솜ㄼ㷤 ㄼ怴 壌攨 攨솜ㄼ 㡈ㄼ岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼS

愈ዼ

CS壌ዼዼ 愈 ዼ俸愈怼 舜演怼龈ዼ怴怼  ፠  ዼ龈 怼壌S

P1

P2

P3

C1

True

True

True

C2

True

False

False

C3

False

True

False

C4

False

False

True

 Random-selection ⌸슐 㡈 攨 ㄼ 㡈뚰ㄼ 㡈攨㡈岠  攨 슐ㄼㄼ岠 㡈 슐솜슐ㄼ 攨  CS 攨뵼ㄼㄼ 㡈슐뵼ㄼ ㄼ攨 슐㡈ㄼ⌸  龈ㄼ岠⌸攨  怼怴  ㄼ슐솜슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐슐ㄼㄼ岠ㄼ 램 ㄼ㡈 攨舜슐ㄼㄼ岠⌸攨  㡈攨㡈岠  㡈램 攨 ㄼ㡈⌸   ㄼ ㄼ⏄ㄼ슐슐⌸攨  㡈솜 ㄼㄼ岠⌸攨 

2012 28th IEEE International Conference on Software Maintenance (ICSM)

岠㡈㡈⌸⌸램攨  ㄼㄼㄼ슐舜㡈 㡈攨㡈岠  怼  ㄼ ㄼ  슐ㄼ岠⌸攨  뵼ㄼ ⌸ 攨 솜岠ㄼ攨솜슐⌸岠⌸ ⏄舜㡈슐ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ岠⌸攨 㡈攨㡈岠  B. Description of Our Approach 怼   ⌸슐㡈ㄼ뵼ㄼ㡈슐슐솜ㄼ 㡈P’ ㄼ슐ㄼ 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 攨 S’ ⌸슐 슐㡈ㄼ㡈슐 P  ㄼ슐ㄼ 攨  岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐 攨 S ⌸ㄼ P’蒤P 怴攨 ⌸⏄솜㡈⌸攨 舜㡈뵼㡈ㄼ ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸  岠㡈슐ㄼ슐 뵼 ㄼㄼ P’ ⌸슐 㡈 슐솜ㄼ슐ㄼ 攨 슐솜슐ㄼ 攨 P ⌸ 攨ㄼ슐 岠攨 ⌸⏄솜㡈⌸攨  augmentation 攨 reduction ㄼ슐⌸ ㄼ슐 슐ㄼㄼ岠⌸攨  怴攨 ⌸⏄솜㡈⌸攨  㡈솜⏄ㄼ 㡈⌸攨  㡈  ㄼ 솜岠⌸攨  ㄼ岠 ⌸稄솜ㄼ슐 㡈ㄼ 攨솜슐⌸ ㄼ ㄼ슐岠攨ㄼ攨  ⌸슐㡈ㄼ㡈 뵼ㄼ㡈 攨ㄼ 攨ㄼ ㄼ 㡈슐㡈㡈攨 攨솜 솜솜ㄼ뵼攨瀜

ㄼ⏄攨㡈攨 ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄⌸슐攨ㄼㄼ슐㡈 ㄼ岠 㡈 ⏄ㄼ슐 ⌸   ㄼ 岠攨 ㄼ ⌸ㄼ ∆ S,S’荬荬 㡈   ㄼ 岠攨 ㄼ ⌸㡈岠ㄼ  램  ㄼ슐ㄼ 岠 㡈 ⏄ㄼ슐 ⌸ㄼimp(∆ S,S’荬荬荬攨ㄼ 슐솜ㄼ 㡈 ㄼ岠攨 ㄼ岠 㡈 ⏄ㄼ슐 攨 攨⌸ 攨 솜岠ㄼ ㄼ뵼 㡈솜슐 ㄼ⏄ㄼ슐슐⌸攨  㡈솜슐荬ㄼR ㄼ 攨ㄼ  ㄼ岠攨 ㄼ攨ㄼㄼ슐 ⌸ㄼ R=∆ S,S’荬∪imp(∆ S,S’荬蒤imp(∆ S,S’荬 슐⌸ 岠ㄼ ∆ S,S’荬⊆imp(∆ S,S’荬荬 怴攨 슐ㄼ稄솜ㄼ 램  ㄼ ⏄攨㡈 攨  攨솜 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸슐 攨 슐ㄼㄼ岠 攨 램  攨슐ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 㡈  ㄼ 岠ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐荬 㡈⌸㡈岠 ㄼ슐㡈⌸岠㡈 슐⌸ R

ㄼ ⌸⏄ 舜ㄼㄼ 攨ㄼ⌸ㄼ뵼 攨  攨솜 㡈攨㡈岠  ⌸슐 슐 攨뵼  ⌸  ⌸⏄솜ㄼ  ፠솜 㡈攨㡈岠  㡈슐 뵼攨 㡈⌸  슐ㄼ슐 selecting configurable options 㡈  selecting configuration instances 㡈슐슐 攨뵼 램 ㄼ 攨ㄼ 攨 ㄼ슐⌸  ㄼ ⌸⏄솜ㄼ ⌸슐㡈攨 ⏄㡈  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸  P’ 攨  S’ 攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐㡈 슐솜슐ㄼ 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 P’sel ⊆P’  㡈 ⌸㡈岠슐  ㄼ 슐㡈⌸岠㡈 슐⌸ R፠ 램 ㄼ岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐⌸  P’sel ㄼㄼ  攨 ㄼ ㄼㄼ슐ㄼ  攨 S’ 龈ㄼ岠攨  攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐 㡈 슐솜슐ㄼ CS’ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 CS  㡈 뵼⌸ 岠攨ㄼ  ㄼ 㡈⌸舜뵼⌸슐ㄼ ⌸ ㄼ㡈岠⌸攨 슐 ㄼ뵼ㄼㄼ   ㄼ 슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸  P’sel 演ㄼ 솜슐ㄼ 㡈⌸舜뵼⌸슐ㄼ ⌸ ㄼ㡈岠⌸攨  㡈슐  ㄼ 岠⌸ㄼ⌸㡈 攨 怴怼  ㄼ岠㡈솜슐ㄼ⌸⌸슐 ㄼ攨슐ㄼ㡈ㄼ 怴怼 岠⌸ㄼ⌸㡈 攨岠攨 ⌸⏄솜㡈⌸攨  ⏄ㄼ ㄼ㡈⌸攨  ㄼ ⌸ 㡈 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠 CS’⌸슐솜슐ㄼ  攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ ㄼ ㄼ뵼ㄼ슐⌸攨  S’ 怼  攨攨뵼⌸ ⏄ 슐ㄼ岠⌸攨 슐 뵼ㄼ ⌸솜슐㡈ㄼ ㄼ㡈岠  슐ㄼ ⌸  攨솜 㡈攨㡈岠  솜슐⌸ ⏄  ㄼ ㄼ 㡈ㄼ ⌸ 攨 솜岠ㄼ  ⌸   ㄼ ㄼ⌸攨솜슐 슐ㄼ岠⌸攨  1) Selecting Configurable Options ⌸슐 攨솜 㡈攨㡈岠  ⌸ ㄼ ⌸ ⌸ㄼ슐  ㄼ ⌸㡈岠 攨   ㄼ 岠 㡈 ⏄ㄼ  岠攨 ㄼ⌸ㄼR蒤imp(∆ S,S’荬ㄼ 攨솜㡈攨㡈岠 슐ㄼㄼ岠슐㡈슐ㄼ攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐  㡈 ⌸㡈岠슐  ㄼ 슐㡈⌸岠 㡈 슐 ⌸  R 愈 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  ⌸슐슐ㄼㄼ岠ㄼ  ⌸  ⌸슐⌸㡈岠 ⌸ ㄼ슐ㄼ岠슐 뵼⌸   ㄼ⌸㡈岠攨  ㄼ岠 㡈 ⏄ㄼ 岠攨 ㄼR 攨㡈램㡈岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 Pi ∈P’ ⌸슐슐ㄼㄼ岠ㄼ 램攨솜㡈攨㡈岠 ⌸  × Ý ∩ ≠ ∅舜舜舜 侈荬 怼   ⌸슐 㡈ㄼ 뵼ㄼ ㄼ㡈슐솜ㄼ  ㄼ ⌸㡈岠 㡈  ㄼ 솜 岠⌸攨  ⏄㡈 솜㡈⌸램 ㄼ岠㡈  㡈 ㄼ⌸㡈岠 攨 㡈岠攨 ⌸⏄솜㡈ㄼ攨⌸攨  攨 S⌸슐 ㄼ슐ㄼ攨  솜 岠⌸攨 岠㡈슐㡈攨 ⏄ ㄼ슐㡈⌸岠㡈 슐⌸ S 㡈 㡈ㄼ ⌸㡈岠ㄼ  램  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  攨 ㄼ 㡈ㄼ 㡈슐 슐 攨뵼 ⌸  ⌸⏄솜ㄼ슐㡈 㷤P1⌸㡈岠슐 ㄼ슐㡈⌸岠㡈 슐e1e2 e5 e6 㡈  e7 龈⌸ 岠ㄼ 솜 岠⌸攨 슐 f1 f2 f6 f7 㡈  f8 㡈ㄼ 岠㡈ㄼ  㡈攨 ⏄ ㄼ슐ㄼ㡈 슐뵼ㄼㄼ⏄㡈  ㄼ슐ㄼ 솜 岠⌸攨 슐㡈슐 ㄼ 솜 岠⌸攨 슐 ⌸㡈岠ㄼ  램 P1 怼  攨솜 ⌸솜슐㡈⌸ㄼ ㄼ 㡈ㄼ  ㄼ ⌸㡈岠ㄼ  × Ý© 솜 岠⌸攨 슐 攨  ㄼ㡈岠  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  㡈ㄼ × Ý © 뚼 î 녈㡈  × Ý © 뚼 녈 뚼 î î î î 녈

 ⌸⏄솜ㄼ ㄼ ⌸⏄ 舜ㄼㄼ攨ㄼ⌸ㄼ뵼攨 攨솜㡈攨㡈岠 

愈슐 ⌸ 攨 솜岠ㄼ ⌸ 龈ㄼ岠⌸攨 愈 ⌸ 攨솜 ㄼ 㡈ㄼ 뵼ㄼ  㡈ㄼ  㡈슐슐솜ㄼ  㡈∆ SS’荬蒤뚼f1녈怼⌸슐ㄼ㡈슐램攨㡈 솜㡈램ㄼ⌸ 램 㡈  ㄼ 솜 岠⌸攨 슐f1 f2㡈 f6 㡈ㄼ슐㡈⌸岠㡈램⌸㡈岠ㄼ 램 ㄼ岠攨 ㄼ 岠 㡈 ⏄ㄼ슐⌸  f1⌸ㄼR蒤imp ∆ S, S’荬荬蒤뚼f1 f2f6녈뵼 ⌸岠 ⌸슐 ㄼ ⌸㡈岠 攨   ㄼ 岠攨 ㄼ  㡈 㡈슐 岠 㡈 ⏄ㄼ  ㄼ뵼ㄼㄼ  S 㡈  S’ 㡈슐ㄼ  攨  侈荬 攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐 攨 램 P1 ⌸⏄ ⌸⏄ ㄼ  ⌸   ㄼ ⌸슐 岠攨솜  攨  愈ዼ 怼荬 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸ㄼ P’sel 蒤 뚼P1녈荬 ㄼ岠㡈솜슐ㄼ 攨 램 ㄼ ⌸㡈岠 攨  P1 ⌸ ㄼ슐ㄼ岠슐뵼⌸   ㄼ⌸㡈岠攨  ㄼ岠攨 ㄼ岠 㡈 ⏄ㄼ슐愈슐㡈ㄼ슐솜攨 램 솜 岠⌸攨 슐 f1 f2 㡈  f6 岠㡈ㄼ  㡈攨 ⏄슐㡈⌸岠 㡈 슐e1e2 㡈 e5 㡈ㄼ 攨 ㄼ ㄼㄼ슐ㄼ ⌸ S’슐㡈⌸슐 램⌸ ⏄ ㄼ⏄攨㡈攨 ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ 2) Selecting Configuration Instances 怼   ⌸슐 슐ㄼ岠⌸攨  뵼ㄼ ㄼ슐岠⌸ㄼ 攨뵼 攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 攨 CS 攨 岠攨 슐솜岠 CS’ 㡈 ㄼ 슐ㄼㄼ岠⌸ ⏄ ㄼ岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐P’sel⌸  ㄼ ⌸슐슐ㄼ 㡈⌸舜뵼⌸슐ㄼ 怴怼  ⌸슐  ㄼ 攨슐 ㄼ㡈ㄼ  ㄼ岠 ⌸稄솜ㄼ 攨 슐ㄼㄼ岠 岠攨 ⌸⏄솜㡈⌸攨 슐 攨  ㄼ 솜 岠攨 ⌸⏄솜㡈⌸攨  슐㡈岠ㄼ 愈슐 ⌸ 攨 솜岠ㄼ ⌸ 龈ㄼ岠⌸攨 怼怼侈 ㄼ㡈⌸舜뵼⌸슐ㄼ岠⌸ㄼ⌸攨 ㄼ稄솜⌸ㄼ슐  㡈 㡈 㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 攨  ㄼ㡈岠  㡈⌸ 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 슐 攨솜  ㄼ 岠攨ㄼㄼ  㡈 ㄼ㡈슐 攨 岠ㄼ ⌸   ㄼ 슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ ㄼ슐ㄼ  攨 攨솜 ㄼ⏄ㄼ슐슐⌸攨  슐ㄼㄼ岠⌸攨  솜攨슐ㄼ 攨 램 ㄼ⌸ ㄼ㡈岠⌸攨 슐 ㄼ뵼ㄼㄼ   ㄼ슐ㄼㄼ岠ㄼ  攨⌸攨 슐 ⌸  P’sel 㡈ㄼ ⌸攨㡈  愈岠岠攨 ⌸ ⏄램 㡈 㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 攨  ㄼ㡈岠  㡈⌸ 攨  selected 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 P’sel荬 슐 攨솜  ㄼ岠攨ㄼㄼ 㡈ㄼ㡈슐攨 岠ㄼ⌸  ㄼ슐ㄼㄼ岠ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐攨ㄼ ㄼㄼ슐ㄼ 愈攨 ㄼ攨⌸攨 슐 攨⌸ P’sel ⌸ㄼP’舜P’sel荬㡈램솜슐ㄼ 㡈 램攨 ⌸슐㡈솜ㄼ슐㡈 攨램 ፠솜 㡈⏄攨⌸  攨 슐ㄼㄼ岠⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 슐㡈 岠ㄼ슐 ⌸슐 슐 攨뵼 ⌸  ⌸⏄솜ㄼ⟀ ⌸슐㡈슐슐 攨뵼 ⌸ ⌸ ㄼ侈 ㄼ㡈⏄攨⌸  岠攨 슐솜岠슐 ㄼvalue pair슐ㄼA 㡈岠攨 슐⌸슐슐攨 㡈 ㄼ㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 攨  㡈 㡈⌸슐 攨  攨⌸攨 슐 슐ㄼㄼ岠ㄼ  ⌸  P’sel 龈솜攨슐ㄼ P’sel 蒤뚼P1,P2녈  ㄼㄼ 뵼⌸ ㄼ  攨솜 㡈솜ㄼ 㡈⌸슐 㡈슐 A 蒤뚼 p11, p21荬 p11, p22荬  p12, p21荬  p12, p22荬녈怼 攨솜 ⌸솜슐㡈⌸ㄼ ㄼ 㡈ㄼP’sel攨 램岠攨 㡈⌸ 슐攨 ㄼ攨⌸攨 P1㡈  ㄼ 岠ㄼ攨 램 뵼攨 㡈솜ㄼ 㡈⌸슐 슐 攨솜  ㄼ 岠攨ㄼㄼ  ⌸   ㄼ 슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ㄼ A=뚼 p11荬  p12荬녈 뵼 ㄼㄼ p11蒤 True 㡈 p12蒤False 怼 攨 ㄼ 뵼攨 슐  ㄼㄼ 솜슐 ㄼ ⌸슐 㡈 ㄼ㡈슐 攨 ㄼ  岠攨 ⌸⏄솜㡈⌸攨  뵼 ㄼㄼ ㄼ㡈솜ㄼ攨 P1 ⌸슐True㡈 㡈ㄼ㡈슐攨 ㄼ 岠攨 ⌸⏄솜㡈⌸攨 뵼 ㄼㄼ ㄼ㡈솜ㄼ攨 P1⌸슐False

133

2012 28th IEEE International Conference on Software Maintenance (ICSM)

ㄼ   ㄼ 㡈⏄攨⌸  슐㡈슐 슐ㄼㄼ岠⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐 솜 ⌸ 攨 ㄼ攨  ㄼ뵼攨슐攨⌸ ⏄岠⌸ㄼ⌸㡈⌸슐ㄼ 侈荬㡈㡈솜ㄼ㡈⌸슐⌸  A 㡈ㄼ 岠攨ㄼㄼ  ⌸ㄼ  ㄼ 슐ㄼ 攨  ㄼ㡈⌸ ⌸ ⏄ 㡈⌸슐 Z ⌸슐 ㄼ램  ㄼ 뵼 ⌸ㄼ攨攨荬 ፠  荬 攨ㄼ㡈⌸ ⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸  CS 岠㡈 岠攨ㄼ㡈 램攨  ㄼㄼ㡈⌸ ⌸ ⏄㡈솜ㄼ㡈⌸슐⌸ Z ⌸ ㄼ슐쿨㡈  荬 ㄼ슐ㄼ岠攨 슐攨⌸ ⏄岠⌸ㄼ⌸㡈⌸슐슐㡈⌸슐 ⌸ㄼ ⌸  ㄼ攨⌸⏄⌸ 㡈슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 CS ⌸슐 攨 岠ㄼ㡈ㄼ  램  ㄼ 怴怼  㡈攨㡈岠  뵼 ⌸岠 ⌸ ⌸岠㡈ㄼ슐 㡈슐攨ㄼ⌸攨㡈 㡈솜ㄼ㡈⌸슐㡈ㄼ⌸슐슐⌸ ⏄ ⌸  CS 怼   ⌸슐 岠㡈슐ㄼ 뵼ㄼ 岠㡈  㡈솜⏄ㄼ  CS’ 솜슐⌸ ⏄  ㄼ ㄼ⏄솜㡈 怴怼 㡈攨㡈岠 뵼 ⌸岠 뵼⌸ㄼ㡈 ㄼ슐슐ㄼ ⌸ 攨솜 솜솜ㄼ뵼攨瀜 愈 攨 ㄼ 瀜ㄼ램 攨⌸  攨   ⌸슐 㡈⏄攨⌸  ⌸슐 ⌸  ㄼ㡈岠  솜  攨  슐ㄼㄼ岠⌸攨   ㄼ 뵼 ⌸ㄼ 攨攨荬  ㄼ 㡈⏄攨⌸  㡈뵼㡈램슐 슐ㄼㄼ岠슐 㡈 岠攨 ⌸⏄솜㡈⌸攨   㡈 뵼攨솜  岠攨ㄼ  ㄼ 攨슐 㡈솜ㄼ 㡈⌸슐  㡈 㡈ㄼ 攨ㄼㄼ 岠攨ㄼㄼ 램ㄼ⌸ㄼ㡈솜ㄼ㡈⌸슐 㡈㡈ㄼ슐⌸⌸ Z 侈荬怼 ⌸ ㄼ⟀攨솜㡈⏄攨⌸ 岠攨솜 슐 ㄼ 솜ㄼ攨 uncovered 㡈솜ㄼ㡈⌸슐⌸ ㄼ㡈岠 Ci ∈CS ㄼ 攨ㄼ 㡈슐Ni i蒤侈攨 CS荬‫ ﵸ‬荬 怼  ⌸ ㄼ攨솜 㡈⏄攨⌸  ⌸ 슐 ㄼ㡈⏄ㄼ슐Ni‫  ﵸ‬㷤荬 怼 ⌸ ㄼ   攨솜㡈⏄攨⌸ 슐ㄼㄼ岠슐 ㄼ岠攨 ⌸⏄솜㡈⌸攨 뵼 攨슐ㄼN㡈솜ㄼ⌸슐 ㄼ 㡈⏄ㄼ슐 演 ㄼ   ㄼㄼ ⌸슐 㡈 ⌸ㄼ 攨 슐ㄼㄼ岠⌸攨  㡈攨 ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐 ㄼ㡈⏄攨⌸ 㡈 攨램슐ㄼㄼ岠슐攨 ㄼ攨  ㄼ 攨 ㄼ岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐 㡈㡈ㄼ 攨슐ㄼㄼ岠ㄼ ⌸  ㄼ ⌸슐 슐ㄼ 龈ㄼ岠⌸攨  侈荬 ⌸ 슐ㄼ㡈  攨  ⌸岠瀜⌸ ⏄ 㡈 㡈 攨 㡈솜ㄼ 攨솜 㡈攨㡈岠 ㄼ솜슐ㄼ슐 ㄼ슐㡈ㄼ㡈솜ㄼ솜슐ㄼ  攨ㄼ슐⌸ ⏄ ㄼㄼ⌸攨솜슐 ㄼ슐⌸攨  攨   ㄼ 攨⏄㡈 㡈슐 ⌸ 슐㡈 ⌸㡈ㄼ  ⌸  슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐荬 艌攨ㄼ攨ㄼ  ㄼ 岠 㡈 岠ㄼ 攨  㡈 ⌸ㄼ 㡈   ㄼ

솜ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 㡈 攨 슐ㄼㄼ岠⌸攨  ⌸   ㄼㄼㄼ  攨 㡈⌸ㄼ ㄼ岠ㄼ㡈슐ㄼ슐뵼⌸  ㄼ 솜ㄼ攨 ⌸ㄼ㡈⌸攨 슐攨  ㄼ뵼 ⌸ㄼ 攨攨 怼  攨솜 ㄼ 㡈ㄼ 솜⌸ ⏄  ㄼ ⌸슐 攨攨 N1蒤N2蒤N3蒤N4蒤侈 龈솜攨슐ㄼ C2 ⌸슐 㡈 攨램 슐ㄼㄼ岠ㄼ  攨  ㄼ 攨솜 岠㡈 ⌸ 㡈ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐Z ⌸슐솜 㡈ㄼ 攨Z=뚼 p12荬녈솜⌸ ⏄ ㄼ슐ㄼ岠攨  攨攨 N1蒤 㡈  N3蒤N4蒤侈 龈솜攨슐ㄼ C3 ⌸슐 슐ㄼㄼ岠ㄼ  攨  ㄼ 뵼攨岠㡈 ⌸ 㡈ㄼ岠攨 ⌸⏄솜㡈⌸攨 슐ㄼ岠攨ㄼ슐愈슐㡈ㄼ슐솜攨솜 㡈攨㡈岠 슐ㄼㄼ岠슐CS’蒤뚼C2C3녈뵼 ⌸岠 슐㡈ㄼ슐솜슐⟀‫﵈‬攨  ㄼ ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄⌸ㄼ岠攨㡈ㄼ 攨 ㄼㄼㄼ슐舜㡈㡈攨㡈岠 

× Ý 㡈  攨뵼㡈  攨⏄㡈 슐⌸岠⌸ ⏄ 攨 岠攨솜ㄼ ∆× î ′Ý  攨뵼㡈 슐⌸岠⌸ ⏄ㄼ稄솜⌸ㄼ  攨 岠攨솜⌸ ⏄ ㄼ ⌸㡈岠 슐ㄼ슐 ㄼㄼ 슐 攨  슐ㄼㄼ㡈 슐㡈⌸岠 㡈 㡈램슐⌸슐 㡈㡈ㄼㄼ슐 슐솜岠  㡈슐攨⌸ ㄼ㡈 㡈램슐⌸슐 岠攨 ㄼ 껤 攨뵼슐ㄼ 슐⌸⌸⌸램 攨 舜攨岠㡈 㡈 㡈램슐⌸슐 㡈  슐⌸岠⌸ ⏄ ㄼㄼ ㄼ 岠램 㡈 㡈램슐⌸슐 怼  攨솜 ㄼ ㄼ⌸ㄼ 슐 뵼ㄼ 岠攨 슐ㄼ㡈⌸ㄼ램 솜슐ㄼ  ㄼ 攨슐 ㄼ ㄼ 슐⌸ㄼ CodeSurfer 攨⌸攨  㡈㡈⌸㡈ㄼ 攨  ㄼ 攨 ㄼ 㡈ㄼ 攨 攨⌸ ㄼ㡈 㡈램슐⌸슐뵼ㄼ솜슐ㄼ ㄼ愈 ㄼ슐ㄼ 슐㡈⏄攨⌸ 枼댨荬 ㄼ 攨슐 ㄼ ㄼ 슐⌸ㄼ㡈㡈ㄼㄼ 슐ㄼ⌸ ⏄ 攨  CodeSurfer ⌸슐 ㄼ 攨ㄼ  㡈슐H 슐 攨뵼 ⌸  愈ዼ怼荬 愈슐슐 攨뵼 ⌸ 攨솜슐솜 램 龈ㄼ岠⌸攨 怼荬 ㄼㄼ⌸슐攨 ㄼ슐㡈⌸岠 㡈 㡈램슐⌸슐 㡈㡈ㄼㄼ non-local analysis 뵼 ⌸岠  㡈램 ⌸㡈岠  ㄼ ㄼ岠⌸슐ㄼ ㄼ슐슐 攨  攨솜 㡈攨㡈岠  ㄼ 攨 舜攨岠㡈슐 攨  㡈 솜 岠⌸攨  ⌸ 岠솜 ㄼ 㡈  ㄼ ⏄攨㡈 㡈⌸㡈ㄼ슐 㡈  ⌸ ⌸ㄼ岠램 㡈岠岠ㄼ슐슐ㄼ  㡈⌸㡈ㄼ슐 솜슐ㄼ  攨 攨 ⌸ ⌸ㄼ  램 㡈 솜 岠⌸攨  演⌸  CodeSurfer  ㄼ 攨 舜攨岠㡈 㡈 㡈램슐⌸슐 ⌸슐 岠攨 ⌸⏄솜㡈ㄼ 㡈  岠㡈  ㄼ 슐 솜 攨  ㄼ H 슐ㄼ⌸ ⏄ 攨  CodeSurfer 뵼⌸  攨 舜攨岠㡈 㡈 㡈램슐⌸슐솜 ㄼ 攨 ⌸슐 ㄼ 攨ㄼ 㡈슐 ㄼ슐ㄼ⌸ ⏄L

愈ዼ怼

ዼH愈 愈艌ዼ ዼ 龈ዼ

怼壌龈 ፠ CODESURFER

Static Analysis Parameter 攨 舜攨岠㡈㡈 㡈램슐⌸슐 ㄼㄼ ㄼ 岠ㄼ슐 攨⌸ ㄼ㡈 㡈램슐⌸슐 龈솜㡈램ㄼ ⏄ㄼ슐

Settings 俸ㄼ슐 怼 ㄼ껤⌸ 㡈怴攨 攨㡈 㡈㡈 愈 ㄼ슐ㄼ 슐㡈⏄攨⌸ 枼댨 俸ㄼ슐



ㄼ 攨 ㄼ 岠攨攨 ㄼ 슐 攨  攨솜 㡈攨㡈岠  ⌸ 岠솜 ⌸ ⏄  ㄼ 㡈⏄攨⌸  슐 攨뵼  ⌸  ⌸⏄솜ㄼ ⟀ 㡈ㄼ ⌸ㄼㄼ ㄼ  㡈슐 怴껤怴ፔፔ 攨⏄㡈슐 怼

ዼ愈㞬愈 怼፠፠ ፠㞬 愈 ፠愈怴 

怼   ⌸슐 슐ㄼ岠⌸攨  뵼ㄼ ㄼ슐ㄼ  攨솜 ㄼ슐솜슐 攨  ㄼ㡈솜㡈⌸ ⏄ 攨솜 㡈攨㡈岠 㡈슐ㄼ 攨  ㄼㄼ岠⌸ㄼ⌸㡈 ⌸슐뵼ㄼ슐솜 램 ㄼquality 攨   ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸  ㄼ슐 攨   ㄼ 㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램 ㄼ㡈슐솜ㄼ  램  ㄼ 솜ㄼ 攨  㡈솜슐 ㄼㄼ岠ㄼ 荬 㡈   ㄼ 岠攨 ㄼ P’sel 岠攨ㄼ㡈⏄ㄼ 龈ㄼ岠攨  뵼ㄼ 슐솜 램 뵼 㡈 ㄼ岠ㄼ 㡈⏄ㄼ 攨  侈 set A 蒤 㡈  ㄼ 㡈솜ㄼ 岠攨⌸ 㡈⌸攨 슐 攨  㡈 怴 㡈⌸슐 攨  岠攨 ⌸⏄솜㡈⌸攨 슐⌸슐 ⌸슐岠㡈 ㄼ 㡈슐ㄼ 솜 㡈 램攨솜㡈攨㡈岠  攨 攨⌸攨 슐⌸ P’sel ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸ 㡈램 뵼ㄼ 슐솜 램 ㄼ 攨ㄼ㡈 ㄼ⏄ㄼ슐슐⌸攨   setZ 蒤A ㄼ슐⌸ ⏄ time-savings 攨슐슐⌸ㄼ 뵼⌸  攨솜 㡈攨㡈岠  ㄼ 㷤 CS’ =  ㄼ슐ㄼ㡈岠 稄솜ㄼ슐⌸攨 슐 攨攨솜ㄼ㡈솜㡈⌸攨 㡈ㄼ㡈슐 攨攨뵼슐  while Z ≠ do · RQ1 怴㡈   ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 ⟀ Ni蒤 ㄼ 솜ㄼ攨 㡈솜ㄼ㡈⌸슐 㡈㡈ㄼ岠攨ㄼㄼ 램 㡈攨㡈岠  㡈岠 ⌸ㄼㄼ  ㄼ 슐㡈ㄼ 㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램 岠攨 ⌸⏄솜㡈⌸攨 슐Ci∈CS 㡈 㡈ㄼ㡈슐攨⌸ Z i 蒤侈攨CS 荬 㡈 岠攨 ㄼ岠攨ㄼ㡈⏄ㄼ㡈슐 ㄼㄼㄼ슐舜㡈㡈攨㡈岠 譴攨뵼 攨ㄼ슐  Nmax蒤 ㄼ㡈⏄ㄼ슐㡈솜ㄼ攨 Ni  ⌸뵼攨瀜岠攨㡈ㄼ 攨 ㄼ㡈 攨舜슐ㄼㄼ岠⌸攨 譴 쿨 if Nmax蒤  break · RQ2演 㡈ㄼ岠ㄼ 㡈⏄ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐⌸슐 ⌸슐岠㡈 ㄼ 㡈슐  龈ㄼㄼ岠㡈岠攨 ⌸⏄솜㡈⌸攨 Ck∈CS ⌸ Nk蒤Nmax ㄼ 솜 㡈 램攨솜㡈攨㡈岠  攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄譴 侈 CS’蒤CS’∪Ck · RQ3 攨뵼 솜岠  ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸ㄼ 岠㡈  攨솜 㡈攨㡈岠 슐㡈ㄼ譴 侈侈 CS蒤CSCk  侈 Z蒤Z 㡈솜ㄼ㡈⌸슐⌸ Ck荬 怼  龈ㄼ岠⌸攨  怼愈 뵼ㄼ ㄼ슐岠⌸ㄼ  ㄼ 슐솜ㄼ岠슐  㡈 㡈ㄼ 솜슐ㄼ   攨 攨솜 ㄼ㡈솜㡈⌸攨  怼  龈ㄼ岠⌸攨 슐 怼舜怼 뵼ㄼ 攨⌸ ㄼ  ㄼ ⌸⏄솜ㄼ⟀ 愈⏄攨⌸  攨슐ㄼㄼ岠⌸ ⏄岠攨 ⌸⏄솜㡈⌸攨 ⌸ 슐㡈 岠ㄼ슐⌸ 攨솜㡈攨㡈岠  ㄼ㡈⌸슐 攨 㡈 슐ㄼ⌸ㄼ슐 攨  ㄼ ㄼ⌸ㄼ 슐 뵼ㄼ 岠攨 솜岠ㄼ  攨 ㄼ㡈솜㡈ㄼ攨솜ㄼ슐ㄼ㡈岠 稄솜ㄼ슐⌸攨 슐 C. Implementation of Our Approach ፠솜 㡈攨㡈岠  ㄼ攨램슐 㡈 슐㡈⌸岠 㡈 㡈램슐⌸슐 攨攨 岠㡈ㄼ  CodeSurfer 枼쿨댨 攨 岠攨솜⌸ ⏄  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  ⌸㡈岠 㡈   ㄼ 岠攨 ㄼ 岠 㡈 ⏄ㄼ ⌸㡈岠 CodeSurfer 솜슐ㄼ슐

134

2012 28th IEEE International Conference on Software Maintenance (ICSM)

A. Study Subjects 演ㄼ ⌸슐 ㄼ㡈솜㡈ㄼ 攨솜 㡈攨㡈岠  攨  grep 㡈 make 뵼攨 攨ㄼ  슐攨솜岠ㄼ㡈岠瀜㡈⏄ㄼ슐뵼⌸ㄼ ⌸ C⏄rep⌸슐㡈 岠攨㡈 舜⌸ ㄼ 솜⌸⌸램 攨슐ㄼ㡈岠 ⌸ ⏄㡈⌸ 舜ㄼ  㡈㡈슐ㄼ슐 攨⌸ ㄼ슐㡈岠 ⌸ ⏄㡈 ㄼ⏄솜㡈 ㄼ ㄼ슐슐⌸攨  make ⌸슐 㡈 뵼⌸ ㄼ램 攨솜㡈 㡈  ⏄ㄼ ㄼ㡈 솜攨슐ㄼ攨攨솜슐ㄼ 攨岠攨⌸ㄼ攨⏄㡈슐 ㄼ슐攨솜岠ㄼ岠攨 ㄼ攨  grep 㡈  make 㡈ㄼ 㡈㡈⌸㡈ㄼ 㡈  ㄼ 壌㞬 뵼ㄼ슐⌸ㄼ 枼댨枼㷤댨 演ㄼ 㡈 㡈램 ㄼ  뵼攨ㄼ슐⌸攨 슐攨  grep grep-1.0 㡈슐 ㄼ攨⌸⏄⌸ 㡈 㡈  攨  ㄼ슐⌸攨  㡈  grep-2.0 㡈슐  ㄼ 岠 㡈 ⏄ㄼ  㡈  ㄼ뵼 ㄼ슐⌸攨  grep 岠攨 㡈⌸ 슐 㡈攨솜  솜 岠攨ㄼ ㄼ  ⌸ ㄼ슐 攨  岠攨 ㄼ 演ㄼ㡈 㡈램 ㄼ 뵼攨ㄼ슐⌸攨 슐攨 makemake-3.77㡈슐 ㄼ 攨⌸⏄⌸ 㡈㡈 攨 ㄼ슐⌸攨 㡈 make-3.78.1㡈슐 ㄼ岠 㡈 ⏄ㄼ 㡈 

ㄼ뵼 ㄼ슐⌸攨  make 岠攨 㡈⌸ 슐 㡈攨솜 侈⟀ 솜 岠攨ㄼ ㄼ  ⌸ ㄼ슐攨 岠攨 ㄼ 演ㄼ ㄼ攨 슐㡈ㄼ攨솜㡈攨㡈岠  攨 슐ㄼㄼ岠⌸ ⏄㡈 슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐 攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ ㄼ ㄼ뵼ㄼ슐⌸攨 슐 攨 grep㡈 make 演ㄼ㡈슐攨㡈램攨솜㡈攨㡈岠 攨㡈岠攨ㄼ岠攨攨 ㄼ  岠㡈ㄼ  ABB1 ㄼㄼ㡈 ㄼ荬 攨  㡈 㡈⏄ㄼ ㄼ㡈舜⌸ㄼ ㄼㄼ ㄼ  슐攨 뵼㡈ㄼ 슐램슐ㄼ ㄼㄼ攨ㄼ  㡈 愈 ABB1 岠攨 슐⌸슐슐 攨  㡈攨솜 侈侈 艌፠怴뵼⌸ㄼ ⌸ 怴껤怴ፔፔ怼岠攨 㡈⌸ 슐㷤 솜 岠⌸攨 슐㡈岠攨슐슐 ⟀ 攨 솜ㄼ슐 ዼ㡈岠  攨 솜ㄼ ㄼ ⌸ ㄼ슐 㡈 슐솜슐램슐ㄼ  㡈 ⌸ㄼㄼ 슐 ⌸ ㄼㄼ  솜 岠⌸攨 㡈⌸⌸ㄼ슐攨  ㄼ슐램슐ㄼ B. Study 1: Fault Detection Capability and Code Coverage 1) Study Design make-3.78.1 ⌸슐 㡈 슐솜슐ㄼ稄솜ㄼ  ㄼ슐⌸攨  攨  make-3.77 ㄼㄼ㡈슐ㄼ 侈攨  슐㡈 ㄼmake-3.77攨솜攨 슐攨솜岠ㄼ ⌸ㄼ슐 岠 㡈 ⏄ㄼ  攨 make-3.77 攨 make-3.78.1 龈ㄼ㡈  㡈岠攨슐슐  ㄼ 岠 㡈 ⏄ㄼ  ⌸ㄼ슐 ㄼㄼ㡈ㄼ岠 㡈 ⏄ㄼ 攨岠瀜슐攨 岠攨 ㄼ ㄼ 岠攨 ㄼ 岠 㡈 ⏄ㄼ 攨岠瀜슐 뵼ㄼㄼ 岠攨솜ㄼ  램 WinMerge 枼㷤侈댨 㡈  攨ㄼ  슐攨솜岠ㄼ 岠攨 ㄼ ⌸ ㄼㄼ 岠⌸ ⏄ 㡈  ㄼ⏄⌸ ⏄ 攨攨 攨 演⌸ 攨뵼슐 演ㄼ 㡈슐슐솜ㄼ  㡈 㡈 슐램슐ㄼ ㄼ슐⌸ ⏄ ⌸ 攨⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨 슐뵼㡈슐岠攨 솜岠ㄼ ㄼㄼ램攨   演ㄼ㡈슐攨㡈슐슐솜ㄼ  㡈  ㄼ  岠 㡈 ⏄ㄼ슐 㡈 ㄼ  攨솜⏄   ㄼ 侈 攨  슐 뵼ㄼㄼ ㄼㄼ 램 ⌸슐⌸솜ㄼ  ⌸  ㄼ㡈岠  攨   ㄼ 岠ㄼ 뵼ㄼ 㡈 攨램 슐ㄼㄼ岠ㄼ   껤侈 ≈ 荬 岠 㡈 ⏄ㄼ슐攨 攨 㡈  ⌸ ㄼㄼ ⌸㡈ㄼ ㄼ슐⌸攨 攨 makemake-3.77.bㄼ뵼ㄼㄼ make-3.77㡈 make3.78.1램㡈슐슐솜⌸ ⏄ 㡈⟀‫﵈‬攨  ㄼ岠 㡈 ⏄ㄼ슐㡈램⌸ 攨 솜岠ㄼ ㄼ⏄ㄼ슐슐⌸攨  㡈솜슐 뵼ㄼ 㡈 攨램 슐ㄼㄼ ㄼ  侈⟀ 㡈솜슐 ⌸   ㄼ  슐ㄼㄼ岠ㄼ  岠 㡈 ⏄ㄼ  攨岠瀜슐 攨  make-3.78.1 ㄼ 슐ㄼㄼ ㄼ  㡈솜슐 ⌸ 岠솜 ㄼ  ㄼ 㡈 舜슐ㄼㄼ ㄼ  㡈솜슐 攨㡈⌸ ㄼ  攨  ㄼ 龈攨 뵼㡈ㄼ 怼 㡈슐솜岠솜ㄼ ㄼ攨슐⌸攨램 龈怼 荬 枼侈댨 㡈   ㄼ 솜㡈⌸攨 슐 ⏄ㄼ ㄼ㡈ㄼ 램 ㄼmutgen攨攨枼㷤댨 grep-2.0 岠攨 㡈⌸ 슐 ㄼ⌸⏄  슐攨솜岠ㄼ  ⌸ㄼ슐 龈⌸ 岠ㄼ  ㄼㄼ ⌸슐  攨  ㄼ슐⌸攨  ㄼ 攨ㄼ grep-2.0  㡈 ⌸슐 솜⌸岠램 㡈㡈⌸㡈ㄼ 뵼ㄼ 㡈  攨ㄼ슐 솜⌸ ⌸ ⏄  ㄼ 㡈ㄼ ㄼ슐⌸攨 슐 攨  grep 뵼⌸  CodeSurfer荬뵼ㄼ㡈 攨램슐ㄼㄼ岠ㄼ 侈⟀攨岠瀜슐⌸ grep-2.0㡈슐 岠 㡈 ⏄ㄼ슐 攨㡈‫ޜ‬⌸솜㡈ㄼ⌸攨솜슐ㄼ슐⌸攨 grep-1.0演ㄼ솜슐ㄼ  mutgen 攨 ⏄ㄼ ㄼ㡈ㄼ 攨ㄼ  㡈  侈솜㡈 슐 슐ㄼ㡈  㡈岠攨슐슐 㡈 ㄼ ⌸ㄼ슐演ㄼ ㄼ 㡈 攨램슐ㄼㄼ岠ㄼ 㡈岠攨⌸㡈ㄼ솜㡈  攨 ㄼ㡈岠  슐ㄼㄼ岠ㄼ 岠 㡈 ⏄ㄼ 攨岠瀜 ㄼ 岠ㄼ⌸ 攨㡈 ㄼㄼ뵼ㄼㄼ 侈⟀ 㡈솜슐슐ㄼㄼ ㄼ ⌸ grep-2.0 演ㄼ 슐ㄼㄼ岠ㄼ  侈侈 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 攨 make 㡈  侈 攨⌸攨 슐 攨 grep愈 ㄼ슐ㄼ攨⌸攨 슐㡈ㄼ⌸ 㡈램攨⌸攨 슐 ㄼ  攨 ㄼ㡈岠  슐솜ㄼ岠 뵼ㄼ岠ㄼ㡈ㄼ   ㄼ⌸ ⌸⌸㡈 슐ㄼ 攨 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ㄼCS荬 攨 ㄼ슐ㄼ攨⌸攨 슐솜슐⌸ ⏄ ㄼ怴怼 㡈攨㡈岠 枼侈댨枼侈侈댨

ㄼ 솜ㄼ슐攨 岠攨 ⌸⏄솜㡈⌸攨 ⌸ 슐㡈 岠ㄼ슐⌸  CS 攨 ㄼ슐⌸ ⏄ ㄼ 攨  ㄼ슐⌸攨  뵼ㄼㄼ 侈 㡈  쿨 攨 make 㡈  grep ㄼ슐ㄼ岠⌸ㄼ램

ㄼㄼ슐 슐솜⌸ㄼ슐 攨 make 㡈 grep 뵼ㄼㄼ 攨  攨㡈⌸ ㄼ  攨  ㄼ龈怼 枼侈댨 2) Indepednet and Dependent Variables

ㄼ ⌸ ㄼㄼ ㄼ  㡈⌸㡈ㄼ 攨 ᰼侈 ⌸슐  ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ㄼ CS’荬 슐ㄼㄼ岠ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ make-3.78.1㡈 grep-2.0演ㄼ岠攨㡈ㄼ攨솜㡈攨㡈岠 攨 ㄼ ㄼㄼ슐舜㡈 㡈   ㄼ 㡈 攨舜슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ㄼ슐 ㄼ 岠ㄼ  ㄼ 㡈솜ㄼ슐攨  ㄼ⌸ ㄼㄼ ㄼ 㡈⌸㡈ㄼ㡈ㄼ · ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  뵼 ⌸岠  ⌸슐  ㄼ 솜 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨  ㄼ攨⌸⏄⌸ 㡈ㄼ슐⌸攨  CS荬 · ㄼ슐ㄼ攨 岠攨 ⌸⏄솜㡈⌸攨 슐슐ㄼㄼ岠ㄼ 램攨솜㡈攨㡈岠  · ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램  ㄼ 㡈 攨舜 슐ㄼㄼ岠⌸攨 㡈攨㡈岠  愈슐⌸ 攨 솜岠ㄼ ㄼ 攨ㄼ 㡈  ⌸攨㡈  㡈岠攨 ⌸ ㄼ 㡈⌸ ⌸ ⏄  ㄼ 稄솜㡈⌸램 攨  㡈 ㄼ⏄ㄼ슐슐⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠  ⌸슐  ㄼ fault detection capability ㄼ㡈슐솜ㄼ 램 ㄼ 솜ㄼ攨  㡈솜슐 ㄼㄼ岠ㄼ 荬攨  ㄼ슐ㄼㄼ岠ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 演ㄼ슐ㄼㄼ岠 ⌸㡈슐攨솜 ⌸슐 ㄼㄼ ㄼ  㡈⌸㡈ㄼ ㄼ슐⌸ ㄼ슐  ⌸슐 뵼ㄼ 㡈슐攨 ㄼ 㡈⌸ ㄼ  ㄼ 岠攨 ㄼ 岠攨ㄼ㡈⏄ㄼ 岠㡈㡈⌸⌸램 攨   ㄼ 슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈⌸岠솜㡈램  ㄼ 岠攨ㄼ㡈⏄ㄼ 攨   ㄼ 岠攨 ㄼ 攨 ㄼㄼ슐 ⌸ㄼ R蒤imp(Δ SS’荬荬荬 演ㄼ 岠㡈 ⌸ changed function coverage 怴 怴荬攨솜슐ㄼ岠攨  ㄼㄼ ㄼ 㡈⌸㡈ㄼ演ㄼ솜슐ㄼ gcov枼댨攨 岠攨ㄼ岠 ㄼ岠攨 ㄼ岠攨ㄼ㡈⏄ㄼ 㡈㡈 3) Results ⌸슐뵼ㄼ ⌸슐岠솜슐슐 ㄼㄼ슐솜슐攨 㡈램⌸ ⏄攨솜㡈攨㡈岠 攨  grep 演 ㄼ  뵼ㄼ 솜슐ㄼ   ㄼ 攨슐 ㄼ ㄼ 슐⌸ㄼ 슐ㄼ⌸ ⏄ H 攨  CodeSurfer ㄼ슐岠⌸ㄼ ⌸ 龈ㄼ岠⌸攨 怼怼怼怴荬 ㄼ⌸㡈岠攨 㡈侈 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸ ㄼ슐ㄼ岠슐 뵼⌸   ㄼ ⌸㡈岠 攨  岠 㡈 ⏄ㄼ슐 ㄼ뵼ㄼㄼ  grep-1.0㡈 grep-2.0 ⌸슐⌸ ⌸岠㡈ㄼ슐 㡈 뵼ㄼ 㡈ㄼ 攨 슐ㄼㄼ岠 㡈 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 뵼 ⌸岠  ㄼ㡈 슐 攨 슐ㄼㄼ岠⌸ ⏄ 㡈岠攨 ⌸⏄솜㡈⌸攨 슐 攨CS演ㄼ攨攨瀜ㄼ ⌸ 攨 ㄼ㡈岠솜㡈⌸㡈岠 攨  ㄼ㡈岠  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨  演ㄼ 攨솜   㡈  ㄼ ⌸㡈岠 攨  ㄼ㡈岠  攨⌸攨  ⌸슐  ㄼ 슐㡈ㄼ 뵼 ⌸岠  㡈攨슐 岠攨ㄼㄼ  㡈  ㄼ 솜 岠⌸攨 슐 ⌸   ㄼ 슐램슐ㄼ ⌸슐 攨ㄼ ⌸슐 岠㡈ㄼ  impact explosion 枼侈댨枼쿨댨㡈⌸ 램岠㡈솜슐ㄼ  솜ㄼ 攨 㡈⏄ㄼ 岠ㄼ 㡈 ⏄攨㡈 㡈㡈 슐솜岠솜ㄼ슐 怼  grep, 㡈 攨⌸攨 슐 㡈ㄼ ㄼ ⌸ ㄼ  㡈슐 ⏄攨㡈 㡈⌸㡈ㄼ슐㡈 攨⏄㡈 ⌸ ㄼ ⌸ 㡈岠ㄼ 㡈슐솜岠솜ㄼ ㄼ岠㡈솜슐ㄼ 攨   ⌸슐 攨ㄼ ⌸㡈岠 岠攨솜ㄼ  뵼⌸   ㄼ H 슐ㄼ⌸ ⏄ 攨  CodeSurfer ⌸슐 ㄼ램 ⌸ㄼ岠⌸슐ㄼ 㡈  ㄼ 岠ㄼ 攨 슐솜⌸㡈ㄼ 攨 슐ㄼㄼ岠⌸ ⏄  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ㄼㄼ 攨ㄼ 뵼ㄼ 솜슐ㄼ 㡈 ㄼ슐슐 ㄼ ㄼ 슐⌸ㄼ 슐ㄼ⌸ ⏄ L 攨  怴攨 ㄼ龈솜 ㄼ 램솜 ⌸ ⏄ 攨   ㄼ 攨 舜攨岠㡈 㡈 㡈램슐⌸슐 㡈  ㄼ 㡈⌸ ㄼ ⌸  ⌸ 뵼⌸ 㡈 ㄼ岠  ㄼ ㄼ岠⌸슐⌸攨 攨 攨솜㡈攨㡈岠 

ㄼ ㄼ슐솜슐 攨 㡈 㡈램 ⌸ ⏄  ㄼ grep 㡈岠瀜㡈⏄ㄼ 슐 攨뵼  㡈 뵼⌸   ㄼL 슐ㄼ⌸ ⏄ 㡈攨 ⏄  ㄼ 侈 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐  ㄼ ⌸㡈岠 攨   攨⌸攨 슐 攨ㄼ슐 攨 ⌸ ㄼ슐ㄼ岠 뵼⌸  㡈 램 ⌸㡈岠 攨  岠攨 ㄼ岠 㡈 ⏄ㄼ슐 ㄼ 岠ㄼ 侈 攨솜 攨 侈 攨⌸攨 슐㡈ㄼ슐ㄼㄼ岠ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ grep-2.0 램 㡈램⌸ ⏄ 攨솜 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨 㡈⏄攨⌸  ⌸⏄솜ㄼ⟀荬攨  ㄼ슐ㄼ슐ㄼㄼ岠ㄼ 攨⌸攨 슐슐⌸  攨솜 攨  슐ㄼㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈ㄼ 슐ㄼㄼ岠ㄼ  㡈슐 슐 攨뵼  ⌸   ㄼ 슐 㡈 ㄼ  攨  攨  愈ዼ 怼怼  ㄼ 攨솜  岠攨솜  岠攨 㡈⌸ ⌸ ⏄  ㄼ 슐 㡈 ㄼ  攨  슐 攨뵼슐  ㄼ 솜ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ 램 ⌸ ㄼㄼ 㡈攨㡈岠 ㄼ슐⌸ㄼ ㄼ슐⌸ ㄼ攨 CS’荬

135

2012 28th IEEE International Conference on Software Maintenance (ICSM)

ㄼ 㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램 荬攨  ㄼ슐ㄼ슐슐ㄼㄼ岠ㄼ 램  ㄼㄼ ⌸ ㄼㄼ 㡈攨㡈岠 ㄼ슐 攨grep㡈ㄼ슐 攨뵼 ⌸  ㄼ슐ㄼ岠攨  岠攨솜 攨  愈ዼ怼怼攨솜攨 侈⟀ 㡈솜슐뵼ㄼㄼ ㄼㄼ岠ㄼ 램  ㄼ 솜슐ㄼ攨 㡈쿨岠攨 ⌸⏄솜㡈⌸攨 슐 ㄼ슐ㄼ 攨 岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램攨솜 㡈攨㡈岠  ㄼㄼ岠슐 ㄼ슐㡈ㄼ 솜ㄼ 攨  㡈솜슐 㡈슐  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  怼  岠攨 㡈슐  ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램  ㄼ 㡈 攨舜슐ㄼㄼ岠⌸攨  㡈攨㡈岠  ⌸슐슐ㄼ슐攨 ㄼ 㡈솜 램 ⌸ ㄼ슐⌸⏄㡈⌸ ⏄  ㄼ  㡈솜슐 岠攨슐ㄼ램 뵼ㄼ  攨솜  㡈 㡈攨 ⏄   ㄼ 슐⌸  㡈솜슐  㡈 㡈ㄼ  ㄼㄼ岠ㄼ 램  ㄼ  솜 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨솜 㡈솜슐 㡈ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ㄼㄼ ㄼ  㡈⌸岠솜㡈램 ⌸   ㄼ 攨솜 㡈솜슐 뵼攨 㡈솜슐 㡈ㄼ ㄼ㡈ㄼ  攨 岠ㄼ㡈⌸  슐⌸ ⏄ㄼ 攨⌸攨 슐 㡈  뵼攨 㡈솜슐 㡈ㄼ ㄼ㡈ㄼ  攨 岠ㄼ㡈⌸  㡈⌸舜뵼⌸슐ㄼ 攨⌸攨  岠攨⌸ 㡈⌸攨 슐껤⌸ ㄼ㡈岠⌸攨 슐 愈  ㄼ슐ㄼ ⌸攨㡈  㡈솜舜ㄼㄼ㡈⌸ ⏄荬 攨⌸攨 슐 㡈ㄼ 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠  愈슐 㡈 ㄼ슐솜  ㄼ 㡈솜 ㄼㄼ岠⌸攨  岠㡈㡈⌸⌸램 攨   ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠  岠㡈  ㄼ 岠攨 슐⌸ ㄼㄼ  攨ㄼ ㄼ슐㡈ㄼ㡈슐 㡈攨  ㄼㄼㄼ슐舜㡈㡈攨㡈岠  攨 攨솜 ㄼ슐솜슐 攨  岠 㡈 ⏄ㄼ  솜 岠⌸攨  岠攨ㄼ㡈⏄ㄼ 怴 怴荬 슐 攨뵼 ⌸  ㄼ ⌸ 岠攨솜 攨  愈ዼ怼怼⌸㡈ㄼ㡈슐 㡈 ㄼ 岠 㡈 ⏄ㄼ  솜 岠⌸攨  岠攨ㄼ㡈⏄ㄼ⌸슐슐㡈ㄼ 攨 㡈  ㄼㄼ㡈攨㡈岠 ㄼ슐  ⟀ 솜 岠⌸攨 슐 㡈ㄼ 岠攨ㄼㄼ  攨솜 攨  쿨 岠 㡈 ⏄ㄼ  솜 岠⌸攨 슐 攨뵼ㄼㄼ  ㄼ 岠攨ㄼ㡈⏄ㄼ ⌸ ㄼㄼ 岠ㄼ슐 ㄼ뵼ㄼㄼ   ㄼ  ㄼㄼ 㡈攨㡈岠 ㄼ슐㡈ㄼㄼㄼ㡈ㄼ  㡈  ㄼ슐㡈ㄼㄼ ⏄㡈 솜㡈⌸램 뵼 ⌸岠  ㄼ 㡈⌸ 슐 ㄼ ⌸ ㄼㄼ  㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸⌸ㄼ슐

愈ዼ怼怼

ዼ龈㞬 龈 ፠艌壌 ዼ 

FD

CFC

Size of CS’

Reduction Rate

Retest-all

껤侈⟀

⟀껤쿨

쿨

舜

Random- selection Our approach

⟀껤侈⟀ 껤侈⟀

⟀껤쿨 ⟀껤쿨

 

舜 1/7 = 14%

 ㄼ  뵼ㄼ ⌸슐岠솜슐슐 ㄼㄼ슐솜슐攨 㡈램⌸ ⏄攨솜㡈攨㡈岠  攨  make愈攨 ⏄ ㄼ侈侈岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐攨 램⟀攨솜攨 侈侈 攨⌸攨 슐 㡈ㄼ 슐ㄼㄼ岠ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ make-3.78.1 램 㡈램⌸ ⏄ ㄼ슐ㄼㄼ岠⌸攨 㡈⏄攨⌸  攨솜攨 侈 岠攨 ⌸⏄솜㡈⌸攨 슐 㡈ㄼ슐ㄼㄼ岠ㄼ 㡈슐슐 攨뵼 ⌸  ㄼ슐 㡈 ㄼ 攨 ⌸  愈ዼ怼怼怼

ㄼ  㡈  怴 怴 ㄼ슐솜슐 攨   ㄼ 슐ㄼ슐 슐ㄼㄼ岠ㄼ  램  ㄼㄼ ⌸ ㄼㄼ 㡈攨㡈岠 ㄼ슐 攨 make 㡈ㄼ 슐 攨뵼 ⌸  ㄼ 슐ㄼ岠攨 㡈   ⌸ 岠攨솜 슐 攨  愈ዼ 怼怼怼   攨솜 攨 侈⟀  㡈솜슐 뵼ㄼㄼ  ㄼㄼ岠ㄼ  램  ㄼ 侈 岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  㡈  侈 攨솜 攨  侈 岠 㡈 ⏄ㄼ  솜 岠⌸攨 슐 뵼ㄼㄼ 岠攨ㄼㄼ  램  ㄼ슐ㄼ 슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠  㡈岠 ⌸ㄼㄼ슐  ㄼ 슐㡈ㄼ 㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램㡈 岠 㡈 ⏄ㄼ 岠攨 ㄼ岠攨ㄼ㡈⏄ㄼ㡈슐 ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  怼  岠攨 㡈슐  ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램  ㄼ 㡈 攨舜슐ㄼㄼ岠⌸攨  㡈攨㡈岠  ⌸슐슐ㄼ슐 ⟀ 㡈솜슐 㡈  솜 岠⌸攨 슐

愈ዼ怼怼怼

ዼ龈㞬 龈 ፠艌艌愈瓤ዼ 

FD

CFC

Size of CS’

Reduction Rate

Retest-all

껤侈⟀

侈껤侈

侈

舜

Random-selection Our approach

㷤껤侈⟀ 껤侈⟀

㷤껤侈 侈껤侈

 

舜 8/14 = 57%

136

怼  岠攨 岠솜슐⌸攨   ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 슐ㄼㄼ岠ㄼ  램 攨솜 㡈攨㡈岠  岠㡈  ㄼㄼ岠  ㄼ 슐㡈ㄼ 솜ㄼ 攨  ㄼ⏄ㄼ슐슐⌸攨  㡈솜슐  㡈 㡈ㄼ ㄼㄼ岠ㄼ  램  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  㡈  ㄼ 岠ㄼ 攨솜ㄼ 攨슐 ㄼ㡈 攨舜슐ㄼㄼ岠⌸攨 㡈攨㡈岠  C. Study 2: Effectivness 1) Study Design 怼  攨솜 슐솜 램 攨  ABB1 뵼ㄼ 㡈 㡈램 ㄼ  㡈 ㄼㄼ攨ㄼ  ㄼ슐⌸攨  岠㡈ㄼ  荬 㡈슐  ㄼ 攨⌸⏄⌸ 㡈 ㄼ슐⌸攨  㡈  㡈 ㄼㄼ㡈슐ㄼ ㄼ슐⌸攨  岠㡈ㄼ  侈荬 㡈슐  ㄼ 岠 㡈 ⏄ㄼ  ㄼ슐⌸攨  쿨 슐攨솜岠ㄼ ⌸ㄼ슐 㡈  㷤 攨岠瀜슐 㡈  岠 㡈 ⏄ㄼ  ㄼ뵼ㄼㄼ  ㄼ슐⌸攨 슐  㡈  侈 愈攨 ⏄ ㄼ㷤岠 㡈 ⏄ㄼ슐뵼ㄼ㡈 攨램슐ㄼㄼ岠ㄼ  ㄼㄼ슐ㄼ슐攨  㷤岠 㡈 ⏄ㄼ슐 攨㡈 㡈램슐⌸슐

ㄼㄼ 㡈ㄼ 攨㡈램 ⟀⟀ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 뵼⌸  ABB1

ㄼ 攨슐슐⌸ㄼ 㡈솜ㄼ슐 攨   ㄼ슐ㄼ 攨⌸攨 슐 㡈 ⏄ㄼ 攨  攨  愈攨솜‫﵈‬攨  ㄼ攨⌸攨 슐㡈ㄼ⌸ 㡈램攨⌸攨 슐演ㄼ솜슐ㄼ 㡈⌸舜 뵼⌸슐ㄼ 怴怼  枼侈댨枼侈侈댨 攨 ⏄ㄼ ㄼ㡈ㄼ  ㄼ ⌸ ⌸⌸㡈 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨  뵼⌸  攨 ㄼ 攨솜 ⌸ㄼ ⌸⌸ 攨  ㄼ ⏄ㄼ ㄼ㡈⌸攨  ㄼㄼ뵼ㄼㄼ侈⟀岠攨 ⌸⏄솜㡈⌸攨 슐⏄ㄼ ㄼ㡈ㄼ  ABB1 ㄼ ⌸ ㄼ슐  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸ ㄼㄼ 램 攨 make 㡈  grep 怼 슐ㄼ㡈  攨  ㄼ ⌸ ⌸ ⏄ ⏄攨㡈 㡈⌸㡈ㄼ슐 攨 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ABB1 슐攨ㄼ슐  ㄼ 㡈솜ㄼ슐 攨 ⌸슐  岠攨 ⌸⏄솜㡈ㄼ攨⌸攨 슐⌸ 㡈 㡈㡈㡈슐ㄼ ዼ㡈岠  ⌸ㄼ ㄼ攨⌸攨 ⌸슐 솜슐ㄼ  㡈 솜 岠⌸攨  ㄼ⌸ㄼㄼ슐  ㄼ 㡈솜ㄼ 攨  ㄼ 㡈㡈㡈슐ㄼ ㄼ 岠ㄼ 솜 ⌸瀜ㄼgrep 㡈  make ㄼㄼ⌸슐 攨⌸㡈岠ㄼ 攨슐⌸攨  攨ㄼ 枼侈댨 攨 ABB1 㡈 뵼ㄼ岠攨솜  솜슐ㄼ ㄼ ⌸⏄ ㄼ슐슐ㄼ⌸ ⏄ H ㄼ슐岠⌸ㄼ ⌸ 龈ㄼ岠⌸攨 怼怼怼怴荬攨 CodeSurfer 攨岠攨솜⌸ ⏄  ㄼ⌸㡈岠㡈 㡈램슐⌸슐뵼⌸ 攨솜㡈 램攨슐슐攨 ㄼ岠⌸슐⌸攨  2) Results ⌸슐 뵼ㄼ ⌸슐岠솜슐슐  ㄼ ㄼ ㄼ岠⌸ㄼ ㄼ슐슐 攨  攨솜 㡈攨㡈岠  攨  grep 㡈  make 愈슐 슐 攨뵼 ⌸  ㄼ  攨솜 岠攨솜 攨  㡈ㄼ슐  怼怼 㡈  怼怼怼 攨솜 㡈攨㡈岠  슐ㄼㄼ岠슐 슐⌸  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸슐岠㡈 슐攨 ㄼ荬 攨 ㄼ슐⌸ ⏄ grep-2.0㡈 슐ㄼㄼ岠슐 슐⌸  ⌸슐岠㡈 슐 ㄼ⌸⏄ 荬 攨 ㄼ슐⌸ ⏄ make-3.78.1 愈슐 㡈 ㄼ슐솜 攨솜 㡈攨㡈岠  ⌸슐岠㡈 슐 侈‫ ﵈‬㡈  ⟀쿨‫ ﵈‬슐 攨뵼  ⌸  攨  ⌸   ㄼ㡈슐 岠攨솜 荬 岠攨 ⌸⏄솜㡈⌸攨 슐 攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ ㄼㄼ슐ㄼ岠⌸ㄼ램

愈ዼ怼

㞬艌ዼ ፠ 怴፠ 怼壌㞬 愈ዼ፠ 怼፠龈龈ዼዼ怴 ዼ ፠ 侈 Change Set 1

Retest-all Selected Reduction

侈쿨 ‫﵈‬

愈ዼ

Average 侈㷤 70%

㞬艌ዼ ፠ 怴፠ 怼壌㞬 愈 怼፠龈龈ዼዼ怴 ዼ ፠  ዼ壌 ዼ龈龈怼፠ ዼ龈 怼壌侈

Change Set 1 Retest-all Selected Reduction

Change Set 2 Change Set 3 ⟀⟀ 侈侈 侈侈 쿨‫﵈‬ 쿨‫﵈‬

侈 ⟀‫﵈‬

Change Set 2 Change Set 3 侈⟀ 侈 侈 ⟀‫﵈‬ ⟀‫﵈‬

Average 侈 25%

ㄼ  뵼ㄼ ⌸슐岠솜슐슐  ㄼㄼ슐솜슐 攨  ABB1  愈ዼ 怼 슐 攨뵼슐   ㄼ 솜ㄼ 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐  㡈 㡈ㄼ 슐ㄼㄼ岠ㄼ  攨 ㄼㄼ슐⌸ ⏄ 侈 愈攨 ⏄ 㡈 ⟀⟀ 岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 侈쿨 攨⌸攨 슐 뵼ㄼㄼ 슐ㄼㄼ岠ㄼ  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⏄⌸ㄼ   ㄼ ⌸슐 岠攨 ㄼ岠 㡈 ⏄ㄼ슐ㄼ侈侈攨⌸攨 슐뵼ㄼㄼ슐ㄼㄼ岠ㄼ ⏄⌸ㄼ  ㄼ슐ㄼ岠攨  㡈   ⌸  슐ㄼ슐 攨  岠攨 ㄼ 岠 㡈 ⏄ㄼ슐 ㄼ 㡈ㄼ㡈⏄ㄼ ㄼ 솜岠⌸攨  ⌸  岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸슐 㡈攨솜 쿨‫ ﵈‬슐 㡈 ㄼ  攨 荬 램 솜슐⌸ ⏄ 㡈⌸舜 뵼⌸슐ㄼ 怴怼  뵼⌸   ㄼ 攨 ㄼ舜 攨솜 ⌸ㄼ ⌸⌸ 侈 岠攨 ⌸⏄솜㡈⌸攨 슐

2012 28th IEEE International Conference on Software Maintenance (ICSM)

뵼ㄼㄼ슐ㄼㄼ岠ㄼ  攨 ㄼ 솜슐ㄼ 攨 岠攨 ⌸⏄솜㡈⌸攨 슐ㄼ⏄㡈 ㄼ슐슐 攨 뵼 ⌸岠 슐ㄼ 攨 岠攨 ㄼ 岠 㡈 ⏄ㄼ ⌸슐 㡈 ㄼ슐슐ㄼ  㡈슐 슐 攨뵼 ⌸ 

愈ዼ  愈슐 㡈 ㄼ슐솜 攨솜 㡈攨㡈岠  ⌸슐岠㡈 슐 㡈攨솜 ⟀‫﵈‬ 岠攨 ⌸⏄솜㡈⌸攨 슐攨ㄼㄼㄼ슐ㄼ  D. Study 3: Regression Testing Time Savings 怼   ⌸슐 슐ㄼ岠⌸攨  뵼ㄼ 岠㡈岠솜㡈ㄼ  ㄼ ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸ㄼ  㡈 ⌸슐 슐㡈ㄼ  램 攨솜 㡈攨㡈岠  岠攨㡈ㄼ  攨  ㄼ ㄼㄼ슐舜㡈 㡈攨㡈岠  ㄼㄼ슐솜슐㡈ㄼ슐 攨뵼 ⌸  愈ዼ 怼 hm㡈 s ㄼㄼ슐ㄼ  攨솜슐⌸ 솜ㄼ슐㡈 슐ㄼ岠攨 슐ㄼ슐ㄼ岠⌸ㄼ램荬 1) Overheads of Our Approach

ㄼ ⌸ㄼ 攨ㄼ ㄼ㡈  ⌸ 岠솜ㄼ  램 攨솜 㡈攨㡈岠  슐 㡈 ㄼ  ⌸ 

愈ዼ 怼荬 㡈슐 ㄼㄼ㡈⌸  岠攨攨 ㄼ 슐  ㄼ build time 攨 솜⌸ ⌸ ⏄  ㄼ 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ 뵼⌸  CodeSurfer  ㄼ slicing time 攨 岠攨솜ㄼ  ㄼ ⌸㡈岠 攨  岠攨 ㄼ 岠 㡈 ⏄ㄼ슐 㡈  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 㡈   ㄼ selection time 攨 ㄼ ㄼ岠솜⌸ ⏄  ㄼ슐ㄼㄼ岠⌸攨 㡈⏄攨⌸  ⌸⏄솜ㄼ⟀荬 CodeSurfer ㄼ 攨슐 슐ㄼㄼ㡈 슐㡈⌸岠 攨⏄㡈 㡈 㡈램슐ㄼ슐 攨   ㄼ 슐攨솜岠ㄼ 岠攨 ㄼ 램 㡈 슐㡈ㄼ 램 ⌸ ㄼ⏄㡈⌸ ⏄ 뵼⌸   ㄼ 岠攨⌸ㄼ㡈 ⌸ 瀜슐㡈⏄ㄼ슐攨  ㄼ슐攨 뵼㡈ㄼ솜⌸ Build time⌸슐  ㄼ⌸ㄼㄼ稄솜⌸ㄼ  攨 ⌸슐솜⌸ 슐㡈⏄ㄼSlicing time⌸슐 ㄼ⌸ㄼ ㄼ稄솜⌸ㄼ  攨 岠攨솜ㄼ  ㄼ ⌸㡈岠 슐ㄼ 㡈슐  ㄼ 攨뵼㡈  슐⌸岠ㄼ 솜슐⌸ ⏄ ㄼ⌸ 攨㡈⌸攨  岠攨솜ㄼ  솜⌸ ⏄ ㄼ솜⌸ 슐㡈⏄ㄼ ㄼ 솜⌸ ⌸ㄼ슐솜슐솜㡈램⌸  ㄼ攨 ㄼ攨  攨솜슐攨 㡈램슐㡈ㄼ솜岠  攨 ⏄ㄼ  㡈 슐⌸岠ㄼ ⌸ㄼ슐 뵼 ⌸岠 㡈ㄼ 솜슐솜㡈램 ⌸  ㄼ 攨 ㄼ 攨 㡈  ㄼ뵼슐ㄼ岠攨 슐ㄼ 岠ㄼ⌸  ⌸슐㡈ㄼ뵼ㄼ⌸⏄ 攨ㄼ ㄼ슐⌸岠ㄼ⌸ㄼ슐 㡈 攨 램岠攨 슐⌸ ㄼ 솜⌸ ⌸ㄼ攨ㄼ ㄼ㡈 슐⌸ 岠솜ㄼ 램岠 㡈 ⏄ㄼ ⌸㡈岠㡈 㡈램슐⌸슐፠솜ㄼ ㄼ⌸ㄼ 슐뵼ㄼㄼ솜 攨 㡈壌 稄솜㡈 舜 岠攨ㄼ演⌸ 攨뵼슐龈ㄼㄼ㡈岠 ⌸ ㄼ뵼⌸ 壌 愈艌 2) Testing Time Savings

ㄼ ⌸슐 ⌸ㄼ攨뵼슐⌸  愈ዼ怼슐 攨뵼 ㄼ㡈岠솜㡈ㄼ슐⌸ ⏄ ⌸ㄼ뵼⌸  ㄼ슐ㄼㄼ岠ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸ㄼCS’荬램 ㄼㄼㄼ슐舜 㡈 㡈攨㡈岠  㡈  攨솜 㡈攨㡈岠  㡈⌸岠솜㡈램 TestTimePerC ㄼㄼ슐ㄼ 슐  ㄼ ⌸ㄼ 攨 ㄼ슐⌸ ⏄ 攨 ㄼ 슐⌸ ⏄ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ⌸ 岠솜 ⌸ ⏄  ㄼ ⌸ㄼ 攨  슐ㄼ⌸ ⏄ 솜  ㄼ 岠攨 ⌸⏄솜㡈⌸攨  CS’ ㄼ 攨ㄼ슐  ㄼ 슐⌸ ㄼ 攨  CS’ ⌸ㄼ  ㄼ 솜ㄼ 攨  슐ㄼㄼ岠ㄼ  岠攨 ⌸⏄솜㡈⌸攨 슐 ㄼ ⌸ㄼ 㡈瀜ㄼ  램 ⌸ ㄼㄼ  㡈攨㡈岠 ㄼ슐 ⌸슐  ㄼ 攨 솜岠 攨   ㄼ슐ㄼ 뵼攨 㡈岠攨슐 ⌸⏄ ⌸⏄ ㄼ  ⌸   ㄼ㡈ㄼ ⌸  bold 愈슐 㡈 ㄼ슐솜  ㄼ ㄼ슐⌸ ⏄ ⌸ㄼ 슐㡈ㄼ  Tsaved荬 램 攨솜 슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ⌸슐⟀⌸ 솜ㄼ슐 ⟀‫﵈‬荬㷤쿨⌸ 솜ㄼ슐 ⟀⟀‫﵈‬荬 㡈  侈쿨 攨솜슐 侈‫﵈‬荬 攨 grep make 㡈  ABB1 ㄼ슐ㄼ岠⌸ㄼ램㡈슐슐 攨뵼 ⌸  ㄼ㡈슐뵼攨攨뵼슐⌸  愈ዼ怼

愈ዼ怼

ዼ壌 ዼ龈龈怼፠ ዼ龈 怼壌 怼艌ዼ龈愈怼壌龈演怼 ፠㞬 愈 ፠愈怴

TestTimePerC

Testing Time with CS’ selected by different Approaches

Overhead

Testing Time Saving

CS’ 램Retest-all

⌸ㄼ㡈瀜ㄼ 램 ㄼㄼ슐舜㡈 Tall荬 CS’ 램攨솜㡈攨㡈岠

⌸ㄼ㡈瀜ㄼ 램攨솜 㡈攨㡈岠  Tselect 荬 Build time Selection time Overhead Tsaved = Tall –Tselect荬 - Overhead Tsaved / Tall

grep 侈 쿨

make ⟀ 侈

ABB1 ⟀  侈⟀

70 m

700 m

795 h





侈

60 m

300 m

600 h

侈슐 ⟀ ⟀

㷤 侈 侈㷤

     

⟀

㷤쿨

侈쿨 

⟀‫﵈‬

⟀⟀‫﵈‬

侈‫﵈‬



ዼ愈 ዼ演፠ 瓤

A. Configurable System Regression Testing 愈攨㡈岠 ㄼ슐 攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄攨 岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ슐枼侈㷤댨枼⟀댨枼댨슐솜 램 ㄼ⌸슐슐솜ㄼ攨 ⌸攨⌸ ⏄ ㄼ ㄼ ㄼ岠⌸ㄼ ㄼ슐슐  攨   岠攨 ⌸⏄솜㡈⌸攨   슐㡈⌸ ⏄  攨  ㄼ슐⌸ ⏄  㡈 

ㄼ뵼ㄼ슐⌸攨 攨 슐램슐ㄼ፠솜ㄼ⌸攨솜슐뵼攨瀜枼侈댨슐솜 ⌸ㄼ  ㄼ ⌸㡈岠 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈岠攨슐슐 솜⌸ㄼ ㄼ슐⌸攨 슐 攨  㡈 슐램슐ㄼ 㡈슐 ⌸ ㄼ攨ㄼ슐 ፠솜 ㄼ⌸攨솜슐 㡈攨㡈岠  ⌸攨⌸⌸ ㄼ슐  ㄼ 솜 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄  ㄼ ㄼ뵼 ㄼ슐⌸攨  攨   ㄼ 슐램슐ㄼ ⌸  攨 ㄼ 攨 ⌸攨ㄼ  ㄼ ㄼ㡈램 㡈솜 ㄼㄼ岠⌸攨  㡈ㄼ 攨뵼ㄼㄼ ⌸ 슐솜 ㄼ슐 攨 슐攨ㄼ ⌸⌸㡈⌸攨 슐 ⌸슐 ⌸ ㄼ稄솜⌸ㄼ슐 ⌸ 攨㡈⌸攨  攨 ⌸攨 ㄼ슐⌸攨 슐 뵼 ⌸岠  ⌸슐

攨 㡈뵼㡈램슐 㡈㡈⌸㡈ㄼ 龈ㄼ岠攨  ⌸ ㄼ稄솜⌸ㄼ슐  㡈  ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈⌸攨 슐 攨 ㄼ ⌸攨⌸⌸ ㄼ  ⌸슐 ⏄ㄼ ㄼ㡈ㄼ  램  ㄼ 怴怼  㡈攨㡈岠  뵼 ⌸岠  ⌸슐 攨 㡈뵼㡈램슐  ㄼ 岠㡈슐ㄼ ⌸ 㡈램 ⌸攨⌸⌸ 㡈⌸攨  㡈攨㡈岠 ㄼ슐 攨 攨 㡈 ㄼ슐슐  ㄼ ㄼ 솜 㡈 岠램 攨ㄼ ㄼ岠ㄼ 램 㡈 㡈 ㄼ 㡈 枼侈댨 攨攨슐ㄼ  㡈  㡈攨㡈岠  攨 슐솜攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 攨  슐램슐ㄼ슐  㡈 ㄼ ⌸⌸ ㄼ稄솜ㄼ  岠 㡈 ⏄ㄼ슐 ⌸  攨 舜岠攨 ㄼ 㡈슐 攨   ㄼ 슐램슐ㄼ ㄼ⌸ 㡈攨㡈岠  攨岠솜슐ㄼ슐 攨  岠 㡈 ⏄ㄼ슐 攨 㡈㡈㡈슐ㄼ슐 㡈  슐⌸ㄼ 岠攨 ⌸⏄솜㡈⌸攨  ⌸ㄼ슐 솜 攨ㄼ슐 攨 岠攨 슐⌸ ㄼ  ㄼ 岠攨 ㄼ 岠 㡈 ⏄ㄼ슐 ㄼ뵼ㄼㄼ  뵼攨 ㄼ슐⌸攨 슐攨 㡈슐램슐ㄼ B. Regression Test Selection 怼 㡈 ⌸⌸攨 㡈ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ ⏄⌸ㄼ  㡈 ⌸ ⌸⌸㡈 ㄼ슐⌸攨  攨 㡈슐램슐ㄼS㡈 㡈ㄼ슐슐솜⌸ㄼT㡈슐솜슐ㄼ攨 ㄼ슐슐T’ 㡈슐攨ㄼ 슐ㄼㄼ岠ㄼ  攨 T 攨 ㄼ슐 㡈 ㄼ뵼 ㄼ슐⌸攨  S’ 攨  S 愈 舜 攨岠 슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ㄼ슐 枼侈댨 㡈ㄼ 攨 슐㡈 ㄼ ㄼ岠㡈솜슐ㄼ  ㄼ램 㡈램 ⌸슐슐 슐攨ㄼ ㄼ슐 岠㡈슐ㄼ슐  㡈 ㄼㄼ㡈 㡈솜슐 ⌸   ㄼ 攨 ⌸ ⌸ㄼ  攨⏄㡈 怼 슐ㄼ㡈  safe ㄼ슐 岠㡈슐ㄼ 슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ㄼ슐 枼댨 슐ㄼㄼ岠 all ㄼ슐 岠㡈슐ㄼ슐 ⌸   ㄼ 攨⌸⏄⌸ 㡈 ㄼ슐 슐솜⌸ㄼ 뵼 ⌸岠  岠㡈  ㄼㄼ㡈 㡈솜슐 ⌸   ㄼ 攨 ⌸ ⌸ㄼ  攨⏄㡈 攨 ㄼㄼ ㄼ 㡈 ㄼ슐ㄼ 㡈 슐㡈 ㄼㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 슐ㄼㄼ岠⌸攨  㡈攨㡈岠  枼㷤댨㡈슐ㄼ  攨 㡈 㡈램 ⌸ ⏄ ㄼ怴攨 攨 攨뵼壌㡈 슐 怴 壌荬攨 S㡈 S’ 攨뵼ㄼㄼ㡈 ⌸⌸攨 㡈ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄㡈攨㡈岠 ㄼ슐 攨 攨 岠攨 슐⌸ ㄼ 岠攨 ⌸⏄솜㡈⌸攨 슐 ⌸  ㄼ슐⌸ ⏄ 怼  岠攨 ⌸⏄솜㡈ㄼ 슐램슐ㄼ ㄼ슐⌸ ⏄ 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  ⌸슐 㡈슐 ⌸攨㡈  㡈슐 ㄼ슐 岠㡈슐ㄼ 슐ㄼㄼ岠⌸攨 ፠솜㡈攨㡈岠 ⌸슐㡈岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ岠⌸攨 㡈攨㡈岠  㡈 ⌸슐岠攨ㄼㄼ 㡈램攨㡈 ⌸⌸攨 㡈ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐슐ㄼㄼ岠⌸攨  㡈攨㡈岠 ㄼ슐

ㄼㄼ 㡈슐 ㄼㄼ  슐攨ㄼ 뵼攨瀜 枼⟀댨枼댨 攨  솜슐⌸ ⏄ 攨⏄㡈 슐⌸岠⌸ ⏄ 攨ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐슐ㄼㄼ岠⌸攨 龈⌸岠⌸ ⏄舜㡈슐ㄼ ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄㡈攨㡈岠 ㄼ슐 岠㡈  ㄼ 岠㡈ㄼ⏄攨⌸ ㄼ  ⌸ 攨뵼攨⏄攨솜슐枼댨 㡈攨㡈岠 ㄼ슐  㡈 솜슐ㄼ 슐㡈⌸岠 슐⌸岠⌸ ⏄ 㡈  㡈攨㡈岠 ㄼ슐  㡈 솜슐ㄼ 램 㡈⌸岠 슐⌸岠⌸ ⏄ ㄼㄼ ㄼ岠 ⌸稄솜ㄼ슐 솜슐ㄼ 攨⏄㡈 슐⌸岠⌸ ⏄ 攨  攨  攨  㡈  ㄼ뵼 攨⏄㡈슐 攨 ⌸ ㄼ ⌸ 램 㡈 ㄼ岠ㄼ  슐㡈ㄼㄼ 슐 愈⏄㡈⌸   ㄼ슐ㄼ㡈攨㡈岠 ㄼ슐㡈ㄼ㡈⌸岠㡈ㄼ攨ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 㡈 ⌸⌸攨 㡈 슐램슐ㄼ슐 뵼 ㄼㄼ⌸   ㄼ 攨岠솜슐 ⌸슐 攨  ㄼ슐 岠㡈슐ㄼ 슐ㄼㄼ岠⌸攨  怼  岠攨 㡈슐 攨솜 㡈攨㡈岠  㡈⌸ㄼ슐 슐㡈⌸岠슐⌸岠⌸ ⏄ 攨 ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ슐뵼 ㄼㄼ⌸  ㄼ 攨岠솜슐⌸슐 攨 岠攨 ⌸⏄솜㡈⌸攨 슐ㄼㄼ岠⌸攨  怼

怴፠怴㞬龈怼፠ 

怼   ⌸슐 㡈ㄼ 뵼ㄼ ⌸ 攨 솜岠ㄼ  ㄼ ⌸슐 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  㡈攨㡈岠  攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ 岠攨 ⌸⏄솜㡈ㄼ

137

2012 28th IEEE International Conference on Software Maintenance (ICSM)

슐램슐ㄼ슐 ፠솜 슐솜 램 ㄼ슐솜슐 슐 攨뵼  㡈 岠攨㡈ㄼ  攨  ㄼ retest-all 㡈攨㡈岠  攨솜 㡈攨㡈岠  ⌸슐岠㡈 슐 侈⟀‫ ﵈‬攨 ‫ ﵈‬攨  岠攨 ⌸⏄솜㡈⌸攨 슐 㡈슐ㄼ 솜 㡈  ፠솜 㡈攨㡈岠  㡈슐攨 슐㡈ㄼ슐 ‫﵈‬ 攨 ⟀⟀‫ ﵈‬攨   ㄼ ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ ⌸ㄼ 뵼 ⌸ㄼ ㄼ㡈⌸ ⌸ ⏄  ㄼ 㡈솜 ㄼㄼ岠⌸攨 岠㡈㡈⌸⌸램㡈 岠攨 ㄼ岠攨ㄼ㡈⏄ㄼ攨  ㄼㄼㄼ슐舜㡈 㡈攨㡈岠  怼  攨솜 㡈攨㡈岠  뵼ㄼ 㡈슐슐솜ㄼ  㡈  ㄼ 슐ㄼ 攨  岠攨 ⌸⏄솜㡈ㄼ 攨⌸攨 슐 ⌸슐  ㄼ 슐㡈ㄼ 攨 攨  㡈  ㄼ뵼 ㄼ슐⌸攨 슐 솜 슐攨ㄼ 岠 㡈 ⏄ㄼ슐 ㄼ뵼ㄼㄼ  ㄼ슐⌸攨 슐 㡈램 㡈  攨 ㄼ攨ㄼ 攨⌸攨 슐 怼  슐솜岠  슐⌸솜㡈⌸攨 슐 ⌸  㡈 ⌸⌸攨  攨 岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  岠攨 ⌸⏄솜㡈⌸攨 㡈솜⏄ㄼ 㡈⌸攨 攨ㄼ 솜岠⌸攨 ㄼ岠 ⌸稄솜ㄼ슐㡈ㄼ㡈슐攨 ㄼ稄솜⌸ㄼ 演ㄼ뵼⌸㡈 ㄼ슐슐 ㄼ슐ㄼ攨ㄼ슐⌸  솜솜ㄼ뵼攨瀜 怼  ⌸슐㡈ㄼ뵼ㄼ⌸ 攨 솜岠ㄼ㡈 㡈攨㡈岠  攨岠攨 ⌸⏄솜㡈⌸攨  슐ㄼㄼ岠⌸攨  怼  攨솜 ㄼ⌸攨솜슐 ㄼ슐ㄼ㡈岠  뵼ㄼ ⌸ 攨 솜岠ㄼ  㡈  㡈攨㡈岠  攨 岠攨 ⌸⏄솜㡈⌸攨  ⌸攨⌸⌸ 㡈⌸攨  枼侈댨 演ㄼ ㄼ ㄼ岠  㡈㡈岠攨⌸ 㡈⌸攨 攨  ㄼ슐ㄼ㡈攨㡈岠 ㄼ슐㡈램 솜 ㄼ⌸攨ㄼ  ㄼㄼ슐⌸ ⏄ ㄼ ㄼ岠⌸ㄼ ㄼ슐슐 㡈  ㄼ ⌸岠⌸ㄼ 岠램 岠攨㡈ㄼ  攨ㄼ⌸ ㄼ 㡈攨㡈岠  㡈攨 ㄼ ⌸ 㡈램 ⌸   ㄼ 슐솜ㄼ岠슐 뵼ㄼ 슐솜 ⌸ㄼ   ㄼ 攨ㄼ 攨  impact explosion 枼侈댨枼쿨댨 攨ㄼ슐 攨 슐 攨뵼 㡈 램 ⌸㡈岠 攨  ㄼㄼ ㄼ岠⌸ㄼ ㄼ슐슐攨 攨솜 㡈攨㡈岠  攨뵼ㄼㄼ 뵼ㄼ 뵼⌸⌸ ㄼ슐⌸⏄㡈ㄼ ㄼㄼ ㄼ岠攨 ⌸㡈岠ㄼ 攨슐⌸攨 ⌸  ㄼ 㡈슐㡈 㡈攨 攨솜 솜솜ㄼ뵼攨瀜 愈怴瓤፠演ዼ壌艌ዼ  演ㄼ  㡈 瀜 壌㡈㡈 ㄼ岠  怼 岠 攨 攨⌸ ⌸ ⏄ ㄼ岠 ⌸岠㡈 슐솜攨 攨 CodeSurfer  ㄼ슐㡈⌸岠㡈 㡈램슐⌸슐 攨攨 솜슐ㄼ  ⌸   ⌸슐 㡈ㄼ

枼侈侈댨

枼侈댨

枼侈㷤댨

枼侈댨

枼侈⟀댨

枼侈댨

枼侈쿨댨

枼侈댨

枼侈댨

ዼ ዼ ዼ怴ዼ龈 枼侈댨

艌愈岠 㡈램㡈㡈  攨⌸ 슐攨 㡈岠⌸岠㡈岠 㡈 ⏄ㄼ⌸㡈岠㡈 㡈램슐⌸슐㡈슐ㄼ  攨  슐㡈⌸岠 攨⏄㡈 슐⌸岠⌸ ⏄ 攨 ⌸ 솜슐⌸㡈 슐攨 뵼㡈ㄼ 슐램슐ㄼ슐 International Conference on Software Engineering (ICSE)侈侈 쿨舜쿨⟀⟀ 枼댨  ፠ 愈 ㄼ슐ㄼ  攨⏄㡈 㡈 㡈램슐⌸슐 㡈  슐ㄼ岠⌸㡈⌸ 㡈⌸攨  攨  ㄼ 怴 攨⏄㡈⌸ ⏄ 㡈 ⏄솜㡈⏄ㄼ    ㄼ슐⌸슐 怼瓤㞬 㞬 ⌸ㄼ슐⌸램 攨  怴攨ㄼ 㡈⏄ㄼ 侈 枼㷤댨   愈 ㄼ뵼슐  怴 ⌸㡈  俸 㡈⌸岠 ㄼ 㡈 愈 龈 㡈⌸  㞬슐⌸ ⏄  솜㡈⌸攨  㡈 㡈램슐⌸슐 攨 㡈슐슐ㄼ슐슐⌸ ⏄ 㡈  岠攨㡈⌸ ⏄ ㄼ슐⌸ ⏄ 岠攨ㄼ㡈⏄ㄼ 岠⌸ㄼ⌸㡈 IEEE Transactions on Software Engineering 㷤 荬   枼댨  龈 愈 攨  龈攨 뵼㡈ㄼ 怴 㡈 ⏄ㄼ 怼㡈岠 愈 㡈램슐⌸슐 IEEE Computer Society Press侈 枼⟀댨  ⌸ 瀜ㄼ램 龈ㄼ㡈 ⌸岠슐 ⏄솜⌸ ㄼ  ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 岠攨슐 ㄼ 솜岠⌸攨  IEEE Transactions on Software Engineering (TSE)㷤 荬侈쿨 ⟀侈 枼댨  ⌸ 瀜ㄼ램 ㄼ 愈⌸岠㡈⌸攨  攨  攨⏄㡈 龈⌸岠⌸ ⏄ 攨 ㄼ⏄ㄼ슐슐⌸攨 

ㄼ슐⌸ ⏄ Information and Software Technology Special Issue on Program Slicing侈⟀㷤⟀ 枼쿨댨  ⌸ 瀜ㄼ램  壌攨  㡈  艌 㡈㡈  愈  ㄼ⌸⌸岠㡈 슐솜 램 攨  슐㡈⌸岠 攨⏄㡈 슐⌸岠ㄼ 슐⌸ ㄼ ACM Transactions on Software Engineering and Methodology (TOSEM)侈 荬쿨侈舜㷤 枼댨 龈 㡈ㄼ슐 㡈  龈 攨뵼⌸  怼 岠ㄼㄼ 㡈 攨⏄㡈 ㄼ슐⌸ ⏄ 솜슐⌸ ⏄攨⏄㡈 ㄼㄼ ㄼ 岠ㄼ ⏄㡈 슐 ACM SIGPLAN-SIGACT symposium on Principles of programming languages(POPL)侈㷤㷤㷤 枼댨  艌 怴攨 ㄼ  龈   㡈㡈 艌   ㄼ 㡈  㡈 壌 怴 㡈攨   ㄼ  愈ዼ 壌슐램슐ㄼ愈 㡈攨㡈岠 攨ㄼ슐⌸ ⏄㡈슐ㄼ 攨 岠攨⌸ 㡈攨⌸㡈 ㄼ슐⌸⏄  IEEE Transactions on Software Engineering (TSE)㷤 쿨荬侈쿨 㷤쿨 枼侈댨 艌  怴攨 ㄼ  艌 뵼램ㄼ 㡈  龈 ⌸ 怴攨 슐솜岠⌸ ⏄ ⌸ ㄼ㡈岠⌸攨 ㄼ슐  슐솜⌸ㄼ슐 攨 ⌸⏄ 램舜岠攨 ⌸⏄솜㡈ㄼ슐램슐ㄼ슐⌸  ㄼㄼ슐ㄼ 岠ㄼ攨 岠攨 슐㡈⌸ 슐

138

枼댨

枼侈댨

枼댨

枼㷤댨

枼댨 枼⟀댨

枼댨

枼쿨댨 枼댨 枼댨 枼㷤댨 枼㷤侈댨

愈 ⏄ㄼㄼ 램 㡈攨㡈岠  IEEE Transactions on Software Engineering (TSE),㷤 ⟀荬㷤㷤舜⟀ 艌  怴攨 ㄼ   龈 램 ㄼ 㡈  壌 攨 ㄼㄼ ㄼ슐⌸ ⏄ 㡈岠攨슐슐 岠攨 ⌸⏄솜㡈⌸攨 슐 怼⌸岠㡈⌸攨 슐 攨 岠攨⌸ 㡈攨⌸㡈 ㄼ슐⌸ ⏄ ACM SIGSOFT Software Engineering Notes侈舜  攨 龈 壌 ዼ㡈솜 㡈  壌 攨 ㄼㄼ 龈솜攨⌸ ⏄ 岠攨 攨ㄼ  ㄼ ㄼ⌸ㄼ 㡈⌸攨  뵼⌸  ㄼ슐⌸ ⏄ ㄼ岠 ⌸稄솜ㄼ슐 愈  ⌸ 㡈슐솜岠솜ㄼ 㡈  ⌸슐 攨ㄼ ⌸㡈 ⌸㡈岠 International Journal on Empirical Software Engineering侈 荬⟀⟀㷤⟀ 龈 攨솜岠 손 艌 怴攨 ㄼ  㡈  愈 攨ㄼ 怼 岠ㄼㄼ 㡈 岠攨ㄼ⌸ ⏄ 㡈㡈램 㡈⌸솜ㄼ 岠 㡈㡈岠ㄼ⌸ 㡈⌸攨  ⌸  㡈⏄ㄼ 岠攨 ⌸⏄솜㡈⌸攨  슐㡈岠ㄼ슐 International Symposium on Software Testing and Analysis (ISSTA)侈쿨쿨舜 侈쿨

壌㡈ㄼ슐艌㡈攨 舜艌瓤⌸愈攨ㄼ㡈 壌 攨 ㄼㄼ 愈  ㄼ⌸⌸岠㡈 슐솜 램 攨  ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 슐ㄼㄼ岠⌸攨  ㄼ岠 ⌸稄솜ㄼ슐 IEEE Transactions on Software Engineering (TSE)侈 荬侈侈  瓤솜  演㡈㡈岠ㄼ㡈 愈艌壌㡈攨龈攨 뵼㡈ㄼ 㡈솜⌸ ㄼ㡈岠⌸攨 슐 㡈 ⌸⌸岠㡈⌸攨 슐 攨슐攨 뵼㡈ㄼㄼ슐⌸ ⏄IEEE Transactions on Software Engineering (TSE)㷤 荬侈侈 愈㡈 㡈龈 艌㡈 ⌸龈龈⌸ 㡈艌㡈攨 㡈  愈፠슐攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄⌸  ㄼㄼ슐ㄼ 岠ㄼ攨  攨 舜岠攨 ㄼ岠 㡈 ⏄ㄼ슐International Conference on Software Testing (ICST)侈侈侈舜㷤  ᰼솜 艌 愈岠 㡈램㡈 㡈   攨⌸ 슐攨  怼㡈岠 㡈 㡈램슐⌸슐 攨  岠攨 ⌸⏄솜㡈⌸攨  岠 㡈 ⏄ㄼ슐 攨 ㄼ슐 岠㡈슐ㄼ 슐ㄼㄼ岠⌸攨  International Symposium on Software Reliability Engineering (ISSRE) 侈侈  侈舜侈  ᰼솜 艌 怴攨 ㄼ  㡈  壌 攨 ㄼㄼ 怴攨 ⌸⏄솜㡈⌸攨 舜㡈뵼㡈ㄼ ㄼ⏄ㄼ슐슐⌸攨 ㄼ슐⌸ ⏄ 愈 ㄼ⌸⌸岠㡈슐솜 램攨 슐㡈⌸ ⏄㡈 ⌸攨⌸⌸ 㡈⌸攨  International Symposium on Software Testing and Analysis (ISSTA), 쿨⟀舜⟀ ዼ ㄼ⌸슐 ㄼ 怴 龈攨 ⏄ 瓤舜瓤 艌㡈  龈 攨슐ㄼ 㡈  愈 攨ㄼ 㞬슐⌸ ⏄ 슐램攨⌸岠ㄼ㡈솜㡈⌸攨 攨솜 ㄼ슐㡈 ㄼ 㡈⌸攨⌸ 岠攨 ⌸⏄솜㡈ㄼ 슐攨 뵼㡈ㄼ 슐램슐ㄼ슐 International Conference on Software Engineering (ICSE) 侈⟀舜⟀  攨⌸ 슐攨  㡈   演 ⌸ㄼ ㄼ슐⌸ ⏄ 攨  솜슐ㄼ舜岠攨 ⌸⏄솜㡈ㄼ 슐攨 뵼㡈ㄼ 슐램슐ㄼ슐 솜슐⌸ ⏄ ⌸ㄼ뵼㡈슐  International Symposium on Software Reliability Engineering (ISSRE)侈쿨쿨侈 壌 攨 ㄼㄼ 㞬 岠 怴怴 솜㡈 艌㡈攨 ⌸攨⌸⌸ ⌸ ⏄ㄼ슐 岠㡈슐ㄼ슐 攨 ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐⌸ ⏄ IEEE Transactions on Software Engineering (TSE)쿨 侈荬侈 壌 攨 ㄼㄼ㡈  艌  㡈攨  愈 㡈램 ⌸ ⏄ ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 슐ㄼㄼ岠⌸攨  ㄼ岠 ⌸稄솜ㄼ슐 IEEE Transactions on Software Engineering (TSE)  荬侈⟀⟀⟀侈 壌  攨 ㄼㄼ 㡈 艌  㡈攨  ዼ⌸⌸岠㡈 슐솜 ⌸ㄼ슐 攨 㡈 슐㡈 ㄼ  ㄼ⏄ㄼ슐슐⌸攨  ㄼ슐 슐ㄼㄼ岠⌸攨  ㄼ岠 ⌸稄솜ㄼ IEEE Transactions on Software Engineering (TSE) 荬侈侈侈 艌 演ㄼ⌸슐ㄼ 攨⏄㡈 슐⌸岠⌸ ⏄ International Conference on Software Engineering (ICSE)侈侈㷤舜 怴俸⌸㡈 艌怴攨 ㄼ 㡈 愈攨ㄼ怴攨ㄼ⌸ ⏄㡈㡈램슐 攨ㄼ ⌸岠⌸ㄼ  㡈솜 岠 㡈㡈岠ㄼ⌸ 㡈⌸攨  ⌸  岠攨ㄼ  岠攨 ⌸⏄솜㡈⌸攨  슐㡈岠ㄼ슐 IEEE Transactions on Software Engineering (TSE)㷤侈 侈荬㷤 怼舜怴 俸攨攨  愈 龈솜슐슐㡈  愈 艌ㄼ攨  㡈  愈 攨ㄼ ዼ ㄼ岠⌸ㄼ 㡈  슐岠㡈㡈ㄼ 슐攨 뵼㡈ㄼ 岠攨㡈⌸⌸⌸램 ㄼ슐⌸ ⏄ International symposium on Software Testing and Analysis (ISSTA),㷤쿨 CodeSurfer壌㡈㡈 ㄼ岠 怼 岠 껤껤뵼뵼뵼⏄㡈㡈ㄼ岠 岠攨껤攨 솜岠슐껤岠攨 ㄼ슐솜 ㄼ ㄼㄼ龈攨 뵼㡈ㄼ 攨솜 㡈⌸攨 gcov 껤껤⏄岠岠⏄ 솜攨⏄껤攨 ⌸ ㄼ 攨岠슐껤⏄岠岠껤壌岠攨 쿨 壌㞬make 껤껤뵼뵼뵼⏄ 솜攨⏄껤슐攨 뵼㡈ㄼ껤㡈瀜ㄼ껤 壌㞬grep 껤껤뵼뵼뵼⏄ 솜攨⏄껤슐攨 뵼㡈ㄼ껤⏄ㄼ껤 WinMerge 껤껤뵼⌸ ㄼ⏄ㄼ攨⏄껤  

Configuration Selection Using Code Change Impact ...

Configuration Selection Using Code Change Impact Analysis for Regression Testing. Xiao Qu, Mithun ..... f5();. 42. if(P3). 43. f4();. 44. } // end x < 0. 45. 46. else{ //x > 0. 47. if(P1){. 48. if(P2). 49. f8();. 50. ...... systems using firewalls. International ...

1MB Sizes 1 Downloads 100 Views

Recommend Documents

Investigating the Impact of Deployment Configuration ...
the best ways to do that considering a diversity of providers with many ... of the EC2 cloud, the customer has a set of more than 10 ... in three layers: web server, application server, and database. .... Each experiment consisted of hosting Olio in.

Unsupervised Feature Selection Using Nonnegative ...
trix A, ai means the i-th row vector of A, Aij denotes the. (i, j)-th entry of A, ∥A∥F is ..... 4http://www.cs.nyu.edu/∼roweis/data.html. Table 1: Dataset Description.

Automated Color Selection Using Semantic ... -
Introduction. When people think about objects they encounter in the world, .... simple: it would generate a random color, show it to the user, and ask the user to ...

The Impact of Candidates' Statements about Climate Change on ...
We need to begin using new forms of energy that are made in America and will be ... invest in windmills and solar panels as alternative energy sources. Instead ...

unsupervised change detection using ransac
the noise pattern, illumination, and mis-registration error should not be identified ... Fitting data to predefined model is a classical problem with solutions like least ...

The Impact of Candidates' Statements about Climate Change on ...
invest in windmills and solar panels as alternative energy sources. ... green statements was apparent among Democratic respondents (see row 2 of Table 2).45 ...

Predic_ng Change Impact from Logical Models
Mo_va_on. • Tradi_onal impact scope predic_on algorithms. – Generally only rely on syntac_c dependencies. • Data mining (e.g. [Ying 04], [Zimmermann 04]).

PredicHng Change Impact from Logical Models
Predict change impact scope. ▫ However, data‐mining results may be inaccurate when: ▫ Version history is limited. ▫ Architecture is refactored. ACN‐Based Approach. ▫ Transform prevailing design model (e.g. UML class diagram) into. Augment

The expected changes and impact of climate change ... -
The expected changes and impact of climate change ... is difficult to evaluate myself. ... When I take it generaly, for me it is difficult to read specialized texts, get ...

The Impact of Regulatory Change on Retail Pricing ... - AgEcon Search
announced price was the best they could do absent a cost justi ication for a .... Agricultural Marketing Service Dairy Programs.7 Figure 1 shows Class I prices. 6.

PredicHng Change Impact from Logical Models
MazeFactory. Bombed. Enchanted. Bomb. 1. UML Class Diagram. MapSite_interface: {orig, other};. Room_interface: {orig, other};. Wall_interface: {orig, other};.

Instruction converting apparatus using parallel execution code
Nov 24, 2003 - S. 1. t. ?l f. 1 t h h. t the ?rst unit ?eld to the s-ltA unit ?eld in the parallel execu ee app 10a Ion e or Comp 6 e Seam 15 Dry' tion code, and the ...

Instruction converting apparatus using parallel execution code
Nov 24, 2003 - vm MmQOUQZOCUDMPmZH QZOUm mEPOO