<?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-2017-6-718-729</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-609</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>Towards Null Safety Benchmarks for Object Initialization</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-4873-8306</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Когтенков</surname><given-names>Александр Валентинович</given-names></name><name name-style="western" xml:lang="en"><surname>Kogtenkov</surname><given-names>Alexander V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>кандидат наук (Doctor of Sciences ETH Zurich), Независимый ученый, г. Подольск</p></bio><bio xml:lang="en"><p>Doctor of Sciences ETH Zurich Independent scientist, Podolsk</p></bio><email xlink:type="simple">kwaxer@mail.ru</email></contrib></contrib-group><pub-date pub-type="collection"><year>2017</year></pub-date><pub-date pub-type="epub"><day>18</day><month>12</month><year>2017</year></pub-date><volume>24</volume><issue>6</issue><fpage>718</fpage><lpage>729</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Когтенков А.В., 2017</copyright-statement><copyright-year>2017</copyright-year><copyright-holder xml:lang="ru">Когтенков А.В.</copyright-holder><copyright-holder xml:lang="en">Kogtenkov A.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/609">https://www.mais-journal.ru/jour/article/view/609</self-uri><abstract><p>Разыменование нулевого указателя остаётся одной из основных проблем в современных объектно-ориентированных языках. Очевидное добавление ключевых слов, чтобы различать всегда ненулевые и возможно нулевые ссылки, оказывается недостаточным во время инициализации объекта, когда некоторые поля, объявленные всегда ненулевыми, могут временно быть нулевыми до окончания инициализации. Данная работа устанавливает ключевые причины проблемы инициализации объектов. Она предлагает сценарии и метрики в качестве эталонных тестов для сравнения решений этой проблемы. Наконец, она демонстрирует применение этих тестов к предложенному решению инициализации объектов в Eiffel. Статья публикуется в авторской редакции.</p><p>разыменование нулевого указателя; безопасность нулевых ссылок; безопасность пустых ссылок; инициализация объектов; статический анализ; эталонные тесты безопасности нулевых ссылок</p></abstract><trans-abstract xml:lang="en"><p>Null pointer dereferencing remains one of the major issues in modern object-oriented languages. An obvious addition of keywords to distinguish between never null and possibly null references appears to be insufficient during object initialization when some fields declared as never null may be temporary null before the initialization completes. This work identifies the key reasons of the object initialization problem. It suggests scenarios and metrics to be used as the benchmarks to compare solutions of this problem. Finally, it demonstrates application of the benchmarks on the proposed solution for object initialization in Eiffel. The article is published in the author’s wording.</p><p> </p></trans-abstract><kwd-group xml:lang="ru"><kwd>разыменование нулевого указателя</kwd><kwd>безопасность нулевых ссылок</kwd><kwd>безопасность пустых ссылок</kwd><kwd>инициализация объектов</kwd><kwd>статический анализ</kwd><kwd>эталонные тесты безопасности нулевых ссылок</kwd></kwd-group><kwd-group xml:lang="en"><kwd>null pointer dereferencing</kwd><kwd>null safety</kwd><kwd>void safety</kwd><kwd>object initialization</kwd><kwd>static analysis</kwd><kwd>null safety benchmarks</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">F¨ahndrich Manuel, Leino K. Rustan M., “Declaring and Checking Non-null Types in an Object-oriented Language”, Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications, OOPSLA ’03, ACM, New York, NY, USA, 2003, 302–312, http://doi.acm.org/10.1145/949305. 949332.</mixed-citation><mixed-citation xml:lang="en">F¨ahndrich Manuel, Leino K. Rustan M., “Declaring and Checking Non-null Types in an Object-oriented Language”, Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications, OOPSLA ’03, ACM, New York, NY, USA, 2003, 302–312, http://doi.acm.org/10.1145/949305. 949332.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">F¨ahndrich Manuel, Xia Songtao, “Establishing Object Invariants with Delayed Types”, Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, OOPSLA ’07, ACM, New York, NY, USA, 2007, 337–350, http://doi.acm.org/10.1145/1297027.1297052.</mixed-citation><mixed-citation xml:lang="en">F¨ahndrich Manuel, Xia Songtao, “Establishing Object Invariants with Delayed Types”, Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, OOPSLA ’07, ACM, New York, NY, USA, 2007, 337–350, http://doi.acm.org/10.1145/1297027.1297052.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Design Patterns: Elements of Reusable Object-oriented Software, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995.</mixed-citation><mixed-citation xml:lang="en">Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Design Patterns: Elements of Reusable Object-oriented Software, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">JetBrains, Kotlin Language Speciﬁcation, https://jetbrains.github.io/kotlin-spec/kotlin-spec.pdf, visited on 2017-01-31.</mixed-citation><mixed-citation xml:lang="en">JetBrains, Kotlin Language Speciﬁcation, https://jetbrains.github.io/kotlin-spec/kotlin-spec.pdf, visited on 2017-01-31.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Kogtenkov A. V., “Mechanically Proved Practical Local Null Safety”, Proceedings of the Institute for System Programming of the RAS, 28:5 (2016), 27–54, DOI:10.15514/ISPRAS-2016-28(5)-2.</mixed-citation><mixed-citation xml:lang="en">Kogtenkov A. V., “Mechanically Proved Practical Local Null Safety”, Proceedings of the Institute for System Programming of the RAS, 28:5 (2016), 27–54, DOI:10.15514/ISPRAS-2016-28(5)-2.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Bertrand Meyer, Targeted expressions: safe object creation with void safety, 2017, http://se.ethz.ch/ meyer/publications/online/targeted.pdf, visited on 2017-05-08.</mixed-citation><mixed-citation xml:lang="en">Bertrand Meyer, Targeted expressions: safe object creation with void safety, 2017, http://se.ethz.ch/ meyer/publications/online/targeted.pdf, visited on 2017-05-08.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Qi Xin, Myers Andrew C., “Masked Types for Sound Object Initialization”, Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’09, ACM, New York, NY, USA, 2009, 53–65, http://doi.acm.org/10.1145/1480881.1480890.</mixed-citation><mixed-citation xml:lang="en">Qi Xin, Myers Andrew C., “Masked Types for Sound Object Initialization”, Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’09, ACM, New York, NY, USA, 2009, 53–65, http://doi.acm.org/10.1145/1480881.1480890.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Spoto Fausto, “Precise null-pointer analysis”, Software &amp; Systems Modeling, 10:2 (2011), 219–252, http://dx.doi.org/10.1007/s10270-009-0132-5.</mixed-citation><mixed-citation xml:lang="en">Spoto Fausto, “Precise null-pointer analysis”, Software &amp; Systems Modeling, 10:2 (2011), 219–252, http://dx.doi.org/10.1007/s10270-009-0132-5.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Summers Alexander J., M¨uller Peter, “Freedom Before Commitment: A Lightweight Type System for Object Initialisation”, Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’11, ACM, New York, NY, USA, 2011, 1013–1032, http://doi.acm.org/10.1145/2048066.2048142.</mixed-citation><mixed-citation xml:lang="en">Summers Alexander J., M¨uller Peter, “Freedom Before Commitment: A Lightweight Type System for Object Initialisation”, Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’11, ACM, New York, NY, USA, 2011, 1013–1032, http://doi.acm.org/10.1145/2048066.2048142.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Kogtenkov Alexander, “Practical Void Safety”, Veriﬁed Software. Theories, Tools, and Experiments, 2017, http://dx.doi.org/10.1007/978-3-319-72308-2_9.</mixed-citation><mixed-citation xml:lang="en">Kogtenkov Alexander, “Practical Void Safety”, Veriﬁed Software. Theories, Tools, and Experiments, 2017, http://dx.doi.org/10.1007/978-3-319-72308-2_9.</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>
