Обновлено: 24 марта 2026 г. в 12:33

Software Requirements (short summary)

hard

«Software Requirements» напоминает о простой вещи: хорошая архитектура почти никогда не начинается с компонентов и технологий, она начинается с правильно понятых требований. Книга показывает, как превратить размытые ожидания бизнеса и пользователей в рабочую инженерную рамку.

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

На интервью и в discovery-разговорах этот материал особенно полезен: он помогает задавать точные уточняющие вопросы, разделять обязательное и желательное и формулировать качественные атрибуты еще до появления первой схемы.

Практическая польза главы

Требования как вход

Показывает, как качество требований напрямую влияет на корректность архитектурного выбора.

Приоритизация

Помогает отделять критичные требования от желательных и не перегружать решение лишней сложностью.

Traceability

Учит связывать бизнес-цель, requirement и архитектурный артефакт в единую цепочку обоснования.

Interview clarity

На интервью улучшает стадию уточнения требований и демонстрирует зрелый discovery-подход.

Software Requirements (Разработка требований к программному обеспечению)

Авторы: Karl Wiegers, Joy Beatty
Издательство: Microsoft Press, 2013 (3rd Edition)
Объём: ~670 страниц

Классика от Карла Вигерса: уровни требований, техники выявления, приоритизация MoSCoW и Kano, управление изменениями.

Оригинал
Перевод

Первоисточник

Официальная страница книги Karl Wiegers и Joy Beatty: Software Requirements.

Открыть страницу книги

Ключевые концепции

Уровни требований

  • Business Requirements — цели бизнеса
  • User Requirements — что пользователи смогут делать
  • Functional Requirements — поведение системы
  • Non-functional — качественные атрибуты

Quality Attributes

  • Performance (latency, throughput)
  • Scalability (load growth)
  • Availability (uptime)
  • Security, Maintainability, Usability

Stakeholders

Разные stakeholders имеют разные требования. Важно идентифицировать всех заинтересованных лиц и понять их приоритеты. На интервью это помогает задавать правильные уточняющие вопросы.

Use Cases

Описание взаимодействия пользователя с системой. Включает основной сценарий и альтернативные пути. Помогает не упустить edge cases при проектировании.

Структура книги

Part I

Software Requirements: What, Why, and Who

Основы: что такое требования, почему они важны, роли в процессе. The Business Analyst роль. Requirements engineering как дисциплина.

Part II

Requirements Development

Elicitation (выявление), Analysis (анализ), Specification (документирование), Validation (валидация). Техники интервью и воркшопов.

Part III

Requirements for Specific Project Types

Agile проекты, пакетные решения, outsourcing, embedded systems, business intelligence.

Part IV

Requirements Management

Управление изменениями, версионирование, traceability, повторное использование требований.

Техники выявления требований

Интервью

Структурированные и неструктурированные беседы со stakeholders. Открытые вопросы для исследования, закрытые — для уточнения.

Наблюдение

Наблюдение за пользователями в их рабочей среде. Помогает выявить неосознанные требования и реальные workflows.

Прототипирование

Быстрые прототипы для валидации понимания требований. Помогает обнаружить пробелы на ранних стадиях.

Приоритизация требований

На интервью часто просят определить MVP или приоритизировать функции. Вигерс предлагает несколько подходов:

MoSCoW

  • Must have — обязательно для релиза
  • Should have — важно, но не критично
  • Could have — желательно
  • Won't have — не в этом релизе

Kano Model

  • Basic — ожидаемое (must be)
  • Performance — чем больше, тем лучше
  • Excitement — wow-эффект

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

❌ На интервью

  • Сразу прыгать к решению без уточнения требований
  • Не спрашивать о масштабе и нагрузке
  • Игнорировать нефункциональные требования
  • Не уточнять приоритеты фич

✓ Как правильно

  • Начать с бизнес-контекста и целей
  • Определить основные use cases
  • Уточнить SLA/SLO (availability, latency)
  • Согласовать scope и приоритеты

Применение на System Design интервью

Чек-лист вопросов (из книги):

Кто основные пользователи системы?
Какие основные сценарии использования?
Какой ожидаемый объём данных/трафика?
Какие требования к latency и availability?
Какие ограничения (бюджет, сроки, технологии)?
Что точно НЕ входит в scope?
Какие интеграции с внешними системами?
Какие требования к безопасности?

Главные выводы

Требования — это не список фич, а иерархия от бизнес-целей до деталей
Нефункциональные требования часто важнее функциональных
Приоритизация — ключевой навык при ограниченных ресурсах
Уточняющие вопросы в начале экономят время на переделку
Scope creep — главный враг успешного проекта
Хорошие требования — testable, measurable, traceable

Связанные главы

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки