Этимология названия, Joomla.

Режимы работы.

TYPO3 имеет два режима работы: frontend и backend. Frontend - это "лицо" сайта, то, каким он виден посетителям. Backend - это интерфейс для администраторов и редакторов сайта. Кроме того, поддерживается режим frontend-редактирования, позволяющий редакторам вносить правки непосредственно при просмотре "лица" сайта.

Концепция.

Структура сайта в TYPO3 представлена деревом страниц. На каждой странице могут быть размещены элементы содержимого - небольшие блоки информации: текст, текст + изображение, изображение, таблица, чистый html, плагин и др. TYPO3 основана на шаблонах. Существуют готовые шаблоны для TYPO3, однако в основном шаблоны строятся заново на специальном конфигурационном языке TypoScript. Несмотря на использование script в названии, TypoScript не является процедурным языком. Он используется для конфигурирования и отображения сайта. TypoScript является альтернативой XSLT.

Основные возможности:

- редактор текста с форматированием (RTE) и проверка орфографии;

- отмена изменений и история изменений;

- предпросмотр перед публикацией;

- буфер обмена;

- редактирование содержимого из frontend и backend;

- внутренние ссылки (возможны ссылке на уровне элементов содержимого);

- внутренний поисковый механизм;

- одна инсталляция системы для многих сайтов (с единым деревом страниц);

- одна инсталляция системы для многих доменов;

- Templavoila;

- гибкая система разграничения прав для редакторов сайта;

- динамическое построение меню - текстовых и графических;

- возможность авторизации пользователей через LDAP;

- версионирование;

- рабочие области (workspaces);

- поддержка WML;

- поддержка XML;

- поддержка импорта и эксторта RSS;

- экспорт в PDF;

- экспорт в статический HTML;

- кэширование страниц;

Templavoila.

Templavoila - альтернативный шаблонизатор для TYPO3. С помощью Templavoila из HTML-шаблона генерируется TYPO3-шаблон без изменений в структуре HTML. Процесс генерации Templavoila-шаблона (мэппинг) представляет собой сопоставление областей HTML-кода и той функциональсти, которая будет связана с этими областями. Например, один из тэгов будет заменяться на сайте меню, вместо другого тэга будет подставлен элемент контента. Мэппинг выполняется с помощью мыши и не требует даже знания HTML.

Важной особенностью Templavoila является возможность создания Flexible Content Elements (FCE) - динамических элементов контента. Это особые элементы контента, которые могут включать в себя более мелкие элементы контента и располагать их в соответствии со структурой HTML-шаблона. FCE строятся по тем же принципам, что и Templavoila-шаблоны страниц, создавая эффект "шаблона в шаблоне". Использование FCE позволяет чрезвычайно гибко управлять содержимым страницы.

Расширения.

Основные расширения для TYPO3:

- гибкая новостная система;

- DAM (Didital Asset Management) - модуль позволяющий построить архив документов с гибкой категоризацией и поиском в файлах разных типов (MS Word, MS Excel, PDF) над обычным файловым хранилищем;

- форум;

- интеграция с существующими форумами;

- галереи изображений;

- интернет-магазин и каталог;

- голосования;

- блог;

- рассылки;

- чат;

- календарь;

- модули для SEO (google sitemap и т.п.);

Сайты.

TYPO3 работает более чем на 10000 сайтов, включая сайты CISCO, Nec, Epson Corporation, Philips, ЮНЕСКО, UNISEF, Коника-Минольта. TYPO3 — это промышленная CMS/CMF, отвечающая высоким стандартам безопасности. Она используется на сайтах шести швейцарских банков и нескольких европейских платежных систем.

 

В России TYPO3 используют: Газпром, ВЦИОМ, сервер органов гос. власти Республики Бурятия, Консультационно-внедренческая фирма «ИНТАЛЕВ», Уральская академия государственной службы, Новосибирский государственный педагогический университет, ОАО «Хакасэнерго» и другие организации.

Примеры сайтов.

http://www.unesco.org/en/education

http://www.altlinux.ru/

http://www.univie.ac.at/

1.2.4.4 Joomla!

Joomla! одна из наиболее мощных Систем Управления Содержимым с Открытым Кодом (Open Source CMS) на планете. Она используется по всему миру для всего, от простых сайтов до комплексных корпоративных приложений. Joomla! лёгко устанавливается, проста в управлении, надёжна.

Этимология названия, Joomla.

Название Joomla фонетически идентично слову Jumla, которое в переводе с суахили означает «все вместе» или «в целом», что отражает подход разработчиков и сообщества к развитию системы.
Название системы пишется как Joomla! (именно так, с восклицательным знаком).

История развития.

Joomla является ответвлением и дальнейшим развитием широко известной Mambo CMS.

Команда независимых разработчиков отделилась от проекта Mambo по причине несогласия в экономической политике. И 16 сентября 2005 года в свет вышла первая версия Joomla, являющаяся по сути переименованной Mambo 4.5.2.3 и включающая в себя исправления найденных на тот момент ошибок и уязвимостей.

На данный момент существует две линейки Joomla! 1.0.х и 1.5.х.

1.0.х - явлется основательно переработанной и дополненой Mambo CMS. Существует ровно 3000 расширений для CMS которые позволяют создать сайт любого уровня.

1.5.х - это новая волна в развитии Joomla! предоставляющая большую свободу разработчикам расширений.

Большая часть расширений для Joomla! 1.0.x совместимы с 1.5.x (об этом разработчики позаботились отдельно).

Описание системы.

Joomla включает в себя различные инструменты для изготовления веб-сайта и управления сайтом. Важной особенностью Joomla является минимальный набор инструментов при начальной установке, который обогащается по мере необходимости. Это снижает загромождение административной панели ненужными элементами, а также снижает нагрузку на сервер и экономит место на хостинге.

Примеры сайтов:

http://news.samgtu.ru/

http://www.tropicana.com.ua/

http://russiachess.org/

1.2.4.5 Сравнение СУС

В таблице 1.1 представлена информация о рассмотренных выше СУС.

Таблица 1.1

Сравнение описанных СУС

  1С-Битрикс NetCat TYPO3 Joomla!
Общая информация
Лицензия Платная Платная Бесплатная Бесплатная
Стоимость, руб. 4 900 - 249 900 5 880 Бесплатно Бесплатно
Дата выхода текущей версии 07.17.2008 13.05.2009 03.07.2009  

 

 

Продолжение таблицы 1.1

Текущая версия (релиз)   7.50 3.5 4.2.8 Joomla! 1.0.15
Интерфейс администрирования Web Web Web Web
Сайт системы http://www.1c-bitrix.ru/ http://www.netcat.ru/ http://www.typo3.org/ http://www.joomla.org/
Демо-доступ http://www.1c-bitrix.ru/products/cms/demo.php On-line доступа нет, но по моему есть возможность скачать demo http://demo.typo3lab.ru/ http://joomlaportal.ru/demo/administrator/index.php
Системные требования
База данных MySQL, MS SQL, Oracle MySQL MySQL, MS SQL, Oracle, Postgres SQL MySQL
Операционная система Windows, UNIX Windows, UNIX Windows, UNIX Windows, UNIX
Веб-сервер Apache, IIS Apache Apache, IIS Apache, IIS
Языки программирования PHP PHP PHP PHP
Безопасность и производительность
Фиксация действий пользователей (ведение лога) - + + +
Защита от автоматического заполнения форм (CAPTCHA) + + + +
Многоуровневое утверждение изменений (модерация публикуемых материалов) + + + +
Разграничение доступа (распределение прав) + + + +
Кэширование страниц + + + +
Поддержка безопасного протокола при работе с системой (SSL) + + + +

Продолжение таблицы 1.1

Поддержка
Гарантийное обслуживание 12 мес. 12 мес. неизвестно неизвестно
Руководство пользователя + + + +
Возможности самостоятельного конфигурирования системы
Сторонние разработчики (компании, которые помимо разработчика, могут поддерживать и развивать систему) + + + +
Возможность приобретения системы отдельно от проекта ('Коробка') + + + +
Руководство разработчика + + + +
Удобство использования
Дружественные URL (ЧПУ) + + + +
Ресайз изображений + + + +
Пакетная закачка + + + +
Клонирование объектов системы (копирование материалов) + + + +
Настройка стилей для визуального редактирования материалов + + + +
Восстановление удаленных объектов (Корзина) - - + +
Визуальный редактор (WYSIWYG-редактор) + + + +
Публичный форум + + + +

 

 

Продолжение таблицы 1.1

Планировщик состояния материала (расписание контента) + - + +
Гибкость
Несколько языков интерфейса + + + +
Поддержка многоязычности сайтов + + + +
Многосайтовость + + + +
Встроенные модули
Поддержка RSS + + + +
Баннеры + + + +
Мета-теги + + + +
Веб-статистика + + + +
Система документооборота + - + +
Блоги + + + +
Чат - - + +
Форум + + + +
F.A.Q. + + + +
Вакансии + + + +
Обмен ссылками + + + +
Настраиваемые формы обратной связи + + + +
Фотогалерея + + + +
Голосования + + + +
Каталог продукции + + + +
Интернет-магазин + + + +
Поиск по сайту + + + +
Платежные системы + + + +
Подписка + + + +

1.2.5 Актуальность проводимой разработки

Сайт может быть статическим и динамическим. Статический сайт – это набор простых текстовых html-страниц. В динамическом сайте содержание страницы формируется «на лету», при запросе страницы. При этом данные для страницы могут браться откуда угодно: 1) из базы данных, 2) с другого сайта, 3) из файла, находящегося на сервере, 4) результирующая информация может быть результатом вычислений. При этом контент таких страниц может меняться в зависимости от многих фактором: 1) время запроса, 2) параметры запроса, 3) регион, откуда пришёл запрос и др.

Для обеспечения работы таких динамических сайтов требуется web-сервер, который при обращение к какой либо странице, которая является скриптом, написанным на каком либо языке программирования, будет запускать интерпретатор для исполнения написанной программы или процесс какой либо программы, при этом результат работы интерпретатора, или же процесса, web-сервер перешлёт в ответ на запрос клиенту.

Ценность такой схемы работы по сравнению со статическим сайтом велика.

Данная СУС работает по описанному принципу, написана на языке программирования PHP и позволяет полностью автоматизировать работу с сайтом. Больше не надо вручную создавать html-страниц и связывать их гиперссылками. В СУС редактирование контента страниц облегчено благодаря визуальному редактору, где можно так же как и в офисных приложениях редактировать текст, вставлять изображения. Связывание страниц между собой так же упрощено – ссылки генерируются автоматически.

По сравнению с аналогами данная СУС: 1) будет проста в использовании, 2) функционально будет реализовывать только то, что нужно, не будет ненужных функций, но в то же время будет легко расширяемой.

1.3 Общие требования к системе

1.3.1 Требования к структуре и функционированию системы

СУС должна иметь клиент-серверную архитектуру. Клиентом является браузер. Сервером будет ЭВМ с установленным программным обеспечением. Кроме ОС на сервере должны быть установлены веб-сервер Apache, СУБД MySQL, интерпретатор PHP с подключенными библиотеками. Браузер клиента формирует запрос серверу, веб-сервер, в зависимости от параметров запроса собирает нужную информацию(из базы данных, из файлов, из других источников) и отправляет обратно клиенту. Обмен информацией производится по протоколу HTTP.

1.3.2 Дополнительные требования

Дополнительные требования:

1. Управление сайтом должно быть лёгким.

2. Работа с сайтом должны быть безопасной. Доступ к управлению сайтом должен быть ограничен.

3. СУС должна быть легко расширяемой.

4. Система должна быть быстрой в работе.

5. Результирующая себестоимость должна быть меньше, чем у аналогов.

6. СУС должна быть нетребовательна к программному обеспечению и аппаратным ресурсам.

1.4 Требования к функциям, выполняемым системой

1.4.1 Управление страницами сайта

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

Данные функции являются первоочередными в плане реализации.

1.4.2 Поиск информации

Второй по важности функцией системы является поиск информации. По сути поиск – это своего рода вид навигации, который может компенсировать плохо продуманную систему ссылок. Благодаря поиску можно быстро найти то, что действительно нужно.

Входными данными здесь является строка с ключевыми словами. Выходными данными – результат поиска. Поиск будет вестись по страницам.

1.4.3 Разграничение прав

В СУС управление должно разграничиваться системой распределения прав. Система должна быть многопользовательской. Каждому пользователю должны даваться определённые права. При этом фактически используется модель RBAC(Role Based Access Control), модель, основанная на ролях. Ролями будут являться группы пользователей. Пользователь может принадлежать как к одной группе, так и к нескольким. Для групп буду выставляться права доступа.

Данная функция стоит на втором месте по важности. При этом реализовывать её надо первой, так как все компоненты системы будут использовать эту систему разделения прав для доступа к своим данным.

1.5 Требования к видам обеспечения

1.5.1 Требования к информационному обеспечению

Требования:

1. Все данные должны храниться в РСУБД. Была выбрана СУБД MySQL. Если в контексте задачи не обязательно хранить данные в БД, то можно их хранить в обычных файлах в собственном формате или в файлам XML.

2. Система должна быть многопользовательской.

3. Должна быть система распределения прав доступа.

4. Время доступа к данным должно быть минимальным и составлять не более пяти секунд.

5. Обращение к БД должно происходить только посредством СУС. Не допускается иной способ изменения данных в БД. В противном случае возможны нарушение целостности и перебои в работе СУС.

6. Должна быть возможность архивации системы для последующего восстановления в случае сбоя, нарушения работоспособности.

1.5.2 Требования к программному обеспечению

Требования к программному обеспечению:

1. СУС должны быть платформонезависимой.

2. СУС должна быть модульной.

3. СУС должна быть веб-приложением. Язык программирования – PHP.

4. Модель жизненного цикла - спиральная.

5. Интерфейс приложения должен быть эргономичным, интуитивно понятным.

6. Для ускорения процесса разработки желательно использовать дополнительное программное обеспечение, к примеру баг-трекеры – для записи найденных ошибок, task-листы для записи предстоящих задач и контроля времени, системы контроля версий(СКВ) для обеспечения версионности, контроля кода, восстановления. Так же следует использовать удобную среду разработки, например Eclipse.

1.5.3 Требования к техническому обеспечению

Так как СУС имеет клиент-серверную архитектуру, укажем требования сервера и клиента:

1. Минимальные требования к серверу:

- процессор с частотой не менее 1,5 Гц;

- оперативная память – не менее 256 Мб;

- видеопамять – не имеет значения;

- дисковое пространство – не менее 30 Гб;

- наличие монитора, клавиатуры, периферийных устройств не обязательно;

- обязательно наличие соединения с локальной или глобальностью сетью;

 

2. Требования к клиенту.

К клиентскому компьютеру особых требований не предъявляется. Может быть установлена любая операционная система и любой браузер.

Примерная конфигурация:

- процессор –2 ГГц;

- объем оперативной памяти – 1 Гб;

- видеопамять – 128 Мб;

- дисковая подсистема – 80 Гб;

- монитор;

- клавиатура;

- мышь.

Но данные характеристики могут быть уменьшены минимум в полтора раза. Всё зависит в большей степени от требований ОС и в меньшей степени браузера.

 

 

2 конструкторский раздел

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

