Клиент-серверное взаимодействие
При начале сеанса приложение обращается к серверу контрольных работ, проверяя правильность имени и пароля пользователя. По завершению работы на сервер отсылаются идентификатор пользователя, время начала и конца выполнения работы, а также оценка по 10-балльной системе. Более подробное описание содержится в дипломной работе разработчика сервера.
Анализ существующих аналогов
На данный момент имеется множество уже реализованных систем обучения и проверки знаний, такие, как система управления обучением Moodle, ATutor, Desire2Learn и т.д. [5]. Большая часть из них – это открытые системы, которые могут дополняться и расширяться новыми заданиями и тестами.
Существуют также проприетарные системы, такие, как Brainbench или RetraTech. Эти системы также используются для тестирования пользователей по различным наборам тем и даже выдают сертификаты.
Но у всех таких систем имеется общий недостаток – их нельзя настроить так, чтобы «проследить» путь решения студентом задачи. Эти системы предлагают сразу ввести ответ, что позволяет недобросовестному пользователю найти ответ в интернете или вычислить на калькуляторе, не размышляя и не решая задание.
В рамках же данной работы необходимо убедиться, что студент, решающий контрольную работу, глубоко понял тему. Для этого необходимо, чтобы студент ввёл решение и ответ целиком. Кроме того, в обучающем режиме необходимо показывать пользователю подсказки об ошибках, если таковые имеются.
В результате обзора существующих аналогов было принято решение об отдельной самостоятельной реализации данной системы.
Выбор средств разработки Для разработки был выбран язык программирования C# версии 3.0, компилируемый под платформу .NET версии 2.0.
C# (произносится си-шарп, иногда переводят си-диез) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270. Компилятор C# входит в стандартную установку .NET Framework.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).
Он поддерживает такие возможности, как: Обобщения, Смешанные типы, Анонимные методы, Итераторы, Нуль-типы, Неявно типизируемые локальные переменные, Автоматическая реализация свойств, Анонимные типы, Методы-расширители, Запросы, Лямбда-выражения, Деревья выражений, Динамическое связывание, Именованные и дополнительные аргументы, Обобщенная ковариантность и контрвариантность, Асинхронные методы [1, 2, 5].
.NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Фактически представляет собой операционную систему внутри операционной системы. Основой платформы является виртуальная машина Common Language Runtime (CLR), способная выполнять как обычные настольные программы, так и веб-приложения. Отличительной особенностью .NET Framework является способность выполнять программы, написанные на разных языках программирования.
Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET понятный человеку низкоуровневый язык Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). Затем компилятор производит перевод CIL-кода в объектный байт-код (в терминах .NET получается сборка, англ. assembly), а уже байт-код либо исполняется виртуальной машиной CLR, либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time — компиляция на лету) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы [1].
Стандартные библиотеки платформы .NET предоставляют средства для лёгкой реализации клиент-серверного общения от обычных сокетов до запросов к веб-сайтам и базам данных, посредством провайдеров ADO.NET, поставляемых разработчиками баз данных. В качестве системы контроля версий была выбрана SVN. Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc [5]. Разработка Subversion была начата в 2000 году по инициативе и при финансовой поддержке CollabNet Inc. Инициаторы проекта хотели создать свободную систему управления версиями, в основном похожую на CVS, но лишённую её ошибок и неудобств. В то время не существовало лучших программ этого класса со свободной лицензией, CVS была стандартом де-факто среди разработчиков свободного программного обеспечения. Выбрав её за основу, разработчики Subversion надеялись упростить разработку за счёт использования уже проверенных концепций и в то же время облегчить переход на новую систему многочисленным пользователям CVS. Subversion реализует все основные функции CVS и свободна от ряда недостатков последней.
Основные функции SVN, использованные при работе над данным проектом:
Хранение полной истории изменений отслеживаемых объектов (файлов, директорий, символьных ссылок) в централизованном хранилище (репозитории), в том числе при изменении атрибутов («метаданных»), перемещении, переименовании и удалении.
Поддержка переноса изменений между копиями объектов, в том числе полного слияния копий (в рабочей копии; без объединения истории).
Поддержка ветвления: создания ветвей (копированием директорий) и работы с ними.
История изменений и копии объектов (в том числе ветви и метки) хранятся в виде связанных разностных копий — «дешёвых» (не требующих больших временны́х и дисковых ресурсов) при создании и хранении.
Фиксации изменений в хранилище (в том числе многообъектные) организуются в виде атомарных транзакций.
Сетевой обмен между сервером и клиентом предусматривает передачу только различий между рабочей копией и хранилищем.
|