Business criticality і change risk — різні dimensions

Business criticality показує, наскільки болючим буде збій для користувачів або бізнесу. Change risk показує, наскільки легко саме запропонована зміна може порушити поведінку. Критичний flow може мати низький change risk для добре ізольованої правки, а другорядний модуль — високий change risk через shared utility та відсутність тестів.

Не зводьте ці dimensions до одного score. Додайте visible unknowns: невідомий owner, неперевірена configuration precedence або суперечливі docs впливають на рішення навіть тоді, коли business impact ще не оцінений.

Мінімальний запис risk map

ПолеЩо зафіксувати
Areaпідсистема, flow або конкретний модуль
Business criticalitylow / medium / high та чому це важливо
Change risklow / medium / high і механізм можливого впливу
Risk categoriesmoney, integration, data, dates, ownership, coverage тощо
Evidenceшляхи, тести, logs, Git history, reports
Missing checksщо саме ще не перевірено
Recommended actionконкретне рішення та наступний крок

Приклади рішень, а не generic improve

  • mrr-engine / pause-resume MRR: high business criticality і high change risk; приблизно 25% coverage та можлива code/docs discrepancy — characterize behavior і перевірити owner до зміни;
  • payments / retry recovery: high/high через money та external integration — зібрати recovery evidence і звузити scope до одного retry path;
  • config / timezone + feature flags: medium/high — документувати precedence і виконати manual verification для дат та прапорців;
  • legacy/OldBillingUtils.java: broad impact і weak tests — спочатку побудувати module/flow map, а не починати масовий refactor.

Операційні дії з risk map

Risk map має вести до рішення: що можна робити зараз, що потребує доказів, а що слід відкласти. Формулювання «покращити якість» без owner, scope і перевірки не є operational action.

  1. characterize current behavior для high/high flow;
  2. gather more evidence, якщо unknowns блокують оцінку;
  3. identify an owner для business rule або критичної інтеграції;
  4. document configuration precedence, якщо behavior залежить від кількох шарів;
  5. hold the change або narrow the scope, якщо evidence недостатньо;
  6. freeze changes чи defer work, якщо ризик перевищує готовність перевірок.

Git churn як допоміжний сигнал

У навчальному прикладі результатом може бути 11, але це потрібно трактувати лише як signal churn. Саме число без періоду, джерела та порогу не доводить ризик. Додайте його до evidence, порівняйте з іншими модулями й вирішіть, чи потрібне deeper discovery.

Порахувати згадки шляху в історії змін
git log --since="1 year ago" --name-only --pretty=format: \
  | grep 'mrr-engine/MrrFormulas.java' | wc -l

Канонічне джерело уроку · JavaRush

Відкрити матеріал JavaRush