В СУС для хранения данных используется как СУБД, так и файловая система.

БД используется для хранения данных:

- о страницах;

- о модулях;

- об операциях модулей;

- о пользователях;

- о группах пользователей;

- о связи пользователей и групп;

- о связи групп и операций модулей.

Для хранения этих данных выбрана СУБД, так как существуют сложные взаимосвязи, иерархические структуры и в этом случае:

- СУБД предлагает удобные средства для управления данными – язык SQL;

- СУБД будет работать намного быстрее, чем если бы мы придумали свой формат хранения данных и способ управления ими.

Была выбрана СУБД MySQL версии 4.0 и выше. Так же рассматривалась СУБД PostgreSQL. Сравнительный анализ и причину выбора именно СУБД MySQL можно посмотреть в приложении А.

Файловая система будет использоваться для хранения данных:

1. О шаблонах. Это обычные файлы в формате HTML. В них представлен вид отображения страниц сайта.

2. О компонентах. Компонент – это набор файлов, в который входят: 1) файл с информацией о компоненте; 2) файл с изображением иконки компонента(графический файл в формате GIF); 3) файл с описанием входных параметров; 4) файл с кодом; 5) файл с шаблоном отображение компонента. Компонент – это по сути кусок кода, внедряемый на страницу. Информация о компоненте храниться в основном в файлах формата XML. Данный формат выбран не случайно. XML – это наиболее удобный формат хранения данных, так как существуют библиотеки для работы с XML, которые значительно облегчают работу с данными файлами. Так же существует язык XPath для доступа к нужным частям документа в формате XML.

Файловая система для хранения этих данных выбрана потому что:

- в этом случае возможен прямой доступ к файлам, в обход СУС;

- формат данных имеет простую структуру и обращаться к ним можно напрямую, что позволяет снизить нагрузку на СУБД;

Стоит заметить, что искажения информации при общем доступе к данных маловероятны, так как наиболее частая операция для этих данных – это операция чтения.

2.2 Проектирование базы данных

2.2.1 Логическая модель данных

Сущности, выявленные при проектировании, представлены в таблице 3.1.

Таблица 3.1

Сущности логической модели данных

Название сущности Описание
Страницы Данные о страницах сайта
Модули Данные об установленных модулях сайта
Действия Действия модулей
Пользователи Данные о пользователях
Группа Данные о группах
Группы пользователей Данные о связи групп и пользователей
Доступ Данные о правах доступа пользователей групп к конкретным действиям

 

В последующих таблицах(таблицы 3.2 – 3.8) находится подробное описание каждой сущности.

Таблица 3.2

Атрибуты сущности «Страницы»

Название атрибута Тип Описание
Номер целый Номер страницы
Номер родителя целый Номер «родителя»
Порядковый номер целый Порядковый номер
Имя текстовый Имя страницы
Заголовок текстовый Заголовок страницы
Описание текстовый Описание страницы
Ключевые слова текстовый Ключевые слова, описывающие страницу
Контент текстовый Содержание страницы
Шаблон текстовый Название шаблона страницы
Внешняя ссылка текстовый Адрес ссылки на внешний ресурс
Внутренняя ссылка целый Ссылка на страницу сайта
Видимость логический Флаг, определяющий видимость страницы на сайте

 

Таблица 3.3

Атрибуты сущности «Модули»

Название атрибута Тип Описание
Номер целый Номер модуля
Имя Текстовый Имя модуля
Информация Текстовый Описание модуля

 

Таблица 3.4

Атрибуты сущности «Действия»

Название атрибута Тип Описание
Номер целый Номер действия
Номер модуля Целый Номер модуля. Связь с модулем.
Имя действия Текстовый Имя действия
Информация Текстовый Описание действия

 

Таблица 3.5

Атрибуты сущности «Пользователи»

Название атрибута Тип Описание
Номер пользователя целый Номер пользователя
Логин пользователя текстовый Логин пользователя.
Пароль пользователя Текстовый Пароль пользователя, зашифрованный алгоритмом MD5
Почта пользователя Текстовый Адрес почтового ящика для отсылки сообщений.

 

Таблица 3.6

Атрибуты сущности «Группы пользователей»

Название атрибута Тип Описание
Номер целый Номер группы
Имя Текстовый Имя группы
Информация Текстовый Описание группы

 

Таблица 3.7

Атрибуты сущности «Группы пользователей»

Название атрибута Тип Описание
Номер группы целый Номер группы
Номер пользователя целый Номер пользователя

 

Таблица 3.8

Атрибуты сущности «Доступ»

Название атрибута Тип Описание
Номер группы целый Номер группы
Номер действия целый Номер действия
Доступ целый Определение доступа пользователей группы к действиям модулей.

 

На рисунке 3.1 отображены все описанные сущности и связи между ними.

Рис. 3.1. ER-диаграмма (логического уровня) в нотации IE

 

 

2.2.2 Физическая модель данных

В таблицах 3.9 – 3.15 описана физическая модель.

Таблица 3.9

