Я увидел много грубых ошибок в вашей дракон-схеме, даже не с точки зрения нотации, а с точки зрения логики.
Вложение:
Ошибки в схеме.png [ 76.82 КБ | Просмотров: 15 ]
1. Я часто вижу такую вещь в схеме, которую считаю
нерациональным использованием силуэта. Зачем делать ветку "Завершение" с одной только иконой "Конец"? Было бы хоть что-то, позволяющее сделать логическую декомпозицию, но этого нет. Следовательно, имя первой ветки можно перенести в
название алгоритма и преобразовать
силуэт в примитив. Либо, как я потом отправлю схему, сделать описание ситуации, в которой происходит алгоритм.
2. Есть
логическое противоречие между иконами 39, 40 и 50, 55. Если машина
всегда ready, зачем ждать когда она
будет ready? То есть упущен принцип работы кофемашины, это затрудняет восприятие. Да и кстати иконы 39 и 41
противоречат по смыслу. Если мы ждём состояния ready, зачем потом проверять достигла ли кофемашина этого состояния?
3. По логике представленного алгоритма, если машина работает, учёный кидает монетку в монетоприёмник, потом оказывается, что другой учёный кинул монетку раньше и ждёт кофе. Тогда исполнитель ждёт, пока машина снова заработает, и ...
снова кидает монетку. В результате, в примере с двумя учёными, если один учёный пришёл раньше другого, то опоздавшему кофемашина сделает 2 кофе, а не 1, по количеству монеток. Для примера с N учёными алгоритм разорителен.
4. В иконах 44, 47 бессмысленное добавление содержания сверху. Верхняя фраза
включает в себя нижнюю, а нижняя
конкретизирует верхнюю, то есть достаточно нижней фразы в иконе Вопрос.
5. Я не понял механизма хлопка по руке. Учёный просто хлопнул коллегу, но ранее в алгоритме
нет обработки этого действия - не со стороны хлопающего, а со стороны того, по кому хлопают. Если бы была икона вопрос "Коллега хлопнул по руке?" и икона Ждать (что вместе составляет макроикону "Цикл ждать"), тогда бы это было предусмотрено. Но на мой взгляд хлопать не имеет смысла, если другой учёный стоит у автомата и автомат уже жужжит, готовя кофе.
6. Связка между иконами 49 и 51 очень странная. Машина начинает работать только после хлопка по руке другому учёному? Опять же вопрос к принципу работы кофемашины, но я таких ещё не видел.
7. Текст в иконах
разного стиля, лучше выбрать один. Либо повелительное наклонение ("брось монетку", "хлопни по руке", "подожди"), либо неопределённая форма глагола ("бросить", "хлопнуть", "подождать"). И вот, например, иконы 32 и 52 имеют повелительное наклонение, но обращённое к
разным исполнителям - человеку и кофемашине. Для обозначения разных исполнителей алгоритма используются иконы - консольный ввод, консольный вывод и полка.
8. Действия кофемашины для разных учёных одинаково, поэтому иконы 50-53 можно вынести под параллельное исполнение, сократив тем самым схему
Я попробовал сделать алгоритм с учётом увиденных ошибок.
Вложение:
Двое учёных пьют кофе.png [ 1.03 МБ | Просмотров: 15 ]
На самом деле алгоритм можно интерпретировать для всего одного исполнителя, потому что действия учёных в этом процессе одинаковы, какая разница первый он или второй. Чтобы поискать реализацию параллельного исполнения с блокировками, можно посмотреть задачу обедающих философов например, но даже там алгоритм можно описать с точки зрения одного философа, это и в программном коде так делается.
Вложение:
Учёный пьёт кофе.png [ 720.71 КБ | Просмотров: 15 ]