Анализ полезности в архитектуре ПО
Эта статья объясняет концепцию анализа полезности (NWA) при принятии архитектурных решений с примерной матрицей и контрольными вопросами.
Суть вопроса
Анализ полезности помогает выбрать подходящую архитектуру ПО, сравнивая альтернативы (например, монолит, микросервисы, многоуровневая архитектура, событийная архитектура) по определённым и взвешенным критериям.
Краткое техническое описание
Процесс:
- Определить цели проекта
- Выбрать альтернативы
- Определить критерии (например, масштабируемость, поддерживаемость, безопасность, затраты)
- Взвесить критерии
- Оценить альтернативы (шкала 1–10)
- Рассчитать полезные значения (вес × оценка) и сложить результаты
Результат — основа для принятия решения, которую можно обсудить в разных командах.
Ключевые пункты для экзамена
- Критерии: масштабируемость, поддерживаемость, сложность, безопасность, стоимость
- Взвешивание зависит от проекта
- Оценка по единообразной шкале
- IHK: методическое доказательство решения (матрица + обоснование)
- Безопасность сознательно включена как критерий
- Экономичность дополнена TCO
- Все расчётные шаги задокументированы
Основные компоненты в деталях
1. Определение целей
Прежде чем оценивать, нужно чётко понимать, какую проблему должна решить архитектура. Типичные цели:
- Покрыть функциональные требования (Use Cases, пользовательские истории)
- Удовлетворить нефункциональные требования (производительность, безопасность, доступность)
- Придерживаться бюджета и сроков
- Отвечать требованиям масштабирования (численность пользователей, объём данных, транзакции в секунду)
Без чётких целей критерии становятся произвольными и анализ теряет смысл.
2. Выбор альтернатив
Нужно определить как минимум две, в идеале три–пять реалистичных архитектурных альтернатив. Примеры:
- Монолит — все модули в одном развёртываемом компоненте
- Микросервисы — независимые сервисы, каждый со своей БД
- Layered (многоуровневая) — архитектура слоёв (Presentation, Business, Data)
- Event-Driven Architecture (EDA) — асинхронная коммуникация через события
- Serverless — Functions-as-a-Service, без управления инфраструктурой
Каждую альтернативу нужно кратко описать, чтобы оценивающие имели единое представление.
3. Список критериев
Критерии должны быть измеримы, независимы друг от друга и релевантны проекту. Типичные критерии для архитектурных решений:
| Критерий | Вопрос | Шкала |
|---|---|---|
| Масштабируемость | Может ли система справляться с растущей нагрузкой? | 1–10 |
| Поддерживаемость | Насколько просто исправлять ошибки и обновления? | 1–10 |
| Безопасность | Как хорошо встраиваются механизмы безопасности? | 1–10 |
| Затраты / Усилия | Какие затраты на реализацию и эксплуатацию? | 1–10 |
| Расширяемость | Насколько легко добавлять новые функции? | 1–10 |
| Производительность | Какова задержка и время отклика? | 1–10 |
| Опыт команды | Насколько знакома команде такая архитектура? | 1–10 |
| Отказоустойчивость | Насколько надёжна архитектура при сбоях? | 1–10 |
Важно: критерии не должны пересекаться. “Производительность” и “масштабируемость” связаны, но не идентичны — производительность измеряет задержку под нагрузкой, масштабируемость измеряет потенциал роста.
4. Взвешивание (%)
Каждый критерий получает вес в процентах, и сумма должна быть 100 %. Взвешивание зависит от проекта:
- E-commerce платформа: масштабируемость 30 %, производительность 20 %, безопасность 20 %, поддерживаемость 15 %, затраты 15 %
- Банковская система: безопасность 35 %, поддерживаемость 20 %, отказоустойчивость 20 %, масштабируемость 15 %, затраты 10 %
- Прототип / MVP: затраты 40 %, опыт команды 25 %, поддерживаемость 20 %, масштабируемость 15 %
Взвешивание должно быть обсуждено в команде и задокументировано, чтобы снизить субъективность.
5. Оценка каждой альтернативы
Каждая альтернатива оценивается по каждому критерию по шкале 1–10 (1 = очень плохо, 10 = отлично). Оценка должна быть обоснована, желательно с опорой на:
- Конкретный опыт из похожих проектов
- Бенчмарки или результаты прототипов
- Мнение экспертов или литературу
6. Расчёт (вес × оценка)
Полезное значение по каждой ячейке рассчитывается как:
Полезное значение = (Вес в %) × (Оценка 1–10)
Общее полезное значение альтернативы — это сумма всех полезных значений ячеек.
7. Сравнение общих полезных значений
Альтернатива с наибольшим общим полезным значением выигрывает. Важно: разница должна быть значительной (минимум 10 % разницы), иначе решение не однозначно.
8. Интерпретация и обоснование
Результат нужно интерпретировать:
- Какая альтернатива выигрывает и почему?
- Какие критерии были решающими?
- Где слабые стороны выбранной архитектуры?
- Какие риски остаются?
9. Дополнительный анализ рисков
Только анализа полезности недостаточно — дополнительный анализ рисков определяет:
- Технические риски (например, новая технология, мало опыта в команде)
- Организационные риски (например, размер команды, передача знаний)
- Экономические риски (например, привязка к поставщику, затраты на лицензии)
- Зависимости (например, внешние сервисы, сторонние библиотеки)
10. Документирование (архитектурное решение)
Весь анализ должен быть задокументирован, обычно как Architecture Decision Record (ADR):
- Контекст и формулировка проблемы
- рассмотренные альтернативы
- критерии и взвешивание (с обоснованием)
- матрица оценки
- общие полезные значения
- решение и обоснование
- риски и их снижение
Практический пример (матрица оценки)
Три архитектурные альтернативы оцениваются для платформы электронной коммерции:
| Критерий | Вес | Монолит | Микросервисы | Многоуровневая |
|---|---|---|---|---|
| Масштабируемость | 25 % | 6 | 9 | 7 |
| Поддерживаемость | 20 % | 5 | 8 | 7 |
| Безопасность | 15 % | 6 | 7 | 6 |
| Затраты | 20 % | 9 | 5 | 7 |
| Расширяемость | 20 % | 6 | 8 | 8 |
Расчёт полезных значений:
| Критерий | Вес | Монолит | Микросервисы | Многоуровневая |
|---|---|---|---|---|
| Масштабируемость | 25 % | 0,25 × 6 = 1,50 | 0,25 × 9 = 2,25 | 0,25 × 7 = 1,75 |
| Поддерживаемость | 20 % | 0,20 × 5 = 1,00 | 0,20 × 8 = 1,60 | 0,20 × 7 = 1,40 |
| Безопасность | 15 % | 0,15 × 6 = 0,90 | 0,15 × 7 = 1,05 | 0,15 × 6 = 0,90 |
| Затраты | 20 % | 0,20 × 9 = 1,80 | 0,20 × 5 = 1,00 | 0,20 × 7 = 1,40 |
| Расширяемость | 20 % | 0,20 × 6 = 1,20 | 0,20 × 8 = 1,60 | 0,20 × 8 = 1,60 |
| Итого | 100 % | 6,40 | 7,50 | 7,05 |
Результат: Микросервисы выигрывают с 7,50 баллами, несмотря на более высокие затраты (всего 5/10), потому что масштабируемость и поддерживаемость взвешены сильнее. Разрыв с многоуровневой архитектурой (7,05) составляет 0,45 баллов, что невелико — здесь следует дополнительно провести анализ рисков.
Преимущества и недостатки
Преимущества
- Обоснованное архитектурное решение — каждый расчёт задокументирован
- Сравнение технических и экономических критериев в единой матрице
- Подходит для семинаров с заинтересованными сторонами — структурированное обсуждение, прозрачное взвешивание
- Снижает решения по наитию — критерии и взвешивание заставляют размышлять
- Переиспользуемо — список критериев можно адаптировать для похожих решений
Недостатки
- Возможна субъективность — оценки и весовые коэффициенты зависят от человека
- Согласование может быть затратным — особенно в больших команде с разными точками зрения
- Критерии могут пересекаться — требует активного контроля (например, производительность vs. масштабируемость)
- Шкала произвольна — шкала 1–10 порядковая, а не метрическая
- Может создать ложную точность — 7,50 vs. 7,05 создает впечатление точности, которой субъективные оценки не имеют
Типичные вопросы на экзамене (с кратким ответом)
- Для чего служит метод анализа стоимости? Структурированное сравнение архитектурных подходов на основе взвешенных критериев.
- Как рассчитывается стоимость? Вес × оценка, затем суммирование всех критериев для каждой альтернативы.
- Как снизить смещение? Валидация в команде, четкие критерии, согласованные шкалы, обоснование каждой оценки.
- На что нужно обратить внимание при назначении весов? Сумма = 100 %, зависит от проекта, обсуждается в команде и документируется.
- Почему анализ рисков важен в дополнение к анализу стоимости? Анализ стоимости охватывает только поддающиеся оценке критерии, но не неизвестные или трудноквантифицируемые риски.
Свободный ответ
В IHK-проектах анализ стоимости может сделать раздел “Оценка альтернатив” очень убедительным, если критерии, весовые коэффициенты и расчеты прозрачно задокументированы. Особенно в AP2-предложении проекта анализ стоимости — отличный инструмент для методического обоснования архитектурного решения. Экзаменатор сразу видит, что решение принято не “с потолка”, а в результате систематического сравнения.
Стратегия обучения
- Определить три архитектурные альтернативы (например, монолит, микросервисы, многоуровневая архитектура).
- Сформулировать пять критериев без пересечений.
- Установить весовые коэффициенты (сумма = 100 %) и обосновать их.
- Рассчитать матрицу, интерпретировать и обосновать результат.
- Дополнить анализ рисков и задокументировать как ADR.
Далее на https://www.irc-coding.de/nutzwertanalyse-grundlagen-kriterien-gewichtung
Дополнительная информация
- https://arc42.org/ — Architecture Decision Records
- https://www.projektmagazin.de/methoden/nutzwertanalyse



