УДК 001(06) Телекоммуникации и новые информационные технологии… С.В. ПУГАЧЁВ, А.В. САВОСТЬЯНОВА, А.И. ЧЁРНЫЙ Московский государственный университет приборостроения и информатики АВТОМАТИЗАЦИЯ ИДЕНТИФИКАЦИИ ИСХОДНОГО КОДА ПРОГРАММ НА ОСНОВЕ МЕТОДОВ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Рассмотрена задача идентификации исходного кода программ, концепция системы, проводящей такую идентификацию. Выделены имеющиеся проблемы, пути их решения и проанализированы требования, предъявляемые к системе в целом. Актуальность задачи обусловлена увеличением интереса к созданию обучающих систем и автоматизированных комплексов диагностики знаний. На практике подход к тестированию, при котором студенту предлагается ответить на ряд вопросов и выбрать правильный ответ из нескольких предложенных вариантов, либо самому ввести слово или число, малоприменим при обучении программированию. В случае, когда вопрос представляет собой проблему, ответом является исходный код на одном из языков программирования, и единственно правильного решения выделить нельзя. В этом случае надо, получив исходный код от студента, “скомпилировать” и протестировать его на некотором наборе тестов, заранее подготовленном преподавателем. При прохождении всех тестов в заданное время и не превышении отведённого лимита оперативной памяти – решение считается верным. По такому принципу работают системы проведения олимпиад по программированию, такие, как ejudge и некоторые другие. Однако системы тестируют скомпилированные программы, а не исходный код и алгоритмы, поэтому не могут быть использованы в обучении, поскольку отсутствует помощь студенту в решении задачи, не указываются ошибки, не оценивается качество оформления и комментирования исходного кода, не даются указания, как создать легко читаемые программы. В системах on-line тестирования не существует возможности оценить самостоятельность проделанной работы. Поэтому задача разработки системы обучения программированию и контроля его качества, подразумевает требование оценки решения в целом, применяемых синтаксических конструкций, соблюдения правил написания программы (например, правил именования переменных). ________________________________________________________________________ ISBN 5-7262-0710-6. НАУЧНАЯ СЕССИЯ МИФИ-2007. Том 10 77 УДК 001(06) Телекоммуникации и новые информационные технологии… В данной работе предлагается путь реализации системы на основе многоуровневого механизма проверки. На первом уровне находятся синтаксический и семантический анализаторы конкретного языка программирования, подключаемые к среде с помощью специального API (что даёт возможность добавлять поддержку многих языков программирования). Единый для всей системы генератор на основе данных первого уровня генерируют псевдокод, передающийся второму уровню, на котором находятся анализатор ветвлений, нейронная сеть, поисковый механизм по базе кода и некоторые другие модули на основе систем искусственного интеллекта. Благодаря этому достигается независимость системы от применяемого языка программирования и операционной системы. На первом уровне анализируется качество написания исходного кода, а на втором качество алгоритмов и их оригинальность. И только на третьем уровне происходит проверка работоспособности решения на предложенных тестах. В случае не прохождения какого-либо теста, система, основываясь на данных анализаторов, может находить узкие места. Кроме того, благодаря такому разделению, при работе, как в кластерных системах, так и на многопроцессорных достигается существенное повышение производительности за счёт удобства распараллеливания логических уровней и рабочих потоков внутри уровней. Система должна иметь web-интерфейс, представляющий собой IDE с необходимыми для обучения возможностями. Благодаря этому студентам не требуется устанавливать какие-либо программы или среды разработки на свой компьютер, а можно сразу приступать к работе. Кроме того, нет необходимости обновлять версии и устанавливать ПО в компьютерных классах ВУЗов, что, безусловно, облегчает внедрение. Технология AJAX, применяемая в web-интерфейсе позволяет минимизировать усилия, затрачиваемые на переход от настольной IDE к нашему web-приложению. Конкретная реализация возможна на языке C# с применением возможностей .NET 3.0, а именно Windows Communication Foundation и Windows Workflow Foundation, что позволит добиться работы системы в связке с практически любыми другими системами и сервисами и использовать возможности данной системы в других проектах. Кроме того, повышается отказоустойчивость и надёжность системы, последствия сбоев сведены к минимуму. Таким образом, анализ задачи идентификации исходного кода программы показывает, какие основные подходы могут быть применены для проектирования системы. ________________________________________________________________________ ISBN 5-7262-0710-6. НАУЧНАЯ СЕССИЯ МИФИ-2007. Том 10 78 УДК 001(06) Телекоммуникации и новые информационные технологии… ________________________________________________________________________ ISBN 5-7262-0710-6. НАУЧНАЯ СЕССИЯ МИФИ-2007. Том 10 79