Файл: На тему подходы и ограничения(Описание предметной области).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 06.04.2023

Просмотров: 118

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

3.1Методика отладки программ

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

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

Статические методы включают:

  • ручную прокрутку программы;
  • прокрутку программы программными анализаторами ( нап­ример, компилятором); автоматизированный анализ программы в этом случае проводится без выполнения ее на ЭВМ и поэтому попадает в категорию «статических»;
  • коллективную проверку программ;
  • проверку программы программистом-технологом с целью выявления и исправления в ней технологических ошибок.

Экспериментально установлено, что в программах ручными методами удается обнаруживать от 30 до 70 % программных и алгоритмических ошибок из общего числа ошибок, выявленных при отладке. При этом одновременно осуществляется доработка программ с целью улучшения их структуры, логики обработки данных и для снижения сложности последующего автомати­зированного тестирования на ЭВМ. [14]

Динамические методысвязаны со значительным расходом машинного времени и, возможно, не меньшими затратами труда программиста. В этом случае отладка программ происходит сов­местно с их выполнением на ЭВМ. Динамические методы отладки программ, как правило, привязаны к конкретной ЭВМ и к конкретному транслятору (компилятору).

К динамическим методам относятся:

  • тестирование;
  • поиск ошибок с использованием системных средств;
  • отладка программы в интерактивном режиме.

Важнейшее правило отладки: не делать следующего выхода на ЭВМ, пока не будет разобрана каждая найденная ошибка. Из этого правила существует единственное исключение: если най­дены 5—6 ошибок, которые не дают эффекта, то можно сделать новый выход на машину (устранив эти ошибки), чтобы получить эффект в чистом виде (если он есть),поскольку наложение нес­кольких ошибок иногда может дать самый неожиданный ре­зультат. [14]

Если программист исчерпал все возможности поиска ошибки, но не нашел ее, то как крайнее средство, можно сделать выход на машину, ничего не изменив в программе, но добавив печати, выдающие значения идентификаторов, участвующих в фор­мировании неверного значения. И снова произвести анализ полученных результатов. Квалификация программиста в области отладки определяется тем, сколько информации об ошибках он сможет получить из одной выдачи ЭВМ.


3.2Статические анализаторы кода

В связи с растущим объемом разрабатываемого программного обеспечения проблема безопасности становится все более актуальной. Одним из вариантов ее решения может стать применение безопасного цикла создания продуктов, включая планирование, проектирование, разработку, тестирование. Такой подход позволяет получать на выходе решение с продуманной системой безопасности, которое не потребуется затем многократно исправлять из-за существующих уязвимостей.[10]

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

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

Недостатков у такого метода немало. Основным является то, что множество "подозрительных" конструкций в коде не всегда являются дефектами. В большинстве случаев такой код может быть синтаксически правильным и работать корректно. Соотношение "шума" к реальным дефектам может достигать 100:1 на больших проектах. Таким образом, разработчику приходится тратить много времени на его отсеивание от реальных дефектов, что отменяет плюсы автоматизированного поиска.

Cppcheck— это инструмент статического анализа для кода C/C++. В отличие от компиляторов C/C++ и многих других инструментов анализа он не обнаруживает синтаксических ошибок в коде. Cppcheck в первую очередь обнаруживает типы ошибок, которые компиляторы обычно не обнаруживают. Цель состоит в том, чтобы обнаружить только реальные ошибки в коде (т. Е. Иметь нулевые ложные срабатывания). [11]

Особенности:

  • проверка вне границ;
  • проверка код для каждого класса;
  • проверка безопасности исключений;
  • проверка утечек памяти;
  • предупреждение, если используются устаревшие функции;
  • проверка недействительного использования STL;
  • проверка неинициализированных переменных и неиспользуемых функций. [10]

CppCat — это плагин для MicrosoftVisualStudio, который находит более сложные ошибки в коде на C/C++ (логические ошибки, опечатки, ошибки неопределенного поведения и др.) в дополнение к обычным предупреждениям компилятора. CppCat был разработан специально для программистов на C/C++, использующих VisualStudio, что позволило учесть особенности и потребности именно этой узкой группы. [10]

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

Ключевые особенности CppCat:

  • легкий поиск ошибок в коде на С/C++;
  • проверка всего кода проекта и список всех найденных ошибок;
  • возможность автоматической проверки перекомпилированных файлов и список ошибок, найденных только в этих файлах;
  • для работы требуется MicrosoftVisualStudio.

Еще один бесплатный кроссплатформенный статический анализатор с открытыми исходным кодом. Является частью так называемого LLVM-стэка. В отличие от CppCheck работает существенно медленнее, но и ошибки находит куда более серьезные.

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

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

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

