Please use this identifier to cite or link to this item:
http://hdl.handle.net/11701/39485
Full metadata record
DC Field | Value | Language |
---|---|---|
dc.contributor.advisor | Подкопаев Антон Викторович | ru_RU |
dc.contributor.advisor | Podkopaev Anton Viktorovic | en_GB |
dc.contributor.author | Меньшиков Максим Александрович | ru_RU |
dc.contributor.author | Mensikov Maksim Aleksandrovic | en_GB |
dc.contributor.editor | Терехов Андрей Николаевич | ru_RU |
dc.contributor.editor | Terehov Andrej Nikolaevic | en_GB |
dc.date.accessioned | 2023-04-06T21:47:26Z | - |
dc.date.available | 2023-04-06T21:47:26Z | - |
dc.date.issued | 2022 | |
dc.identifier.other | 013800 | en_GB |
dc.identifier.uri | http://hdl.handle.net/11701/39485 | - |
dc.description.abstract | Быстрое развитие компьютеров привело к тому, что микроэлектроника вплотную приблизилась к физическому пределу, препятствующему дальнейшему увеличению производительности процессоров. Ответом индустрии на эту проблему стало использование программно-аппаратных комплексов, основанных на параллельных, гетерогенных вычислениях со специализированными процессорами. Это значительно подняло сложность программного обеспечения и затруднило контроль его качества, который и так был непростой задачей, но теперь происходит в неоднородных условиях. Решением проблемы является переход на комплексные технологии разработки, которые будут покрывать весь жизненный цикл программного обеспечения. Статический анализ занимает в таких средах место хранилища и обработчика семантических данных программ, уходящего от обычного поиска дефектов к выполнению задач проектирования, документирования, контроля взаимосвязей, помощи в импорте и т.п. Тем самым анализаторы могут занять центральную роль в модернизирующейся инфраструктуре разработки. Для перехода к этому качеству необходим новый метод их построения. Объектами данного исследования являются методологии разработки статических анализаторов программного кода. Предмет исследования - подход к их созданию, выводящий на первый план языковую независимость, гибридность, возможности по интеграции. Языковая независимость позволяет в одном контексте читать и анализировать взаимосвязи программ, написанных на разных языках. Гибридность предполагает поддержку множества процедур анализа - от просмотра абстрактных синтаксических деревьев до проверки модели. Интегрировать анализ в различные условия можно при помощи развитой сервисной модели. Реализация этих элементов осуществима при внедрении в этап чтения единого языкового базиса, допускающего хранение обобщенных синтаксических и семантических структур. Промежуточное представление, совмещающее преимущества низкоуровневого ассемблера и абстрактных синтаксических деревьев, дает возможность переключать используемые семантики в рамках одной программы, а гипервизор и виртуальные машины обеспечивают запуск внутрипроцедурного и межпроцедурного видов языково-независимого анализа. Гибридный решатель формирует специальные аналитические представления для работы абстрактной интерпретации, проверки модели через SMT-решатели, а также символьного исполнения. В сочетании с техниками по пробному запуску компиляторов, настройке "гибких таргетов" и перехвату вызовов, это позволяет достигнуть высокого качества анализа гетерогенных промышленных проектов. Целью работы является разработка методологии проведения статического анализа для комплексной технологии программирования на базе языков C, C++, РуСи с учетом требований о взаимодействии частей программного комплекса, полноценной поддержке различных языков программирования и их применении в одном контексте. Научная новизна работы заключается в описании новых способов чтения, обработки и анализа исходных текстов. Теоретическая значимость - в процессах, складывающихся из сочетания алгоритмов, архитектурных и технических решений, а также опыта исправления возникающих проблем. Практическая значимость - в реализации подхода в промышленном статическом анализаторе кода, который может использоваться практически любыми организациями, занимающимися программированием. В работе используются фундаментальные достижения информатики и программной инженерии. Анализ основывается на абстрактной интерпретации, символьном исполнении и аппарате Satisfiability Modulo Theories (SMT). Промежуточное представление использует теорию компиляторов. Результатом исследования является поддерживающая различные сервисные модели архитектура статического анализатора, принципы работы модуля чтения, промежуточное представление, фреймворк гипервизора и виртуальных машин, архитектура гибридного решателя, а также их непосредственная реализация на языке C++. Проведенная апробация показывает, что разработанный по описанной схеме анализатор демонстрирует высокий уровень обнаружения дефектов, адаптивен к среде, имеет почти линейную масштабируемость, устойчив к изменениям сетевых условий. | ru_RU |
dc.description.abstract | The fast development of computers led to reaching physical limitations that prevent further increase in Central Processing Unit (CPU) performance. In response to this problem, the industry started using software and hardware systems based on parallel, heterogeneous computations with specialized processors. That increased the complexity of the software and its quality assurance processes. One possible solution is the transition to complex development technologies that would cover the complete software life cycle. In them, the static analyzer might become the storage and the processor of semantic data, switching from simple defect search to a mixture of continuous architectural, documentation, dependency, and import checks. By doing that, the analyzer might get the central role in modernized development infrastructure. However, a new method for their construction is required. The objective of this research is the methodology of static analyzer development. A subject is an approach to their creation which puts language agnosticism, hybridity and integrations in the foreground. Language agnosticism allows for analyzing relationships of programs in different languages. Hybridity implies the support of different analysis methods - from abstract syntax tree inspection to model checking. The integration enables the analyzer to solve problems in varying environments without losing precision. Implementation of these elements is possible with the unified language basis, permitting the use of generalized syntax and semantic structures. Intermediate representation blends the advantages of low-level assembly with abstract syntax trees and gives an ability to alter language semantics in the application. The hypervisor and virtual machines add the ability to run intra-procedural and inter-procedural types of language-agnostic analyses. A hybrid solver generates analytical models which facilitate the use of abstract interpretation, model checking and symbolic execution. Combined with the abilities to perform "probing" on compilers, setting up "flexible targets" and intercepting compiler calls, it is possible to achieve high quality heterogeneous industrial project analysis. The research is aimed at making the static analysis methodology for complex development technologies with the support of C, C++ and RuC, complying with the requirements of cross-tool interoperation and support of different languages in one context. The novelty is in the description of new parsing, processing, and analysis methods reaching these goals. Theoretical influence is in the combination of algorithms, architectural and technical solutions, as well as the experience in solving development issues. Practical influence is in the implementation of an industrial static analyzer, which can be used by almost any organization involved in programming. The paper uses fundamental concepts of informatics and software engineering. The analysis is based on abstract interpretation, symbolic execution and the Satisfiability Modulo Theories machinery. Intermediate representation uses compiler theory. Integrations are based on network optimization principles. The main outcome is a developed architecture of a static analyzer supporting various service models, novel principles of parsing, the language-agnostic intermediate representation, the virtual machine framework, and the scheme of a hybrid solver, all implemented in C++. The evaluation shows that the analyzer demonstrates a high level of defect detection. It is adapting to the environment, is linearly scalable and is network failure-resistant. | en_GB |
dc.language.iso | ru | |
dc.subject | статический анализ | ru_RU |
dc.subject | многоязычность | ru_RU |
dc.subject | комплексная технология программирования | ru_RU |
dc.subject | интеграции | ru_RU |
dc.subject | гибридный решатель | ru_RU |
dc.subject | промежуточное представление | ru_RU |
dc.subject | midair | ru_RU |
dc.subject | equid | ru_RU |
dc.subject | библиотека удаленного доступа | ru_RU |
dc.subject | сервер анализа | ru_RU |
dc.subject | static analysis | en_GB |
dc.subject | language agnosticism | en_GB |
dc.subject | language independency | en_GB |
dc.subject | complex programming technology | en_GB |
dc.subject | complex development technology | en_GB |
dc.subject | integrations | en_GB |
dc.subject | hybrid solver | en_GB |
dc.subject | intermediate representation | en_GB |
dc.subject | midair | en_GB |
dc.subject | equid | en_GB |
dc.subject | remote access | en_GB |
dc.subject | analysis server | en_GB |
dc.title | Hybrid language-independent static analysis as an element of complex programming technology | en_GB |
dc.title.alternative | Гибридный языково-независимый статический анализ как элемент комплексной технологии программирования | ru_RU |
Appears in Collections: | DOCTORAL STUDIES |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
Mensikov_M.A._VKR_2022.pdf | Article | 1,86 MB | Adobe PDF | View/Open |
Akt_o_vnedrenii.pdf | Article | 988,13 kB | Adobe PDF | View/Open |
reviewSV_otzyv_VKR_Mensikov.pdf | ReviewSV | 99,32 kB | Adobe PDF | View/Open |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.