Первым этапом создания любого программного продукта является постановка задачи. Имея точно сформулированные цели и задачи, можно приступать к проектированию структуры базы данных и всего приложения в целом. Разработку приложения можно начинать, только имея готовый проект, иначе вся работа грозит закончиться неудачей и потерей драгоценного времени. Постановка задачи Наш заказчик -- директор небольшого книжного магазина специализированной литературы. Постоянные покупатели время от времени звонят в магазин, чтобы узнать о наличии той или иной конкретной книги или книг по какой-либо тематике. Нередко люди просят привезти им книгу на дом или на работу, поэтому руководство книжного магазина решило пойти им навстречу и создать специальную службу заказа и доставки книг покупателям. Из всех возможных вариантов сеть Интернет оказалась идеальным вариантом для реализации проекта, так как большая часть покупателей имела отношение к компьютерам и постоянно пользовалась услугами Сети, а анализ стоимости создания и эксплуатации службы заказа показал, что проект на основе сети Интернет потребует намного меньше капиталовложений, чем альтернативные варианты. После долгой беседы с заказчиком был составлен необходимый минимум свойств и требований, предъявляемых к будущему приложению. Приложение должно: - показывать потенциальному покупателю информацию о товаре (книгах);
- представлять описания и свойства товара в структурированных категориях;
- иметь возможность быстрого и относительно простого обновления внешнего вида сайта;
- использовать внутреннюю банерную систему, использующую несколько популярных форматов банеров, в том числе и из внешних источников (банерных сетей);
- позволять пользователю производить поиск товаров в названиях и описаниях товаров путем задания ключевых слов;
- автоматизировать систему приема заказов, отправлять уведомления о заказе покупателю и владельцу Интернет-магазина;
- обеспечить конфиденциальность информации о покупателях и заказах;
- управлять работой Интернет-магазина через web-браузер.
Доставку товара заказчик собирается производить с помощью одной из курьерских фирм города и только в пределах города, в котором располагается его магазин. Книжный магазин и курьерская служба заключили предварительное соглашение о том, что стоимость доставки будет составлять 2% от суммы заказа или не менее $1, если сумма заказа меньше $1. Возможность торговли по всему миру требует больших дополнительных расходов на организацию бизнеса и нашего заказчика не интересует. Заказчик поставил несколько дополнительных условий: - очень важны минимальные вложения средств в этот проект;
- первоначально размещать проект предполагается в одной из популярных служб, оплатив недорогой виртуальный сервер на платформе Linux. При успешном развитии проекта, когда он начнет приносить прибыль, площадку необходимо будет сменить, и для того, чтобы не было проблем переноса с одного сервера на другой, приложение должно быть мобильным и, по мере возможности, платформо-независимым.
С учетом всех этих условий для организации Интернет-магазина был выбран популярный язык программирования Perl и база данных MySQL. Оба эти продукта поддерживают лицензию GNU, что снижает затраты на внедрение, кроме того, наличие исходных кодов этих продуктов позволяет не зависеть от конкретной фирмы-разработчика. Версии этих продуктов существуют для большинства операционных систем и поддерживаются практически всеми площадками, предоставляющими услуги по размещению сайтов. Сайт вводится в действие поэтапно. Первоначально создается Интернет-каталог, после чего к нему добавляется функциональность Интернет-магазина. И, наконец, третьей ступенью является подключение к платежным системам. Интернет-каталог включает в себя следующие возможности: - предоставление потенциальному покупателю информации о товаре (книгах);
- представление описаний и свойств товара в структурированных категориях;
- возможность быстрого и относительно простого обновления внешнего вида сайта;
- использование внутренней банерной системы, поддерживающей несколько популярных форматов банеров, в том числе и из внешних источников (банерных сетей);
- предоставление пользователю возможности производить поиск товаров в тексте названий и описаний товаров путем задания ключевых слов;
- управление работой Интернет-магазина через web-браузер.
После завершения разработки Интернет-каталога и принятия его заказчиком необходимо добавить возможности Интернет-магазина, а именно: - автоматизировать систему приема заказов, организовать отправление уведомления о заказе покупателю и владельцу Интернет-магазина;
- обеспечить конфиденциальность информации о покупателях и заказах;
- обеспечить возможность управления работой Интернет-магазина через web-браузер.
На последнем этапе, по желанию заказчика, созданный Интернет-магазин подключается к одной или нескольким платежным системам для оплаты товара по платежным картам. До этого момента заказы принимаются, но оплата их производится только наличными курьеру. Подключение к платежной системе во многом зависит от специфики конкретной платежной системы, этот вопрос выходит за рамки книги и рассматриваться не будет. Для организации платежей через Интернет обращайтесь к службе поддержки выбранной вами платежной системы. Проектирование Интернет-магазина Приступая к разработке сайта, частью которого является Интернет-магазин (или Интернет-каталог), необходимо четко представлять структуру навигации и информационного наполнения. Это позволит определить структуру Интернет-приложения и используемые технологии. Как и для большинства приложений, необходимо составить соглашения о присвоении имен. Карта Интернет-магазина Для четкого представления структуры создаваемого Интернет-приложения строится навигационная карта с указанием всех возможных страниц, на основании которой в дальнейшем будет разрабатываться приложение. Как уже отмечалось выше, сайт вводится в действие поэтапно. Первоначально создается Интернет-каталог, после чего к нему добавляется недостающая функциональность Интернет-магазина. Навигационная карта должна быть составлена для выполнения каждого из этапов разработки. Навигационная карта Интернет-каталога книжного магазина представлена на рис. 1.1. С главной страницы Интернет-каталога пользователь переходит на страницы каталога, в котором представлен список книг и их краткое описание, указаны ссылки на информацию об авторе, написавшем книгу, и издательстве, ее выпустившем. Информация об авторе состоит из краткой биографической справки и списка книг этого автора, представленных в Интернет-каталоге. Аналогично, страница с информацией об издательстве содержит описание издательства и список книг, выпущенных им и продаваемых в Интернет-каталоге. ![1](http://www.php.su/articles/common/002files/db0871.gif) Рис. 1.1. Навигационная карта Интернет-каталога
В результате поиска на экран выводится список книг, удовлетворяющих параметрам поиска. Доступ к средствам поиска происходит с любой страницы Интернет-приложения. Как уже говорилось ранее, Интернет-магазин состоит, как минимум, из трех частей: - Интернет-каталог;
- виртуальная корзинка и механизм авторизации покупателей;
- справочная часть Интернет-магазина.
Карта Интернет-магазина практически ничем не отличается от карты Интернет-каталога, представленной на рис. 1.1. Единственное отличие состоит в оформлении товаров Интернет-магазина. Около каждого товара и на рекламных банерах товаров имеется кнопка, с помощью которой покупатель может добавить товар в свою виртуальную корзинку. ![2](http://www.php.su/articles/common/002files/db0872.gif) Рис. 1.2. Виртуальная покупательская корзинка
Виртуальная покупательская корзинка содержит товары, добавленные покупателем, позволяет произвести пересчет или удаление товаров и перейти к окончательным фазам Интернет-продажи. На этом этапе производится регистрация покупателя и уточнение адреса доставки. В данном проекте применяется упрощенная схема корзинки. Полная схема покупательской корзинки включает в себя возможность заказа товаров одним покупателем на различные адреса и хранение истории предыдущих покупок и адресов, по которым они были доставлены, виртуальный кошелек, набор скидок и другие интересные виды сервиса Интернет-торговли. Упрощенная схема позволяет покупателю заказывать товары и выбирать адрес доставки (см. рис. 1.2). После подключения Интернет-магазина к одной из платежных систем покупатель сможет выбирать наиболее удобную для него систему оплаты и оплачивать товар с помощью платежных карт, не отходя от компьютера. ![3](http://www.php.su/articles/common/002files/db0873.gif) Рис. 1.3. Справочная часть Интернет-магазина
Пользовательская справка -- неотъемлемая составляющая любого программного продукта, в том числе и Интернет-магазина. Здесь пользователь сможет получить информацию о компании, задать вопросы менеджерам, уточнить интересующие его вопросы по работе Интернет-магазина. Несмотря на не совсем техническую сторону этого вопроса (обычно это набор статических HTML-файлов), справочная часть Интернет-магазина очень важна и имеет непосредственное влияние на продажи. Все вышесказанное касалось в основном пользовательской части, но менеджеру Интернет-магазина необходим инструмент управления: - информацией, представленной на страницах каталога;
- заказами покупателей;
- работой пользователей.
Структура приложения и соглашения Если программист работает над проектом самостоятельно, он сам решает, как писать программу, какой стиль и соглашения при этом использовать. Однако даже в этом случае не стоит забывать, что созданную программу позже может редактировать кто-то другой, добавляя новую функциональность или исправляя ошибки. Для того чтобы избежать путаницы и работать в команде, составляется концепция приложения и список правил, по которым формируются имена функций, файлов, переменных, констант и т. д. Кроме того, для организации групповой работы над приложением применяются системы контроля версий, такие как CVS, SourceSafe. Если приложение больше, чем "Hello World", то, как правило, оно состоит из групп функций, каждая из которых является частью общей функциональности. Группы функций, выполняющие определенную работу, целесообразно выносить в отдельные файлы, таким образом разделяя приложение на модули. Использование отдельных файлов для хранения исходного кода позволяет: - работать над разными частями приложения независимо от других членов команды;
- разделять ресурсы проекта и повторно использовать их в других проектах;
- создавать различные модификации готовых модулей для использования в приложениях, без переработки всего приложения в целом;
- использовать исходные файлы меньшего размера, более удобные в редактировании.
Perl поддерживает объектно-ориентированное программирование (начиная с версии 5.000), но в проектах, описанных в этой книге, мы будем придерживаться процедурно-ориентированного программирования. В каталоге книг Интернет-магазина, описанном выше, можно выделить семь составляющих: - главная страница;
- навигационная система каталога;
- информация о книгах;
- информация об авторах;
- информация об издательствах;
- поиск информации;
- рекламная банерная система.
Кроме каталога Интернет-магазин включает: - виртуальную корзинку;
- механизм авторизации покупателей.
Основные модули Интернет-каталога и Интернет-магазина представлены в табл. 1.1. Таблица 1.1. Модули Интернет-каталога и Интернет-магазина Наименование модуля | Конфигурационный файл | Описание |
---|
book_navigation.pl | book_navigation.conf | Навигационная система Интернет-магазина | book_items.pl | book_items.conf | Модуль, обеспечивающий информацию о книгах, авторах книг и издательствах, представленных в каталоге Интернет-магазина | book_search.pl | book_search.conf | Поисковая система Интернет-каталога | banners.pl | banners.conf | Модуль, отвечающий за представление банерной рекламы на страницах Интернет-магазина | book_basket.pl | book_basket.conf | Функции добавления товара в покупательскую корзинку, пересчет, удаление, а также выбор адреса доставки и оплаты | book_auth.pl | book_auth.conf | Функции регистрации, доступа пользователя, а также функции, ответственные за идентификацию сеанса | book.cgi | book.conf | Основной сценарий приложения, ответственный за вызов необходимых покупателю функций | book_manager.cgi | book_manager.conf | Управляющая часть приложения |
Все сценарии так или иначе будут использовать некоторые общие функции, переменные и константы, которые целесообразно выделить из приложения и перенести в отдельные модули и конфигурационные файлы. В Perl нет констант; в контексте данной книги это переменные, которые мы не изменяем в процессе выполнения программы. Разделение приложения на отдельные модули на этапе проектирования и разработки не означает, что конечный проект будет состоять из множества файлов. После завершения разработки все функции, при необходимости, могут быть собраны в один файл. Система именования функций и переменных поможет избежать конфликтов между данными модулей. Используйте префиксы в именах файлов для отделения одного проекта от другого -- например, все имена сценариев книжного Интернет-магазина начинаются с book_; если на сервере реализовано несколько различных проектов, этот префикс поможет разобраться в многообразии файлов в каталоге cgi-bin. Основной конфигурационный файл book.conf будет содержать определяемые параметры строки запроса, имена и пути подключаемых сценариев, в этом же файле удобно подключать общие библиотеки и выполнять общие функции. Изменения, вносимые в этот файл, будут действовать на весь проект. Для удобства настройки Интернет-приложения на работу с различными базами данных настройки базы данных выносятся в отдельный конфигурационный файл. Используйте функционально понятные имена файлов, например название book_navigation.cgi (navigation -- навигация) ясно показывает, за что отвечают сгруппированные в этом модуле функции. Интернет-магазин должен быть как можно более мобильным, способным к быстрому изменению внешнего облика, для этого всю дизайнерскую часть (HTML-код) следует отделить от функциональной (исполняемых сценариев). Это возможно благодаря использованию шаблонов, то есть отдельных частей HTML-кода, из которых составляется дизайн Интернет-каталога или Интернет-магазина. Имена шаблонов и "точки замены" также расположим в отдельном файле. В результате формируется, как минимум, три конфигурационных файла (табл. 1.2): Таблица 1.2. Конфигурационные модули Интернет-магазина Наименование модуля | Описание |
---|
book.conf | Общие настройки сценария | book_db.conf | Настройки базы данных | book_mould.conf | Настройки шаблонов |
Кроме общих настроек каждый функциональный модуль может (при необходимости) иметь собственные файлы настройки. Названия дополнительных файлов настройки формируются аналогично модулям приложения, но в этом случае расширение файлов -- не .pl или .cgi, а .conf (см. табл. 1.1). ![4](http://www.php.su/articles/common/002files/db0874.gif) Рис. 1.4. Связи между модулями Интернет-магазина
Ряд функций, например вывод заголовков или обработка строки запроса, являются общими для всех сценариев. Для того чтобы не переписывать код из модуля в модуль, вынесем эти функции в отдельный файл, который будет подключаться при запуске приложения, и его функции будут доступны всем модулям Интернет-приложения (табл. 1.3). Таблица 1.3. Общие модули Интернет-магазина Наименование модуля | Описание |
---|
book_func.pl | Функции общего назначения |
Функции Интернет-магазина сгруппированы в модули, но как определить связь между конкретной функцией и модулем? В проекте все имена функций включают префикс, определяющий модуль, к которому относится функция. Например, функция, ответственная за сбор данных о подкатегории, называется navigation_ Subcategory() и находится в модуле book_navigation.pl. Используйте префиксы в названиях функций для обозначения функциональной и модульной составляющей, это облегает читаемость кода и в то же время позволяет быстро находить функцию. Назначайте имена функциям таким образом, чтобы назначение функции можно было понять, не заглядывая в исходный код.
|