Анализатор может запускаться ночью на сервере и сообщать о подозрительных местах в новом коде. Ошибки вообще могут быть обнаружены и исправлены ещё до попадания в репозиторий. PVS-Studio может автоматически запускаться сразу после компилятора на только что модифи PVS-Studio умеет интегрироваться в среду разработки VisualStudio 2010-2017. Если используется эта среда разработки, то скорее всего будет достаточно зайти в меню плагина PVS-Studio и выбрать команду "проверить проект".


Часто всё обстоит сложнее и может потребоваться интеграция PVS-Studio в сборочную систему, в том числе.

PVS-Studio для Windows и Linux предусмотрены специальные утилиты, собирающие информацию о запусках компилятора. Эти инструменты позволяют быстро выполнить анализ проекта, собираемого любым способом.

Технологии, которые используются в анализаторе следующие:

  1. Сопоставление с шаблоном (pattern-basedanalysis) на основе абстрактного синтаксического дерева применяется для поиска мест в исходном коде, которые похожи на известные шаблоны кода с ошибкой.
  2. Вывод типов (typeinference) на основе семантической модели программы позволяет анализатору иметь полную информацию о всех переменных и выражениях, встречающихся в коде.
  3. Символьное выполнение (symbolicexecution) позволяет вычислять значения переменных, которые могут приводить к ошибкам, производить проверку диапазонов (rangechecking) значений.
  4. Анализ потока данных (data-flowanalysis) используется для вычисления ограничений, накладываемых на значения переменных при обработке различных конструкций языка. Например, какие значения может принимать переменная внутри блоков if/else.
  5. Аннотирование методов (methodannotations) предоставляет больше информации об используемых методах, чем может быть получено путём анализа только их сигнатуры. [11]

В данной главе была изучена методика отладки программ и проведен анализ статических анализаторов кода.

ЗАКЛЮЧЕНИЕ

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

Кроме того, существуют альтернативные определения или процессы, используемые в разных организациях, но основная концепция везде одинакова. Эти типы тестирования, процессы и методы их реализации постоянно меняются по мере изменения проекта, требований и области применения.

В рамках работы решены следующие задачи:

  • раскрыто понятия «тестирование программного обеспечения»;
  • определено понятие качества продукта;
  • изучены виды тестирования;
  • проведён анализ методов отладки программного кода;
  • изучена литература в данной области.

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

Данная работа может быть расширена более глубоким изучением существующих видов тестирования.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Корнеев И.К., Машурцев ВА. Информационные технологии в управлении. - М.: Инфр-М, 2001.
  2. Кузнецов, П.У. Информационные технологии / П.У. Кузнецов. ― М.: Юрайт, 2011. ― 422 с.
  3. Кент Бек Экстремальное программирование. Разработка через тестирование. — Питер, 2003. — 260 с.
  4. Могилев А.В. Информатика : учебное пособие / А.В. Могилев, Н.И. Пак, Е.К. Хеннер. – М.: Академия, 2000. – 324 с.
  5. Плаксин М. А. Тестирование и отладка программ для профессионалов будущих и настоящих. — Лаборатория знаний, 2015. — 170 с.
  6. Рой Ошероув Искусство автономного тестирования с примерами на C#. — ДМК Пресс, 2014. — 362 с.
  7. John R. Vacca Computer and Information Security Handbook. — Morgan Kaufmann, 2017. — 1280 p.
  8. Мартин Роберт Идеальный программист. Как стать профессионалом разработки ПО. — Питер, 2011. — 240 с.
  9. SoftwareTesting [Электронный ресурс]Тестирование по фазам и по цепочкам: сходства и различия Режим доступа:http://software-testing.ru/library/testing/general-testing/2682-phased-vs-threaded-testing Дата обращения (12.02.2019)
  10. Блог хост [Электронный ресурс] Анализаторы исходного кода — обзор рынка в России и в мире Режим доступа:https://www.anti-malware.ru/reviews/Code_analyzers_market_overview_Russia_and_world Дата обращения (12.02.2019)
  11. PVS-Studio [Электронный ресурс]Анализатор PVS-Studio Режим доступа:https://www.viva64.com/ru/pvs-studio/ Дата обращения (12.02.2019)
  12. QALight [Электронный ресурс]White/Black/GreyBox-тестирование Режим доступа:https://qalight.com.ua/baza-znaniy/white-black-grey-box-testirovanie/ Дата обращения (12.02.2019)
  13. QALight [Электронный ресурс]Ручное и автоматизированное Режим доступа:https://qalight.com.ua/baza-znaniy/ruchnoe-i-avtomatizirovannoe/ Дата обращения (12.02.2019)
  14. Технология программирования [Электронный ресурс]Методы отладки программного обеспечения. Режим доступа:http://www.tehprog.ru/index.php_page=lecture0113.html Дата обращения (12.02.2019)
  15. QALight [Электронный ресурс]Качество программного обеспечения. Режим доступа:https://qalight.com.ua/baza-znaniy/kachestvo-programmnogo-obespecheniya/ Дата обращения (12.02.2019)