Сбор метрик программного кода для анализа его уязвимостей
Автор: Попов Г.А., Жунва М.М.
Журнал: НБИ технологии @nbi-technologies
Рубрика: Информационные технологии в безопасности и телекоммуникациях
Статья в выпуске: 4 т.18, 2024 года.
Бесплатный доступ
Сбор метрической информации о коде является одним из наиболее доступных методов статического анализа, позволяющим выявлять потенциальные ошибки и уязвимости в программном обеспечении. Основные метрики, используемые в этом процессе, включают количество строк комментариев, иерархию наследования, цикломатическую сложность и вычислительную сложность. Количество комментариев помогает оценить понятность кода, в то время как сложные схемы наследования могут привести к трудностям в поддержке и увеличению вероятности ошибок. Цикломатическая сложность, предложенная Томасом Мак-Кейбом, измеряет количество независимых путей выполнения в коде, что позволяет оценить его сложность и потенциальные риски. Метрики Холстеда, основанные на статистическом анализе операторов и операндов, помогают предсказать количество ошибок в программе. Важно отметить, что сбор метрической информации не гарантирует отсутствие ошибок, а лишь указывает на участки кода, требующие внимания. Процесс сбора метрик прост в реализации и не требует значительных усилий со стороны разработчиков, что делает его ценным инструментом для повышения качества программного обеспечения. В заключение, использование метрических данных в анализе кода способствует более эффективному выявлению и устранению потенциальных проблем в программных системах.
Метрическая информация, статический анализ кода, ошибки программного обеспечения, метрики холстеда, анализ кода
Короткий адрес: https://sciup.org/149147334
IDR: 149147334 | УДК: 004.056 | DOI: 10.15688/NBIT.jvolsu.2024.4.4
Collecting metrics of software code to analyze its vulnerabilities
Collecting metric information about the code is one of the most accessible methods of static analysis, which allows you to identify potential errors and vulnerabilities in the software. The main metrics used in this process include the number of comment lines, inheritance hierarchy, cyclomatic complexity, and computational complexity. The number of comments helps to assess the clarity of the code, while complex inheritance schemes can lead to difficulties in support and increase the likelihood of errors. Cyclomatic complexity, proposed by Thomas McCabe, measures the number of independent execution paths in the code, which allows you to assess its complexity and potential risks. Halsted metrics, based on statistical analysis of operators and operands, help predict the number of errors in a program. It is important to note that collecting metric information does not guarantee the absence of errors, but only indicates code sections that require attention. The process of collecting metrics is easy to implement and does not require significant efforts on the part of developers, which makes it a valuable tool for improving the quality of software. In conclusion, the use of metric data in code analysis contributes to more effective identification and elimination of potential problems in software systems.
Текст научной статьи Сбор метрик программного кода для анализа его уязвимостей
DOI:
В современном мире мобильная связь – это не просто коммуникация, а основа доступа к интернету и бесчисленным сервисам. Однако, нестабильный сигнал, обусловленный местоположением абонента, состоянием инфраструктуры оператора и погодными условиями, постоянно снижает качество и скорость работы этих сервисов, приводя к сбоям или полному отсутствию доступа к сети.
При исследовании мобильных сетей в лабораторных комплексах, велика вероятность недостоверности полученных результатов, так как невозможно отразить весь спектр условий работы сети в реальном времени. Поэтому разработка приложения для сбора и анализа данных, получаемых от пользователей различных операторов, востребована на сегодняшний день. Использование данного приложения демонстрирует ряд преимуществ:
-
1) предоставляется доступ к данным с пользовательских устройств, что гарантирует получение реальных результатов в данный момент времени в точке сбора информации;
-
2) существенно упрощается процесс сбора и анализа данных, за счет автоматических функций приложения;
-
3) охватывается широкий географический диапазон с учетом различных условий рельефа и местности [3].
Приложение призвано предоставить пользователям независимую оценку качества мобильной связи различных операторов, основанную на реальных данных и помогающую выбрать наиболее надежного провайдера.
Вычислительные возможности современных смартфонов и API Android открывают новые перспективы для сбора данных о качестве мобильной связи. Доступ к информации о типе сигнала (2G/3G/4G), уровню сигнала (RSPS), операторе, геолокации, а также возможности хранения и передачи данных на сервер для последующей визуализации на интерактивной карте делают мобильные устройства эффективным инструментом мониторинга [2].
При запуске приложения автоматически включается процесс Listener, который фиксирует изменение сигнала. При изменении сигнала, данные сразу отображаются на экране пользователя. Главный экран приложения (рис. 1) работает в режиме реального времени, постоянно отображая актуальные данные.
Последнее обновление: 13:7:56 48.6422531 | 44.4244363
4G | MegaFon pre-5G
-
-103 dBm
4G | Beeline
-
-97 dBm
Сохранить в лог
Рис. 1. Интерфейс используемой программы
Android API [1] предоставляет все необходимое для сбора подробных данных о качестве мобильной связи:
-
– функции CellSignalStrengthLte.getDbm() возвращают уровень сигнала (RSRP) в децибелах;
-
– TelephonyManager.getNetworkType() определяет тип сети (2G, 3G, 4G, 5G);
-
– SubscriptionInfo.getCarrierName() идентифицирует оператора;
– fusedLocationClient.getFusedLocationClient() определяет текущее местоположение устройства.
Рисунок 2 демонстрирует структуру данных, сохраняемых приложением в формате запроса, обеспечивающем простую и эффективную обработку информации. Это позволяет проводить углубленный анализ качества связи и автоматизировать построение отчетов. Интуитивно понятный интерфейс упрощает экспорт и импорт данных.
getData = { "latituede" : "48.641549", "longitude" : "44.4288946", "operatorName" : "Beeline", "levelDbm" : "-104", "timestamp" : "1728297748", "deviceName" : "RMX3630",
Рис. 2. Пример сохраняемых данных
В эксперименте участвовали сети двух операторов – Мегафон и Билайн. Измерение уровня сигнала осуществлялось с помощью мобильного приложения вдоль траектории длиной 11 км (дискретизация 1 км). На рисунке 3 наглядно представлены результаты измерений, отображающие пространственную зависимость уровня сигнала. Наличие преград, характер местности и погодные условия так же учитывались на протяжении всего маршрута.
На рисунке 4 представлен маршрут, по которому проводились измерения уровня сигнала обоих операторов связи с двух разных мобильных устройств.
Рис. 4. Исследуемый маршрут
В ходе эксперимента было выявлено, что на протяжении всего пути мобильный оператор Билайн обеспечивал более стабильный сигнал, что в целом наблюдалось в режиме реального времени. Разработанное приложение позволило собирать данные сразу с обоих уст-
Рис. 3. Сравнение уровня сигнала мобильных операторов связи
ройств одновременно и формировало собственную базу для создания точного географического покрытия мобильных операторов на всем пути. Благодаря данному приложению возможно реализовать географические карты, отображающие результаты измерений уровня сигнала различных операторов, что позволит пользователям выбирать провайдера с учетом реального качества связи в конкретной локации.
Список литературы Сбор метрик программного кода для анализа его уязвимостей
- Arora S., Barak B.Computational Сomplexity: A Modern Approach. Cambridge University Press, 2009. 489 p. DOI: 10.1017/ CBO9780511804090.
- Floyd R.W. Assigning Meanings to Programs. Dordrecht, Springer Netherlands, 1993, pp. 65-81. DOI: 10.1007/978-94-011-1793-7_4.
- Halstead M.H. Elements of Software Science. New York, North Holland, 1979. 127 p.