Предметная область

Критерии проверки задания

Проверка заданий по программированию представляет собой задачу анализа программ на предмет соответствию ряду критериев. Программы, в свою очередь, могут быть написаны с использованием компилируемых или интерпретируемых [1] языков программирования. Наличие двух разных типов языков предполагает, что программы могут быть представлены как минимум в двух видах:

  • · В виде исходного кода программы. В случае компилируемого языка, для проверки работоспособности такой программы требуется провести этап компиляции исходного кода для получения запускаемого приложения. В случае же интерпретируемого языка программа уже может быть запущена в том виде, в котором и представлена.
  • · В виде скомпилированной программы, в случае использования компилируемого языка.

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

Под анализом исходного кода имеется в виду статический анализ кода (static code analysis), то есть анализ программного обеспечения без его исполнения. Перечислим возможные критерии анализа исходного кода заданий:

  • · Проверка исходного кода на плагиат. Данный пункт представляет собой выявление схожих участков кода между документов среди определенного набора файлов исходного кода.
  • · Проверка исходного кода на возможность компиляции (для компилируемых языков) и проверка синтаксиса на корректность. Данная проверка позволяет определить, соответствует ли код программы конструкциям языка программирования, на котором она была написана, и в следствие этого, может ли она быть скомпилирована и запущена.
  • · Проверка исходного кода на соответствие стандартам оформления кода. В данном пункте исходный код проверяется на удовлетворение определенным стандартам стиля программирования. Данные стандарты являются могут сильно отличаться от языка к языку. Примером такого стандарта для языка Java может являться Google Java Style [2].

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

  • · Проверка корректности работы программы с помощью ввода-вывода через командную строку, а также файлового ввода-вывода представляет собой сравнение данных, полученных в ходе использования программы, с ожидаемыми данными. При этом, в ходе тестирования программе могут быть переданы входные данные, что может повлиять на ее исполнение, а также на данные, получаемые на выходе. Входные данные могут быть переданы посредством взаимодействия с командной строкой, а могут быть представлены в виде файлов. Данный пункт, как правило, посвящен проверке работоспособности всей программы в рамках решения поставленной задачи.
  • · Проверка корректности работы программы с помощью юнит-тестирования (unit-testing) [3] представляет собой анализ работоспособности отдельных изолированных участков программы на предмет соответствия ими определенных критериев.
  • · Корректная работа программы с выставленными ограничениями ко времени исполнения и используемой памяти. Данный критерий предполагает выставление ограничений по ресурсам (времени, памяти и др.) к исполнению программы, превышение которых считается ошибкой. Например, программа сортировки целых чисел. Для решения данной проблемы существует множество алгоритмов, отличающихся по скорости выполнения и количеству используемой памяти. Проверяющий может быть заинтересован в том, чтобы был реализован определенный алгоритм, и для проверки этого он может выставить некоторые ограничения к выполнению программы, которые будут выполняться в случае правильного решения и нарушаться в ряде других возможных случаев.
 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >