- •Содержание
- •Введение
- •Описание предметной области
- •Постановка задачи и обзор методов ее решения
- •3. Обоснование инструментов разработки
- •4. Реализация
- •4.1 Логическая структура Web-приложения
- •4.2 Физическая структура Web-приложения
- •4.3 Описание структуры и формата страниц
- •4.4 Описание ограничений доступа к данным
- •4.5 Описание используемых библиотек и элементов управления
- •4.6 Описание используемых функций и процедур
- •5. Тестирование
- •6. Применение
- •6.1 Назначение и область применения Web-приложения
- •6.2 Описание организации диалога с пользователем
- •6.3 Программно-аппаратное обеспечение сервера и клиента
- •6.4 Руководство пользователя
- •Заключение
- •Список литературы
- •Приложение
Описание предметной области
Интернет-магазин - это привычный каждому пользователю интернета web-сайт, представляющий информацию о товарах в удобном структурированном виде.
Интернет-магазины создаются с применением систем управления содержимым сайтов, оснащенных необходимыми модулями. Крупные интернет-магазины работают на специально разработанных или адаптированных типовых системах управления.
Система управления содержимым сайта интернет-магазина может быть коробочным товаром, самостоятельно устанавливаемым на хостинг-площадку, может быть частной разработкой web-студии, ей же обслуживаемой, или может быть программным сервисом, предоставляемым с помесячной оплатой.
С технической точки зрения интернет-магазин - это совокупность web-витрины и торговой системы - фронт-системы и бэк-офиса. Web-витрина предоставляет интерфейс к базе данных продаваемых товаров (в виде каталога, прайс-листа), работает с виртуальной торговой тележкой, оформляет заказы и регистрирует покупателя, предоставляет помощь покупателю в онлайновом режиме, передает информацию в торговую систему и обеспечивает безопасность личной информации покупателя. Далее торговая система осуществляет автоматическую обработку поступающих заказов - резервирует товар на складе, контролирует оплату и доставку товара.
В общем случае основные функции интернет-магазина - это информационное обслуживание покупателя, обработка заказов, проведение платежей, а также сбор и анализ различной статистической информации. Как было упомянуто выше, программный комплекс управления интернет-магазином позволяет формировать и интерфейс с покупателем, и функциональные возможности интернет-магазина, исходя из потребностей компании.
Постановка задачи и обзор методов ее решения
Структура интернет-магазина состоит из следующих функциональных частей:
каталог товаров;
пользовательская корзина;
регистрационная форма;
форма отправки заказа.
Каталог товаров представляет собой сложную и многоуровневую структуру данных, которая должна простым и понятным способом производить упорядочивание товаров. Проще всего такой каталог представить в виде дерева объектов, верхний уровень которого состоит из списка разделов. Разделы могут содержать подразделы или ссылки на конкретный товар и т.д. Такое упорядочивание просто необходимо для удобного и быстрого поиска и заказа товаров.
Пользовательская корзина представляет собой некоторый массив данных, который служит для хранения заказанного пользователем товара.
Регистрационная форма служит для ввода персональных данных пользователей. В дальнейшем эта информация используется для их идентификации между сеансами работы с интернет-магазином. Данная информация может храниться как на стороне сервера, так и на стороне клиента.
Форма отправки заказа служит для ввода контактной информации заказчика и передачи ее и заказа в базу данных организации.
3. Обоснование инструментов разработки
Принципы выбора инструментов для разработки:
программное обеспечение должно быть бесплатным;
программное обеспечение должно позволять выполнять отладку в домашних условиях, т.е. без необходимости каждый раз вносить изменения в проект непосредственно на web-сервере;
независимость от платформы.
С учетом приведенных принципов был выбран следующий набор инструментов: HTML, CSS, JavaScript, Node.js, MongoDB, AngularJS.
Для работы с графикой был выбран пакет Paint NET 3.2.1, который является наиболее известным и популярным среди бесплатных программ. Paint NET содержит весь необходимый набор для работы с графическими изображениями.
HTML - HyperText Markup Language - стандартный язык программирования, предназначенный для создания гипертекстовых документов в среде WEB.
HTML-документы могут просматриваться различными типами WEB-браузеров. Когда документ создан с использованием HTML, WEB-браузер может интерпретировать HTML для выделения различных элементов документа и первичной их обработки. Использование HTML позволяет форматировать документы для их представления с использованием шрифтов, линий и других графических элементов на любой системе, их просматривающей.
Большинство документов имеют стандартные элементы, такие, как заголовок, параграфы или списки. Используя тэги HTML можно обозначать данные элементы, обеспечивая WEB-браузеры минимальной информацией для отображения данных элементов, сохраняя в целом общую структуру и информационную полноту документов. Все что необходимо, чтобы прочитать HTML-документ - это WEB-браузер, который интерпретирует тэги HTML и воспроизводит на экране документ.
CSS (Cascading Style Sheeets) - каскадные таблицы стилей. Стиль - набор параметров, задающий внешнее представление объекта.
Преимущества CSS:
CSS позволяет значительно сократить размер кода и сделать его читабельным;
CSS позволяет задавать такие параметры, которые нельзя задать только языком HTML. Например, убрать подчеркивание у ссылок;
CSS позволяет легко изменять внешний вид страниц.
с CSS связана так называемая блочная верстка сайта.
JavaScript - это язык написания сценариев, разработанный компанией Netscape Communications, для создания клиентских и серверных интернет-приложений. Netscape Navigator создан для интерпретации сценариев JavaScript, внедренных в веб-страницы.
JavaScript – объектно-ориентированный скриптовый язык программирования. Является диалектом языка ECMAScript.
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
Node или Node.js – программная платформа, основанная на движке V8, превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux, Windows и Mac OS) и даже программировать микроконтроллеры (например, tessel и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом. Популярность в области построения web-сайтов определяется наличием большого набора встроенных средств и крупнейшего менеджера подключаемых пакетов npmjs.com для разработки web-приложений.
Основные из них:
извлечение POST и GET-параметров, а также переменных окружения web-сервера в предопределённые массивы;
отправка HTTP-заголовков;
работа с cookies и сессиями;
обработка файлов, загружаемых на сервер;
работа с HTML заголовками и HTTP авторизацией.
MongoDB – документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON-подобные документы и схему базы данных. Написана на языке C++.
СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документоориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. В MongoDB:
Нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может.
Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.
В MongoDB реализована асинхронная репликация в конфигурации «ведущий — ведомый» (англ. master — slave), основанная на передаче журнала изменений с ведущего узла на ведомые. Поддерживается автоматическое восстановление в случае выхода из строя ведущего узла. Серверы с запущенным процессом mongod должны образовать кворум, чтобы произошло автоматическое определение нового ведущего узла. Таким образом, если не используется специальный процесс-арбитр (процесс mongod, только участвующий в установке кворума, но не хранящий никаких данных), количество запущенных реплик должно быть нечётным.
Преимуществами MongoDB являются:
Индексация. В MongoDB имеется поддержка индексов.
Балансировка нагрузки. MongoDB масштабируется горизонтально используя шардинг.
Файловое хранилище. MongoDB может быть использован в качестве файлового хранилища с балансировкой нагрузки и репликацией данных.
Исполнение JavaScript на стороне сервера. JavaScript может использоваться в запросах, функциях аггрегации (например в MapReduce) и отправлен базе для исполнения.
Ad hoc запросы. Запросы могут возвращать конкретные поля документов и пользовательские JavaScript- функции. Поддерживается поиск по регулярным выражениям.
AngularJS – JavaScript-фреймворк с открытым исходным кодом. Предназначен для разработки одностраничных приложений. Его цель — расширение браузерных приложений на основе MVC-шаблона, а также упрощение тестирования и разработки.
Фреймворк работает с HTML, содержащим дополнительные пользовательские атрибуты, которые описываются директивами, и связывает ввод или вывод области страницы с моделью, представляющей собой обычные переменные JavaScript. Значения этих переменных задаются вручную или извлекаются из статических или динамических JSON-данных.
AngularJS спроектирован с убеждением, что декларативное программирование лучше всего подходит для построения пользовательских интерфейсов и описания программных компонентов, в то время как императивное программирование отлично подходит для описания бизнес-логики. Фреймворк адаптирует и расширяет традиционный HTML, чтобы обеспечить двустороннюю привязку данных для динамического контента, что позволяет автоматически синхронизировать модель и представление. В результате AngularJS уменьшает роль DOM-манипуляций и улучшает тестируемость. Angular придерживается MVC-шаблона проектирования и поощряет слабую связь между представлением, данными и логикой компонентов. Используя внедрение зависимости, Angular переносит на клиентскую сторону такие классические серверные службы, как видозависимые контроллеры. Следовательно, уменьшается нагрузка на сервер и веб-приложение становится легче.
Сильными сторонами AngularJS являются:
Отделение DOM-манипуляции от логики приложения, что улучшает тестируемость кода.
Отношение к тестированию как к важной части разработки. Сложность тестирования напрямую зависит от структурированности кода.
Разделение клиентской и серверной стороны, что позволяет вести разработку параллельно.
Проведение разработчика через весь путь создания приложения: от проектирования пользовательского интерфейса, через написание бизнес-логики, к тестированию.
Express.js, или просто Express – каркас web-приложений для Node.js, реализованный как свободное и открытое программное обеспечение под лицензией MIT. Он спроектирован для создания веб-приложений и API. Де-факто является стандартным каркасом для Node.js. Автор фреймворка, TJ Holowaychuk, описывает его как созданный на основе написанного на языке Ruby каркаса Sinatra, подразумевая, что он минималистичен и включает большое число подключаемых плагинов. Express может являться backend'ом для программного стека MEAN, вместе с базой данных MongoDB и каркасом AngularJS для frontend'а.
Плюсы Express.js:
Минималистичность. Express - это минималистичный и гибкий веб-фреймворк для приложений Node.js, предоставляющий обширный набор функций для мобильных и веб-приложений.
API. Имея в своем распоряжении множество служебных методов HTTP и промежуточных обработчиков, создать надежный API можно быстро и легко.
Производительность. Express предоставляет тонкий слой фундаментальных функций веб-приложений, которые не мешают вам работать с давно знакомыми и любимыми вами функциями Node.js.
