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

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

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

Автор:

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

Опубликовано в Молодой учёный №2 (240) январь 2019 г.

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

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

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

Демидов П. Д. Статический и динамический анализ исходного кода // Молодой ученый. — 2019. — №2. — С. 2-4. — URL https://moluch.ru/archive/240/55456/ (дата обращения: 18.11.2019).



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

Статический идинамический анализ

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

Статический анализ кода может помочь в процессе код-ревью благодаря:

  1. обнаружению областей в коде, которые необходимо реорганизовать и упростить;
  2. поиску областей кода, которые могут нуждаться в дополнительном тестировании или более глубоком рассмотрении;
  3. выявлению проблем проектирования, таких как цикломатическая сложность, и помощь в снижении сложности кода, улучшении удобства обслуживания;
  4. выявление потенциальных проблем с качеством программного обеспечения до его запуска в промышленную эксплуатацию.

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

Динамический анализ может дать вам следующие показатели:

  1. потребляемые ресурсы — время выполнения программы в целом или ее модулей в отдельности, количество внешних запросов (например, к базе данных), количество используемой памяти и другие ресурсы;
  2. цикломатическая сложность, степень покрытия кода тестами и другие метрики программы;
  3. программные ошибки — деление на ноль, разыменование нулевого указателя, утечки памяти, состояние гонки
  4. уязвимости в программе.

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

Сильные ислабые стороны статического идинамического анализа

Статический анализ с его видимостью в виде «белого ящика», безусловно, является более тщательным подходом и может также оказаться более экономичным с возможностью обнаружения ошибок на ранней стадии жизненного цикла разработки программного обеспечения. Например, если ошибка обнаружена на во время статического анализа — это может быть относительно дешево исправить. Если бы ошибка оказалась в системе, затраты увеличились бы. Статический анализ также может выявить будущие ошибки, которые не возникнут при динамическом тестировании. Динамический анализ, с другой стороны, способен выявлять тонкие недостатки или уязвимости, слишком сложные для одного лишь статического анализа, и также может быть более целесообразным методом тестирования. Динамический анализ, однако, обнаружит дефекты только в той части кода, которая фактически выполняется. Предприятие должно взвесить эти соображения с учетом сложности их собственной ситуации. Тип приложения, время и ресурсы компании являются одними из основных факторов. Уровень технического долга, который предприятие готово взять на себя, также может быть измерен. Определенное количество технического долга может быть взято на себя, если финансовые выгоды от победы над конкурентом на рынке перевешивают потенциальную экономию от более тщательно протестированного кода. Хотя и у статических, и у динамических тестов есть свои недостатки, предприятие не должно стоять перед выбором. В то время как статический анализ можно считать превосходным методом тестирования, это не обязательно означает, что он должен автоматически выбираться вместо динамического анализа в любой ситуации, когда возникает выбор.

Автоматизация анализа исходного кода

Хотя статический и динамический анализ можно выполнять вручную, они также могут быть автоматизированы. При грамотном использовании автоматизированные инструменты могут значительно повысить отдачу от инвестиций в тестирование. Инструменты автоматического тестирования являются идеальным вариантом в определенных ситуациях. Например, автоматизация может использоваться для проверки реакции системы на большое количество пользователей или для подтверждения того, что исправление ошибки работает должным образом. Она также помогает автоматизировать тесты, которые регулярно выполняются во время разработки продукта. Поскольку предприятие стремится обеспечить защищенность продукта во время его жизненного цикла, следует отметить, что панацея отсутствует. Ни статическое, ни динамическое тестирование сами по себе не могут обеспечить полную защиту. В идеале предприятие должно выполнять как статический, так и динамический анализ. Этот подход выиграет от синергетических отношений, существующих между статическим и динамическим тестированием. [3]

Заключение

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

