Report - VasilyShaytan/DSA GitHub Wiki

Online-система закупки и доставки роботов в школы

Пункт №1. Постановка задачи

Цель:

Разработать архитектуру для ПО системы закупки и доставки роботов в школы

Описание назначения проектируемой системы:

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

Функциональные требования (текстовое описание Участников и их Интересов)

  1. Клиент - представитель школы. Оформляет заказ у менеджера на приобретение необходимых роботов (роботы и робототехнические изделия в дальнейшем будем называть товаром) и компонентов. Роботы оформляются в виде некоторого количества единиц компонентов.
  2. Менеджер доставки получив заказ проверяет наличие компонентов заказа на собственном складе. При наличии товаров на складе менеджер проверяет их на качество и формирует доставку. При отсутствии, либо несоответствии товаров качеству менеджер делает заказ у поставщиков (возможно сразу необходимое количество для поддержания всего склада при наличии множества клиентов).
  3. Поставщики осуществляют доставку товаров на склад менеджера с собственных.

Описание бизнес-процессов (этапы, Участники, вовлеченные Сущности)

Оформление и доставка заказа

Клиент формирует заказ на поставку, указывая объемы и необходимое количество единиц
Клиент подтверждает заказ
Менеджер получает заявку на оформление заказа
Менеджер подсчитывает стоимость
Менеджер оповещает клиента о цене
Клиент оплачивает 30% стоимости заказа
Менеджер делает проверку наличия товаров на складе
Менеджер подтверждает наличие товаров на складе
Клиент оплачивает всю стоимость
Менеджер отправляет заказ
Клиент подтверждает принятие заказа

Отмена заказа

Клиент отправляет заявку на отмену заказа
Менеджер обрабатывает заказ на отмену
Происходит приостановка сбора товаров
Менеджер взимает 15% стоимости заказа и возвращает клиенту остальные 15%

Проверка наличия товаров у менеджера на складе

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

Пункт №2. Разработка вариантов использования

Диаграммы прецедентов для всех ролей

https://www.gliffy.com/go/share/sorc62ct439ei772awoj

Подробное текстовое описание всех вариантов использования с альтернативами

Процесс оформления клиентом нового заказа

  1. Клиент заходит в систему и просматривает каталог всех имеющихся товаров. Про каждый товар имеется описание о имеющемся количестве на складе менеджера и цене за единицу товара
  2. Клиент выбирает необходимые товары с указанием количества каждого, вносит данные о школе и отправляет заявку
  3. Менеджер получает заявку, связывается с клиентом и договаривается о сроках передачи заказа и стоимости, возможных рисках (отмена заказа, задержка заказа) и способах оплаты
  4. Клиент вносит 30% оплату, для этого пользуется электронными деньгами или банковской картой
  5. Менеджер проверяет наличие необходимых товаров на складе (сбор необходимого товара). Менеджер вносит в базу данных изменения касательно выбранных товаров и переназначает их количество. Товары и заявки располагаются в базе денных
  6. Менеджер оформляет доставку конечному клиенту (подтверждает второй раз)
  7. Клиент осуществляет полную оплату
  8. При доставке товаров клиенту, клиент подтверждает заказ
  9. Менеджер переносит заказ в архив
    Альтернатива: Изменение выбранных позиций в заказе.
    В пунктах 2 и 3 при подтверждении заказа клиент может в течении некоторого времени вернутся и переоформить заказ, если чего-то недостает, или требуется что-то изменить
    Альтернатива: Изменение способа оплаты на этапе Возможны альтернативные методы оплаты заказа Альтернатива: Недостает количество товаров В пункте 6 менеджер может изменить сроки доставки, если сам заметит недостающее количество привезенных товаров Альтернатива: Бракованный заказ В пункте 8 может быть ошибка при заказе, в данном случае клиент может перезаказать, указав при этом причины.

Отмена заказа

  1. Если до пункта 7 клиент передумал насчет заказа, то клиент отправляет заявку на отмену заказа
  2. Менеджер получает заявку на отмену
  3. Менеджер договаривается с клиентом и возвращает ему около 20% предоплаты, остальное забирает себе
  4. Менеджер приостанавливает сбор товаров. Менеджер вносит данные в базу
  5. Менеджер отменяет заказ и переносит его в архив

Процесс сбора необходимых товаров

  1. Менеджер проверяет товары на складе
  2. При отсутствии товаров менеджер формирует заявки поставщикам
  3. При браке товаров на складе менеджер также формирует необходимые заявки поставщикам
  4. Менеджер отправляет заявки
  5. Поставщики принимают заявки
  6. Поставщики договариваются о сроках доставки на склад и стоимости всех товаров
  7. Поставщики доставляют товары на склад
  8. Менеджер оплачивает доставки Альтернатива: Брак Менеджер переоформляет доставку в случае недоставки части товаров или их браке. Происходит пересчет оплаты.

Пункт №3. Разработка статической объектной модели предметной области

Моделирование предметной области при помощи диаграммы классов

Диаграмма классов

https://go.gliffy.com/go/publish/11901272 https://www.gliffy.com/go/share/s5a7eev4xejnkwg1iu9o

Пункт №4. Разработка динамической объектной модели предметной области

Моделирование предметной области при помощи диаграмм последовательностей

Диаграммы последовательностей.

Диаграмма основных функций создания (товара, заказа, платежа)
https://www.gliffy.com/go/share/sf5oqwkw2qmttyiksqfn

Диаграмма функция создания и оформления заказов
https://www.gliffy.com/go/share/s66k02ttuqwyp5onwq10

Диаграмма функции предзаказа
https://www.gliffy.com/go/share/slt8c7hloykqvwdpm5oc

Пункт №5. Проектирование слоя бизнес-логики

Сравнительный анализ и выбор архитектурного шаблона уровня бизнес-логики

Пункт №6. Реализация слоя бизнес-логики (Java, NetBeans)

Применение паттернов проектирования

Реализация unit-тестирования всех вариантов использования (JUnit)

Использование вместо слоя хранения шаблонов "Репозиторий"

Пункт №7. Проектирование слоя источников данных

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

Источники данных: реляционная БД, внешний сервис (REST API, xml/json/yaml файл)

Пункт №8. Реализация слоя источников данных

Корректировка unit-тестов

Пункт №9. Проектирование сервисного слоя и слоя представления GUI (Swing)

Клиенты бизнес-логики: GUI, внешний сервис (xml/json/yaml по HTTP)

Пункт №10. Реализация слоев представления, сервисного слоя

Реализация внешнего API при помощи Simple high-level embedded HTTP server

Пункт №11. Комплексное тестирование системы

Пункт №12. Написание пояснительной записки (включает все разделы, указанные выше, а также выводы)

1. Постановка задачи

2. Варианты использования

3. Моделирование

4. Слой бизнес-логики

5. Слой источников данных

6. Сервисный слой

7. Слой представления

8. Интеграция

9. Тестирование

10. Выводы

⚠️ **GitHub.com Fallback** ⚠️