IPAY plan.md

翻译

IPAY plan.md

Software Requirements Specification

Amazon Clone — Платформа електронної комерції

Версія документа 1.0
Статус Draft for Review
Дата 13 серпня 2026
Автор IPAY (Incredible Project Aspnet Yes)
Затверджує Олександр Загоруйко
Класифікація Internal / Academic
Стандарт IEEE 830-1998 / ISO/IEC/IEEE 29148

Історія змін

Версія Дата Автор Опис змін
1.0 13.08.2026 IPAY Початкова версія SRS: функціональні та нефункціональні вимоги, Use Cases, ризики, метрики

Зміст

  1. Вступ
  2. Загальний опис
  3. Межі проєкту
  4. Функціональні вимоги
  5. Use Cases
  6. Нефункціональні вимоги
  7. Ризики
  8. Метрики успіху проєкту
  9. Додатки

1. Вступ

1.1. Мета документа

Цей документ визначає повний набір функціональних та нефункціональних вимог до веб-платформи Amazon Clone — системи електронної комерції, розробленої в рамках курсового командного проєкту з дисципліни ASP.NET Core. Документ слугує єдиним джерелом правди для команди розробки, QA та керівництва на всіх етапах життєвого циклу проєкту: планування, реалізація (Scrum-спринти), тестування (NUnit), документування (DocFX/OpenAPI) та захист.

1.2. Обсяг продукту

Amazon Clone — це повнофункціональна веб-платформа електронної комерції, що дозволяє користувачам переглядати товари, формувати кошик, оформлювати замовлення з онлайн-оплатою, залишати відгуки, а адміністраторам — керувати каталогом, замовленнями та користувачами. Проєкт реалізується як командний проєкт із застосуванням методології Scrum, системи контролю версій Git та архітектури Clean / Onion.

1.3. Аудиторія документа

Команда розробників (Backend, Frontend, Full-stack), керівник проєкту, члени комісії з захисту, QA-інженери (в рамках навчального процесу).

1.4. Визначення, акроніми, скорочення

Термін Визначення
SRS Software Requirements Specification
MVP Minimum Viable Product
MoSCoW Пріоритизація Must / Should / Could / Won't have
JWT JSON Web Token
EF Core Entity Framework Core
CQRS Command Query Responsibility Segregation
SOLID Принципи об'єктно-орієнтованого проєктування
CI/CD Continuous Integration / Continuous Deployment
SKU Stock Keeping Unit (артикул товару)
PCI DSS Payment Card Industry Data Security Standard
PWA Progressive Web App

1.5. Референси

  • Методичні вказівки щодо виконання курсового командного проєкту з .NET (2026)
  • ISO/IEC/IEEE 29148:2018 — Requirements Engineering
  • OWASP Top 10 (2025 edition)
  • Microsoft .NET Architecture Guides: Clean Architecture, eShopOnWeb
  • Закон України «Про захист персональних даних» № 2297-VI

2. Загальний опис

2.1. Перспектива продукту

Amazon Clone розробляється як самостійний навчальний продукт з нуля, проте архітектурні та UX-рішення базуються на кращих практиках сучасних e-commerce платформ. Система складається з клієнтської частини (React SPA), серверної частини (ASP.NET Core Web API) та шару даних (SQL Server / Firebase).

2.2. Класи користувачів та привілеї

Роль Опис Ключові дозволи
Гість Неавторизований відвідувач Перегляд каталогу, пошук, фільтрація, перегляд деталей товару
Покупець (Customer) Авторизований користувач Кошик, оформлення замовлення, історія покупок, відгуки, обране, профіль
Адміністратор Менеджер платформи CRUD товарів, категорій, замовлень, користувачів; доступ до аналітики
Система Автоматизовані процеси Модерація, сповіщення, очищення кошика, архівація

2.3. Операційне середовище

