Начинающие программисты часто сталкиваются с диктовками, выполняющими отладочные задания по собственному желанию. Даже если современные среды разработки (IDE) обеспечивают высокоуровневую поддержку навигации по элементам кода и определение правильных условий, приводящих к ошибке, отладка все равно требует значительного человеческих усилий. Программистам обычно приходится выдвигать гипотезы, основанные как на эволюции состояния программы, так и на опыте отладки в прошлом. Чтобы смягчить эту проблему и позволить начинающим программистам быстро получить опыт отладки, мы предлагаем подход, основанный на повторном использовании существующих ошибок систем с открытым исходным кодом для обеспечения внутрикорпоративного руководства от места сбоя до места повреждения. Цель состоит в том, чтобы помочь новичкам в рассуждениях о наиболее перспективных путях и условиях для определения. Мы реализовали этот подход как инструмент, использующий знания о местоположении ошибок и сбоев в системе, если любая ошибка в системе известна. Эффективность предложенного подхода подтверждается квази-экспериментом, который качественно и количественно оценивает, как изменяется отладочная производительность учащихся при их обучении с помощью инструмента.
1. Введение
Начинающие программисты сталкиваются с огромными трудностями и чувствуют чувство разочарования при отладке [17, 21]. Отладка, как правило, выполняется вне класса, и в типичной учебной среде CS1 и CS2 она рассматривается очень низко [11]. Как следствие, отладочные задания учащихся обычно не поддерживаются и не контролируются преподавателями.
И наоборот, отладка - это очень сложная деятельность, требующая значительных человеческих усилий и строго обусловленная прошлым опытом программирования и отладки. Основным источником отладки для начинающих программистов является выдвижение обоснованных гипотез об эволюции и поведении программы, чтобы найти наилучшие пути через элементы исходного кода, позволяющие определить положение отладчика [30, 43]. Опыт программиста жизненно важен для использования большинства отладчиков и сред разработки (IDE), которые помогают с помощью отладочных возможностей [1, 6, 14, 24,30]. Эти инструменты, казалось бы, полезны для поддержки в обнаружении новых ошибок, но они обеспечивают небольшую поддержку новичкам.
Действительно, профессиональные инструменты позволяют разработчикам задавать вопросы о состоянии программы и формулировать гипотезы о поведении программы, начиная с наблюдаемого симптома сбоя, но они не дают никакой информации о возможном дефекте. По этой причине неопытные программисты часто смотрят в неправильном направлении без путеводителя, что делает отладку длительной, трудоемкой и непродуктивной. Чтобы смягчить это расточительство и позволить человеку быстро получить опыт отладки, мы предлагаем подход, который по сравнению с прошлыми подходами является невероятно разнообразным. Этот подход основывается на том, что обучение отладке и поддержка отладки являются двумя неразрывно связанными друг с другом задачами. IDE и отладчики делают очень хорошую работу по поддержке отладки, позволяя разработчикам проникать сквозь элементы исходного кода, следуя отношениям, которые могут быть использованы для поиска новых ошибок.
Однако начинающие программисты не знают, каким отношениям они должны следовать или какое условие следует определять. По этим причинам мы предлагаем в контексте отладки подход, основанный на инструктаже [22], который сокращает проблемное пространство до более управляемого размера и в результате особенно эффективен, помогая студентам улучшить их отладочные навыки. Кроме того, этот подход позволяет новичкам воспроизводить сеансы отладки, аналогичные тем, которые уже были cформулированы в прошлом профессиональными разработчиками или преподавателями. В частности, он основан на повторном использовании знаний, скрытых в уже исправленных ошибках открытых программных систем. Эти знания предоставляются студентам в виде адекватных инструкций, которые помогают новичкам переходить с места системного сбоя на место ошибки. Таким образом, студент может рассуждать о наиболее перспективных путях достижения ошибки. Мы внедрили этот подход как инструмент, использующий явные знания об ошибках и их месторасположении в системе для поддержки начинающих программистов в отладочных задачах. Даже если есть несколько исследований, сфокусированных на посылке ошибок [8, 31, 36], к лучшему из наших знаний этот подход является первым, который вводит явное повторное использование реального дефектного исходного кода для генерирования информированного руководства.
В статье также представлено эмпирическое исследование, целью которого является качественная и количественная оценка влияния предложенной среды обучения отладке (DTE) на отладочные характеристики учащихся. Наше исследование охватывает восемь занятий по отладке, в которых участвуют вставные зубы из курса CS2 на степень бакалавра инженерных наук в области вычислительной техники в Университете Бари Альдо Моро. Каждое занятие направлено на исправление одного дефекта, адаптированного из набора данных defect4java [41], специально разработанного преподавателем. Мы оцениваем экологичность и точность каждой отладочной задачи для студентов, которые использовали DTE или классический отладчик Eclipse Java (EJD) во время курса, выполняя эксперимент с использованием дизайна между объектами.
Остальная часть статьи структурирована следующим образом. В разделе 2 мы резюмируем связанную с этим работу. В разделе 3 описаны некоторые основные понятия. В разделе 4 разъясняется предлагаемый подход к анализу исходного кода прослушиваемой системы и определению путей достижения ошибок. В разделе 5, мы описываем инструмент, реализующий предложенный подход. В разделе 6 представлен эксперимент, а в разделе 7 - полученные результаты. В разделе 8 обсуждаются результаты, в которых предлагается интерпретация и обсуждаются угрозы достоверности. И, наконец, в разделе 9 обсуждается заключение и указываются будущие направления.
Повторное использование ошибочного исходного кода для поддержки начинающих программистов в задачах отладки. Сопутствующая работа.