Please use this identifier to cite or link to this item: http://hdl.handle.net/11701/39485
Full metadata record
DC FieldValueLanguage
dc.contributor.advisorПодкопаев Антон Викторовичru_RU
dc.contributor.advisorPodkopaev Anton Viktorovicen_GB
dc.contributor.authorМеньшиков Максим Александровичru_RU
dc.contributor.authorMensikov Maksim Aleksandrovicen_GB
dc.contributor.editorТерехов Андрей Николаевичru_RU
dc.contributor.editorTerehov Andrej Nikolaevicen_GB
dc.date.accessioned2023-04-06T21:47:26Z-
dc.date.available2023-04-06T21:47:26Z-
dc.date.issued2022
dc.identifier.other013800en_GB
dc.identifier.urihttp://hdl.handle.net/11701/39485-
dc.description.abstractБыстрое развитие компьютеров привело к тому, что микроэлектроника вплотную приблизилась к физическому пределу, препятствующему дальнейшему увеличению производительности процессоров. Ответом индустрии на эту проблему стало использование программно-аппаратных комплексов, основанных на параллельных, гетерогенных вычислениях со специализированными процессорами. Это значительно подняло сложность программного обеспечения и затруднило контроль его качества, который и так был непростой задачей, но теперь происходит в неоднородных условиях. Решением проблемы является переход на комплексные технологии разработки, которые будут покрывать весь жизненный цикл программного обеспечения. Статический анализ занимает в таких средах место хранилища и обработчика семантических данных программ, уходящего от обычного поиска дефектов к выполнению задач проектирования, документирования, контроля взаимосвязей, помощи в импорте и т.п. Тем самым анализаторы могут занять центральную роль в модернизирующейся инфраструктуре разработки. Для перехода к этому качеству необходим новый метод их построения. Объектами данного исследования являются методологии разработки статических анализаторов программного кода. Предмет исследования - подход к их созданию, выводящий на первый план языковую независимость, гибридность, возможности по интеграции. Языковая независимость позволяет в одном контексте читать и анализировать взаимосвязи программ, написанных на разных языках. Гибридность предполагает поддержку множества процедур анализа - от просмотра абстрактных синтаксических деревьев до проверки модели. Интегрировать анализ в различные условия можно при помощи развитой сервисной модели. Реализация этих элементов осуществима при внедрении в этап чтения единого языкового базиса, допускающего хранение обобщенных синтаксических и семантических структур. Промежуточное представление, совмещающее преимущества низкоуровневого ассемблера и абстрактных синтаксических деревьев, дает возможность переключать используемые семантики в рамках одной программы, а гипервизор и виртуальные машины обеспечивают запуск внутрипроцедурного и межпроцедурного видов языково-независимого анализа. Гибридный решатель формирует специальные аналитические представления для работы абстрактной интерпретации, проверки модели через SMT-решатели, а также символьного исполнения. В сочетании с техниками по пробному запуску компиляторов, настройке "гибких таргетов" и перехвату вызовов, это позволяет достигнуть высокого качества анализа гетерогенных промышленных проектов. Целью работы является разработка методологии проведения статического анализа для комплексной технологии программирования на базе языков C, C++, РуСи с учетом требований о взаимодействии частей программного комплекса, полноценной поддержке различных языков программирования и их применении в одном контексте. Научная новизна работы заключается в описании новых способов чтения, обработки и анализа исходных текстов. Теоретическая значимость - в процессах, складывающихся из сочетания алгоритмов, архитектурных и технических решений, а также опыта исправления возникающих проблем. Практическая значимость - в реализации подхода в промышленном статическом анализаторе кода, который может использоваться практически любыми организациями, занимающимися программированием. В работе используются фундаментальные достижения информатики и программной инженерии. Анализ основывается на абстрактной интерпретации, символьном исполнении и аппарате Satisfiability Modulo Theories (SMT). Промежуточное представление использует теорию компиляторов. Результатом исследования является поддерживающая различные сервисные модели архитектура статического анализатора, принципы работы модуля чтения, промежуточное представление, фреймворк гипервизора и виртуальных машин, архитектура гибридного решателя, а также их непосредственная реализация на языке C++. Проведенная апробация показывает, что разработанный по описанной схеме анализатор демонстрирует высокий уровень обнаружения дефектов, адаптивен к среде, имеет почти линейную масштабируемость, устойчив к изменениям сетевых условий.ru_RU
dc.description.abstractThe 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.isoru
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.subjectmidairru_RU
dc.subjectequidru_RU
dc.subjectбиблиотека удаленного доступаru_RU
dc.subjectсервер анализаru_RU
dc.subjectstatic analysisen_GB
dc.subjectlanguage agnosticismen_GB
dc.subjectlanguage independencyen_GB
dc.subjectcomplex programming technologyen_GB
dc.subjectcomplex development technologyen_GB
dc.subjectintegrationsen_GB
dc.subjecthybrid solveren_GB
dc.subjectintermediate representationen_GB
dc.subjectmidairen_GB
dc.subjectequiden_GB
dc.subjectremote accessen_GB
dc.subjectanalysis serveren_GB
dc.titleHybrid language-independent static analysis as an element of complex programming technologyen_GB
dc.title.alternativeГибридный языково-независимый статический анализ как элемент комплексной технологии программированияru_RU
Appears in Collections:DOCTORAL STUDIES

Files in This Item:
File Description SizeFormat 
Mensikov_M.A._VKR_2022.pdfArticle1,86 MBAdobe PDFView/Open
Akt_o_vnedrenii.pdfArticle988,13 kBAdobe PDFView/Open
reviewSV_otzyv_VKR_Mensikov.pdfReviewSV99,32 kBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.