Компонент Специфікація
Клієнт Браузери Chrome, Firefox, Safari, Edge (2 останні версії); роздільна здатність від 320 px
Сервер ASP.NET Core 8/9, хостинг на IIS / Azure / AWS / VPS
Клієнтський фреймворк React 18+ (Vite / Next.js за бажанням), Axios, React Router
Серверний фреймворк ASP.NET Core Web API, ASP.NET Core Identity
База даних SQL Server (основна реляційна СУБД) або Firebase Firestore (для real-time фіч, як альтернатива)
ORM / Доступ до даних EF Core (основний), Dapper (для складних звітів / raw SQL)
Real-time SignalR (сповіщення про статус замовлення, чат підтримки)
Архітектура Clean Architecture / Onion Architecture
Мови інтерфейсу Українська (uk-UA), Англійська (en-US)

2.4. Обмеження дизайну та реалізації

Шар Технологія Обґрунтування
Frontend React 18+ Компонентний підхід, великий ком'юніті, швидкий рендеринг
Backend ASP.NET Core Web API Кросплатформеність, інтеграція з Identity, EF Core, LINQ
БД (основна) SQL Server Повна підтримка EF Core, транзакції, складні зв'язки (orders-products-users)
БД (допоміжна) Firebase Firestore Опціонально для real-time сповіщень або кешування сесій
Auth JWT Bearer + ASP.NET Core Identity Stateless-аутентифікація, зручна інтеграція з React
Документація API Swagger / OpenAPI 3.0 Автоматична генерація, тестування ендпоінтів
Тестування NUnit + Moq Вимога методичних вказівок
Документація коду DocFX / Doxygen Генерація HTML-сторінок з коментарів XML

2.5. Припущення та залежності (Assumptions & Dependencies)

Опис Тип Вплив у разі порушення
A-01 Команда використовує Git (GitHub) із feature-branch workflow та Pull Request reviews Внутрішня Порушення контролю версій, складнощі зі звітом
A-02 LiqPay / Fondy / Stripe надають sandbox для тестування оплати Зовнішня Блокування FR-08 (оплата)
A-03 SQL Server доступний локально (LocalDB) та на хостингу Технічна Затримка розробки, необхідність міграції на SQLite
A-04 Команда дотримується Scrum: 2-тижневі спринти, щоденні stand-up, Kanban-дошка Методологічна Неможливість надати звіт по Scrum
A-05 Всі члени команди мають базові знання C#, React та SQL Компетенційна Необхідність додаткового навчання, ризик зриву термінів

3. Межі проєкту

3.1. У межах проєкту (In Scope)

  • Повний життєвий цикл e-commerce платформи: каталог, кошик, замовлення, оплата, адмін-панель
  • Реєстрація, аутентифікація, авторизація на ролях (Customer, Admin)
  • Система відгуків та рейтингів товарів
  • Пошук з фільтрацією та пагінацією (Elasticsearch або SQL Full-Text опціонально)
  • Адміністративна панель з аналітикою
  • Адаптивний UI (mobile-first)
  • Unit-тести (NUnit) для бізнес-логіки
  • Документація API (Swagger) та кодова документація (DocFX)
  • Деплой на хостинг (Azure, AWS або VPS)

3.2. Поза межами проєкту (Out of Scope)

  • Нативні мобільні застосунки (iOS/Android) — лише веб-версія (адаптивна)
  • Власний платіжний шлюз (еквайринг) — лише інтеграція зі сторонніми провайдерами
  • ML-рекомендації товарів (можна додати як stretch-goal, але не в MVP)
  • Багатомовність понад uk/en
  • Інтеграція зі службами доставки (Nova Poshta API) — лише імітація статусів
  • Мікросервісна архітектура — використовується модульний моноліт (Clean Architecture)

4. Функціональні вимоги

Формат: [Пріоритет MoSCoW] ID — Опис → Критерій прийняття (Acceptance Criteria)

4.1. Авторизація та реєстрація

[Must] FR-01 — Реєстрація користувача через email + пароль або OAuth 2.0 (Google). → AC: Пароль: мін. 8 символів, 1 цифра, 1 спецсимвол; підтвердження email; дублікати email заборонені; inline-валідація.

[Must] FR-02 — Авторизація з розподілом ролей (Customer / Admin). → AC: JWT-токен видається терміном 24 год; роль передається в claims; доступ до адмін-роутів захищений політикою [Authorize(Roles = "Admin")].

[Must] FR-03 — Відновлення пароля через email. → AC: Токен скидання дійсний 15 хв, одноразовий; лист надсилається через SMTP (SendGrid/MailKit).

