📖 Ванечка и ПиццаЕдинорог: пицца, которой нет
В пятницу вечером в пиццерию позвонил клиент: заказ оплачен час назад, пиццы нет. Ванечка открыл систему, заказ висел в статусе "Готовится". Повар клялся, что пицца давно готова, курьер говорил, что в глаза её не видел👀
Ванечка полез в требования, которые писал сам. Там было три статуса: Новый, Готовится, Доставлен.
🦄 ПиццаЕдинорог заглянул ему через плечо.
- Скажи, где сейчас пицца?
- Где-то между печью и клиентом.
- Вот. А в твоей системе между печью и клиентом пусто. Пицца вышла из печи, лежит на раздаче, курьер её ещё не забрал, и система уверена, что она до сих пор готовится.
- Может добавить статус "Ждёт курьера"?
- Да, нужно добавить. Только статусная модель описывает ещё и переходы. Для каждого нужно понять, кто его делает и что его запускает. В "Ждёт курьера" заказ переводит повар, когда выкладывает коробку на раздачу. В "В пути" переводит курьер, когда её забирает.
- А если клиент отменил заказ, когда пицца уже в печи?
- Хороший вопрос. Ответ на него должен лежать в требованиях до запуска, пятница вечером для этого поздновато. Нужно подумать из каких статусов отмена возможна, из каких уже нет, и что тогда происходит с деньгами💳
Ванечка нарисовал схему заново: Новый → Готовится → Ждёт курьера → В пути → Доставлен, плюс отдельная ветка "Отменён" с пометками, откуда в неё можно попасть.
Потерянная пицца нашлась на раздаче, остывшая, клиенту отправили новую за счёт заведения.
💡 Что важно запомнить:
• Статусы повторяют реальные шаги процесса, иначе объект теряется между ними
• У каждого перехода есть инициатор и событие, которое его запускает
• Отмену и ошибки описывают сразу, для каждого статуса отдельно
• Такую модель удобно рисовать диаграммой состояний в UML
➡️Листай карточки, там схема статусов до и после.
🎯 Какой статус ты бы ещё добавил заказу в пиццерии? Может, Ванечка что-то упустил🤔
#системныйанализ
В пятницу вечером в пиццерию позвонил клиент: заказ оплачен час назад, пиццы нет. Ванечка открыл систему, заказ висел в статусе "Готовится". Повар клялся, что пицца давно готова, курьер говорил, что в глаза её не видел👀
Ванечка полез в требования, которые писал сам. Там было три статуса: Новый, Готовится, Доставлен.
🦄 ПиццаЕдинорог заглянул ему через плечо.
- Скажи, где сейчас пицца?
- Где-то между печью и клиентом.
- Вот. А в твоей системе между печью и клиентом пусто. Пицца вышла из печи, лежит на раздаче, курьер её ещё не забрал, и система уверена, что она до сих пор готовится.
- Может добавить статус "Ждёт курьера"?
- Да, нужно добавить. Только статусная модель описывает ещё и переходы. Для каждого нужно понять, кто его делает и что его запускает. В "Ждёт курьера" заказ переводит повар, когда выкладывает коробку на раздачу. В "В пути" переводит курьер, когда её забирает.
- А если клиент отменил заказ, когда пицца уже в печи?
- Хороший вопрос. Ответ на него должен лежать в требованиях до запуска, пятница вечером для этого поздновато. Нужно подумать из каких статусов отмена возможна, из каких уже нет, и что тогда происходит с деньгами💳
Ванечка нарисовал схему заново: Новый → Готовится → Ждёт курьера → В пути → Доставлен, плюс отдельная ветка "Отменён" с пометками, откуда в неё можно попасть.
Потерянная пицца нашлась на раздаче, остывшая, клиенту отправили новую за счёт заведения.
💡 Что важно запомнить:
• Статусы повторяют реальные шаги процесса, иначе объект теряется между ними
• У каждого перехода есть инициатор и событие, которое его запускает
• Отмену и ошибки описывают сразу, для каждого статуса отдельно
• Такую модель удобно рисовать диаграммой состояний в UML
➡️Листай карточки, там схема статусов до и после.
🎯 Какой статус ты бы ещё добавил заказу в пиццерии? Может, Ванечка что-то упустил🤔
#системныйанализ