Литература:

  1. Статический анализ кода // Википедия. URL: https://ru.wikipedia.org/wiki/Статический_анализ_кода (дата обращения: 8.01.2019).
  2. Динамический анализ кода // Википедия. URL: https://ru.wikipedia.org/wiki/Динамический_анализ_кода (дата обращения: 8.01.2019).
  3. Макконнелл С. Совершенный код. Мастер-класс / Пер. с англ. — М.: Издательско-торговый дом «Русская редакция»; СПб.: Питер, 2005. — 896 стр.
Основные термины (генерируются автоматически): динамический анализ, статический анализ, динамическое тестирование, программное обеспечение, время выполнения, FDA, жизненный цикл разработки, цикломатическая сложность, жизненный цикл, предприятие.


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

Статический анализ исходного кода в обучении и разработке...

Проверка корректности программного обеспечения. программное обеспечение, статический анализ, динамический анализ, ошибка, код программы, SMT

Процесс статического анализа. Статический анализ исходного кода в обучении и разработке программного обеспечения.

Методы верификации программного обеспечения

В настоящее время статические методы тестирование программного обеспечения лишены

На первых этапах разработки методы динамического анализа уместно употреблять на случаи

Статический анализ — группа методов, которые используют исходный код для...

Жизненный цикл организации на примере компании ОАО...

То есть жизненный цикл организации отражает ее эволюцию от замысла до исчезновения организации как отдельной сущности.[4].

Модель жизненного цикла позволяет прогнозировать изменения, ожидаемые в организации, стоящей на любом из этапов развития.

Исследование стратегий тестирования программного...

Тестирование программного обеспечения является процессом поиска ошибок в

Сложность тестирования в целом. Тестирование в реальных условиях, как правило

Тестирование играет жизненно важную роль в разработке качественного программного...

Обзор различных средств фаззинга как инструментов...

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

Проблема применения математического моделирования...

 программу обеспечения и программных, плановых документов (Плановые, программные документы должны быть взаимосвязаны и определять контрольные точки, которые будут обеспечивать возможность оценки выполнения требований к качеству комплекса.).

Концепция моделирования жизненного цикла создания...

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

Обеспечение процесса управления качеством экономической...

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

Когда прекращать тестирование программ? Критерии...

Тестирование программного обеспечения — это процесс исследования, испытания

Тестированию подвергался не уже готовый продукт, а продукт в процессе всего цикла

Все технологии тестирования можно разделить на две большие группы: статическое и...

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

Статический анализ исходного кода в обучении и разработке...

Проверка корректности программного обеспечения. программное обеспечение, статический анализ, динамический анализ, ошибка, код программы, SMT

Процесс статического анализа. Статический анализ исходного кода в обучении и разработке программного обеспечения.

Методы верификации программного обеспечения

В настоящее время статические методы тестирование программного обеспечения лишены

На первых этапах разработки методы динамического анализа уместно употреблять на случаи

Статический анализ — группа методов, которые используют исходный код для...

Жизненный цикл организации на примере компании ОАО...

То есть жизненный цикл организации отражает ее эволюцию от замысла до исчезновения организации как отдельной сущности.[4].

Модель жизненного цикла позволяет прогнозировать изменения, ожидаемые в организации, стоящей на любом из этапов развития.

Исследование стратегий тестирования программного...

Тестирование программного обеспечения является процессом поиска ошибок в

Сложность тестирования в целом. Тестирование в реальных условиях, как правило

Тестирование играет жизненно важную роль в разработке качественного программного...

Обзор различных средств фаззинга как инструментов...

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

Проблема применения математического моделирования...

 программу обеспечения и программных, плановых документов (Плановые, программные документы должны быть взаимосвязаны и определять контрольные точки, которые будут обеспечивать возможность оценки выполнения требований к качеству комплекса.).

Концепция моделирования жизненного цикла создания...

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

Обеспечение процесса управления качеством экономической...

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

Когда прекращать тестирование программ? Критерии...

Тестирование программного обеспечения — это процесс исследования, испытания

Тестированию подвергался не уже готовый продукт, а продукт в процессе всего цикла

Все технологии тестирования можно разделить на две большие группы: статическое и...

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