Таблица физической модели «Pages»[Страницы]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id[Номер] счётчик Нет Not null
Id_parent[Номер родителя] int Нет Not null
Ord[Порядковый номер] int Not null
Name[Имя] text Нет Not null
Title[Заголовок] text Нет null
Description[Описание] text Нет null
Keywords[Ключевые слова] text Нет null
Content[Контент] longtext Нет null
Template[Шаблон] Varchar(255) Нет Not null
Ext_link[Внешняя ссылка] Varchar(255) Нет null
Int_link[Внутренняя ссылка] int Not null
Hidden[Видимость] Enum(‘true’, ‘false’) true Not null

 

Таблица 3.10

Атрибуты сущности «Modules»[Модули]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id[Номер] Счётчик Нет Not null
Name[Имя] Varchar(255) Нет Not null
Info[Информация] Text Null Null

 

Таблица 3.11

Атрибуты сущности «Actions»[Действия]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id[Номер] Счётчик Нет Not null
Id_module[Номер модуля] int Нет Not null
Name[Имя действия] Varchar(255) Нет Not null
Info[Информация] text null Null

 

Таблица 3.12

Атрибуты сущности «Users»[Пользователи]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id[Номер пользователя] счётчик Нет Not null
User_login[Логин пользователя] Varchar(255) Нет Not null
User_password[Пароль пользователя] Varchar(255) Нет Not null
User_email[Почта пользователя] Varchar(255) Нет Not null

 

Таблица 3.13

Атрибуты сущности «groups»[Группы]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id[Номер] Счётчик Нет Not null
Name[Имя] Varchar(255) Нет Not null
Info[Информация] text null null

 

Таблица 3.13

Атрибуты сущности «group_users»[Группы пользователей]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id_group[Номер группы] Int Нет Not null
Id_user[Номер пользователя] Int Нет Not null

 

Таблица 3.15

Атрибуты сущности «access»[Доступ]

Название поля Тип и размер Значение по умолчанию Допустимые значения
Id_group[Номер группы] Int Нет Not null
Id_action[Номер действия] Int Нет Not null
access[Доступ] Enum(‘0’, ‘1’) Not null

 

2.2.3 Проектирование реализации

В таблице 3.16 описаны индексы базы данных.

Таблица 3.16

Индексы базы данных

Название таблицы Название индекса Поля индекса Уникальность
access <Первичный ключ> Id_group, id_action да
actions <Первичный ключ> id да
groups <Первичный ключ> id да
groups_users <Первичный ключ> Id_group, id_user да
modules <Первичный ключ> id да
pages <Первичный ключ> id да
Users <Первичный ключ> id да

2.3 Проектирование файлов данных

СУС хранит данные не только в РСУБД. Данные хранятся и в файлах.

На рисунке 3.2 представлена иерархия директорий и файлов. В корне иерархии находятся директории: «modules», «php_lib», «storage», «templates», «tmp» и файлы «.htaccess», «configuration.php», «controller.php».

В директории «modules» хранятся модули СУС. Каждый модуль представляет собой директорию с уникальным именем, в которой находятся директории «admin»(здесь хранятся файлы административной панели), «components»(здесь хранятся компоненты модуля), «php_lib»(здесь хранятся классы модуля). Внутреннее содержимое папки модуля зависит от модуля. В папке «components» хранятся компоненты модуля, имена которых определяются именами директорий, хранящихся в «components». К примеру в папке «components» есть директория «tree_pages». Этот компонент выводит на странице сайта всю иерархию страниц. Компонент состоит из директории «0»(здесь хранится базовая версия компонента, которую после можно cкопировать и править) и файлов «description.xml»(здесь хранится информация о компоненте), «ico.gif»(иконка компонента). В директории «0» хранятся папка «templates»(здесь лежат шаблоны отображения компонента) и файлы «code.php»(код компонента), «description.xml»(описание версии компонента), «settings.xml»(входящие параметры компонента, которые будут доступны коду компонента при исполнении).

В директории «php_lib» хранятся общие классы СУС, доступные для всех модулей.

В директорию «storage» СУС сохраняет закачиваемые файлы. Файлы распределяются во внутренние папки в зависимости от типа.

В директории «templates» хранятся шаблоны страниц сайта. Это простые текстовые файлы с расширением «html», «htm», «tpl».

В директорию «tmp» СУС сохраняет временные файлы.

Файл «.htaccess» нужен для настройки веб-сервера Apache.

В файле «configuration.php» находятся настройки всей СУС. Это настройки для соединения с базой данных, настройки интерпретатора PHP.

Файл «controller.php» является одним из основных файлов системы. Он генерирует страницы.

Имена файлов и директорий имеют и должны иметь в своём составе буквы только латинского алфавита и цифры. Если имя состоит из нескольких слов, то они разделяются знаком «_». Имена не должны иметь в себе слова:

- «index»

- «login»

- «logout»

- «default»

Связано это с тем, что именно эти файлы подвергаются изменению при вирусной атаке.

При разработке новых модулей рекомендуется создавать иерархию директорий и файлов, аналогичную главному модулю(папка «main»).

 

 

Рис. 3.2. Файлы и директории СУС

 

2.4 Организация сбора, передачи, обработки и выдачи информации

Сбором и размещением нужной информации будет заниматься администратор сайта. Ввод и вывод информации будет осуществляться посредством браузера. Выдаваемая информация будет иметь различный вид: таблицы, графики, изображения, текста, аудио, видео.

