Загальні вимоги до програмного продукту
Програмний продукт розробляється як система автоматизації електронних аукціонів, що:
Підтримує публікацію оголошення, реєстрацію учасників, подачу ставок, проведення торгів та визначення переможця.
Забезпечує інтеграцію ЦБД Prozorro.Sale із зовнішніми Майданчиками.
Використовує MongoDB у кластері AWS для зберігання даних.
Реалізує безпечний обмін даними та логування всіх подій у системі.
Працює на AWS з використанням S3 для зберігання файлів та Fargate для серверної логіки.
Функціональні та нефункціональні вимоги
Функціональні вимоги
Опис Функціональних вимог присутній в ТЗ до конкретного продукту
Нефункціональні вимоги
Нефункціональні вимоги
Використання програмного забезпечення
Використання вільно розповсюджуваного програмного забезпечення.
Рівень відкритості програмного забезпечення має бути сумісним з ліцензією Apache 2.0.
Незалежність рішення від пропрієтарних сервісів, включаючи сервіси хостинг-провайдерів.
Життєвий цикл технологій
Використовувані технології повинні мати невизначений або щонайменше річний залишковий життєвий цикл на момент прийняття рішення.
Архітектурні вимоги
Використання контейнеризації (та оркестрації контейнерів) для всіх оточень.
Виключення компонентів, чия втрата може спричинити значні втрати даних або функціональності.
Механізми синхронізації даних та паралельної обробки повинні гарантувати відсутність конфліктів.
Наявність механізмів повторних спроб або використання проміжних черг між компонентами.
Орієнтація на асинхронну комунікацію між компонентами.
Можливість "гарячого" додавання інстансів будь-яких компонентів.
Тестування та продуктивність
Покриття коду юніт-тестами має бути ≥85%.
Автоматизоване тестування повинно перевіряти всі критичні бізнес-процеси.
Розробка універсального пакету автотестів для перевірки взаємодії клієнта (майданчика) з API.
Проведення навантажувального тестування з профайлінгом конфігурації відповідно до очікуваного навантаження.
Гнучкість налаштувань
Управління змінними бізнес-логіки через конфігурацію без зміни коду.
Збереження текстів інтерфейсу в конфігураційних файлах.
Можливість відновлення даних з бекапів (ціла база, окрема процедура, окремі дії).
Автоматизація розгортання
Автоматизована збірка контейнерів.
Автоматизований деплоймент на різні оточення.
Управління доступом та безпека
Максимальне розділення доступу для окремих клієнтів (майданчиків).
Логування всіх дій адміністратора, що впливають на бізнес-логіку.
Адміністратор не повинен мати доступу до ставок до початку аукціону.
Керування доступом майданчика через мережеві обмеження (білий список IP) та ключі доступу.
Швидке внесення змін у доступи майданчиків.
Заборона доступу до внутрішніх компонентів через мережеві обмеження та механізми авторизації.
Єдиний шлюз для доступу до інфраструктури.
API повинні надавати лише ті можливості, які передбачені документацією.
Використання лише безпечних (шифрованих) з’єднань.
Управління доступом на основі рольової моделі.
Логування
Логування всіх змін станів процедур.
Логування дій майданчиків (бізнес-дані, API виклики).
Логування дій користувачів модуля аукціону, включаючи помилки фронтенду.
Можливість відстеження пов’язаних дій у межах однієї логічної транзакції (trackID).
Логування роботи оркестратора, контейнерів, ОС та інфраструктурних сервісів.
Автоматична ротація технічних логів.
Інтерфейс та UX
Коректне відображення у популярних браузерах (Chrome, Firefox, Safari, Edge, IE).
Дизайн повинен бути адаптивним до різних екранів і пристроїв.
Повідомлення про помилки мають бути зрозумілими та містити рекомендації щодо їх усунення.
Вимоги до видів забезпечення
Вимоги до програмного забезпечення
- мати клієнт-серверну архітектуру, а саме обмін інформацією між сервером застосувань та клієнтською частиною системи та іншими зовнішніми системами повинен реалізовуватись із застосуванням технології веб-сервісів;
- пошук інформації повинен бути через розподілення по індексам, що знаходяться в іншій системі, що підтримує кирилецю (українську мову) та латиницю (англійську мову);
- фреймворк, який використовується для серверної частини порталу, повинен бути визначений розробниками як LTS (Long-term-support);
- серверне програмне забезпечення повинно працювати під управлінням операційних систем з відкритим вихідним кодом та безкоштовними ліцензіями, які визначені розробниками як LTS (Long-term-support);
- мати свій відкритий репозиторій з використанням контролю версій Git;
- база даних має включати модуль резервування та бекапування Системи з можливістю автоматичного запуску та перенесення даних на сервер резервних копій;
- обов'язкове використання Open Source технологій;
- мати відкриті джерела документації.
Вимоги до методичного забезпечення
У ході виконання робіт необхідно надати пропозиції щодо змін в нормативні акти (при необхідності), в нормативно-технічну документацію відповідно до прийнятих технічних та організаційних рішень.