4.2. Каталог товарів

[Must] FR-04 — Перегляд списку товарів з пагінацією (12 товарів на сторінку). → AC: Підтримка server-side пагінації; час відповіді ≤ 300 мс при 1000+ товарах.

[Must] FR-05 — Перегляд деталей товару: назва, опис, ціна, зображення (до 5 фото), категорія, рейтинг, наявність (SKU). → AC: Галерея зображень з навігацією; відображення пов'язаних товарів з тієї ж категорії.

[Must] FR-06 — Пошук та фільтрація товарів за назвою, категорією, ціновим діапазоном, брендом, рейтингом. → AC: Пошук нечутливий до регістру; комбінація фільтрів через LINQ / EF Core; пустий результат — коректне повідомлення.

[Should] FR-07 — Сортування товарів (ціна за зростанням/спаданням, новіші, популярні, рейтинг). → AC: Сортування виконується на рівні запиту до БД (LINQ OrderBy / OrderByDescending).

4.3. Кошик та оформлення замовлення

[Must] FR-08 — Додавання/видалення товарів у кошик зі зміною кількості. → AC: Кошик зберігається в localStorage для гостей та в БД для авторизованих користувачів; оновлення кількості — без перезавантаження; розрахунок загальної суми в реальному часі.

[Must] FR-09 — Оформлення замовлення з вказівкою адреси доставки та контактних даних. → AC: Валідація обов'язкових полів (ПІБ, місто, адреса, телефон); замовлення створюється зі статусом «Pending».

[Must] FR-10 — Оплата замовлення через інтеграцію з LiqPay / Fondy / Stripe (sandbox). → AC: При успішній оплаті статус змінюється на «Paid»; при відхиленні — «Payment Failed» з можливістю повтору; дані картки не зберігаються на сервері (PCI DSS SAQ A).

[Must] FR-11 — Історія замовлень у особистому кабінеті з деталями та статусами. → AC: Список замовлень сортований за датою (новіші перші); детальний перегляд позицій замовлення.

4.4. Відгуки та рейтинги

[Should] FR-12 — Залишення відгуку та оцінки (1–5 зірок) лише після покупки товару. → AC: Перевірка наявності завершеного замовлення з цим товаром; один відгук на товар від користувача; середній рейтинг перераховується автоматично.

[Should] FR-13 — Перегляд відгуків на сторінці товару з пагінацією. → AC: Відображення імені автора, дати, оцінки, тексту; сортування за датою / оцінкою.

4.5. Адміністративна панель

[Must] FR-14 — CRUD категорій товарів (ієрархічна структура: батьківська / дочірня). → AC: Заборона видалення категорії, якщо вона містить товари; деревоподібне відображення.

[Must] FR-15 — CRUD товарів (назва, опис, ціна, зображення, кількість на складі, категорія). → AC: Завантаження зображень на сервер / хмару; валідація формату (JPEG, PNG) та розміру (≤ 5 МБ); м'яке видалення (soft delete).

[Must] FR-16 — Управління замовленнями: перегляд списку, зміна статусу (Pending → Paid → Shipped → Delivered / Cancelled). → AC: Історія зміни статусів зберігається; сповіщення користувачеві при зміні статусу (email / SignalR).

[Must] FR-17 — Управління користувачами: перегляд, блокування/розблокування, призначення ролей. → AC: Блокований користувач не може авторизуватися; збереження причини блокування.

4.6. Особистий кабінет

[Must] FR-18 — Редагування профілю (ПІБ, email, телефон, адреса доставки, аватар). → AC: Email унікальний; валідація телефону за regex; завантаження аватара ≤ 2 МБ.

[Should] FR-19 — Список обраного (Wishlist). → AC: Додавання/видалення товарів; збереження для авторизованих користувачів; можливість перенесення з Wishlist у кошик.

[Could] FR-20 — Push-сповіщення про зміну статусу замовлення (SignalR / Firebase Cloud Messaging). → AC: Real-time оновлення статусу в особистому кабінеті; badge-лічильник нових сповіщень.

5. Use Cases

UC-01: Оформлення покупки