Обработка информации будет осуществляться удалённо, на сервере.

В СУС предполагается возможность создания архивов системы, как по запросу, так и автоматически.

Шифрование передаваемой и принимаемой информации возможно реализовать, если настроить веб-сервер на работу по протоколу HTTPS. К СУС это не относится.

 

 

3 программно-техничесикий раздел

3.1 Структура программного обеспечения и функции его компонентов

При проектировании СУС использовались разные ОС(на сервере): 1) Windows XP; 2) Linux Mandriva 10; 3) FreeBSD 7.2. На клиентском компьютере использовались: 1) Windows XP; 2) Windows 7; 3) Linux Mandriva 10.

Для реализации выбран язык программирование PHP с установленными расширениями: 1) mb_string; 2) simplexml.

Для хранения данных выбрана СУБД MySQL.

Был выбран Web-сервер Apache с установленными модулями: 1) mod_rewrite.

Для обмена данными с web-сервером использовались разные браузеры: 1) Mozilla Firefox; 2) Internet Explorer; 3) Chrome; 4) Safari; 5) Opera.

Для функционального моделирования выбрано ПО от CA BPWin.

Для информационного моделирования выбрано ПО от CA ErWin.

Для работы с базой данных использовалось web-приложение phpMyAdmin.

При реализации использовалась среда разработки Eclipse с расширением PHP Development Tools(PDT).

3.2 Выбор компонентов программного обеспечения

3.2.1 Операционная система

Так как компоненты web-окружения(PHP, Apache, MySQL) кроссплатформенные, то на сервере можно использовать множество операционных систем: 1) FreeBSD; 2) Linux; 3) NetBSD; 4) OpenBSD; 5) Mac OS; 6) Windows. Но так как все компоненты изначально пишутся для Unix-систем(Linux, FreeBSD и т.д.), то лучше использовать их. В таких ОС они наиболее производительны и стабильны.

Для клиентского компьютера подойдёт любая ОС.

3.2.2 Инструментальное средство разработки и язык программирования

3.2.2.1 Инструментальное средство разработки

Для реализации выбрана среда разработки Eclipse.

Система управления сайтом написана на языке программирования PHP. Код хранится в открытом виде в обычных текстовых файлах с расширением «.php». Код обрабатывается интерпретатором PHP. Фактически писать код можно и в обычном текстовом редакторе(имеются ввиду редакторы, работающие с обычным текстом, а не редакторы наподобие MS Office, OpenOffice). Но для удобства и быстроты разработки лучше использовать специализированные IDE(Integrated Development Environment - система программных средств, используемая программистами для разработки программного обеспечения). В нашем случае IDE должна быть ориентирована на разработку web-проектов на языке PHP.

Почему лучше использовать именно IDE, а не простые текстовые редакторы:

1. Есть подсветка синтаксиса языка. При подсветке гораздо легче разобраться к коде.

2. Поддержка разнообразных кодировок. В нашем случае IDE должна поддерживать кодировку UTF-8.

3. В IDE присутствуют различные инструменты для отладки, профилирования кода. Могут присутствовать листы задач.

4. Во всех IDE есть возможность создавать проекты, задавать для проекта свойственные ему характеристики.

5. В IDE есть встроенные файловые менеджеры, FTP-клиенты, ssh-клиенты для удобного управления файлами.

6. В IDE зачастую есть модуль для взаимодействия с системами управления версиями.

7. IDE заблаговременно напоминает об ошибке.

8. В IDE есть система контекстной подсказки и автодополнения.

Зачастую IDE являются модульными и расширяются по мере необходимости. Следовательно и функциональность будет возрастать.

В процессе разработки использовались как специализированные текстовые редакторы(PHP Expert Editor, Em Editor), так и IDE(NetBeans, Eclipse). Среди них была выбрана IDE Eclipse. Причины выбора:

1. Кроссплатформенность.

2. Удобство использования. Приятный интерфейс.

3. «Тонкая настройка» под себя.

4. Модульность. Наличие множества модулей. Удобная установка модулей. Вообще Eclipse это не среда разработки, это основа для разработки модульных кроссплатформенных приложений. Eclipse использовалась с набором модулей, инструментов – PDT(PHP Development Tools).

5. Быстрота. Хотя система и написана на Java, но она достаточно быстра по сравнению с другими IDE на Java.

6. Стабильная работа.

В целом данными свойствами обладают и другие IDE. При выборе IDE рассматривались NetBeans и Eclipse. Обе IDE примерно одинаковы по функциональности в плане разработки приложений на PHP. Но Eclipse обладает большей стабильностью. В NetBeans в сборке для PHP наблюдались ошибки(версия 6.7). Так же Eclipse более гибок в плане настроек.

3.2.2.2 Язык программирования

Для реализации выбран язык программирования PHP.

Для обоснования выбора было произведено сравнение РНР с другими языками программирования Web-приложений. Это его основные конкуренты — Perl, ASP.NET, ColdFusion и Java.

РНР и Perl.

