Jump to content

Статический анализ программы

(Перенаправлено со статического анализатора )

В информатике статический анализ программ (также известный как статический анализ или статическое моделирование ) — это анализ компьютерных программ, выполняемый без их выполнения, в отличие от динамического анализа программ , который выполняется над программами во время их выполнения в интегрированной среде. [ 1 ] [ 2 ]

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

Обоснование

[ редактировать ]

Сложность анализа, выполняемого инструментами, варьируется от тех, которые рассматривают только поведение отдельных операторов и деклараций; [ 3 ] до тех, которые включают в свой анализ полный исходный код программы. Использование информации, полученной в результате анализа, варьируется от выявления возможных ошибок кодирования (например, инструмента lint ) до формальных методов , которые математически доказывают свойства данной программы (например, ее поведение соответствует поведению ее спецификации).

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

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

  1. Медицинское программное обеспечение США . Управление по санитарному надзору за качеством пищевых продуктов и медикаментов (FDA) определило использование статического анализа для медицинских устройств. [ 6 ]
  2. Ядерное программное обеспечение: В Великобритании Управление по ядерному регулированию (ONR) рекомендует использовать статический анализ систем защиты реакторов . [ 7 ]
  3. Авиационное программное обеспечение (в сочетании с динамическим анализом ). [ 8 ]
  4. Автомобили и машины (функциональная безопасность является неотъемлемой частью каждого этапа разработки автомобильной продукции, ISO 26262 , раздел 8).

Исследование, проведенное VDC Research в 2012 году, показало, что 28,7% опрошенных инженеров встраиваемого программного обеспечения используют инструменты статического анализа, а 39,7% планируют использовать их в течение 2 лет. [ 9 ] Исследование 2010 года показало, что 60% опрошенных разработчиков европейских исследовательских проектов хотя бы использовали базовые встроенные в IDE статические анализаторы. Однако лишь около 10% использовали дополнительный (и, возможно, более продвинутый) инструмент анализа. [ 10 ]

В индустрии безопасности приложений название «статическое тестирование безопасности приложений» также используется (SAST). SAST является важной частью жизненных циклов разработки безопасности (SDL), таких как SDL, определенный Microsoft. [ 11 ] и обычная практика в компаниях-разработчиках программного обеспечения. [ 12 ]

Типы инструментов

[ редактировать ]

OMG ( Object Management Group ) опубликовала исследование, касающееся типов анализа программного обеспечения, необходимых для измерения и оценки качества программного обеспечения . В этом документе «Как обеспечить отказоустойчивые, безопасные, эффективные и легко изменяемые ИТ-системы в соответствии с рекомендациями CISQ» описаны три уровня анализа программного обеспечения. [ 13 ]

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

Можно определить дальнейший уровень анализа программного обеспечения.

Миссия/Бизнес-уровень
Анализ, который учитывает условия, правила и процессы уровня бизнеса/миссии, которые реализованы в программной системе для ее работы в рамках деятельности уровня предприятия или программы/миссии. Эти элементы реализуются без ограничения одной конкретной технологией или языком программирования и во многих случаях распространяются на несколько языков, но статически извлекаются и анализируются для понимания системы для обеспечения выполнения миссии.

Формальные методы

[ редактировать ]

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

Путем прямого сведения к проблеме остановки можно доказать, что (для любого полного по Тьюрингу языка) обнаружение всех возможных ошибок времени выполнения в произвольной программе (или, в более общем плане, любого вида нарушения спецификации конечного результата программа) неразрешима : не существует механического метода, который всегда мог бы правдиво ответить, может ли произвольная программа выявлять или не выявлять ошибки во время выполнения. Этот результат восходит к работам Чёрча , Гёделя и Тьюринга в 1930-х годах (см.: Проблема остановки и теорема Райса ). Как и во многих неразрешимых вопросах, все же можно попытаться дать полезные приблизительные решения.

Некоторые из методов реализации формального статического анализа включают: [ 14 ]

Статический анализ на основе данных

[ редактировать ]

Статический анализ на основе данных использует обширные базы кода для определения правил кодирования и повышения точности анализа. [ 16 ] [ 17 ] Например, можно использовать все пакеты Java с открытым исходным кодом, доступные на GitHub, чтобы изучить хорошие стратегии анализа. Для вывода правил можно использовать методы машинного обучения. [ 18 ] Также можно извлечь уроки из большого количества прошлых исправлений и предупреждений. [ 16 ]

Исправление

[ редактировать ]

Статические анализаторы выдают предупреждения. Для определенных типов предупреждений можно разработать и внедрить методы автоматического исправления . Например, Логоззо и Болл предложили автоматизированные исправления для C# cccheck . [ 19 ]

См. также

