Общаемся с юношей, который пытается проектировать почтовую службу с возможностью отслеживать по трек-номеру свою корреспонденцию.
Смотрим на процессную диаграмму:
Ну она несомненно получше, чем была предыдущая , но все еще вызывает вопросы.
Все равно упорно рисует событие в виде входящей стрелки "Посылка приехала в пункт назначения". То есть вот эта простая идея, что прямоугольник - это "Что сделать?", а стрелка - это "С чем сделать?" и "Что получится на выходе?" - это сложная для понимания идея.
Дружочки, на выходе может быть "Посылка", может быть "Посылка в каком-то статусе", но никак не "Посылка приехала". Но об этом мы уже говорили.
Речь будет о другом.
В задании есть такой текст:
Корреспонденция движется к пункту назначения через несколько промежуточных почтовых отделений. В каждом таком отделении сотрудник фиксирует факт получения и время получения, чтобы клиент мог просматривать состояние заказа по трекинговому коду.
Очевидно, что на диаграмме показан клиент, который может посмотреть движение своей посылки, но нигде не показано, что кто-то должен это движение где-то зафиксировать. Судя по диаграмме, посылка вообще волшебно сразу после отправки оказывается в пункте назначения. А между этими моментами - черная дыра.
Спрашиваю юношу:
-Вот у вас клиент отслеживает посылку, хорошо. А благодаря чему он получает вообще эту информацию о том, что посылка сейчас в сортировочном центре города такого-то?
- Ну... на сайте смотрит, - отвечает юноша.
- Хорошо, а как эта информация на сайт попадет? Что в вашей системе предусмотрено, чтобы клиент смог эту информацию видеть?
- Ну... не знаю, как это точно устроено. Наверное, от водителя. Там же какой-то маячок есть на посылке, который сечётся радаром...
Что мы в данном случае видим? Нет, не глупого студента. Он не дурак. Тут совсем другое. Это на самом деле очень типичная ситуация, которая возникает в диалоге системного аналитика и заказчика. У обоих совершенно разная картина происходящего в голове! Один считает, что нужно просто внести данные в базу на сортировочном пункте, а другой думает о маячке и радаре. И, кстати, думает о маячке после прочтения текста задания, где черным по белому написано, что никакого маячка нет, а есть отметка в базе данных. И каждый строит в голове систему исходя из своего видения. И каждый не дурак.
То есть человек пытается проектировать системы вообще ни хрена не понимая, что там реально происходит в жизни, выдумав себе параллельную реальность.
Что с этим делать?
1) Знать, что если вас могут понять неправильно, то вас поймут неправильно. Даже то, что написано русским по белому, поймут неправильно. А уж то, что вы скажете словами через рот! Это вообще поймут ооочень своеобразно )
2) Понимать что п. 1) справедлив для обеих сторон (да, вы тоже можете понять неправильно)
3) Выяснять все детали процесса и РИСОВАТЬ ЧЕРТОВЫ ПРОЦЕССНЫЕ ДИАГРАММЫ.
Да, именно поэтому мы рисуем процессы, чтобы все участники событий их понимали в деталях и одинаково. Чтобы было четкое осознание, кто, когда и что делает. А если какой-то участок процесса кажется мутным и непонятным, то нужно идти к заинтересованным лицам и двести раз переспрашивать " а точно дважды два четыре?".