Актор Покупець (Customer)
Передумови Користувач авторизований; товари в кошику
Основний потік 1. Користувач переходить у кошик → 2. Перевіряє товари та кількість → 3. Натискає «Оформити замовлення» → 4. Заповнює/підтверджує адресу доставки → 5. Оберає спосіб оплати → 6. Підтверджує оплату через LiqPay → 7. Отримує підтвердження та номер замовлення
Альтернативний потік 6a. Платіж відхилено → відображення помилки, повернення до вибору способу оплати
Постумови Замовлення збережено в БД зі статусом «Paid»; кількість товарів на складі зменшено; історія оновлена

UC-02: Додавання товару адміністратором

Актор Адміністратор
Передумови Адміністратор авторизований з роллю Admin
Основний потік 1. Вхід у адмін-панель → 2. Перехід до «Товари» → 3. Натискає «Додати товар» → 4. Заповнює форму (назва, опис, ціна, категорія, кількість) → 5. Завантажує зображення → 6. Зберігає
Альтернативний потік 5a. Невірний формат зображення → inline-помилка, блокування збереження
Постумови Товар доступний у каталозі; відображається у списку товарів адмін-панелі

UC-03: Блокування користувача

Актор Адміністратор
Передумови Виявлено порушення (спам, шахрайство)
Основний потік 1. Адміністратор переглядає профіль користувача → 2. Натискає «Заблокувати» → 3. Вказує причину → 4. Підтверджує
Постумови Користувач не може увійти; отримує email із поясненням; його оголошення/товари приховані

6. Нефункціональні вимоги

6.1. Продуктивність

ID Вимога Ціль Метод перевірки
NFR-01 Час відповіді API p95 < 300 мс для CRUD-операцій K6 / Postman / Swagger
NFR-02 Час завантаження сторінки каталогу < 2 с на broadband Lighthouse CI
NFR-03 Пропускна здатність 100 одночасних користувачів без деградації Навантажувальне тестування (k6)

6.2. Надійність та доступність

ID Вимога
NFR-04 Uptime 99.5% (навчальний проєкт, не production-SLA)
NFR-05 Graceful degradation: при недоступності платіжного провайдера — замовлення може бути оформлене з оплатою «при отриманні»
NFR-06 Soft delete для всіх критичних сутностей (користувачі, товари, категорії) — можливість відновлення

6.3. Безпека

ID Вимога
NFR-07 Захист від OWASP Top 10: XSS (валідація вводу, санітизація), CSRF (JWT у заголовку), SQL Injection (EF Core / параметризовані запити), Broken Access Control (Policy-based authorization)
NFR-08 Хешування паролів ASP.NET Core Identity (PBKDF2 / bcrypt)
NFR-09 JWT-токени з коротким терміном життя (access: 15 хв, refresh: 7 днів) або sliding expiration 24 год
NFR-10 Rate limiting: не більше 5 спроб входу за хвилину з одного IP
NFR-11 HTTPS (TLS 1.2+) обов'язково для всіх комунікацій

6.4. Масштабованість

ID Вимога
NFR-12 Архітектура Clean / Onion дозволяє замінити SQL Server на іншу СУБД без змін бізнес-логіки (Repository + Unit of Work патерни)
NFR-13 Використання async/await та IQueryable для оптимізації запитів до БД

6.5. Інтерфейс та доступність

ID Вимога
NFR-14 Адаптивний дизайн: mobile (320px), tablet (768px), desktop (1920px)
NFR-15 Відповідність базовим принципам UX: читабельні шрифти, контрастність, зрозумілі повідомлення про помилки

6.6. Якість і тестування

ID Вимога
NFR-16 Покриття unit-тестами (NUnit) ≥ 60% критичних бізнес-шляхів (реєстрація, кошик, замовлення, оплата)
NFR-17 Інтеграційні тести для API-контролерів (TestServer / WebApplicationFactory)
NFR-18 Кодова документація: XML-коментарі для всіх публічних класів та методів; генерація DocFX / Swagger
NFR-19 Єдина система найменування (CamelCase для методів, PascalCase для класів, snake_case для БД за бажанням) — зафіксована в CONTRIBUTING.md

6.7. Архітектурні вимоги (специфічні для курсового проєкту)

