<?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-2015-6-763-772</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-293</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>Fast and Safe Concrete Code Execution for Reinforcing Static Analysis and Verification</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>Belyaev</surname><given-names>M.</given-names></name></name-alternatives><bio xml:lang="ru"><p>ассистент,</p><p>194021, г. Санкт-Петербург, Политехническая ул., 21</p></bio><bio xml:lang="en"><p>assistant, Polytechnicheskaya street, 21, Saint-Petersburg, 194021</p></bio><email xlink:type="simple">belyaev@kspt.icc.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>V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>доцент,</p><p>194021, г. Санкт-Петербург, Политехническая ул., 21 </p></bio><bio xml:lang="en"><p>PhD, Polytechnicheskaya street, 21, Saint-Petersburg, 194021</p></bio><email xlink:type="simple">vlad@icc.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>Peter the Great St. Petersburg Polytechnic University</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2015</year></pub-date><pub-date pub-type="epub"><day>20</day><month>12</month><year>2015</year></pub-date><volume>22</volume><issue>6</issue><fpage>763</fpage><lpage>772</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">Belyaev 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/293">https://www.mais-journal.ru/jour/article/view/293</self-uri><abstract><p>Существующие средства и методы статического анализа и верификации кода на языке С используют различные методики упрощения программной модели, приводящие к значительному снижению точности анализа. В данной работе представлен новый подход к повышению точности анализа путем исполнения программной модели в контролируемом окружении, которое позволяет точно определять ошибочные ситуации, такие, как нарушения контрактов кода и ошибки работы с памятью, оставаясь при этом эффективным с точки зрения затрат по времени и по памяти. Данный подход был реализован в модуле под названием «Tassadar» в рамках средства ограниченной проверки моделей «Borealis». Прототип был опробован на стандартных наборах тестовых программ данного средства и показал минимальное влияние на его общую производительность.</p><p>Статья представляет собой расширенную версию доклада на VI Международном семинаре “Program Semantics, Specification and Verification: Theory and Applications”, Казань, 2015.</p><p>Статья публикуется в авторской редакции.</p></abstract><trans-abstract xml:lang="en"><p>The problem of improving precision of static analysis and verification techniques for C is hard due to simplification assumptions these techniques make about the code model. We present a novel approach to improving precision by executing the code model in a controlled environment that captures program errors and contract violations in a memory and time efficient way. We implemented this approach as an executor module Tassadar as a part of bounded model checker Borealis. We tested Tassadar on two test sets, showing that its impact on performance of Borealis is minimal.</p><p>The article is published in the authors’ wording.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>программная интерпретация</kwd><kwd>символьное исполнение</kwd><kwd>статический анализ программного кода</kwd><kwd>точность анализа</kwd></kwd-group><kwd-group xml:lang="en"><kwd>concrete interpretation</kwd><kwd>symbolic execution</kwd><kwd>static code analysis</kwd><kwd>analysis precision</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">M. Akhin, M. Belyaev, V. Itsykson, “Software defect detection by combining bounded model checking and approximations of functions”, Automatic Control and Computer Sciences, 48:7 (2014), 389–397.</mixed-citation><mixed-citation xml:lang="en">M. Akhin, M. Belyaev, V. Itsykson, “Software defect detection by combining bounded model checking and approximations of functions”, Automatic Control and Computer Sciences, 48:7 (2014), 389–397.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">P. Baudin, J. C. Filliˆatre, T. Hubert, C. March´e, B. Monate, Y. Moy, V. Prevosto, 2008, ACSL: ANSI/ISO C Specification Language. Preliminary Design, version 1.4., Preliminary.</mixed-citation><mixed-citation xml:lang="en">P. Baudin, J. C. Filliˆatre, T. Hubert, C. March´e, B. Monate, Y. Moy, V. Prevosto, 2008, ACSL: ANSI/ISO C Specification Language. Preliminary Design, version 1.4., Preliminary.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">J. L. Bentley, “Solutions to klee’s rectangle problems”, Technical report, 1977.</mixed-citation><mixed-citation xml:lang="en">J. L. Bentley, “Solutions to klee’s rectangle problems”, Technical report, 1977.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">D. Beyer, “Competition on software verification”, 2012, 504–524.</mixed-citation><mixed-citation xml:lang="en">D. Beyer, “Competition on software verification”, 2012, 504–524.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">A. Biere, A. Cimatti, E. M. Clarke, Y. Zhu, “Symbolic model checking without BDDs”, 1999, 193–207.</mixed-citation><mixed-citation xml:lang="en">A. Biere, A. Cimatti, E. M. Clarke, Y. Zhu, “Symbolic model checking without BDDs”, 1999, 193–207.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">M. K. Buckland, F. C. Gey, “The relationship between recall and precision”, JASIS, 45:1 (1994), 12–19.</mixed-citation><mixed-citation xml:lang="en">M. K. Buckland, F. C. Gey, “The relationship between recall and precision”, JASIS, 45:1 (1994), 12–19.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">E. Clarke, O. Grumberg, S. Jha, Y. Lu, H. Veith, “Counterexample-guided abstraction refinement”, CAV, 2000, 154–169.</mixed-citation><mixed-citation xml:lang="en">E. Clarke, O. Grumberg, S. Jha, Y. Lu, H. Veith, “Counterexample-guided abstraction refinement”, CAV, 2000, 154–169.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, F. K. Zadeck, “Efficiently computing static single assignment form and the control dependence graph”, ACM TOPLAS, 13:4 (1991), 451–490.</mixed-citation><mixed-citation xml:lang="en">R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, F. K. Zadeck, “Efficiently computing static single assignment form and the control dependence graph”, ACM TOPLAS, 13:4 (1991), 451–490.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">A. Groce, R. Joshi, “Extending model checking with dynamic analysis”, Verification, model checking, and abstract interpretation, 2008, 142–156.</mixed-citation><mixed-citation xml:lang="en">A. Groce, R. Joshi, “Extending model checking with dynamic analysis”, Verification, model checking, and abstract interpretation, 2008, 142–156.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">ISO, The ANSI C standard (C99), ISO/IEC, 1999.</mixed-citation><mixed-citation xml:lang="en">ISO, The ANSI C standard (C99), ISO/IEC, 1999.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">F. Ivanˇci´c, S. Sankaranarayanan, “NECLA static analysis benchmarks”, 2009.</mixed-citation><mixed-citation xml:lang="en">F. Ivanˇci´c, S. Sankaranarayanan, “NECLA static analysis benchmarks”, 2009.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">D. Kroening, A. Groce, E. Clarke, “Counterexample guided abstraction refinement via program execution”, Formal methods and software engineering, 2004, 224–238.</mixed-citation><mixed-citation xml:lang="en">D. Kroening, A. Groce, E. Clarke, “Counterexample guided abstraction refinement via program execution”, Formal methods and software engineering, 2004, 224–238.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">C. Lattner, V. Adve, “LLVM: A compilation framework for lifelong program analysis &amp; transformation”, 2004, 75–86.</mixed-citation><mixed-citation xml:lang="en">C. Lattner, V. Adve, “LLVM: A compilation framework for lifelong program analysis &amp; transformation”, 2004, 75–86.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">D. Novillo, “Tree SSA: A new optimization infrastructure for GCC”, Proceedings of the 2003 gCC developers’ summit, 21, 2014, 83–93.</mixed-citation><mixed-citation xml:lang="en">D. Novillo, “Tree SSA: A new optimization infrastructure for GCC”, Proceedings of the 2003 gCC developers’ summit, 21, 2014, 83–93.</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>
