Классификация требований к ПО в контексте онтологических ворнок - Towareesh/OntoC4Designer GitHub Wiki

1. Функциональные Требования (Functional Requirements - F/FR)

Что это: Описывают ЧТО должна делать система, ее конкретные функции, возможности и поведение. Отвечают на вопрос: "Какую задачу решает система?"
Примеры:

  • F/FR: Пользователь может авторизоваться по email и паролю.
  • F/FR: Система должна рассчитывать ежемесячный платеж по ипотеке на основе суммы кредита, срока и процентной ставки.
  • F/FR: При нажатии кнопки "Купить" товар добавляется в корзину.
  • F/FR: Администратор может блокировать пользовательские аккаунты.

2. Нефункциональные Требования (Non-Functional Requirements - NFR)

Что это: Описывают КАК система должна выполнять свои функции. Характеризуют атрибуты качества, ограничения и свойства системы в целом. Отвечают на вопросы: "Насколько хорошо?", "С какими ограничениями?", "Как ведет себя под нагрузкой/атакой?"

Категории NFR с примерами:

Категория NFR Что описывает? Примеры требований
Availability (A) Доступность системы для использования. A: Система должна быть доступна 99.9% времени в рабочее время (9:00-18:00). A: Время восстановления после сбоя (RTO) не должно превышать 15 минут.
Fault Tolerance (FT) Устойчивость к сбоям. Способность продолжать работу при частичных отказах. FT: Отказ одного сервера приложения не должен приводить к недоступности системы. FT: При сбое оплаты через основной шлюз система автоматически пробует резервный.
Legal (L) Соответствие законам, нормативным актам, стандартам. L: Система должна соответствовать GDPR (защита персональных данных ЕС). L: Финансовые отчеты должны генерироваться по стандарту XBRL.
Look & Feel (LF) Внешний вид, стиль, визуальное восприятие интерфейса. LF: Интерфейс должен соответствовать корпоративному стилевому гайду (цвета, шрифты, логотипы). LF: Анимации элементов должны быть плавными.
Maintainability (MN) Удобство внесения изменений, исправления ошибок, тестирования. MN: Внесение изменения в модуль расчета не должно занимать более 5 человеко-дней. MN: Код должен сопровождаться юнит-тестами с покрытием >80%.
Operational (O) Требования к процессам эксплуатации, администрирования, поддержки. O: Резервное копирование БД должно выполняться автоматически каждые 24 часа. O: Мониторинг состояния системы должен быть доступен в единой панели.
Performance (PE) Скорость работы, время отклика, потребление ресурсов. PE: Время загрузки главной страницы должно быть ≤ 2 секунд при 1000 одновременных пользователей. PE: Обработка платежа должна занимать ≤ 1 секунды.
Portability (PO) Легкость переноса системы на другую платформу (ОС, железо, облако). PO: Приложение должно работать как на Windows Server, так и на Linux (Ubuntu). PO: Система должна быть развертываема в AWS, Azure и GCP.
Scalability (SC) Способность системы обрабатывать возрастающую нагрузку. SC: Система должна поддерживать горизонтальное масштабирование веб-серверов при увеличении нагрузки на 50%. SC: База данных должна выдерживать рост объема данных на 20% в год.
Security (SE) Защита системы и данных от несанкционированного доступа, атак. SE: Все передаваемые данные должны шифроваться по протоколу TLS 1.3. SE: Доступ к админ-панели возможен только по 2FA. SE: Уязвимости уровня OWASP Top 10 должны отсутствовать.
Usability (US) Удобство, простота и эффективность использования (User Experience - UX). US: Основные задачи пользователя (оформление заказа) должны выполняться за ≤ 3 клика. US: Ошибки ввода должны сопровождаться четкими подсказками. US: Интерфейс должен проходить юзабилити-тестирование с оценкой ≥ 85%.

Ключевые различия F/FR vs NFR

Характеристика Функциональные (F/FR) Нефункциональные (NFR)
Фокус Что делает система? (Features, Behavior) Как она это делает? (Quality, Constraints)
Тестирование Функциональные тесты (e.g., "Кнопка X делает Y") Тесты производительности, безопасности, UX и т.д.
Измеряемость Часто бинарно (Работает/Не работает) Часто количественно (время, %, уровень)
Влияние На отдельные функции На систему в целом
Пример в онтологии AuthenticationService должен иметь метод login() login() должен выполняться ≤ 500мс, использовать HTTPS

Как это связано с "онтологической воронкой"?

  1. FR (Селекторы функций): Выбираются на уровнях Компонентов (C4 Components) и Кода (C4 Code).
    Пример: Выбор компонента PaymentProcessor с методом processCreditCard().

  2. NFR (Селекторы качества/ограничений):

    • Привязываются к любому уровню C4 (Контекст, Контейнеры, Компоненты, Код).
    • Активируют правила в онтологии:
      • Выбор SE: PCI-DSS Compliance → автоматически требует FT (избыточность) для компонентов оплаты и запрещает PO (хранение данных карт на клиенте).
      • Выбор PE: High Throughput → исключает контейнеры с технологиями, не поддерживающими горизонтальное масштабирование (SC).
    • "Сужение воронки": Выбор NFR (например, US: WCAG AA) немедленно фильтрует варианты интерфейсов, не соответствующих стандарту доступности.

**Итог: это отличная основа для построения субонтологий NFR, которые будут управлять "воронкой" проектирования, гарантируя, что выбранные функциональные компоненты (FR) не конфликтуют с требованиями к качеству и ограничениям (NFR). Именно в этом взаимодействии FR и NFR через правила онтологии и рождается архитектурная целостность.