Язык Perl был создан программистом Ларри Уоллом (Larry Wall) и расшифровывается как Practical Extraction and Report Language. Перевести это можно как "язык для практического извлечения данных и составления отчетов". Perl является интерпретатором и появился намного раньше, чем Web. С появлением интернета язык Perl оказался удобным инструментом для создания динамических Web-страниц. Большое распространение Perl получил потому, что был доступен на каждом Web-сервере, поскольку практически все они работали под управлением UNIX, и альтернативой ему являлся лишь более сложный язык С.

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

РНР и Java.

Вообще говоря, различают язык Java и технологию Java. Язык Java представляет собой С-подобный язык, который разрабатывался как "улучшенный C++". Технология Java включает в себя клиентскую и серверную часть, а также доступ к базам данных, поэтому наиболее корректно проводить сравнение технологии Java со связкой Apache/PHP/MySQL. Технология Java разрабатывалась как межплатформенная технология, позволяющая создавать Web-приложения корпоративного масштаба. Основными достоинствами этой технологии являются межплатформенная переносимость и объектно-ориентированный язык, что позволяет создавать сложные и объемные приложения. К числу недостатков можно отнести медленное выполнение, потребление большого количества памяти (плата за межплатформенную переносимость) и сложность разработки Web-приложений по сравнению с РНР. Между тем РНР почти не уступает Java в гибкости и масштабируемости созданных приложений. Кроме того, использование Java для разработки достаточно простых приложений вряд ли оправдано, а при работе над серьезными задачами Java обходится дороже.

РНР и ASP.NET.

ASP (Active Server Pages) — язык сценариев от Microsoft. Если язык ASP значительно уступал РНР по многим параметрам, в первую очередь, по времени выполнения сценариев, то с появлением технологии ASP.NET ситуация изменилась.

Основное достоинство ASP.NET заключается в возможности применения всей мощи интерфейса Windows для разработки Web-приложений. Это позволяет разрабатывать страницы со сложным интерфейсом, не заботясь о сохранении, шифровании и передаче переменных, используемых на динамических страницах.

ASP.NET тесно интегрирован в новую технологию NET компании Microsoft. Главной особенностью разработки Web-приложений при помощи ASP.NET является возможность использовать любой язык программирования среды исполнения NET. Это может быть как модифицированный вариант Visual Basic — Visual Basic.NET, так и новый язык С# или клон Java — J#. Более того, в рамках одного Web-приложения могут быть использованы несколько языков программирования. Все это позволяет объединять в рамках одного проекта программистов, владеющих разными языками программирования. Код Web-приложения на ASP.NET компилируется в промежуточный язык MSIL (Microsoft Intermediate Language), иногда просто называемый IL. Аппаратно-независимый код на языке IL помещается в кэш Web-сервера для повышения производительности, по аналоги с байт-кодом Java. Но в отличие от технологии Java, обеспечивающей платформенную независимость, NET обеспечивает независимость от языка разработки. Выполнение Web-приложений ASP.NET на серверах, работающих не под Windows, практически невозможно. Более того, если Web-приложение интенсивно использует компоненты NET, просмотр динамической страницы будет возможен только под Windows и только с помощью браузера Internet Explorer. Поэтому в смысле переносимости РНР, безусловно, отличается от ASP.NET в лучшую сторону. Другой крайне немаловажный довод в пользу РНР заключается в быстром исправлении обнаруженных ошибок. Теоретически исправить их можно самостоятельно, если обладаете достаточной квалификацией. Также можно написать письмо разработчикам, и с большой долей вероятности, в следующей версии ошибка будет исправлена. А версии РНР выходят очень часто. С другой стороны, попробуйте написать об ошибке в Microsoft и попросить ее исправить. Если вы не глава Пентагона, вам это вряд ли удастся. Еще одним плюсом РНР, особенно важным для начинающих, является то, что его легче использовать для построения Web-приложений.

Таким образом, при выборе между ASP.NET и РНР следует исходить из стоящей задачи. Если в сети Интернет крупной корпорации большинство серверов и клиентских машин работают под управлением Windows, применение ASP.NET более чем оправдано. В то же время для разработки Web-сайта, размещаемого в Интернете, целесообразнее использовать РНР.

РНР и ColdFusion.

Пакет ColdFusion разработан фирмой Allaire и предназначен для быстрой разработки как интерактивных, так и динамических Web-документов путем обработки информации, полученной из базы данных. Минусом ColdFusion является достаточно низкая переносимость. РНР работает практически на всех платформах, a ColdFusion — только на четырех: Win32, Solaris, HP/UX и Linux. Кроме того, ColdFusion, так же как и ASP, является коммерческой разработкой. ColdFusion достаточно мало распространен. По сравнению с РНР он более требователен к ресурсам. Плюсом ColdFusion является хорошая интегрированная среда разработки и, как следствие, более простые, чем в РНР языковые конструкции и более быстрое написание кода. Правда, из-за такой высокоуровневости языка некоторые задачи на нем решаются сложнее.

PHP выбран по следующим причинам:

1. PHP идеально подходит для проектов малого и среднего уровня.

2. Бесплатность.

3. Открытость.

4. Большое сообщество PHP программистов. Большое количество справочной информации.

5. Личный опыт разработки на PHP больше, чем на других перечисленных языках программирования, технологиях.

6. Быстрота разработки.

7. Широкая распространённость среди хостинг-провайдеров.

