SCI Библиотека
SciNetwork библиотека — это централизованное хранилище научных материалов всего сообщества... ещё…
SciNetwork библиотека — это централизованное хранилище научных материалов всего сообщества... ещё…
В настоящее время ключевую роль в разработке программного обеспечения играет программная инженерия, одним из критерия развитости которой является изучение ее фактологии и различных научно-практических закономерностей. Важным аспектом данной области является логика выполнения программ, оперирующая внутренними данными, и, в частности – константными значениями, выявление закономерностей в которых и актуализирует данное исследование. В качестве основных применений данной закономерности можно отметить такие, как получение фундаментальных знаний об алгоритмах, создание новых и расширение существующих метрик оценки и сравнения программного кода, развитие методов его оптимизации, применение в генетическом программировании и др.
Целью настоящей статьи получение частотного распределения константных значений в исходном коде программ на языке программирования C. Сущность представленного подхода заключается в создании метода статистического анализа текста исходных кодов программ, содержащихся в датасете ExeBench (который состоит из огромного количества исходного кода функций на языке программирования C, их ассемблерного кода для различных процессорных архитектур, ошибок компиляции и другой информации). Предложенный метод базируется на применении алгоритмов лексического и синтаксического разбора функций исходного кода, семантического определения типов констант, преобразования записи символов языка программирования в соответствующие числовые или строковые значения.
Метод имеет реализацию в виде программного средства на языке программирования Python, приведенного в виде интуитивно понятного псевдокода. Эксперименты с применением данного прототипа позволили получить искомое распределение константных значений для исходного кода программ на языке программирования C. Анализ полученных результатов позволил сделать ряд важных теоретико-практических выводов касательно наиболее часто используемых констант, соответствия полученного распределения закону Ципфа и близость к показательной функции, аномального появления ряда констант в Топ-50 и др. Научная новизна предложенного подхода заключается в том, что распределение константных значений для исходного кода программ на языке программирования C получено впервые.
Теоретическая значимость состоит в получении новых фундаментальных знаний касательно особенностей и закономерностей конструкций исходного кода, которые могут быть расширены и на другие языки программирования.
Практическая значимость заключается в применении распределения для большого спектра задач, включая авторский генетический реверс-инжиниринг, который сам по себе является качественно новым направлением.
Актуальность темы обосновывается отсутствием методологии реверс-инжиниринга программного обеспечения, необходимой для разрешения следующего научного противоречия области (как противопоставления потребности vs возможности): с одной стороны поиск уязвимостей наиболее эффективен в тех представлениях программы, в которых они были внедрены (например, исходный код, алгоритмы или архитектура); с другой стороны, для анализа имеется, как правило, лишь машинный код, слабо подходящий для выявления высокоуровневых уязвимостей (т. е. из более ранних представлений). Созданию составляющих данной методологии (концепции, модели, метода, алгоритмов, метрики, а также их реализаций) и посвящено основное авторское исследование, заключительный этап которого приводится в статье.
Целью настоящей статьи является обсуждение 25 проблемных вопросов (так называемая научная дискуссия), возникших в основном исследовании, посвященном развитию направления реверс-инжиниринга программного обеспечения на базе генетических алгоритмов. Основным применением результатов исследования является как получение представления программы, подходящего для экспертного (и иного) анализа на предмет наличия в нем уязвимостей, так и их непосредственный поиск встроенным сигнатурным методом. При этом разрешение даже части вопросов позволит существенно повысить эффективность такого генетического реверс-инжиниринга.
В работе использованы следующие методы: анализ результатов основного исследования для выделения проблемных вопросов, синтез путей их разрешения, а также систематизация и балльное сравнение вопросов с позиции путей устранения для общей оценки завершенности научной работы. Детальное изучение причин возникновения каждого из вопросов позволило определить пути их разрешения, реализуемость которых обосновывает и результаты основного исследования. В частности, проблемные вопросы базируются как на отсутствии одних теоретических инструментов, необходимых для генетического реверс-инжиниринга, так и на недостаточной практической эффективности других.
Научная новизна проблемных вопросов заключается в том, что практически каждый из них озвучен впервые.
Теоретическая значимость: развитие каждого проблемного вопроса может как открыть отдельное научное исследование (или даже направление), так и получить новые значимые результаты.
Практическая значимость заключается в возможности создания программных решений по разрешению выявленных вопросов, которые могут быть также применены и для смежных задач.
В работе представлена эффективная реализация банка гамматон-фильтров (БГФ) на основе неравнополосного косинусно-модулированного банка фильтров (НКМБФ), использующего фазовое преобразование. Рассмотрены примеры практических задач, в которых применяется банк гамматон-фильтров, проанализированы его основные особенности и недостатки. Приведено описание равнополосного косинусно-модулированного банка фильтров, а также показан процесс синтеза НКМБФ из его равнополосного аналога при помощи фазового преобразования. Разработан оптимизационный метод проектирования фильтра-прототипа НКМБФ для аппроксимации частотных характеристик БГФ. В основе метода лежит мультипликативная модель импульсной характеристики фильтра-прототипа, использующая логистические сигмоидальные функции. Суть предлагаемого метода заключается в оптимизации фильтра-прототипа с целью минимизации среднеквадратичной ошибки между АЧХ БГФи НКМБФ для каждого канала. Выполнена программная реализация на языке Python с использованием библиотеки PyTorch. Проведены экспериментальные исследования предложенного метода. Результаты экспериментов показали, что НКМБФ можно использовать для аппроксимации частотных характеристик БГФ, а результирующая АЧХ имеет монотонные спады за счёт использования логистических сигмоидальных функций. Проведён анализ зависимости результирующей ошибки аппроксимации частотных характеристик банка гамматон-фильтров от количества сигмоид, используемых для синтеза фильтра-прототипа НКМБФ на базе мультипликативной модели импульсной характеристики. Выполнен анализ вычислительной сложности НКМБФ, показано как зависит число операций сложения и умножения от длины импульсной характеристики фильтра-прототипа и числа каналов банка фильтров. Сделан вывод, что использование НКМБФ для реализации банка гамматон-фильтров позволяет существенно уменьшить вычислительные затраты на реализацию гамматон-фильтров по сравнению с прямой реализацией.
Статья посвящена выбору технологического подхода к задаче переноса Windows-приложения, разработанного с использованием некроссплатформенной библиотеки компонентов пользовательского интерфейса и имеющего плагинную архитектуру, на операционную систему Linux. Описывается подход, который может применяться в случаях, когда гибкость и низкие накладные расходы более важны, чем возможность использования готового решения. В работе использованы методы системного анализа. Рассмотрены существующие варианты готовых решений и их элементов. Итоговое решение состоит в использовании разработки, управляемой моделями, для разделения компонентов, специфичных для платформы и независимых от нее, хорошо определенными программными интерфейсами. Разработанный вариант технологии порождения исходного кода из декларативного описания модели объектно-ориентированных интерфейсов позволяет организовать взаимодействие объектов, разделенных границей модулей, компиляторов и библиотек времени выполнения. С использованием стека технологий XML обеспечены валидация, автодополнение и преобразование декларативного описания модели в исходный код на языке С++. Представление интерфейсов основано на таблицах виртуальных методов, каждый из которых является функцией в стиле C. В качестве ссылки на интерфейс объекта используется структура, содержащая указатель на объект и указатель на таблицу виртуальных методов. Для каждого интерфейса генерируются определения функций, описания структуры таблицы виртуальных методов и ссылки на интерфейс, обертки для ссылок и базовые классы реализаций на C++. Технология успешно использована при разработке геоинформационной системы INTEGRO.
В работе рассмотрена проблема выбора оптимального режима видеомониторинга при использовании моделей нейронных сетей в качестве распознавателя, когда на видеопотоке в разные моменты времени эффективнее оказываются разные модели. Задачи видеомониторинга различные, при этом условия получения данных отличаются, что можно выразить в понятии сложности распознавания. Оценка сложности распознавания в мониторинге позволяет сэкономить вычислительные ресурсы и тем самым удешевить их внедрение и использование. Оценив среднюю сложность распознавания, можно выбрать оптимальный по скорости и достоверности режим распознавания при постобработке, когда время на нее ограничено. Решение проблемы показано на задаче детектирования объектов двух типов с использованием моделей YOLOv5, когда видеопоток должен обрабатываться в реальном времени с минимальной задержкой при выдаче результата после каждого кадра. Проанализированы метрики, используемые при детектировании объектов, на предмет возможности оценки достоверности результатов, когда нет конечных сведений о том, что это за объект. Выбран критерий эффективности на основе суммы компонент F1-score и затрат на вычислительные ресурсы, позволяющий оценить эффективность модели для конкретных объектов. Показана зависимость критерия эффективности от F1-score для двух моделей. Приведены результаты тестирования двух моделей и динамического режима, основанного на выборе подходящей модели в зависимости от объекта на входе. Описаны ограничения подхода, который может быть использован только на потоковом распознавании, когда поступающие на распознавание изображения лишь немного отличаются от предыдущих. Сделан вывод о применимости подхода для ряда задач при соблюдении ограничений.
Рассмотрена тематика применения SQL-запросов для веб-сервисных приложений. Отмечено, что базы данных NewSQL поддерживают обмен различными видами данных, а также обмен данными через XML, JSON и др., работу с облачными веб-технологиями, функционирующими в режимах реального времени (real-time) и потоковой передачи данных (streaming), фиксируют текущие и пространственные данные. Подчёркнуто, что модуль обработки данных и связанный с ним конструктор запросов могут иметь различный уровень поддержки источников данных. Многомодульные базы данных (multi-model databases), которые реализуются на базе использования только интегрированного сервера, обеспечивающего поддержку нескольких типов моделей данных, - это шаг к дальнейшей эволюции концепции баз данных.
Рассмотрены преимущества и недостатки микросервисной архитектуры для современных приложений. Отмечено, что широкое распространение микросервисной архитектуры обусловлено развитием облачных технологий и сервисов, способствующих быстрому и несложному обновлению различного функционала. Выявлено, что особенность использования микросервисов заключается в отсутствии рисков для всего проекта в случае нарушения работы одного сервиса.