<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.18255/1818-1015-2012-6-69-78</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-140</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>Слайсинг над деревьями: метод обнаружения разорванных и переплетенных клонов в исходном коде программного обеспечения</article-title><trans-title-group xml:lang="en"><trans-title>Tree Slicing in Clone Detection: Syntactic Analysis Made (Semi)-Semantic</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Ахин</surname><given-names>Марат Халимович</given-names></name><name name-style="western" xml:lang="en"><surname>Akhin</surname><given-names>Marat</given-names></name></name-alternatives><bio xml:lang="ru"><p>аспирант</p></bio><bio xml:lang="en"><p>аспирант</p></bio><email xlink:type="simple">akhin@kspt.ftk.spbstu.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Ицыксон</surname><given-names>Владимир Михайлович</given-names></name><name name-style="western" xml:lang="en"><surname>Itsykson</surname><given-names>Vladimir</given-names></name></name-alternatives><bio xml:lang="ru"><p>доцент</p></bio><bio xml:lang="en"><p>доцент</p></bio><email xlink:type="simple">vlad@ftk.spbstu.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Санкт-Петербургский государственный политехнический университет</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Санкт-Петербургский государственный политехнический университет</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2012</year></pub-date><pub-date pub-type="epub"><day>12</day><month>03</month><year>2015</year></pub-date><volume>19</volume><issue>6</issue><fpage>69</fpage><lpage>78</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Ахин М.Х., Ицыксон В.М., 2015</copyright-statement><copyright-year>2015</copyright-year><copyright-holder xml:lang="ru">Ахин М.Х., Ицыксон В.М.</copyright-holder><copyright-holder xml:lang="en">Akhin M., Itsykson V.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/140">https://www.mais-journal.ru/jour/article/view/140</self-uri><abstract><p>В настоящее время практически любое программное обеспечение (ПО) содержит избыточный дублированный код (клоны), что приводит ко множественным проблемам на этапе поддержки такого ПО. За последние годы для решения проблемы дублирования было предложено множество различных подходов к обнаружению клонов, но большинство из них не рассматривают семантические свойства исходного кода ПО.</p><p>В данной работе предлагается усилить классический подход к обнаружению клонов на основе анализа абстрактных синтаксических деревьев (АСД) за счет использования дополнительной информации о слайсах АСД по переменным программы. Это позволяет эффективно обнаруживать разорванные (gapped) и переплетенные (intertwined) клоны – результаты предварительных экспериментов подтверждают применимость предложенного подхода на практике.</p></abstract><trans-abstract xml:lang="en"><p>Nowadays most of software contains code duplication that leads to serious problems in software maintenance. A lot of different clone detection approaches have been proposed over the years to deal with this problem, but almost all of them do not consider semantic properties of the source code. We propose to reinforce traditional tree-based clone detection algorithms by using additional information about variable slices. This allows to find intertwined/gapped clones on variables; preliminary evaluation confirms applicability of our approach to real-world software.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>обнаружение клонов</kwd><kwd>слайсинг над деревьями</kwd><kwd>шаблоны над деревьями</kwd><kwd>поддержка программного обеспечения</kwd></kwd-group><kwd-group xml:lang="en"><kwd>Clone Detection</kwd><kwd>Tree Slicing</kwd><kwd>Tree Patterns</kwd><kwd>Software Maintenance</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Deshpande A., Riehle D. The Total Growth of Open Source // Conference on Open Source Systems. Springer Verlag, 2008.</mixed-citation><mixed-citation xml:lang="en">Deshpande A., Riehle D. The Total Growth of Open Source // Conference on Open Source Systems. Springer Verlag, 2008.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Roy C. K., Cordy J. R. A Survey on Software Clone Detection Research. TR 2007-541, School of Computing, Queen’s University, 2007.</mixed-citation><mixed-citation xml:lang="en">Roy C. K., Cordy J. R. A Survey on Software Clone Detection Research. TR 2007-541, School of Computing, Queen’s University, 2007.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Ахин М.Х., Ицыксон В.М. Обнаружение клонов исходного кода: теория и практика // Системное программирование. 2010. 5. С. 145–163.</mixed-citation><mixed-citation xml:lang="en">Ахин М.Х., Ицыксон В.М. Обнаружение клонов исходного кода: теория и практика // Системное программирование. 2010. 5. С. 145–163.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Li Z., Lu S., Myagmar S., Zhou Y. CP-Miner: a Tool for Finding Copy-Paste and Related Bugs in Operating System Code // Conference on Symposium on Opearting Systems Design &amp; Implementation, USENIX Association, Berkeley, 2004. P. 20–20.</mixed-citation><mixed-citation xml:lang="en">Li Z., Lu S., Myagmar S., Zhou Y. CP-Miner: a Tool for Finding Copy-Paste and Related Bugs in Operating System Code // Conference on Symposium on Opearting Systems Design &amp; Implementation, USENIX Association, Berkeley, 2004. P. 20–20.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Kontogiannis K. Evaluation Experiments on the Detection of Programming Patterns Using Software Metrics // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 1997. P. 44–44.</mixed-citation><mixed-citation xml:lang="en">Kontogiannis K. Evaluation Experiments on the Detection of Programming Patterns Using Software Metrics // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 1997. P. 44–44.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Koschke R., Falke R., Frenzel P. Clone Detection Using Abstract Syntax Suffix Trees // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 2006. P. 253–262.</mixed-citation><mixed-citation xml:lang="en">Koschke R., Falke R., Frenzel P. Clone Detection Using Abstract Syntax Suffix Trees // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 2006. P. 253–262.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Hummel B., Juergens E., Heinemann L., Conradt M. Index-based Code Clone Detection: Incremental, Distributed, Scalable // International Conference on Software Maintenance. IEEE Computer Society. Washington, DC, 2010. P. 1–9.</mixed-citation><mixed-citation xml:lang="en">Hummel B., Juergens E., Heinemann L., Conradt M. Index-based Code Clone Detection: Incremental, Distributed, Scalable // International Conference on Software Maintenance. IEEE Computer Society. Washington, DC, 2010. P. 1–9.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Gabel M., Jiang L., Su S. Scalable Detection of Semantic Clones // International Conference on Software Engineering. IEEE Computer Society, Washington, DC, 2008. P. 321–330.</mixed-citation><mixed-citation xml:lang="en">Gabel M., Jiang L., Su S. Scalable Detection of Semantic Clones // International Conference on Software Engineering. IEEE Computer Society, Washington, DC, 2008. P. 321–330.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Krinke J. Identifying Similar Code with Program Dependence Graphs // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 2001.</mixed-citation><mixed-citation xml:lang="en">Krinke J. Identifying Similar Code with Program Dependence Graphs // Working Conference on Reverse Engineering. IEEE Computer Society. Washington, DC, 2001.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Jiang L., Misherghi G., Su S., Glondu S. DECKARD: Scalable and Accurate Treebased Detection of Code Clones // International Conference on Software Engineering. IEEE Computer Society. Washington, DC, 2007. P. 96–105.</mixed-citation><mixed-citation xml:lang="en">Jiang L., Misherghi G., Su S., Glondu S. DECKARD: Scalable and Accurate Treebased Detection of Code Clones // International Conference on Software Engineering. IEEE Computer Society. Washington, DC, 2007. P. 96–105.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Andoni A., Indyk P. Near-optimal Hashing Algorithms for Approximate Nearest Neighbour in High Dimensions. Commun. // ACM. 2008. 51, 1. P. 117–122.</mixed-citation><mixed-citation xml:lang="en">Andoni A., Indyk P. Near-optimal Hashing Algorithms for Approximate Nearest Neighbour in High Dimensions. Commun. // ACM. 2008. 51, 1. P. 117–122.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Evans W., Fraser C., Ma F. Clone Detection via Structural Abstraction // Software Quality Journal. 2009. 17, 4. P. 309–330.</mixed-citation><mixed-citation xml:lang="en">Evans W., Fraser C., Ma F. Clone Detection via Structural Abstraction // Software Quality Journal. 2009. 17, 4. P. 309–330.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Bulychev P., Minea M. Duplicate Code Detection Using Anti-unification // Spring Young Researchers Colloquium on Software Engineering, 2008. P. 51–54.</mixed-citation><mixed-citation xml:lang="en">Bulychev P., Minea M. Duplicate Code Detection Using Anti-unification // Spring Young Researchers Colloquium on Software Engineering, 2008. P. 51–54.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Kamiya T., Kusumoto S., Inoue K. CCFinder: Multilinguistic Token-based Code Clone Detection System for Large Scale Source Code // IEEE Trans. Softw. Eng. 2002. 28, 7. P. 654–670.</mixed-citation><mixed-citation xml:lang="en">Kamiya T., Kusumoto S., Inoue K. CCFinder: Multilinguistic Token-based Code Clone Detection System for Large Scale Source Code // IEEE Trans. Softw. Eng. 2002. 28, 7. P. 654–670.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
