я в последнее время idef0 только рецензирую :о)) а не рисую...
я же как-то тебе писал об этом...
самое первое и самое главное - определяем цель системы и ее рамки, делаем гипотезы о точках зрения: сколько их и какими они могут быть. (на примере библиотеки - читатель, библиотекарь,
директор завода зав.библиотекой.) для каждого из них одни и те же информационные сущности будут означать что-то свое. по возможности уже на этой стадии можно сформулировать ряд вопросов к системе.
потом надо описать систему словами в виде простых предложений, это чем-то похоже на user story (а может user story и есть). это позволит определить границы системы. из предложений выделяем действия = глаголы и сущности = существительные. если говорить в терминах idef0, то сущности - это стрелки, действия - они активити и есть. важно составив подобным образом словарь системы не выходить за его рамки, иначе придется пересматривать границы. можно отсортировать сущности по принципу "глубины"
дополнительно я обычно для каждой сущности определяю в ОО стиле, что с ней можно вообще делать с точки зрения того, от чей т.зр. составляется модель: что с книгой (сдать/принять, проверить, положить на полку, выдать), что с формуляром (заполнить? что еще?), и т.п., но это в явном виде в стандартной методике вроде отсутствует. мне так легче рассматривать сущности, в конце концов они чаще всего имеют вполне ясное и понятное отражение в реальном мире.
рисуем А0, ориентируемся на цель, рамки, сущности. потом пробуем детализировать, пытаясь увязать модели по глубине, чтобы на одном уровне определялись функции примерно похожие по нагрузке, например: принять книгу, заполнить формуляр - д.б. на модели одного уровня.
тут будут уместны твои вопросы
1. Может ли, к примеру, входящий в блок Принять книгу поток Книга оседать в этом блоке и не иметь выхода, кроме пометки о сдаче в формуляре?
2. Если выходящим должен быть "принятая (сданная) книга", то должна ли она выходить из системы, если мы рассматриваем границы абонемента библиотеки?
3. Если мы рассматриваем модель с точки зрения библиотекаря абонемента, может ли быть механизмом сам библиотекарь-абонемента?
попробую ответить:
1. А что с книгой-то происходит? С самой книгой ничего, она физически перемещается из рук читателя, через несколько других рук, на свое место на полочке, которое указывает библиотечный каталог. В принципе при некоторых ракурсах рассмотрения можно отражать во входах/выходах разные состояния книги: книга, полученная от читателя, книга на столе регистратора, книга на полке.
С формуляром IMHO проще - это вторая цепочка (потому что формуляр это информационная карточка книги (в определенном смысле). Когда книга на руках, он где лежит? Когда книгу сдают, что с формуляром происходит? Когда книгу на полку кладут, куда формуляр девается? и т.п.
Тут либо книга и формуляр всегда вместе "путешествуют", либо по-разному...
2. Почему выходом должна быть книга-то? Или мы рассматриваем в качестве системы операцию сдачи/приемки? Если нет, то вообще говоря, выходов может быть много и разных, отчетность какая-нибудь с анализом востребованности литературы, например... Короче говоря, надо на задачу смотреть (цель какая? границы какие? - не могу сказать, что сейчас внятно понимаю термин "границы абонемента библиотеки" )
3. ну а почему нет. если хочешь, назови его "я - библиотекарь абонемента".
одна из проблем при рисовании моделей idef0 - попытка соблюсти последовательность, что, я считаю, не совсем верно, т.к. как первичнее функциональная структура, т.е. из каких функций состоит модель, и как они между собой связаны информационно (там временного измерения нет), а не событие - реакция (это в арисе так).
последний этап - проверка. нужно попытатся "прокрутить" систему: дали что-то нужное на вход, что и как будет при этом входе.
твой пример с книгой, очевидно, вызывает трудности из-за того, что границы системы не ясны и с точкой зрения не все в порядке, или мне только так кажется.