Безопасность цифровых технологий

БЕЗОПАСНОСТЬ ЦИФРОВЫХ ТЕХНОЛОГИЙ

БЕЗОПАСНОСТЬ
ЦИФРОВЫХ ТЕХНОЛОГИЙ

English | Русский

Последний выпуск
№2(2025) Апрель - Июнь 2025

О методе анализа программ

Выпуск № 4 (78) Октябрь - Декабрь 2014
Авторы:

А.А. ВОЕВОДА ,
Д.О. РОМАННИКОВ ,
DOI: http://dx.doi.org/10.17212/2307-6879-2014-4-125-138
Аннотация


Данная работа посвящена разбору метода анализа программного обеспечения, основанного на принципе выявления всех возможных значений переменных и нахождения при помощи этого ошибок путем проверки верифицируемых формул на всех возможных значениях переменных. В работе рассмотрены примеры, на которых показаны основные принципы предлагаемого метода анализа ПО, а именно: пример программы с циклом, который показывает, каким образом можно выполнить сворачивание полного графа к «линейным» участкам программы, а затем выполнить их анализ. Вторым принципом рассматриваемого метода является анализ ПО «линейно», т. е. постепенный анализ каждой ветки программы. При этом отдельный анализ можно выполнять с места ветвления без необходимости выполнения полного анализа сначала. В работе приведены многочисленные примеры того, как необходимо выполнить разбиение основной программы на ветки. Главной особенностью такого разбиения является сохранение малого количества ветвлений. Приведена формальная семантика описания программы, предложенная П. Коусотом и используемая для формализованного описания алгоритмов анализа ПО. Исходная семантика была упрощена в части описания узлов графа – убраны лишние узлы, так как они не актуальны после преобразования графа, и расширена функция поиска возможных значений переменных после исполнения оператора. Также показано, каким обзором можно определить функцию поиска возможных вариантов переменных для бинарных и унарных операций путем ее определения для операций умножения и логического отрицания. Для остальных операций данная функция может быть легко построена по аналогии.

 
Ключевые слова: программное обеспечение, тестирование, входные интервалы, формальная верификация, динамическая верификация, верификация, проверка моделей, модели программного обеспечения, графы, тотальная корректность программ
А.А. ВОЕВОДА
630073, РФ, г. Новосибирск, пр. Карла Маркса, 20, Новосибирский государственный технический университет, доктор технических наук, профессор кафедры автоматики. E-mail:
ucit@ucit.ru
Orcid:

Д.О. РОМАННИКОВ
630073, РФ, г. Новосибирск, пр. Карла Маркса, 20, Новосибирский государственный технический университет, кандидат технических наук, старший преподаватель кафедры автоматики. E-mail:
rom2006@gmail.com
Orcid:

Список литературы
1. Воевода А.А., Романников Д.О. Способы представления программ и их анализ // Сборник научных трудов НГТУ. – 2014. – № 3 (76). – С. 81–98.

2. Романников Д.О. О поиске входных интервалов // Сборник научных трудов НГТУ. – 2014. – № 1 (75). – С. 140–145.

3. Abramsky S., Hankin C. An introduction to abstract interpretation. – URL: https://www.cs.virginia.edu/~weimer/2007-615/reading/AbramskiAI.pdf (accessed 20.12.2014).

4. Cousot P., Cousot R. A gentle introduction to formal verification of computer systems by abstract interpretation // Logics and Languages for Reliability and Security. NATO Science Series III: Computer and Systems Sciences. – Amsterdam: IOS Press, 2010. – P. 1–29.

5. Глухих М.И., Ицыксон В.М., Цесько В.А. Использование зависимостей для повышения точности статического анализа программ // Моделирование и анализ информационных систем. – 2011. – Т. 18, № 4. – С. 68–79.

6. Bush W., Pincus J., Sielaff D. A static analyzer for finding dynamic programming errors // Software: Practice and Experience. – 2000. – Vol. 30,

iss. 7. – P. 775–802.

7. Кларк Э.М., Грамберг О., Пелед Д. Верификация моделей программ. Model Checking. – М.: МЦНМО, 2002. – 416 с.

8. Карпов Ю.Г. Model Checking. Верификация параллельных и распределенных программных систем. – СПб.: БХВ-Петербург, 2010. – 560 с.

9. Horwitz S., Reps T., Binkley D. Interprocedural slicing using dependence graphs // ACM Transactions on Programming Languages and Systems. – 1990. – Vol. 1, iss. 12. – P. 26–60.

10. Ferrante J., Ottenstein K.J., Warren J.D. The program dependence graph and its use in optimization // ACM Transactions on Programming Languages and Systems. – 1987. – Vol. 9, iss. 3. – P. 319–349.

11Воевода А.А., Марков А.В., Романников Д.О. Разработка программного обеспечения: проектирование с использованием UML диаграмм и сетей Петри на примере АСУ ТП водонапорной станции // Труды СПИИРАН. – 2014. – Вып. 3 (34). – С. 218–232.

12. Романников Д.О. Нахождение ошибок обращения к несуществующим элементам массива на основании результатов анализа сети Петри // Сборник научных трудов НГТУ. – 2012. – № 1 (67). – C. 115–120.

13. Марков А.В., Романников Д.О. Алгоритм трансляции диаграммы активности в сеть Петри // Доклады Академии наук высшей школы Российской Федерации. – 2014. – № 1 (22). – С. 104–112.

14. Воевода А.А., Романников Д.О. Редуцирование пространства состояний сети Петри для объектов из одного класса // Научный вестник НГТУ. – 2011. – № 4 (45). – С. 146–150.

15. Романников Д.О., Марков А.В., Зимаев И.В. Обзор работ, посвященных разработке ПО с использованием UML и сетей Петри // Сборник научных трудов НГТУ. – 2011. – № 1 (63). – С. 91–104.

16. Марков А.В. Анализ отдельных частей дерева достижимости сетей Петри // Сборник научных трудов НГТУ. – 2013. – № 3 (73). – С. 58–74.

17. Воевода А.А., Марков А.В. Рекурсия в сетях Петри // Сборник научных трудов НГТУ. – 2012. – № 3 (69). – С. 115–122.

18. Воевода А.А., Марков А.В. Тестирование UML-диаграмм с помощью аппарата сетей Петри на примере разработки по для игры «Змейка» // Сборник научных трудов НГТУ. – 2010. – № 3 (61). – C. 51–60.

19. Воевода А.А., Зимаев И.В. Верификация workflow-моделей с примене-нием сетей Петри // Научный вестник НГТУ. – 2010. – № 4 (41). – C. 151–154.

20. Воевода А.А., Саркенов Д.О., Хассоунех В. Моделирование протоколов с учетом времени на цветных сетях Петри // Сборник научных трудов НГТУ. – 2004. – № 3 (37). – C. 133–136.

 
Просмотров аннотации: 2528
Скачиваний полного текста: 1138
Просмотров интерактивной версии: 0