А1. Кто по привычке к техноязыку стал извлекать данные сначала из импер-схем - пошёл эргономически неоптимальным путём
. Общий состав процесса отражён на АТ-схеме, как и подчинённость его процедур. Но подчинённость эта по объявлениям.
Связи процедур при исполнении (по вызовам) нужно показывать на схеме подключения процедур -
ДМ-типа. Для удобства прослеживания взаимосвязей можно использовать "придание глубины" по Дмитрию_ВБ (т.е. наложение схемы зависимостей, выделенных цветами - как на рисунках в
этом посте).
Уже затем переходим к импер-схемам. И тут используется структурирование процесса как дейкстрала (головного). Дейкстрал-"шапка" показывает читателю не только логические части процесса - но и логические условия выбора каждой из частей.
А2. Из операторов утверждений - предусловий, постусловий, текущих условий.
А3. Так выделены атомарные последовательности действий (при испоолнении совершаемых непрерывно). Для эскиза это возможная замена операторам атомизации (определённым
здесь) - не вводятся дополнительные типы и экземпляры вершин, что удобнее для читателя-"предметника".
А4. Да. Прежде всего это проверки всех условий. А также изменения параметров циклов.
Б1. Ответ содержится в определении смысла по Фридланду (см. статью
здесь). Он определяет полуформальный смысл как существующий в сознании образ результата решения, с которым и сравнивается текущее состояние предметной области. Определённые в модели множества флагов выполнения и требования техопераций получают свои значения как результат таких сравнений (мысленных). C этим связано и дублирование флагов в актив-модели - вне человека они отражают состояние предметки, у человека - результат оценки этого состояния.
Б2. Нет, не все. Значения некоторых параметров можно понимать как перечисления, но такой тип в гарантоспособных инфор-языках типа Оберона не определён. Более того, по контексту употребления можно видеть, что эти параметры трактуются как логические. Для корректной информатизации следует понимать перечисляемые значения как предметно-обусловленные ("знаковые", как говорит создатель техноязыка) псевдонимы значений числового индекса (Вирт говорит "именованные значения"). А их логический смысл отражать как сравнения числового параметра с заданными уставками. Вообще здесь проявляется тот факт, что циклы с параметром многое скрывают в логике процесса - особенно когда параметр имеет также нечисловые смыслы, как в данных случаях. И следует изначально писать цикл по схеме поиска/прохода - как сделано в задаче оформления дракон-схем (допустим, при обходе КС-ячеек
здесь).
Б3. В вызывающий процесс перенести можно. Это должно сделать логику исполнения более прослеживаемой. Поскольку эта величина используется и там - для определения длины нити, вдеваемой в иглу на вспомогательной техоперации
ВспОп3. В силу того же эту величину некорректно будет передавать как параметр, не сохраняя в вызывающей процедуре - тогда она будет локальной, и для вычисления длины нити её значение будет недоступно.
Б4. Если имеем в виду формального исполнителя - нужно. Подход к этому уже намечен в иллюстративной части определения типа. Там введена система координат для книги. Для полной математизации следует описать все существенные для задачи подобъекты как геометрические сущности (точки, линии, поверхности, объёмы). Тогда для информатизации можно определить их как подтипы и использовать определяющие величины в процессах.
Б5. Да, есть. И много - так что если кто действительно вчитывался, но не обнаружил - может смело поставить себе "неуд". Итак, перечислим:
* В ОснОп1 процесса Укрепить книгу в первом цикле с параметром неверно расположены первые два действия. Нужно поместить их на главный маршрут.
* Параметр этого же цикла неверно наращивается - следует добавлять ещё единицу, чтобы действительно выйти за пределы обработанного выпадения - листа/пачки.
* Также неверно показано расширение типа Мягкий переплёт - указание д.б. в расширяемой записи.
* Включение величины Название в определение типа Мягкий переплёт логически некорректно - в самом деле, какое значение для переплёта имеет название конкретной оформленной по такому типу книги?
* Некорректно определено число итераций цикла в процедуре Прошить постоянно. Правильное выражение: ОтвДляПрш=2*(Кол-воОтв-1). Первый сомножитель учитывает, что прошивка обходит обе стороны КБ, второй - что шаг цикла соединяет пару соседних отверстий (т.е., связь здесь такая же, что и между числом точек и числом интервалов между этими точками). Кстати, эту величину можно прямо подставить и при вычислении длины нити, вдеваемой в иглу (первый сомножитель при этом не нужен).
* Критерий выбора текущей позиции в том же цикле некорректен во второй своей части - условие направления прохождения будет выполняться только при чётном числе прошиваемых отверстий. Условие, не зависящее от чётности отверстий, будет иметь вид:"... не исходное И не соединённое данной нитью с соседним отверстием по этой же стороне КБ". Первое условие нужно, чтобы не "зациклиться" уже на втором шаге на исходном отверстии, повторяя витки между ним и соседним. Оно же м.б. использовано для "непараметрического" выхода из цикла - т.к. его невыполнение свидетельствует, что прошивка вернулась к исходному отверстию.
Основываясь на этом, можно составить цикл прошивки в базовой форме, без параметра.
О "данной" нити говорится, т.к. в общем случае возможна и неоднократная прошивка.
* На практике возможно значительное трение при протягивании иглы через отверстие в КБ. Тогда иглу проталкивают нажатием на ушко пассатижами (плоскогубцами); они же используются, чтобы вытащить иглу (захватывая её со стороны острия). Следовало бы отразить этот случай как в импер-части (с выбором по условию чрезмерного трения при проталкивании, а правильнее с т.зр. техники безопасности - безусловно), так и в актив-части - включив в состав рабочего места пассатижи (плоскогубцы).
* Следовало бы уточнить, что при связывании узел нужно располагать у исходного отверстия - так он будет скрыт в нём и не будет выпирать под обложкой.
Также можно говорить о некоторых недочётах в описании:
* Для ширины форзац-скрепы не введена именованная величина - значение дано литерально. В результате для дальнейшего употребления (в операторе промазывания) её приходится "просто называть".
* В некоторых операторах не отформатированы имена сущностей (качественные).
Также модель можно было бы развить в некоторых аспектах:
* Можно описать случай неоднократной прошивки КБ. На практике - двукратная с выбором исходных отверстий с противоположных краёв КБ (на одной - оборотной - стороне). Тогда обычно нить протягивается каждый раз одинарная (в иглу вдевается только на длину одного хвоста). Независимые прошивки могут и приходить в негодность независимо - обрыв нити в одной не обязательно влечёт за собой обрыв и в другой - это повышает надёжность укрепления.
* В модели можно описать также случай неремонтопригодного укрепления переплёта. Оно отличается тем, что форзац-скрепа накладывается только на КБ и склеивается (после прошивки) также и с обложкой.
В1. В принципе можно. Однако чистый текст не будет столь наглядным. Эргономичнее будет использовать структурные скобки. Но структуру маршрутов с выделением ветвей (как в дейкстрале) показывать одномерными скобками также недостаточно наглядно.
В2. Вообще-то можно, но маршрутная логика м.б. чересчур сложна для восприятия, если иметь в виду "предметника".
В3. Логически разницы нет - структура деятельности будет эквивалентной (можно проверить, составив "варианты использования"). А вот для формального исполнителя разница будет - в виде накладных расходов на вызов процедуры только для того, чтобы затем из неё выйти
... То же проявляется и эргономически - ситуацию, исключающую исполнение процедуры целиком, удобнее описать вне этой процедуры. Иначе читателю приходится переключаться на другую схему - лишь затем, чтобы от неё вернуться к исходной.
В4. Можно - рокировав развилки "шапки". Тогда дейкстрал будет иметь т.н. "примитивидную" организацию. Нетрудно видеть, что её пропорции будут неоптимальны - схема окажется вытянута по вертикали. Отчасти может изменить пропорции структурное представление циклов с параметром, как сказано в ответе Б2. Важнее другое - принятая организация следует интерпретации координат на плоскости, предложенной Ермаковым и Жигуненко - когда состояния процесса располагаются по своей оси ортогонально цепочкам действий.
Также в качестве "домашней работы" можно внести исправления ошибок, указанных выше (и, возможно, найденных самостоятельно). Для этого нужен оригинал описания - который доступен ниже:
Вложение:
Делается это по
офисной технологии - заодно можно оценить её возможности.