Под анализом программ понимают действия специалистов, занятых разработкой или сопровождением программ, направленные на изучение состояния программ с целью обеспечения их работоспособности или улучшения их характеристик.
Программы, как и другие объекты реального мира, имеют определённые статические и динамические характеристики. Первые присущи программе в исходном («статическом») состоянии, вторые проявляются только «в динамике» (при непосредственном выполнении программы).
Статические характеристики программы могут быть определены по её исходному коду, динамические – по результатам её выполнения. Методы анализа программ в соответствии с типом определяемых характеристик и, соответственно, со способом их определения (посредством анализа исходного кода или данных выполнения) принято делить на статические и динамические.
При статическом анализе могут осуществляться проверка синтаксиса, статической семантики и стиля кодирования программ, а также некоторые другие сопутствующие анализу действия.
Анализ данных: инструменты и программы маркетинговой аналитики
Синтаксический анализ может выполнять как самостоятельную функцию выявления в исходном коде синтаксических ошибок (в различных компиляторах, интерпретаторах, синтакторах), так и вспомогательную функцию обеспечения необходимой информацией других видов статического анализа (в последнем случае он может проводиться не в полном объёме). Анализ статической семантики включает в себя потоковый анализ (анализ потока управления и анализ потока данных), анализ интерфейса, анализ перекрёстных ссылок и поиск потенциальных ошибок.
Анализ потока управления основан на использовании свойств управляющего графа программы, отражающего структуру передач управления в ней (каждая вершина должна быть достижима из начальной вершины и из каждой вершины должен существовать путь к конечной вершине).
Анализ потока данных, проводимый с целью обнаружения несогласованности данных в информационных путях программы, выявляет определённые виды ошибок потока данных, определив аномалию потока данных как ошибочную по своей природе или являющуюся симптомом ошибки или сомнительной практики кодирования последовательность использований переменной.
Помимо описанных выше действий, статический анализ может выполнять и другие функции, в частности, документирования, форматирования, структурирования, инструментирования и измерения программ.
Одной из важных функций статического анализа программ является их измерение, т.е. оценка некоторых качественных характеристик программ (в первую очередь, их сложности) посредством метрик, наиболее известными из которых являются метрики Холстеда и Маккейба.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Анализ программ
В информатике анализ программ — это процесс автоматического анализа поведения компьютерные программы в отношении такого свойства, как правильность, надежность, безопасность и живучесть. Анализ программ фокусируется на двух основных областях: оптимизация программы и правильность программы. Первый направлен на повышение производительности программы при одновременном сокращении использования ресурсов, а второй — на обеспечение того, чтобы программа выполняла то, что она должна делать.
Анализ конкурентов. Как провести анализ конкурентов. Как анализировать конкурентов.
Анализ программы может выполняться без выполнения программы (статический анализ программы ), во время выполнения (динамический анализ программы ) или в сочетании того и другого.
Статические анализ программы
В контексте корректности программы статический анализ может обнаруживать уязвимости на этапе разработки программы. Эти уязвимости легче исправить, чем обнаруженные на этапе тестирования, поскольку статический анализ позволяет определить причину уязвимости.
Поскольку многие формы статического анализа неразрешимы с вычислительной точки зрения, механизмы его выполнения не всегда завершаются правильным ответом — либо потому, что они иногда возвращают ложноотрицательный результат («проблем не обнаружено», когда код На самом деле есть проблемы) или ложное срабатывание, или потому, что они никогда не возвращают неправильный ответ, но иногда никогда не завершаются. Несмотря на свои ограничения, первый тип механизма может уменьшить количество уязвимостей, в то время как второй иногда может дать надежную гарантию отсутствия определенного класса уязвимостей.
Неправильная оптимизация крайне нежелательна. Итак, в контексте оптимизации программы есть две основные стратегии обработки неразрешимого с вычислительной точки зрения анализа:
- Оптимизатор, который, как ожидается, завершит работу за относительно короткий промежуток времени, например оптимизатор в оптимизирующем компиляторе, может использовать усеченная версия анализа, которая гарантированно завершится за конечный промежуток времени и гарантированно найдет только правильные оптимизации.
- Сторонний инструмент оптимизации может быть реализован таким образом, чтобы никогда не выдавать неверные оптимизация, но также так, чтобы в некоторых ситуациях он мог продолжать работать бесконечно, пока не найдет его (что может никогда не произойти). В этом случае разработчику, использующему инструмент, придется остановить инструмент и избежать повторного запуска инструмента на этом фрагменте кода (или, возможно, изменить код, чтобы избежать сбоя инструмента).
Однако есть и третий стратегия, которая иногда применима для языков, которые не определены полностью, например C. Оптимизирующий компилятор может генерировать код, который делает что-либо во время выполнения — даже дает сбой — если он встречает исходный код, семантика которого не определена используемым стандартом языка.
Поток управления
Цель анализа потока управления — получить информацию о том, какие функции могут быть вызваны в различных точках во время выполнения программы. Собранная информация представлена в виде графа потока управления (CFG), где узлы представляют собой инструкции программы, а края представляют собой поток управления. Идентифицируя блоки кода и циклы, CFG становится отправной точкой для оптимизаций, выполненных компилятором.
Анализ потока данных
Анализ потока данных — это метод, предназначенный для сбора информации о значениях в каждой точке программы и о том, как они меняются с течением времени. Этот метод часто используется компиляторами для оптимизации кода. Одним из наиболее известных примеров анализа потока данных является проверка на зараженность, которая заключается в рассмотрении всех переменных, содержащих данные, предоставленные пользователем, которые считаются «испорченными», то есть небезопасными, и предотвращение использования этих переменных до тех пор, пока они были продезинфицированы. Этот метод часто используется для предотвращения атак SQL-инъекций. Проверка на заражение может выполняться статически или динамически.
Абстрактная интерпретация
Абстрактная интерпретация позволяет извлекать информацию о возможном выполнении программы без фактического выполнения программы. Эта информация может использоваться компиляторами для поиска возможных оптимизаций или для сертификации программы на предмет определенных классов ошибок.
Системы типов
Системы типов связывают типы с программами, которые удовлетворяют определенным требованиям. Их цель — выбрать подмножество программ на языке, которые считаются правильными в соответствии с определенным свойством.
- Проверка типов — проверка того, принята ли программа системой типов.
Проверка типов используется в программировании для ограничения того, как используется программный объект и что они могут делать. Это делает компилятор или интерпретатор. Проверка типов также может помочь предотвратить уязвимости, гарантируя, что значение со знаком не приписывается беззнаковой переменной. Проверка типов может выполняться статически (во время компиляции), динамически (во время выполнения) или их комбинацией.
Информация о статическом типе (либо выведенная, либо явно предоставленная аннотациями типов в исходном коде) также может использоваться для оптимизации, такой как замена упакованных массивов на распакованные массивы.
Системы эффектов
Системы эффектов — это формальные системы, разработанные для представления эффектов, которые может иметь выполнение функции или метода. Эффект кодифицирует то, что делается, и то, что делается — обычно это называется типом эффекта и областью соответственно.
Проверка модели
Проверка модели относится к строгим, формальным и автоматизированным способы проверить, соответствует ли модель (которая в данном контексте означает формальную модель фрагмента кода, хотя в других контекстах может быть моделью части аппаратного обеспечения) заданной спецификации. Из-за неотъемлемой природы конечного состояния кода, а также из-за того, что и спецификация, и код могут быть преобразованы в логические формулы, можно проверить, нарушает ли система спецификацию, используя эффективные алгоритмические методы.
Динамический анализ программы
Динамический анализ может использовать знания программы во время выполнения, чтобы повысить точность анализа, а также обеспечить защиту во время выполнения, но он может анализировать только одно выполнение проблемы и может снизить производительность программы из-за проверок во время выполнения.
Тестирование
Программное обеспечение следует протестировать, чтобы убедиться в его качестве и надежности, а также в том, что оно не будет конфликтовать с другим программным обеспечением, которое может работать параллельно. Это. Тесты выполняются путем выполнения программы с вводом и оценки ее поведения и полученного вывода. Даже если требования безопасности не указаны, необходимо провести дополнительное тестирование безопасности, чтобы убедиться, что злоумышленник не может вмешаться в программное обеспечение и украсть информацию, нарушить нормальную работу программного обеспечения или использовать его в качестве основы для атаки. его пользователи.
Мониторинг
Мониторинг программы записывает и регистрирует различную информацию о программе, такую как использование ресурсов, события и взаимодействия, чтобы ее можно было просмотреть, чтобы найти или выявить причины ненормального поведения. Кроме того, его можно использовать для аудита безопасности. Автоматизированный мониторинг программ иногда называют проверкой времени выполнения.
Нарезкой программы
Для заданного подмножества поведения программы нарезка программы заключается в сокращении программы до минимальной формы, которая по-прежнему производит выбранные поведение. Сокращенная программа называется «срезом» и является точным представлением исходной программы в пределах области указанного подмножества поведения. Как правило, поиск среза — это неразрешимая проблема, но, задав подмножество целевого поведения с помощью значений набора переменных, можно получить приблизительные срезы с использованием алгоритма потока данных. Эти фрагменты обычно используются разработчиками во время отладки для определения источника ошибок.
См. Также
- Автоматическая проверка кода
- Безопасность на основе языка
- Профилирование (компьютерное программирование)
- Проверка программы
- Анализ завершения
Ссылки
Далее чтение
- Агравал, Хиралал; Хорган, Джозеф Р. Динамическая нарезка программ (PDF).
- Чунлей, Ван; Ганг, Чжао; Ики, Дай (2009). «Эффективный подход к анализу безопасности потока управления для двоичных исполняемых файлов». 2009 2-я Международная конференция IEEE по компьютерным наукам и информационным технологиям. С. 272–276. DOI : 10.1109 / ICCSIT.2009.5234950. ISBN 978-1-4244-4519-6.
- Нильсон, Флемминг; Нильсон, Ханне Риис; Ханкин, Крис (2005). Принципы анализа программ. Springer Science + Business Media.
Внешние ссылки
- СМИ, связанные с анализом программы на Wikimedia Commons
Источник: alphapedia.ru
Изучение и анализ учебных программ
Примерная учебная программа – документ, детально раскрывающий обязательные (федеральные) компоненты содержания обучения и параметры качества усвоения учебного материала по конкретному предмету примерного (типового) учебного плана.
Рабочая учебная программа – это программа, разработанная на основе примерной (типовой) применительно к конкретному учебному заведению с учётом национально-регионального компонента стандарта.
Рабочая учебная программа является основным документом, которым руководствуется преподаватель, определяя объем знаний и умений, подлежащих усвоению, подбирая учебно-производственные работы и т.д.
Авторские учебные программы, учитывая требования государственного стандарта, могут содержать иную логику построения учебного предмета, собственные подходы к рассмотрению тех или иных теорий, собственные точки зрения относительно изучаемых явлений и процессов. Авторские учебные программы наиболее широко используются в преподавании курсов по выбору и факультативных.
Принципы разработки учебно-программных документов.
Основными – являются известные дидактические принципы:
Источник: studfile.net