Title: Special Thanks to:
1???????????????????(?????????)
- ?? ??
- ????????????
- Special Thanks to
- ?? ??(Jaxa), ?? ??(????), ?? ??(????)
2?????????
- ???????????????????????????????????????????
3???????????????
- ??????????????????????
- ????????????????
- ??????????????????????????????????????????????
- ????????????????????????????????(????)???????
4?????
- ?????????
- ???????????????
- ??????????????
- ???????????
- ??????????
- ????????????CCFinder
- Gemini
- Aries
- ????
- ???????????
- ?????????
- DP (Dynamic Programming)
- ???????
- Simultaneous Editing, Linked Editing
- Editing Process Patterns
??????????????
??????????????
5??????????????
- ??????(??????)
- ???????
- ????????
- ?????????????????
- ?????
- ?????
- ???
- ????????????
- ????????????????????????????????
- (!??????????????)
- (!????????????????????)
6??????????????(??)
- ??????(??????)
- ??????????????????
- ????????????????
- ?????????????????????????
- ??
- ?????????????(???)?????
- ?????????????
- ?????????????????
- ????????????????
7??????????????
???
??????????
??????? ????? ????
???????? ??
??
?????? ????????
8??????????
- ??
- ????????????????????????????????????????????????
- Dup, Duploc, CloneDR, Balazinska
- (!????)
- (??) ??????????
- ??????????????????????
9??????????
- ??????
- ?????????????????
- ???????????
- (!??????????????????????????)
- ?????????
- ??????????????????????
- (!????????????????????)
10??????????????
- Simultaneous Editing
- ???????????????????????????????????????????
- ???????????????????
- ?????????????????????????????????(XVCL)
- ??????
11??????????
- ??????????????????????????????????????????
12?????
- ?????????
- ???????????????
- ??????????????
- ???????????
- ??????????
- ????????????CCFinder
- Gemini
- Aries
- ????
- ???????????
- ?????????
- DP (Dynamic Programming)
- ???????
- Simultaneous Editing, Linked Editing
- Editing Process Patterns
??????????????
??????????????
13??????????
- ?????????? ? ??????????
- ????????????CCFinder
- ?????Gemini
- ???????????????Aries
14????????????CCFinder
- ??????????????????????????????
- ?????????????????????????
- ????????????????????
- ???C/C, Java, COBOL??????
- ????????????????
- ????????????????????
15???????????
- ???4???????????
- (1) ????????????????????
- (2) ??????????????????????????
- (3) ??????????
- (4) ?????????????????????
- ????????????
16??????
AFGAFG(JaObject obj) objname afg"
object obj AFGAFG() for(unsigned int
i 0 i lt children.size() i)
if(childreni ! NULL) delete
childreni for(unsigned int i 0 i lt
nodes.size() i) if(nodesi ! NULL)
delete nodesi
(1)?? (2)??? (3)???????? (4)??
17??????(??)
????? ?????
(1)?? (2)??? (3)???????? (4)??
18???????
???????????
(1)?? (2)??? (3)???????? (4)??
19???? ????????
(1)?? (2)??? (3)???????? (4)??
20???? ????????(??)
(1)?? (2)??? (3)???????? (4)??
21????????????(??)
(1)?? (2)??? (3)???????? (4)??
22???? ??
AFGAFG(JaObject obj) objname afg"
object obj AFGAFG() for(unsigned int
i 0 i lt children.size() i)
if(childreni ! NULL) delete
childreni for(unsigned int i 0 i lt
nodes.size() i) if(nodesi ! NULL)
delete nodesi
(1)?? (2)??? (3)???????? (4)??
23????????
- ????????????????????????
- ???????
- ???????????
- ????????????
- ????????????
- ???
- ??????????(suffix tree)?????????? O(nm)
- ???????
243??OS????????
25??????????
- CCFinder??????????????
- CCFinder????????????????????????
- ??????????????????????????????????????????????????
?? - ???????????????!
????????????gnuplot???????
26????????????Gemini
- GUI??????????
- ????????????
- ??????????????
- ?????????????????????
- ????????????????????????
- ?????????(???????????)?????
27??????????????????????
- ?????????????(????????????????)?????????
- ??
- RAD ??????????????)????????????????????????
- ? RAD?????????????????????????????????
- ???
- LEN ??????????????????????(?????)
- LNR ????????????????????????????????(????)
- ? LNR/LEN???????????????????????
- POP ?????????????????????
- DFL ??????????????????????????????????
?????????? ????????
28RAD?????????????
JDK 1.5.0.01 RAD9
29LNR/LEN?????????????
- LNR(/LEN)?com.sun.org.apache.xerces.internal.impl.
xpath.regex.RegularExpression?2?????? - private int matchString(Context con, Op op, int
offset, int dx, int opts)? - private int matchCharacterIterator(Context con,
Op op, int offset, int dx, int opts) - ?400?(1500????)
30LNR/LEN?????????????
- LNR(/LEN)?
- com.sun.org.apache.xerces.internal.util.EncodingMa
p?????????????? - ?430?(LEN?2000, LNR lt 10)
31????
32?????????????????????????
33??????????????????????????
34??????????????
- (1)(???????)??????????
- (2)???????
- (3)?????????????????????
35?????????????????????
- ???
- ???????X ABCDCDEFBCDG
- ???????Y ABCEFBCDEBCD
36???????????
37??????
38????????????????????
- ???????????????????????????????????????
39??????????????
- Gemini???????????????????????????
- ?????????????????????????????
- ?????????????
- ?????????????????????????????????????
40???????????????Aries??????
- ?????????????????????????????.
- ??????? ??????????????
- ????????? ???????????????
- ??????????????????????,???????????????????????????
???.
41???????????????????
?????????
?????????
void methodA(int i) methodZ() System.out.pri
ntln(name name) System.out.println(amount
i) void methodB(int i) methodY() Sys
tem.out.println(name name) System.out.print
ln(amount i)
void methodA(int i) methodZ() methodC(i) v
oid methodB(int i) methodY() methodC(i) vo
id methodC(int i) System.out.println(name
name) System.out.println(amount i)
42?????????????????????
?????????
?????????
Employee
Employee
getName()
Engineer
Salesman
Engineer
Salesman
getName()
getName()
43?????????????????????????(1/2)
- ???2?????????
- ?????? ????????????????,???????????(??,??)?
- ??????????? ?????????????????????????????????
- ??????????????????
44?????RVK(S),RVN(S)
45?????DCH(S)
46???Aries
- ???? Java
- ????????????????????????CCFinder???
- ???????? Java
- ??,?????????????????????????????????JavaCC??????
- ????JDK1.4???VM????????
- ???
- ??? ?15000?
- GUI? ?8000?
- ????GUI????????,?????????????????????
47????????
??????????
??????????????????
48????????????
?????????
???????
49??????
- Ant (version 1.6.0)
- ??
- ???????? 627?
- ??? ?18??
- ?????????????30?
- 151????????????
- ????
- FreeBSD 4.9
- CPU Xeon2.8G2
- ??? 4GB
50????Ant(???????)
- ????????????????????????????????3?
- ???????????
- ????????????????????????????????????
- ????????1???????????
- ?????????DCH????1???????.
- ??????????????????????1??????????
- ?????????RVK????2???????.
- 151?????32??????
51????Ant(???????)
if (name null) if (other.name !
null) return false
else if (!name.equals(other.name))
return false
if (!isChecked()) // make sure we don't
have a circular reference here Stack stk
new Stack() stk.push(this) die
OnCircularReference(stk, getProject())
?? ?
???? 3?
??????????????? 18?
???????????????? 7?
??? 4?
52?????
- ?????????
- ???????????????
- ??????????????
- ???????????
- ??????????
- ????????????CCFinder
- Gemini
- Aries
- ????
- ???????????
- ?????????
- DP (Dynamic Programming)
- ???????
- Simultaneous Editing, Linked Editing
- Editing Process Patterns
??????????????
??????????????
53??????????????
?? ??, ?????????????????????????????????,
????????? Vol. 87, No. 9, pp. 791-797 (2004-9).
54??????????
- (??1)???????????????????????????????????????????
- (!????????????????????)
- (??2)???????????????????????????????????????????
- (!???????????????????????????????)
- (??3)2????????????????????????????????????????????
???? - (!?????????????????????)
55???? CloneDR
- ?????????????? CloneDR
- AST???????
- ?????????????
- ??
- ?????????????????????
- ?????O(n2) nAST?????
I.D. Baxter, A. Yahin, L. Moura, M. SantAnna,
and L. Bier, Clone Detection Using Abstract
Syntax Trees, Proc. IEEE International
Conference on Software Maintenance (ICSM) 98,
pp. 368-377, Bethesda, Maryland, Nov. 1998.
56CloneDR????????????????
- (1) ?????????????AST???
- (2) ?????????????????
- AST??????????????
- ???????????????????
- (3) ?????????????????????????
- ???????????????????????????????????
- ???????????????????
void f() x 0 a 1 b 2 c
3 w 4 void g() y 2 a
1 b 2 c 3 i 5
57CloneDR(??)
58???? Balazinska
- ????????????
- DP???????
- ????????
- (1)????????????????????????????????????????????
- (2)???????????DP??????????????????????????????
M. Balazinska, E. Merlo, M. Dagenais, B. Lagüe,
and K.A. Kontogiannis, Measuring Clone Based
Reengineering Opportunities, Proc. 6th IEEE
Intl Symposium on Software Metrics (METRICS
99), pp. 292-303, Boca Raton, Florida, Nov. 1999.
59???????
- ???????????????????????????????
- ????????????????
- ??????????
- ????????
- McCabe??????????
- Balazinska????????????????1??????????????????????
????? - (!???????????????????)
- (!??????????????????????????????????)
60?????(Dynamic Programming)
- Diff???????
- ?????2??????edit distance?????
- ????????????????????
- ?????O(mn) (m, n length of sequences)
61Linked Editing
- (1)????????????
- (2)???????????????????????????????
- (3)??????????????????????????????????
- (4)??????????????????????????
Michael Toomim, Andrew Begel, Susan L. Graham,
Managing Duplicated Code with Linked Editing,
Proc. IEEE Symposium on Visual Languages and
Human-Centric Computing (VL/HCC'04) pp. 173-180
62Editing Process Patterns
- ???????????????????????
- Support for Programmer Observation
- Support for CP Programming
- Support for Program Understanding
- Support for Programming by Demonstration
- Miryung Kim, Vibha Sazawal, and David Notkin,
Supporting Uses of Editing Process Patterns,
Workshop on Behavior Based User Interface
Customization,Intelligent User Interface, Jan
13-16, 2004
63(No Transcript)
64- 1 S.F. Altschul, W. Gish, W. Miller, E. Myers,
D. Lipman, Basic Local Alignment Tool, Journal
of Molecular Biology, 215, pp. 403-410, (1990). - 2 A. Aiken, A System for Detecting Software
Plagiarism (Moss Homepage), http//www.cs.berkele
y.edu/aiken/moss.html Last visited 1st Feb.
2003. - 3 B. S. Baker, A Program for Identifying
Duplicated Code, Computing Science and
Statistics, 2449-57, 1992. - 4 B. S. Baker, On Finding Duplication and
Near-Duplication in Large Software Systems,
Proc. IEEE Working Conf. on Reverse Engineering,
pp. 86-95, July 1995. - 5 B. S. Baker, Parameterized Duplication in
Strings Algorithms and an Application to
Software Maintenance, SIAM Journal on Computing,
26(5)1343-1362, 1997. - 6 M. Balazinska, E. Merlo, M. Dagenais, B.
Lagüe, and K.A. Kontogiannis, Measuring Clone
Based Reengineering Opportunities, Proc. 6th
IEEE Intl Symposium on Software Metrics (METRICS
99), pp. 292-303, Boca Raton, Florida, Nov.
1999. - 7 M. Balazinska, E. Merlo, M. Dagenais, B.
Lagüe, and K.A. Kontogiannis, Partial Redesign
of Java Software Systems Based on Clone
Analysis, Proc. 6th IEEE Working Conference on
Reverse Engineering (WCRE 99), pp. 326-336,
Atlanta, Georgia, Oct. 1999. - 8 I.D. Baxter, A. Yahin, L. Moura, M.
SantAnna, and L. Bier, Clone Detection Using
Abstract Syntax Trees, Proc. IEEE International
Conference on Software Maintenance (ICSM) 98,
pp. 368-377, Bethesda, Maryland, Nov. 1998. - 9 K.W., Church, and J.I. Helfman, Dotplot A
Program for Exploring Self-Similarity in Millions
of Lines of Text and Code, Journal of
Computational and Graphical Statistics, V2, N2,
pp. 153-174 (1993). - 10 James O. Coplien, Multi-Paradigm Design for
C, Pearson Education (2001). ?????O????(?),
?? ??, ?? ??, ??? ??(?), ????????????,
???????????? (2001). - 11 Elizabeth Burd, John Bailey, Evaluating
Clone Detection Tools for Use during Preventative
Maintenance, Proc. 2nd IEEE International
Workshop on Source Code Analysis and Manipulation
(SCAM) 2002, pp. 36-43. Montreal, Canada, Oct.
2002. - 12 S. Ducasse, M. Rieger, and S. Demeyer, A
Language Independent Approach for Detecting
Duplicated Code, Proc. IEEE International
Conference on Software Maintenance (ICSM) 99,
pp. 109-118. Oxford, England. Aug. 1999. - 13 M. Fowler, Refactoring improving the design
of existing code, Addison Wesley, 1999. - 14 FreeBSD. http//www.freebsd.org/.
- 15 D. Gusfield, Algorithms on Strings, Trees,
and Sequences, pp. 89-180. Cambridge University
Press, 1997. - 16 T. Imai, Y. Kataoka, and T. Fukaya,
Evaluating Software Maintenance Cost Using
Functional Redundancy Metrics, Proc. 26th
International Computer Software and Applications
Conference (Compsac 2002), pp.299-306, 2002. - 17 J.H. Johnson, Identifying Redundancy in
Source Code Using Fingerprints, Proc. IBM Centre
for Advanced Studies Conference (CAS CON) 93,
pp. 171-183, Toronto, Ontario. Oct. 1993. - 18 J.H. Johnson, Substring Matching for Clone
Detection and Change Tracking, Proc. IEEE Intl
Conf. on Software Maintenance (ICSM) 94, pp.
120-126. Victoria, British Columbia, Canada. Sep.
1994.
6519 J.H. Johnson, Using Textual Redundancy to
Understand Change, Proc. IBM Centre for Advanced
Studies Conference (CASCON) '95, pp. 34-40, Nov.
1999. 20 T. Kamiya, S. Kusumoto, and K. Inoue,
CCFinder A Multi-Linguistic Token-Based Code
Clone Detection System for Large Scale Source
Code, IEEE Transactions on Software Engineering,
vol. 28, no. 7, pp. 654-670, (2002-7). 21 ?? ?
(?), ??????????, ???? (1997). 22 R. Komondoor
and S. Horwitz, Using Slicing to Identify
Duplication in Source Code, Proc. of the 8th
International Symposium on Static Analysis(SAS),
LNCS 2126, pp. 40-56, Springer (2001). 23 K.A.
Kontogiannis, R. De Mori, E. Merlo, M. Galler,
and M. Bernstein, Pattern Matching Techniques
for Clone Detection and Concept Detection,
Journal of Automated Software Engineering Kluwer
Academic Publishers, vol. 3, pp. 770-108,
1996. 24 Jens Krinke, Identifying Similar Code
with Program Dependence Graphs, Proc. of the 8th
Working Conference on Reverse Engineering,
2001. 25 B. Laguë, E.M. Merlo, J. Mayrand, and
J. Hudepohl, Assessing the Benefits of
Incorporating Function Clone Detection in a
Development Process, Proc. IEEE Intl Conf. on
Software Maintenance (ICSM) 97, pp. 314-321,
Bari, Italy. Oct. 1997. 26 Linux Online.
http//www.linux.org/. 27 A. Marcus, and J.I.,
Maletic, Identification of High-Level Concept
Clones in Source Code, Proc. Automated Software
Engineering (ASE'01), San Diego, pp. 107-114,
Nov. 2001, 28 J. Mayrand, C. Leblanc, and E.
M. Merlo, Experiment on the Automatic Detection
of Function Clones in a Software System Using
Metrics, Proc. IEEE Intl Conference on Software
Maintenance (ICSM) 96, pp. 244-253, Monterey,
California, Nov. 1996. 29 ?? ??, ?? ??, ?? ??,
?? ??, ???????????????????????????, ?????????,
vol. 44, No. 8, pp. 2178-2188 (2003-8). 30
NetBSD Project. http//www.netbsd.org/. 31 ??
??, COBOL?? ???, ??? (1986). 32 L. Prechelt, G.
Malpohl, M. Philippsen, JPlag Finding
Plagiarisms Among a Set of Programs, Technical
Report, University of Karlsruhe, Department of
Informatics, 2000. 33 ?? ?, ???????????????????
??, ??????????? ?7?????????????????????????????(S
PA 2004), pp. 1-8, (2004-3). 34 Will Tracz,
Confessions of a Used Program Salesman ---
Institutionalizing Software Reuse ---, Pearson
Education (1995). W. ???? (?), ?? ??, ? ??, ?? ??
(?), ???????????? --- ????????????????? ---,
???????????? (2001). 35 ?? ??, ?? ?, ?? ??, ??
??, ??????????????????????SMMT, ???????????,
vol. J85-D-I, no. 6, pp. 503-511. (2002-6). 36
?? ??, ?? ??, ?? ??, ?? ??, ?????????????????????
?, ??????????? D-I, Vol. J86-D-I, No. 12, pp.
863-871 (2003-12).
66????????????????
???
??????????
Code Decay???
???????? ??
?????? ????????
????
67(??)?????????????????????
- ????????????
- ????????????????????????????1
- ???????????????????6
- ???????
- ?????????????????
- ???????(???)????
- ??????????????????
- ????????????
- ????????????????