Атрибуты качества

Тема дорожной карты · Software Architecture

Атрибуты качества (или 'нефункциональные требования', '-ility') представляют собой характеристики, которые оцениваются наряду с функциональными требованиями. Они включают производительность, доступность, масштабируемость, безопасность, поддерживаемость, тестируемость, наблюдаемость и деплоябельность. Эти атрибуты играют ключевую роль в определении качества системы и являются критически важными для успешного проектирования и внедрения программного обеспечения.

Как это работает

Для каждого атрибута качества необходимо определить конкретные сценарии, которые описывают, как система должна отвечать в определённых условиях. Например, сценарий может звучать так: 'когда пользователь нажимает кнопку submit, страница отвечает подтверждением в течение 500 миллисекунд p95 под 1000 одновременных пользователей'. Такие сценарии делают атрибуты качества более конкретными и тестируемыми, что позволяет приоритизировать их и найти оптимальные компромиссы.

Метод QAW (Quality Attribute Workshop) от Software Engineering Institute (SEI) используется для формализации этих сценариев. Этот метод помогает архитекторам и стейкхолдерам явно выявить конфликты между атрибутами качества и принять осознанные решения.

Когда применять

Атрибуты качества следует фиксировать на начальной стадии проекта, до того как будет начато проектирование архитектуры. Это позволяет учесть все важные аспекты качества и обеспечить соответствие требованиям. Ежеквартальные перевалидации также необходимы, поскольку ожидания пользователей могут меняться со временем. Например, то, что было приемлемым уровнем latency в прошлом, может стать критическим недостатком в настоящем.

Это особенно важно для систем, которые имеют публичные SLA (Service Level Agreements), систем с регуляторными обязательствами по uptime (доступности) и security (безопасности), а также для consumer-facing систем, где производительность является ключевым аспектом.

Типичные ошибки

  1. Размытые атрибуты — 'система должна быть быстрой' без конкретного сценария. Такие формулировки не могут быть верифицированы, что затрудняет их применение.
  2. Sum-of-wishes список атрибутов — когда каждый атрибут отмечен как 'high importance'. Архитектору необходим явный приоритет, поскольку атрибуты качества часто конфликтуют между собой.
  3. Атрибуты захвачены, но игнорируются — когда атрибуты качества перечислены в документации, но ни один тест, мониторинг или design-решение на них не ссылается. В этом случае атрибуты качества не являются реальными требованиями.

Связанные понятия

Полезные ресурсы