Атрибуты качества
Тема дорожной карты · Software Architecture
Атрибуты качества (или 'нефункциональные требования', '-ility') представляют собой характеристики, которые оцениваются наряду с функциональными требованиями. Они включают производительность, доступность, масштабируемость, безопасность, поддерживаемость, тестируемость, наблюдаемость и деплоябельность. Эти атрибуты играют ключевую роль в определении качества системы и являются критически важными для успешного проектирования и внедрения программного обеспечения.
Как это работает
Для каждого атрибута качества необходимо определить конкретные сценарии, которые описывают, как система должна отвечать в определённых условиях. Например, сценарий может звучать так: 'когда пользователь нажимает кнопку submit, страница отвечает подтверждением в течение 500 миллисекунд p95 под 1000 одновременных пользователей'. Такие сценарии делают атрибуты качества более конкретными и тестируемыми, что позволяет приоритизировать их и найти оптимальные компромиссы.
Метод QAW (Quality Attribute Workshop) от Software Engineering Institute (SEI) используется для формализации этих сценариев. Этот метод помогает архитекторам и стейкхолдерам явно выявить конфликты между атрибутами качества и принять осознанные решения.
Когда применять
Атрибуты качества следует фиксировать на начальной стадии проекта, до того как будет начато проектирование архитектуры. Это позволяет учесть все важные аспекты качества и обеспечить соответствие требованиям. Ежеквартальные перевалидации также необходимы, поскольку ожидания пользователей могут меняться со временем. Например, то, что было приемлемым уровнем latency в прошлом, может стать критическим недостатком в настоящем.
Это особенно важно для систем, которые имеют публичные SLA (Service Level Agreements), систем с регуляторными обязательствами по uptime (доступности) и security (безопасности), а также для consumer-facing систем, где производительность является ключевым аспектом.
Типичные ошибки
- Размытые атрибуты — 'система должна быть быстрой' без конкретного сценария. Такие формулировки не могут быть верифицированы, что затрудняет их применение.
- Sum-of-wishes список атрибутов — когда каждый атрибут отмечен как 'high importance'. Архитектору необходим явный приоритет, поскольку атрибуты качества часто конфликтуют между собой.
- Атрибуты захвачены, но игнорируются — когда атрибуты качества перечислены в документации, но ни один тест, мониторинг или design-решение на них не ссылается. В этом случае атрибуты качества не являются реальными требованиями.