8. Достаточно бурное развитие языка.

9. Быстрота исполнения.

3.2.3 Средство функционального моделирования

Для создания функциональной модели использовалось ПО от CA BPWin.

3.2.4 Средство информационного моделирования

Для создания информационной модели использовалось ПО от CA ErWin.

3.2.5 Вспомогательное программное обеспечение

Для работы с СУС может использоваться любой из современных браузеров:

1. Mozilla Firefox версии 2.0 и выше.

2. Opera версии 9.0 и выше

3. Internet Explorer версии 6.0 и выше.

4. Chrome(любая версия).

5. Safari версии 4.0 и выше.

3.3 Разработка прикладного программного обеспечения

3.3.1 Структура прикладного программного обеспечения

При создании СУС основной целью было создать легкорасширяемую систему. Система состоит из модулей. Так же не составит труда написать новый модуль.

На текущий момент функционально можно выделить следующие модули:

1. Модуль управления страницами.

2. Модуль управления шаблонами.

3. Модуль распределения прав доступа.

4. Модуль генерации страниц.

5. Модуль поиска информации.

3.3.2 Модуль управления страницами

Модуль предназначен для управления страницами: добавление, редактирование, просмотр «дерева» страниц, изменение порядка следования, удаление страниц.

Модуль состоит из 700 строк кода.

Таблица 4.1

Спецификация модуля управления страницами

Название и тип элемента Описание
Глобальные переменные
$action Содержит название текущего действия
Глобальные константы
DB_PREFIX Хранит префикс для таблиц базы данных
DB_HOST Хранит адрес сервера СУБД
DB_DATABASE Хранит название базы данных
DB_USER Хранит название пользователя базы данных
DB_PASSWORD Хранит пароль пользователя базы данных
DB_CHARSET Хранит кодировку базы данных
RP Хранит пусть установки системы
WRP Хранит путь установки системы относительно переменной окружение DOCUMENT_ROOT
Классы
Pages Класс для работы со страницами
Mysql Класс для работы с СУБД

 

Таблица 4.2

Спецификация класса Pages

Название и тип элемента Описание
Методы
Public static function getTreePages($parent, $fields, $exId, $getHidden, $reset) Метод возвращает в виде массива дерево страниц

 

Продолжение таблицы 4.2

public static function getMenuLevels($id, $idParent, $new = true) Метод возвращает все уровни меню
function deletePages($id, $new = true) Метод удаляет страницу
function getIdByUri($uri) Метод возвращает номер по страницы по запрошенному REQUEST_URI
function getUriById($id) Метод находит путь к странице по заданному номеру страницы

 

Таблица 4.3

Спецификация класса Mysql

Название и тип элемента Описание
Поля
$connection Дескриптор соединения
$result Результат выполнения запроса
$countQuery Количество выполненных запросов за сеанс
$errors Массив ошибок
$showErrors Флаг. Показывать ошибки или нет.
Методы
public static function connect($host, $user, $password, $database, $charset = 'utf8') Соединение с СУБД
public static function disconnect() Отсоединение
public static function query($query) Выполнение запроса
public static function getRows($query) Выполнить запрос и вернуть результат в виде массива.
public static function getErrorLog() Показать лог ошибок
public static function getCountQuery() Получить количество выполненных запросов

 

3.3.3 Модуль управления шаблонами

Модуль управления шаблонами необходим для создания, редактирования, просмотра и удаления шаблонов.

Модуль содержит 200 строк кода.

Спецификация данного модуля соответствует спецификации, описанной в таблице 4.1. Дополнительно в модуле используется класс FileSystem для работы с файловой системой.

 

Таблица 4.4

Спецификация класса FileSystem

Название и тип элемента Описание
Методы
function appendToFile($pathToFile, $value) Добавляет содержимое в конец файла
public static function getList($path, $type = 0, $pattern = '[.*]ui') Получить список файлов и/или директорий, соответствующих шаблону
function smartCopy($source, $dest, $folderPermission = 0755, $filePermission = 0644) Рекурсивное копирование
public static function rDelete($path, $new = true) Рекурсивное удаление

 

3.3.4 Модуль распределения прав доступа.

Модуль распределения прав доступа предназначен: 1) для управления группами; 2) для управления пользователями; 3) для задания и контроля уровня доступа.

Модуль состоит из примерно 2000 строк кода не включая сторонние классы.

3.3.5 Модуль генерации страниц

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

Модуль состоит из 50 строк кода, не включая библиотеки и классы.

3.3.6 Модуль поиска информации

Модуль поиска информации предназначен для поиска информации на страницах сайта. К.О.)

3.4 Разработка инструментального средства тестирования

При разработке СУС производилось ручное тестирование. Дополнительные инструментальные средства тестирования не использовались и не разрабатывались.

3.5 Особенности реализации, эксплуатации и сопровождения системы

Особенности эксплуатации:

1. PHP должен быть установлен с расширением mb_string для корректной работы с мультибайтовыми кодировками(всё в СУС хранится в кодировке UTF-8).

2. Web-сервер Apache должен быть установлен с модулем mod_rewrite.

3.6 Интерфейс пользователя с системой

4.6.1 Модели и технологии взаимодействия пользователя с системой