Проектирование системы дистанционного обучения

Введение

1. Постановка задачи
2. Анализ систем дистанционного обучения.
2.1. Преимущества дистанционного обучения
2.2. Недостатки дистанционного обучения
2.3. Аспекты технической реализации системы дистанционного обучения
3. Проектирование модулей системы дистанционного обучения
3.1. Разработка модулей наполнения и обзора лекционных материалов
3.2. Разработка модуля тестирования
4. Разработка программного обеспечения
4.1. Выбор программных средств разработки
4.1.1. Выбор операционной системы для сервера
4.1.2. Выбор Web-сервера
    4.1.3. Выбор средств управления базами данных и языковых средств разработки
4.2. Проектирование БД системы дистанционного обучения
4.2.1. Представление модели данных в виде ER – диаграмм
4.2.1. Логическое проектирование БД
4.2.2. Приведение БД к табличной форме
4.2.3. Проектирование схемы БД
4.3. Разработка программных модулей
4.3.1. Разработка модели
4.3.2. Разработка контроллеров действия

4.3.3. Разработка шаблонов (view в паттерне MVC)

Выбор средств управления базами данных и языковых средств разработки

Выбор СУДБ тесно связан с выбором языка программирования для разработки Интернет приложений, поскольку при разработке тех или иных СУБД они ориентировались на взаимодействие с конкретным языком программирования. Наиболее распространенными связками являются:

  • MySQL + PHP;
  • MySQL + Perl;
  • MS SQL + ASP.NET.

Основными критерия здесь являются:

  • быстродействие;
  • удобство разработки;
  • безопасность данных.