[ редактировать ]
  1. ^ Вичманн, бакалавр; Каннинг, А.А.; Клаттербак, ДЛ; Уинсбарроу, Луизиана; Уорд, Нью-Джерси; Марш, DWR (март 1995 г.). «Промышленный взгляд на статический анализ» (PDF) . Журнал программной инженерии . 10 (2): 69–75. дои : 10.1049/sej.1995.0010 . Архивировано из оригинала (PDF) 27 сентября 2011 г.
  2. ^ Эгеле, Мануэль; Шольте, Теодор; Кирда, Энгин; Крюгель, Кристофер (5 марта 2008 г.). «Опрос по методам и инструментам автоматизированного динамического анализа вредоносного ПО» . Обзоры вычислительной техники ACM . 44 (2): 6:1–6:42. дои : 10.1145/2089125.2089126 . ISSN   0360-0300 . S2CID   1863333 .
  3. ^ Хативада, Сакет; Тушев, Мирослав; Махмуд, Анас (01 января 2018 г.). «Ровно достаточно семантики: теоретико-информационный подход для локализации ошибок программного обеспечения на основе ИК» . Информационные и программные технологии . 93 : 45–57. дои : 10.1016/j.infsof.2017.08.012 .
  4. ^ «Цели качества программного обеспечения для исходного кода». Архивировано 4 июня 2015 г. в Wayback Machine (PDF). Материалы: Конференция Embedded Real Time Software and Systems 2010 , ERTS2010.org, Тулуза, Франция: Патрик Бриан, Мартен Броше, Тьерри Камбуа, Эммануэль Кутенсо, Оливье Гетта, Даниэль Менберт, Фредерик Мондо, Патрик Мунье, Лоик Нури, Филипп Спозио, Фредерик Розничная торговля.
  5. ^ Повышение безопасности программного обеспечения с помощью точного статического анализа и анализа времени выполнения. Архивировано 5 июня 2011 г. в Wayback Machine (PDF), Бенджамин Лившиц, раздел 7.3 «Статические методы обеспечения безопасности». Докторская диссертация в Стэнфорде, 2006 г.
  6. ^ FDA (08 сентября 2010 г.). «Исследование безопасности программного обеспечения инфузионных насосов в FDA» . Управление по контролю за продуктами и лекарствами. Архивировано из оригинала 1 сентября 2010 г. Проверено 9 сентября 2010 г.
  7. ^ Компьютерные системы безопасности - техническое руководство по оценке аспектов программного обеспечения цифровых компьютерных систем защиты, «Компьютерные системы безопасности» (PDF) . Архивировано из оригинала (PDF) 4 января 2013 года . Проверено 15 мая 2013 г.
  8. ^ Документ с изложением позиции CAST-9. Соображения по оценке подходов к обеспечению безопасности программного обеспечения. Архивировано 6 октября 2013 г. на Wayback Machine // FAA, Группа программного обеспечения органов сертификации (CAST), январь 2002 г.: «Верификация. Сочетание статического и динамического анализа должно быть указано заявителем/разработчиком и применено к программному обеспечению».
  9. ^ Исследования ВДК (01 февраля 2012 г.). «Автоматическое предотвращение дефектов для обеспечения качества встроенного программного обеспечения» . Исследования ВДЦ. Архивировано из оригинала 11 апреля 2012 г. Проверено 10 апреля 2012 г.
  10. ^ Прауз, Кристиан Р., Рене Райнерс и Сильвия Денчева. «Эмпирическое исследование инструментальной поддержки в сильно распределенных исследовательских проектах». Глобальная разработка программного обеспечения (ICGSE), 2010 г. 5-я Международная конференция IEEE. IEEE, 2010 https://ieeexplore.ieee.org/Xplore/login.jsp?url=%2Fielx5%2F5581168%2F5581493%2F05581551.pdf&authDecision=-203
  11. ^ М. Ховард и С. Липнер. Жизненный цикл разработки безопасности: SDL: процесс разработки явно более безопасного программного обеспечения. Майкрософт Пресс, 2006. ISBN   978-0735622142
  12. ^ Ахим Д. Брукер и Уве Содан. Развертывание статического тестирования безопасности приложений в больших масштабах. Архивировано 21 октября 2014 г. на Wayback Machine . В GI Sicherheit 2014. Конспект лекций по информатике, 228, стр. 91-101, GI, 2014.
  13. ^ «Информационный документ OMG | CISQ — Консорциум по качеству информации и программного обеспечения» (PDF) . Архивировано (PDF) из оригинала 28 декабря 2013 г. Проверено 18 октября 2013 г.
  14. ^ Виджай Д'Сильва; и др. (2008). «Обзор автоматизированных методов формальной проверки программного обеспечения» (PDF) . Транзакции в CAD. Архивировано (PDF) из оригинала 4 марта 2016 г. Проверено 11 мая 2015 г.
  15. ^ Джонс, Пол (9 февраля 2010 г.). «Подход к анализу программного обеспечения медицинского оборудования, основанный на формальных методах» . Проектирование встроенных систем. Архивировано из оригинала 10 июля 2011 года . Проверено 9 сентября 2010 г.
  16. ^ Jump up to: а б «Учимся на чужих ошибках: анализ кода на основе данных» . www.slideshare.net . 13 апреля 2015 г.
  17. ^ Содерберг, Эмма; Черч, Люк; Хест, Мартин (21 июня 2021 г.). «Улучшение юзабилити статического анализа кода на основе открытых данных и его проблемы» . Материалы 25-й Международной конференции по оценке и оцениванию в программной инженерии . ЛЕГКОСТЬ '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники: 272–277. дои : 10.1145/3463274.3463808 . ISBN  978-1-4503-9053-8 .
  18. ^ О, Хакджу; Ян, Хонсок; Йи, Квангын (2015). «Изучение стратегии адаптации программного анализа посредством байесовской оптимизации». Материалы Международной конференции ACM SIGPLAN 2015 по объектно-ориентированному программированию, системам, языкам и приложениям — OOPSLA 2015 . стр. 572–588. дои : 10.1145/2814270.2814309 . ISBN  9781450336895 . S2CID   13940725 .
  19. ^ Логоццо, Франческо; Болл, Томас (15 ноября 2012 г.). «Модульная и проверенная автоматическая программа восстановления» . Уведомления ACM SIGPLAN . 47 (10): 133–146. дои : 10.1145/2398857.2384626 . ISSN   0362-1340 .

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9bdb9d9a4d4f3423947acfe001e1fcb4__1722391440
URL1:https://arc.ask3.ru/arc/aa/9b/b4/9bdb9d9a4d4f3423947acfe001e1fcb4.html
Заголовок, (Title) документа по адресу, URL1:
Static program analysis - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)