PRO учет "всех" возможных исходов

В нашей повседневной работе мы редко сталкиваемся с линейными сценариями. Чаще всего у нас есть два основных варианта развития событий:

1️⃣. Конструкция: ЕСЛИ [условие1] ТО [действие1] ИНАЧЕ [действие0] (аналог if ... else ...) Пример: ЕСЛИ возраст клиента больше или равен 16 лет, ТО работаем ✅, ИНАЧЕ нет ❌.

2️⃣. Конструкция: ЕСЛИ [условие1] ТО [действие1]; ЕСЛИ [условие2] ТО [действие2]; ИНАЧЕ [действие0] (аналог switch: case ... default ...) Пример: ЕСЛИ статус заказа "Новый", ТО делай раз, ЕСЛИ статус заказа "Оплачен", ТО делай два и так далее; ИНАЧЕ [действие0]

При чтении постановок сталкиваюсь с ситуацией, когда аналитики пытаются предусмотреть "все" возможные исходы, но забывают про ключевое слово "ИНАЧЕ".

Это слово часто обрабатывает минимальный перечень возможных исходов, которые могут показаться невозможными и возникает такой диалог:

  • Учли все исходы?
  • Да, всё перечислено. Дополнительных исходов не будет.
  • А что, ***, если нет? Что будет, если нет? (как у Слепакова в песне про нефть)
  • Эм-м-м.

Пример: Представьте сервис, который возвращает состояние заказа, описываемое тремя возможными статусами {"Новый", "Оплачен", "Получен"}. Мы знаем все эти статусы сейчас и кажется, что достаточно описать поведение при получении каждого из них. Но что, если сервис не наш, а жизненный цикл заказа со временем может усложниться (судя по списку статусов, точно усложнится)? Правильно: мы столкнемся с необрабатываемым исходом и непредсказуемым поведением.

На ревью 🔍 могут не заметить. Разработчик 💻 сделает так, как описано. Тестировщики 🪲 поторопятся и не обратят внимания. Всё уедет в прод 🫣 как есть. Рано или поздно получим инцидент 🤷‍♂️ на ровном месте.

Решение: считаю лучшей практикой с самого начала заложить поведение на случай исключительных ситуаций. Даже если мы учли "все" исходы, всегда может произойти что-то еще: добавят статус "Отменён", "Ожидает оплаты" или иной другой статус. Поэтому необходимо не забывать про "ИНАЧЕ", чтобы система была готова к неожиданностям и оставалась стабильной 💪.

—————

Как тебе материал? Ставь 👍, если годится)

Спасибо за обратную связь и отличной 👨‍💻  недели!

made in: @pro_system_analysis ❗️Начало активного подбора СА близко. Заходи на тестовое собеседование: по ссылке

PRO учет "всех" возможных исходов
В нашей повседневной работе мы редко сталкиваемся с линейными сценариями. Чаще всего у нас есть два основных варианта развития событий:
1️⃣ | Сетка — социальная сеть от hh.ru