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

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

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

English | Русский

Последний выпуск
№1(112) январь - март 2024

Эвристические алгоритмы поиска программных ошибок

Выпуск № 3 (77) Июль - Сентябрь 2014
Авторы:

Д.О. РОМАННИКОВ
Аннотация


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

 
Ключевые слова: программное обеспечение, тестирование, входные интервалы, формальная верификация, верификация, модели программного обеспечения, графы, тотальная корректность программ

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

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

3. Шелехов В.И. Методы доказательства корректности программ с хоро-шей логикой [Электронный ресурс] // Международная конференция «Совре-менные проблемы математики, информатики и биоинформатики», посвящен-ная 100-летию со дня рождения члена-корреспондента АН СССР А.А. Ляпу-нова, 11–14 октября 2011 г.: доклады. – Новосибирск, 2011. – С. 1–21. – URL: http://conf.nsc.ru/files/conferences/Lyap-100/fulltext/74974/75473/Shelekhov_prlogic.pdf (дата обращения: 31.10.2014).

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

5. Cousot P., Cousot R. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints // Conference record of the fourth ACM symposium on principles of programming languages, Los Angeles, California, Jan. 17–19, 1977. – New York: ACM Press, 1977. – P. 238–252.

6. Bush W.R., Pincus J.D., Sielaff D.J. A static analyzer for finding dynamic programming errors // Software: practice and experience. – 2000. – Vol. 30, iss. 7. – P. 775–802. – doi: 10.1002/(SICI)1097-024X(200006)30:7<775::AID-SPE309> 3.0.CO;2-H.

7. Coherent clusters in source code / S. Islam, J. Krinke, D. Binkley, M. Har-man // Journal of systems and software. – 2014. – Vol. 88. – Р. 1–24.

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

9. Falk H., Marwedel P. Source code optimization techniques for data flow dominated embedded software. – New York: Springer Science: Business Media, 2004. – 226 p.

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