2. Техническое задание

на разработку программного продукта «Система аренды спортивного инвентаря»

2.1. Общие сведения

Исполнительстуденческая команда (1–2 человека)
Заказчикучебная группа/кафедра
Основаниеучебный план по дисциплине «Основы программирования (C#)»
Стадии работ анализ → проектирование → реализация → испытания → сдача
Схема стадий ниже (Mermaid):
flowchart LR
  A[Анализ] --> B[Проектирование]
  B --> C[Реализация]
  C --> D[Испытания]
  D --> E[Сдача]
              

2.2. Назначение и область применения

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

2.3. Термины и сокращения

2.4. Требования к функциональности (F)

F1. Управление инвентарём

F2. Управление клиентами

F3. Тарифы и расчёт

F4. Оформление аренды

F5. Обслуживание/ремонты

F6. Отчёты и выгрузки

Mermaid-диаграмма функциональных блоков
flowchart TB
  subgraph Inventory[Управление инвентарём]
    F11[F1.1 CRUD] --> F12[Статусы]
    F12 --> F13[Фильтры]
  end
  subgraph Clients[Клиенты]
    F21[F2.1 CRUD] --> F22[Поиск]
  end
  subgraph Pricing[Тарифы и расчёт]
    F31[Тарифы] --> F32[Правила округления] --> F33[Скидки/штрафы]
  end
  subgraph Rental[Оформление аренды]
    F41[Выдача] --> F42[Закрытие] --> F43[История]
  end
  subgraph Service[ТО/ремонты]
    F51[Регистрация] --> F52[Завершение]
  end
  subgraph Reports[Отчёты/выгрузки]
    F61[Выручка] --> F62[Загрузка] --> F63[Экспорт]
  end
  Inventory --> Rental
  Clients --> Rental
  Pricing --> Rental
  Rental --> Reports
  Service --> Inventory
        

2.5. Нефункциональные требования (N)

2.6. Требования к входным и выходным данным (D)

D1. Хранилище: локальные файлы JSON (основной вариант) или CSV (экспорт/импорт).

D2. Структуры данных (минимальный состав полей)

D2.1 InventoryItem (items.json)

ПолеТипОграничения / примерНазначение
idstringGUIDУникальный идентификатор
invNumberstringобяз., шаблон INV-0001Инвентарный номер
categorystringобяз.Велосипед/Ролики/Лыжи и т.п.
conditionstringобяз.Новое/Хорошее/Требует ремонта
statusstringобяз.available/rented/maintenance
lastServiceAtdateопц.Дата последнего ТО

D2.2 Customer (customers.json)

ПолеТипОграничения / примерНазначение
idstringGUIDУникальный идентификатор
fullNamestringобяз.ФИО
phonestringшаблонТелефон
docIdstringопц.Документ (номер/серия)

D2.3 Tariff (tariffs.json)

ПолеТипОграничения / примерНазначение
idstringGUIDУникальный идентификатор
namestringНазвание тарифа
modeenumhour/day/packageРежим тарифа
ratedecimal≥ 0Базовая ставка
roundRulestringнапр. ceil_30minПравила округления

D2.4 Rental (rentals.json)

ПолеТипОграничения / примерНазначение
idstringGUIDУникальный идентификатор
itemIdstringGUIDСвязь с InventoryItem
customerIdstringGUIDСвязь с Customer
tariffIdstringGUIDСвязь с Tariff
startAtdatetimeВремя выдачи
endAtdatetimeопц.Время возврата
baseAmountdecimalБазовая сумма
discountdecimalСкидка
penaltydecimalШтраф
totaldecimalИтог к оплате
statusenumopen/closedСтатус договора

D2.5 Maintenance (maintenance.json)

ПолеТипОграничения / примерНазначение
idstringGUIDУникальный идентификатор
itemIdstringGUIDСвязь с InventoryItem
datedateДата работ
workstringВид работ
notestringКомментарий

D3. Ввод/вывод: ввод — формы/меню: создание/редактирование сущностей, выбор из списков. Вывод — таблицы/списки, детальные карточки, суммарные отчёты; экспорт CSV/JSON.

Mermaid ER (иллюстративно)
erDiagram
  Customer ||--o{ Rental : rents
  InventoryItem ||--o{ Rental : booked
  Tariff ||--o{ Rental : priced_by
  Rental ||--o{ Payment : paid_by
  InventoryItem ||--o{ Maintenance : serviced_by
        

2.7. Требования к интерфейсу пользователя (UI)

2.8. Ограничения и допущения

2.9. Условия эксплуатации

АппаратныеПК/ноутбук с 4 ГБ ОЗУ и выше
ПрограммныеWindows 10/11, .NET 6/8 Runtime/SDK, локальные права записи в каталог приложения
Установкараспаковка дистрибутива, запуск исполняемого файла либо сборка из исходников в Visual Studio/VS Code
Резервированиепериодическое копирование каталога данных (папка data/)
Режимэксплуатация офлайн, доступ к интернету не обязателен

2.10. Состав и структура поставки

2.11. Требования к надёжности и защите данных

2.12. Контроль качества и приёмка (критерии)

  1. K1. Функциональность: реализованы F1–F6 согласно разделу 2.4.
  2. K2. Корректность расчётов: тест-кейсы на границах времени (59/60/61 мин; 23:59/00:01) проходят без ошибок.
  3. K3. Удобство: все критические действия подтверждаются, ошибки — с понятными сообщениями.
  4. K4. Данные: все обязательные поля валидируются; запрет выдачи при статусе ≠ «доступен».
  5. K5. Качество кода: структура классов, комментарии к ключевым методам, читаемые имена.
  6. K6. Отчётность: отчёты строятся корректно на тестовом наборе; экспорт CSV работает.
  7. K7. Документация: отчёт содержит все разделы, скриншоты/листинги, результаты тестов.

2.13. Матрица трассируемости (фрагмент)

ID требованияОписаниеПроверка
F1.2Перевод статусов инвентаряТест TC-INV-02 (смена доступен→в аренде)
F3.2Округление ≥ 30 мин до часаТест TC-CALC-05 (пример 1ч29м → 2 часа)
F4.2Перерасчёт при закрытииТест TC-RENT-07 (ночной возврат)
F6.1Выручка за периодТест TC-RPT-01 (периодический отчёт)
N2.1Отклик ≤ 1 сЗамер на тестовом наборе (скрипт/ручной)

2.14. Порядок сдачи и приёмки