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

Задачи и методы анализа (тестирования) программ

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

Программы, как и другие объекты реального мира, имеют определённые статические и динамические характеристики. Первые присущи программе в исходном ("статическом") состоянии, вторые проявляются только "в динамике" (при непосредственном выполнении программы).

Статические характеристики программы могут быть определены по её исходному коду, динамические – по результатам её выполнения. Методы анализа программ в соответствии с типом определяемых характеристик и, соответственно, со способом их определения (посредством анализа исходного кода или данных выполнения) принято делить на статические и динамические.

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: