Статический анализ исходного кода в обучении и разработке программного обеспечения | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №22 (208) июнь 2018 г.

Дата публикации: 02.06.2018

Статья просмотрена: 923 раза

Библиографическое описание:

Демидов, П. Д. Статический анализ исходного кода в обучении и разработке программного обеспечения / П. Д. Демидов. — Текст : непосредственный // Молодой ученый. — 2018. — № 22 (208). — С. 38-39. — URL: https://moluch.ru/archive/208/50975/ (дата обращения: 18.12.2024).



При создании любой системы раннее обнаружение и устранение ошибок значительно облегчает дальнейшую работу.

В разработке ПО кроме модульного и функционального тестирования для повышения качества продукта могут применяться практики статического анализа кода, которые являются самым простым и эффективным способом предотвращения дефектов и выявления несоответствий исходного кода принятому стандарту оформления.

Статический анализ можно рассматривать как автоматизированный процесс обзора кода. Инструменты статического анализа непрерывно обрабатывают исходные тексты программ и выдают программисту рекомендации обратить повышенное внимание на определенные участки кода. [1]

Виды статического анализа

  1. Статический анализ на основе шаблонов

В своей простейшей форме инструмент статического анализа сканирует код и проверяет его на один или несколько наборов правил. Например, разработчики иногда пишут "\0" вместо нулевого символа '\0'. Эта ошибка может привести к повреждению памяти и сбою программы. Инструмент статического анализа находит эти шаблоны в коде и сообщает о возможных проблемах. Такой статический анализ известен как статический анализ на основе шаблонов.

  1. Анализ потока

Анализ потока несколько отличается. Этот тип анализа кода проверяет наличие проблемных конструкций на основе наборов правил, но инструменты анализа потока также моделируют пути принятия решений, что позволяет углубиться в приложение и сильно расширить возможности поиска дефектов, таких как нулевые указатели, переполнение буфера и дефекты безопасности. Особенность анализа потока в том, что несмотря на эффективное обнаружение реальных ошибок периодически происходят ложные срабатывания.

  1. Дополнительные типы анализа

Существуют и другие типы статического анализа, которые используются для достижения разных целей. Например, инструменты анализа метрик измеряют характеристики кода, такие как количество строк кода и его сложность. Инструменты анализа покрытия дают информацию о том, насколько качественно код покрыт модульными и интеграционными тестами. При совместном использовании в рамках автоматического тестирования эти типы анализа позволяют понять, насколько приложение безопасно и надежно.

Преимущества автоматизированного статического анализа

Запуск статического анализа на отдельных рабочих станциях даст некоторое преимущество для небольшой команды или проекта, однако в крупных организациях статический анализ должен быть также автоматизирован в рамках ночных сборок и непрерывной интеграции. При внедрении в качестве неотъемлемой части процесса разработки статический анализ предоставляет ряд преимуществ, в том числе следующие:

  1. Более быстрый цикл разработки

Последовательный статический анализ с ранних этапов проекта позволяет находить и исправлять системные дефекты, когда стоимость исправления минимальна. Иногда устранение некоторых серьезных ошибок на поздних этапах разработки затруднено или невозможно, поэтому найти их на раннем этапе имеет решающее значение.

Хорошие инструменты статического анализа также содержат описательную документацию о стандартах программирования, которая расширяет знания программистов. Со временем соблюдение этих стандартов улучшает качество кода и скорость его написания.

  1. Более низкая плотность дефектов

Статический анализ помогает найти и исправить дефекты на ранней стадии, что может предотвратить повторение системных дефектов в дальнейшем. С помощью раннего обнаружения можно более легко реализовать политику предотвращения дефектов, которая уменьшает количество дефектов в течение жизненного цикла разработки.

Применение инструментов статического анализа вобучении студентов