Одна из важных причин популярности MySQL заключается в том, что ее создатели с самого начала разработки этой СУБД поставили во главу угла ее быстродействие, пожертвовав при этом некоторыми удобствами для разработчиков. Связка PHP + MySQL или Perl + MySQL обеспечивают очень высокое быстродействие, которого очень трудно достичь другими средствами. Очень хорошая связь MySQL с PHP стала еще одной причиной популярности этой СУБД. Поддержка MySQL входит в стандартную сборку PHP, и можно быть уверенным, что проблем обращения к серверу MySQL из PHP-скриптов не будет. Для обеспечения взаимодействия PHP с другими СУБД (PostgreSQL, Oracle и так далее) приходится компилировать его самостоятельно из исходных кодов с дополнительными опциями. Таким образом, можно считать, что дешевизна, легкодоступность, производительность и тесная взаимосвязь с PHP и обеспечивают такую популярность MySQL.
Однако считать MySQL идеальной СУБД было бы большой ошибкой, поскольку высокая скорость работы MySQL достигается за счет принесения в жертву удобства разработки, лишая разработчиков многих инструментов и команд, привычных в других СУБД. В MySQL нет возможности пользоваться вложенными подзапросами, процедурами, триггерами, видами и, с некоторыми оговорками, каскадными обновлениями. Однако  в версии 4.1 ожидается добавление вложенных подзапросов, а в версии 5 - и другие дополнительные средства.
Тем не менее, в руководстве MySQL, которое можно найти на сайте компании MySQL AB, приведены рекомендации, использование которых поможет свести неудобства от недостатка инструментов к минимуму, а в некоторых случаях - даже извлечь из этого пользу. Например, там, где в других СУБД опираются на концепцию транзакций, которая обеспечивает целостность и согласованность таблиц, фиксируя только законченные изменения, легко откатывая базу данных к последнему согласованному состоянию в случае неудачи, в MySQL применяется концепция "запирания" таблицы перед проведением операций, потенциально опасных для целостности базы данных, не позволяя в этом момент другим соединениям изменять и читать данные с этой таблицы и ставя запросы в очередь. Вложенные подзапросы в большинстве случаев можно переписать в один более сложный запрос, получая еще большее быстродействие, или разбить их на несколько, а ведь в СУБД, где вложенные подзапросы разрешены, программисты иногда даже не задумываются о возможности оптимизации вложенных подзапросов. Помимо этого, в MySQL есть и альтернативные способы хранения таблиц в базе данных (InnoDB), которые не используются по умолчанию, но тем не менее поддерживают концепцию транзакций, обеспечивая привычные механизмы отката неудачных операций и предоставляя дополнительные инструменты - например, каскадные удаления и так далее, - правда, в ущерб тому же быстродействию базы данных.
СУБД MySQL использует традиционную архитектуру клиент-сервер, и поэтому, работая с MySQL, мы в действительности работаем с двумя программами. Программа сервера базы данных расположена на компьютере, где хранится база данных. Она ждет запросы клиентов, поступающие по сети, и обеспечивает доступ к содержимому базы данных для извлечения информации, запрашиваемой клиентами. Клиентская программа осуществляет подключение к серверу и передает запросы ему. В общем случае клиент и сервер MySQL находятся на разных компьютерах, позволяя подключаться к серверу MySQL с любого компьютера, находящегося в сети. Но это совсем не значит, что любой человек может подключиться к базе данных. В СУБД MySQL есть собственная система защиты, которая позволяет настроить доступ к базе данных только тем, кто имеет на это право, а также разграничить права доступа, разрешая только те операции, которые необходимы данному пользователю. Кроме этого при разработке приложений веб-сервер, сервер MySQL, и скрипты, выступающие в роли клиентов MySQL, находятся на одной машине, что позволяет ограничить возможные соединения с сервером MySQL локальной машиной и дать доступ к базе данных только одному пользователю, от имени которого эти скрипты будут соединяться с сервером. Естественно, в этом случае вопросы безопасности должны учитываться уже в разрабатываемых скриптах.
Связка MS SQL + ASP.NET разрабатывалась специально для работы под ОС Windows, при работе с которой она обеспечивает максимальное быстродействие и стабильность. Но, учитывая, что для построения сервера ранее была выбрана ОС Linux, использование данной связки является не целесообразным. Не смотря на то что, существуют проекты (например, Mono), позволяющие запускать любые .NET-приложения под Linux (и, соответственно, под FreeBSD в режиме бинарной совместимости), и существует mod (плагин) Apache для обработки ASP.NET-приложений, все-таки ASP.NET и Unix-системы - пока что больше гетерогенная среда, с вытекающими от сюда нестабильностью и пониженной скоростью работы из-за отличия архитектур.
Кроме того ASP.NET не приспособлен для маленьких проектов и тем более - для немногочисленных сработавшихся групп, которым не требуется четкое управление. Причин тому множество - начиная от высокой стоимости платформы и заканчивая сложностью модели классов .NET. В отличии от него область применения PHP - небольшие проекты, которые делает или тесно сработавшаяся группа, или один человек. Благодаря бесплатности PHP (а также бесплатности MySQL и самой платформы), этот язык становится идеальным выбором для небольших авторских сайтов или сайтов для малого и среднего бизнеса. Кроме того, PHP работает быстрее.
Учитывая все перечисленные достоинства связки PHP + MySQL, а так же высокую степень совместимости с ОС Linux и сервером Apache, для разработки системы администрирования будем использовать именно ее.
При разработке был использован набор библиотек Zend Framework. Среди наиболее популярных альтернатив jQuery, PHP Cacke, в Zend Framework удачно реализовано отделение логики приложения от логики представления(модель-вид-контроллер). В качестве шаблонизатора был выбран Zend View.
Для улучшения средств интерактивности клиентской части была использована библиотека «Prototype.js» с помощью этой библиотеки для JavaScript можно создавать запросы XmlHttpRequest. Для отображения видео-аудио информации был разработан проигрыватель мультимедийных файлов  в программной среде AdobeFlashCS3.

СевНТУ 2008г. автор работы Прищак Сергей
Hosted by uCoz