Главная / Искусственный интеллект / PROUST / Результаты испытаний системы PROUST

Результаты испытаний системы PROUST

Система PROUST была испытана на большом числе программ, написанных начинающими программистами. Учебному классу начинающих программистов была дана задача об осадках (обобщение задачи вычисления среднего арифметического), показанная в табл. 5.

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

Таблица 5. Задача об осадках, предложенная классу начинающих программистов с целью проверки эффективности системы PROUST (a), и результаты использования этой системы (б)

а

Составить программу на языке Паскаль, которая будет просить пользователя вводить с терминала числа, каждое из которых соответствует количеству осадков в шт. Нью-Хейвен за какой-либо из дней. Замечание: поскольку осадки не могут выражаться отрицательными числами, программа должна отказываться воспринимать отрицательные величины. Из полученных таким образом данных программа должна вычислять следующие статистические характеристики:

  1. среднее количество осадков в день;
  2. число дождливых дней;
  3. число допустимых входных данных (за вычетом любых недопустимых данных, которые могли бы быть прочитаны программой);
  4. максимальное количество осадков в день.

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

б

Общее число программ

206

 

Число программ с ошибками

183

(89%)

Число полностью проанализированных программ

161

(79%)

Общее число ошибок

570

 

Верно узнанные ошибки

533

(94%)

Пропущенные ошибки

29

(6%)

Случаи ложной тревоги

55

 

Число программ, проанализированных частично

35

(17%)

Общее число ошибок

191

 

Верно узнанные ошибки

71

(37%)

Изъятые из анализа ошибки

70

(37%)

Пропущенные ошибки

50

(26%)

Случаи ложной тревоги

19

 

Число программ, которые система не анализировала

9

(4%)

Результаты использования системы PROUST в процессе решения задачи об осадках представлены в таблице. В ходе проведенного испытания было рассмотрено 206 попыток решить эту задачу. В 79% случаев система достигла полного понимания студенческой программы, обнаружив 94% всех сделанных при этом ошибок, т. е. качество работы системы намного превосходило возможности преподавателей. Из приведенной таблицы видно, что 6% ошибок остались неузнанными, а 55% найденных ошибок оказались «ложной тревогой» При этом мы считали ошибку пропущенной, если она либо действительно была пропущена системой, либо опознана неправильно. К «ложной тревоге» относятся случаи, когда обнаруженная ошибка либо на самом деле отсутствует в программе, либо неверно указан тип ошибки. Таким образом, неверно диагностированные ошибки подсчитывают я и как «ложная тревога», и как неузнанные, что приводит к некоторому завышению общего числа ошибок в диагнозе.

Когда системе PROUST не удается полностью разобраться в программе студента, ее возможности по узнаванию ошибок резко падают. 17% всех программ были проанализированы лишь частично. В этих случаях система PROUST вычеркивала из описаний анализ тех ошибок, которые были под вопросом вследствие неполного понимания программы. Оставшиеся (из этих 17%) описания ошибок часто оказывались неверными, но при этом система PROUST могла предупредить студента, чтобы он относился к результатам анализа критически. Остальные 4% студенческих программ были столь далеки от того, что ожидала система PROUST, что она вообще оказалась не в состоянии их проанализировать (в таких случаях система не давала никаких сообщений об ошибках).

Пока мы не настолько удовлетворены качеством работы, системы PROUST, чтобы целиком отдать ее в пользование студентам: необходимо снизить долю ложных тревог, увеличив при этом долю полностью проанализированных программ. Если система PROUST не в состоянии проанализировать часть какой-то программы, то она должна попытаться определить, почему ее невозможно проанализировать, и как-то прокомментировать эту часть программы. Если это удастся сделать, то можно ожидать, что система будет успешно справляться с 80—85% из общего числа анализируемых программ.