Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записка для Курсовой работы.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.63 Mб
Скачать
  1. Описание предметной области

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

Интернет-магазины создаются с применением систем управления содержимым сайтов, оснащенных необходимыми модулями. Крупные интернет-магазины работают на специально разработанных или адаптированных типовых системах управления.

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

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

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

  1. Постановка задачи и обзор методов ее решения

Структура интернет-магазина состоит из следующих функциональных частей:

  • каталог товаров;

  • пользовательская корзина;

  • регистрационная форма;

  • форма отправки заказа.

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

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

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

Форма отправки заказа служит для ввода контактной информации заказчика и передачи ее и заказа в базу данных организации.

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.