ID Вимога
NFR-20 Застосування патернів проєктування: Repository, Unit of Work, CQRS (опціонально з MediatR), Specification
NFR-21 Дотримання SOLID: Single Responsibility для сервісів, Dependency Injection, інверсія залежностей
NFR-22 Використання LINQ та Fluent API у EF Core
NFR-23 Багатопоточність: async/await для I/O-bound операцій (запити до БД, зовнішні API)
NFR-24 Логування: Serilog / NLog з записом у файл та консоль; рівні Information / Warning / Error
NFR-25 Кешування: In-Memory Cache або Redis для часто запитуваних даних (категорії, топ-товари)

7. Ризики

ID Ризик Ймовірність Вплив Стратегія мітигації
R-01 Недостатній досвід команди з React / ASP.NET Core Середня Високий Раннє прототипування; розподіл ролей за сильними сторонами; консультації з керівником
R-02 Затримка з інтеграцією платіжного провайдера (sandbox недоступний) Середня Середній Розробка mock-сервісу оплати на ранніх етапах; fallback на «оплату при отриманні»
R-03 Перевищення обсягу функціональності (scope creep) Висока Середній Жорстке дотримання MoSCoW; фокус на Must-have для MVP
R-04 Конфлікти при merge у Git через відсутність чіткого розподілу доменів Середня Середній Розподіл backend/frontend відповідальності; code review перед merge
R-05 Низьке покриття тестами до дедлайну Середня Високий Включення написання тестів у Definition of Done кожного спринту; CI-гейт

8. Метрики успіху проєкту

Метрика Ціль Термін
Функціональність MVP Реалізовано 100% Must-have (FR-01..FR-11, FR-14..FR-18) До захисту
Покриття тестами ≥ 60% unit-тестів (NUnit) До захисту
Документація Swagger UI доступний; DocFX зібраний До захисту
Деплой Сайт задеплоєний та доступний публічно До захисту
Презентація 7–15 слайдів, відео-демо ≤ 2 хв До захисту
Git-звіт Історія комітів, гілки, merge requests Протягом усього проєкту
Scrum-звіт 3+ спринти, беклог, Kanban-дошка Протягом усього проєкту

9. Додатки

9.1. Словник термінів

Термін Визначення
Soft Delete Логічне видалення (прапорець IsDeleted), фізичне видалення не виконується
SKU Унікальний артикул товару для обліку на складі
Mock Імітація зовнішнього сервісу для тестування без реальних запитів
Clean Architecture Багатошарова архітектура з ізоляцією бізнес-логіки від інфраструктури

9.2. Діаграми (для наступної ітерації документа)

  • Use Case Diagram (всі актори та сценарії)
  • ER-діаграма сутностей (User, Product, Category, Order, OrderItem, Review, Payment)
  • Sequence Diagram для флоу оплати (FR-10)
  • Component Diagram: React → ASP.NET Core Web API → SQL Server / Firebase
  • Deployment Diagram: Azure/AWS/VPS

9.3. Матриця трасування вимог (Traceability Matrix) — шаблон

Вимога Бізнес-ціль Use Case Тест-кейс (NUnit) Статус
FR-01 Реєстрація користувачів AuthTests.Register_ValidUser_ReturnsOk Заплановано
FR-08 Оформлення замовлення UC-01 CartTests.AddItem_UpdatesTotal Заплановано
FR-10 Оплата UC-01 PaymentTests.ProcessPayment_Success Заплановано
FR-15 Управління товарами UC-02 ProductTests.CreateProduct_Admin_ReturnsCreated Заплановано

Матрицю рекомендується вести в GitHub Projects / Jira з живим синхронізуванням.

9.4. Рекомендований розподіл ролей у команді (2–4 особи)

Роль Обов'язки Технології
Backend Lead Архітектура API, БД, бізнес-логіка, інтеграція оплати C#, ASP.NET Core, EF Core, SQL Server
Frontend Lead UI/UX, React-компоненти, state management, інтеграція з API React, Axios, React Router, CSS/SCSS
Full-stack / DevOps Auth, SignalR, деплой, CI/CD, тестування JWT, SignalR, GitHub Actions, Azure
QA / Аналітик NUnit-тести, SRS, презентація, Scrum-звіти NUnit, Moq, Swagger, PowerPoint
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论