Инструменты статического анализа могут находить применение и в обучении. В качестве примера можно рассмотреть интегрированную среду обучения ВоГУ. [2] Одним из ее компонентов является дистанционный практикум по программированию с автоматической проверкой решений. [3] Система позволяет студентам и другим пользователям проверить свои знания в разных областях программирования решением задач. Решение будет признано правильным только в том, случае, если результат выполнения программы, отправленной пользователем, будет совпадать с ожидаемым. Помимо этого, решение анализируется по таким критериям, как затраты оперативной памяти и процессорного времени.

Результат проверки решения в системе позволяет сделать выводы о корректности его вывода и оптимальности использования ресурсов, однако не дает информации о безопасности решения и соответствия стиля кода стандартам, принятым в индустрии. Эта информация может быть восполнена средствами статического анализа. Электронный ресурс содержит более 1100 заданий разной тематики и сложности и принимает решения на многих известных языках программирования. [4] В связи с этим, актуальность имеют многоязычные статические анализаторы. Они позволяют выполнять статический анализ исходных текстов программ на разных языках программирования с использованием универсального интерфейса ввода/вывода.

Заключение

Статический анализ кода является важной частью обеспечения правильного функционирования приложения. Он не только повышает общую производительность команды разработчиков, но и снижает риски, связанные с выпуском потенциально опасного программного обеспечения. Хоть инструменты статического анализа и являются важной частью инфраструктуры разработки, она не должна ограничиваться только ими. Статический анализ находит применение и в обучении для развития у студентов навыков написания кода с минимальным количеством дефектов и соблюдения стандартов его оформления.

Литература:

  1. Статический анализ кода // PVS-Studio. — URL: https://www.viva64.com/ru/t/0046/ (дата обращения: 27.05.2018).
  2. Ржеуцкая С. Ю. Междисциплинарное взаимодействие в интегрированной информационной среде обучения технического вуза / С. Ю. Ржеуцкая, М. В. Харина // Открытое образование. — № 2. — 2017. — С. 21–28.
  3. Андрианов, И. А. Архитектура электронного ресурса для обучения информационно-коммуникационным технологиям / И. А. Андрианов, И. А. Петров, С. Ю. Ржеуцкая // Вузовская наука — региону: материалы шестой всерос. науч.-техн. конф. — Вологда: ВоГТУ, 2008. — С. 44–47.
  4. Андрианов И. А., Разработка и особенности использования дистанционного лабораторного практикума по программированию / И. А. Андрианов, Н. О. Менухова // Современное общество, образование и наука: Сб. науч. тр. по материалам Междунар. науч.-практ. конф. — 2012. — С. 10–12.
Основные термины (генерируются автоматически): статический анализ, анализ потока, дефект, инструмент, исходный текст программ, основа шаблонов, раннее обнаружение, статический анализ кода.


Похожие статьи

Особенности предобработки данных для применения машинного обучения

Построение информационных моделей для описания объектов и систем в английском языке

Сравнительный анализ каскадной и V-образной методологий разработки программного обеспечения

Методики оценивания рисков и их программные реализации в компьютерных сетях

Структурный подход к применению и компьютерной реализации различных видов динамических моделей

Микросервисная архитектура при решении задач машинного обучения

Типовые задачи по тестированию программного обеспечения с использованием диаграмм причин-следствий в процессе обучения студентов

Методика работы над алгоритмической задачей в процессе обучения школьников информатике

Компьютерные технологии как инструментарий обучения физике на лабораторной работе

Предельная эффективность и параметрический анализ в задачах линейного программирования

Похожие статьи

Особенности предобработки данных для применения машинного обучения

Построение информационных моделей для описания объектов и систем в английском языке

Сравнительный анализ каскадной и V-образной методологий разработки программного обеспечения

Методики оценивания рисков и их программные реализации в компьютерных сетях

Структурный подход к применению и компьютерной реализации различных видов динамических моделей

Микросервисная архитектура при решении задач машинного обучения

Типовые задачи по тестированию программного обеспечения с использованием диаграмм причин-следствий в процессе обучения студентов

Методика работы над алгоритмической задачей в процессе обучения школьников информатике

Компьютерные технологии как инструментарий обучения физике на лабораторной работе

Предельная эффективность и параметрический анализ в задачах линейного программирования

Задать вопрос