Глава 9. Продолжение моделирования |
Начальный этап моделирования включает определение объекта, цели и точки зрения модели, ограничения, накладываемые на объект, построение диаграммы верхнего уровня и ее обобщение, составление списков данных и функций, объединение функций в блоки, формирование с использованием списка данных взаимоотношений между блоками. Продолжение моделирования основывается на тех же методах и выводит модель на следующий уровень детализации. Для этого требуется создать отдельную диаграмму для, возможно, каждого блока диаграммы верхнего уровня, затем построить диаграммы для всех блоков новых диаграмм, и так до тех пор, пока модель не будет описывать объект с нужной для достижения цели степенью детализации. Таким образом, продолжение моделирования является рекурсивным процессом.
9.1. Декомпозиция ограниченного объекта
Декомпозиция модели похожа на начальный этап моделирования, но проще его. Почему? Потому что при декомпозиции модели аналитик всегда находится в контексте, определенном блоком со своими дугами одной из диаграмм. Эта граница, называемая границей объекта, определена двумя способами. Во-первых, объект, цель и точка зрения каждой новой диаграммы уже определены на диаграмме АО. Во-вторых, каждый блок, декомпозируемый в новую диаграмму, уже является ограниченным объектом. Другими словами, он идентифицирует конкретную функцию и все данные, которые для нее требуются или ею порождаются. Строить диаграмму, исходя из этой информации, проще, потому что список данных создается на основе дуг, входящих в блок и выходящих из него, а также потому, что список функций подробно раскрывает название блока. Процесс декомпозиции ограниченного объекта состоит из следующих шагов:
Шаги 1-3 представляют созидательную часть процесса. Выполняя их, аналитик концентрирует свои усилия, связанные с выявлением новой информации об объекте, на более высоком уровне детализации, чтобы достичь ясности изложения. Шаги 4-7 составляют этап саморецензирования, в ходе которого аналитик, создав новую диаграмму, проверяет, какую она несет информацию и в каком она находится отношении с родительской диаграммой. Затем в созданную диаграмму и соответственно в связанные с ней диаграммы вносятся изменения, чтобы достичь ясности для других. В этой главе мы подробнее рассмотрим шаги 1-3. Шаги, связанные с саморецензированием и последующими изменениями, обсуждаются в главе 10.
9.1.1. Выбор блока
Декомпозиция начинается с чтения диаграммы АО и определения самого содержательного блока. Это такой блок, декомпозиция которого выявит многие аспекты диаграммы АО и будет оказывать большое влияние на будущие декомпозиции других блоков этой диаграммы. При выборе самого содержательного блока следует учитывать доминирование, функциональную сложность и понятность. Лучшим не обязательно будет блок, наиболее трудный для понимания. Лучшим блоком для первой декомпозиции будет тот, который позволит наиболее глубоко проникнуть в суть рассматриваемой системы.
Рассмотрим диаграмму АО для модели экспериментального механического цеха ( рис. 9-1). На ней три блока: управлять выполнением задания, выполнить задание и контролировать качество выполнения. На первый взгляд кажется, что управлять выполнением, задания является самым сложным блоком, потому что он самый доминантный и с ним связано самое большое количество дуг. Но при внимательном рассмотрении можно заметить, что многие из его дуг являются просто обратными связями или выходами. Контролировать качество выполнения, видимо, является простейшей функцией, так что ее декомпозиция не даст нам много новой информации. Поэтому эти два блока - плохие кандидаты для первой декомпозиции. Выполнить задание выглядит более интересным, потому что этот блок участвует во многих циклах и имеет широкий спектр входов, управлений и выходов. Поняв, как рабочий выполняет задание, мы, видимо, окажемся в лучшем положении для дальнейшей декомпозиции остальной части модели.
9.1.2. Объект, определяемый блоком
Блок 2, выполнить задание, становится теперь самостоятельным объектом декомпозиции. Для выполнения этой декомпозиции вначале бегло осмотрим обобщающую диаграмму (посмотрите, пожалуйста, диаграмму А-0 на рис. 8-4) и вспомним цель и точку зрения модели. Сделав это, мы увидим, что должны описать блок выполнить задание с точки зрения начальника цеха, чтобы можно было разработать инструкции для обучения нового персонала цеха. Кроме того, мы изучим блок 2 диаграммы АО и соединенные с ним дуги, чтобы выявить его особенности. Например, дуга механизма с названием рабочий указывает, что мы можем, декомпозировав этот блок, выявить, чем занимаются рабочие.
Затем мы составляем список данных со всех дуг, касающихся блока, используя ICOM-ко-дирование для того, чтобы не потерять какие-либо интерфейсные данные. Например, план выполнения задания, станки и инструменты, а также брак входят в начальный список данных (см. верхнюю левую колонку на рис. 9-2). Этот список теперь улучшается благодаря декомпозиции первоначальных данных или введению новых, тесно связанных данных. Например, при дальнейшем рассмотрении плана выполнения задания возникла мысль об указаниях. Далее, мы составляем на основе списка данных список функций, придерживаясь функции, соответствующей блоку верхней диаграммы. Обратите внимание на то, что выбрать инструменты, подготовить рабочее место, обработать на станке и собрать и определить степень выполнения задания, по-видимому, действительно являются функциями, выполняемыми рабочим при выполнении задания.
Стремитесь ограничиваться разумным уровнем сложности при объединении функций и данных: четыре-пять функциональных блоков, как правило, лучше всего. Слишком много данных и функций часто содержат слишком много информации. Это приводит к запутанным диаграммам. Наоборот, небольшое число блоков дает слишком мало, и диаграмма становится почти бесполезной. Если вы уверены, что достигли баланса, проверьте, во всех ли отношениях написанные вами слова адекватны объекту, определенному блоком и его граничными дугами на родительской диаграмме. Теперь у вас есть все необходимое для построения диаграммы.
9.1.3. Создание новой диаграммы
Новая диаграмма строится аналогично диаграммам АО и А-0. Блоки размещаются в соответствии с доминированием (т.е. согласно взаимным ограничениям блоков), затем создаются основные дуги, представляющие ограничения, потом внешние и, наконец, внутренние дуги. Подчеркнем еще раз, что эта процедура, как и та, что описана в главе 8, ориентирована на начинающих пользователей SADT. Вообще говоря, SADT-диаграммы строятся в соответствии с той информацией, которую они несут. Те, кто уже знаком с SADT, строят диаграммы исходя из их содержания.
На рис. 9-2 показан результат работы SADT-автора, который сделал набросок диаграммы ограниченного объекта. Вот некоторые важные моменты этой диаграммы: дуга следующий шаг задания является носителем очень существенной информации - она определяет, что нужно сделать на следующем шаге задания. Следовательно, поскольку она ограничивает все остальные функции, блок определить степень выполнения, порождающий дугу следующий шаг задания, является самым доминантным на этой диаграмме. План выполнения задания (С1), очевидно, требуется прежде, чем что-нибудь может произойти, потому что содержимое этой внешней дуги определяет последовательность шагов обработки. Поэтому управляющая дуга очень важна. Кроме того, автор стремился отразить на диаграмме потоки информации, в особенности потоки информации обратной связи. Обратите внимание на то, что результаты обработки есть обратный вход от блока обработать на станке и собрать к блоку определить степень выполнения задания. Это означает: результат обработки есть незаконченное задание, получаемое на каждом шаге выполнения задания, что в полной мере соответствует действительности.
Рис. 9-1. Диаграмма АО готова к декомпозиции
Рис. 9-2. Предварительные наброски для декомпозиции функционального блока
9.2. Выявление интерфейсных ошибок
Инженерам известно, что существенная доля ошибок приходится на интерфейсы. Например, повреждение соединительной прокладки может послужить причиной течи в канализационных трубах, компьютерный кристалл с погнутым выходом может отказать при установке его на монтажную плату, а слишком тугое закрепление клеммы может привести к обрыву электрического провода. Аналогично в моделях сбои часто происходят в точках интерфейса. Для SADT интерфейсными являются места соединения диаграмм со своими родителями. Вот почему каждую декомпозицию необходимо аккуратно соединять со своим родителем, используя ICOM-метки.
На примере декомпозиции в этой главе показан один из способов реализации этого подхода: прежде чем составлять список данных, запишите имена и ICOM-коды для всех дуг, образующих границу. Это поможет вам при декомпозиции уменьшить вероятность пропуска части граничных дуг. (В главе 3 приведен другой способ.) Выполнив декомпозицию, вернитесь назад к исходному блоку родительской диаграммы и соедините каждую внешнюю дугу новой диаграммы с соответствующей дугой, касающейся этого блока. Это позволит избежать пропуска необходимого соединения. Мы советуем использовать оба приема для обеспечения двойного контроля интерфейсных соединений диаграмм.
9.3. Принципы и приемы расположения дуг
Дуги выражают связи между блоками. Их вычерчивают не для показа последовательности действий. Они отражают отношения между блоками, независящие от потенциального следования. Например, диаграмма на рис. 9-2 не указывает возможной последовательности действий. В частности, функции выбрать инструменты может как встретиться, так и не встретиться перед функцией подготовить рабочее место. Это зависит от того, каким является следующий шаг задания. Если же оборудованное рабочее место уже создано, блок обработать на станке и собрать может выполняться неоднократно, пока не возникнет потребность в выполнении следующего шага задания. Такой механизм приводит к реализации различных сценариев, активизируя блоки в различные моменты времени в зависимости от ситуации.
Может случиться, что, начав рисовать дугу, вы засомневаетесь в том, что она нужна на диаграмме. Не изобразив дугу при первом наброске диаграммы, вы рискуете совершить ошибочный пропуск. Поскольку SADT-диаграммы всегда проверяются другими специалистами и поскольку отсутствующую дугу никто не сможет обнаружить, изъятие сомнительной дуги с диаграммы - прямая дорога к возникновению ошибок и отсечению дополнительных возможностей. Мы рекомендуем включать сомнительные дуги в диаграмму с вопросом об их необходимости адресованным читателям. Полученные в ответ комментарии скорее всего помогут разрешить ваши сомнения. SADT-дуги представляют собой наборы объектов и поэтому они потенциально могут нести много данных. Например, сырье может быть просто стальным бруском, а может быть листами, рулонами, кусками дерева, пластика или различных металлов. Опытные SADT-анали-тики не изображают каждый объект отдельной дугой. В крайнем случае мы советуем давать определение новой дуги в глоссарии и, возможно, уточнять ее содержимое при декомпозиции тех блоков, которых она касается. Таким образом, вы предоставите читателям достаточно информации для понимания вашей диаграммы и не потратите много времени на избыточно подробное описание модели на слишком ранней стадии, что неизбежно привело бы в дальнейшем к большим переделкам.
Начало процесса декомпозиции заключается в выборе блока рассматриваемой диаграммы и рассмотрении объекта, определяемого этим блоком и его дугами. Детализация блока производится путем составления списка данных и списка функций и последующего построения диаграммы. В процессе декомпозиции целесообразно проверять ICOM-коды, потому что при моделировании весьма распространены ошибки интерфейса. Старайтесь включать сомнительные блоки или дуги в диаграммы, фиксируя свои сомнения посредством записей. Это укажет читателям, что вам нужна помощь в решении данной проблемы.
Alexander, С.: Notes on the Synthesis of form, Harvard University Press, Cambridge, Mass., 1964.
Miller, G.: "The magical Number Seven, Plus Or Minus Two: Some Limits on Our Capacity for Information Processing", Tbe Psychology Review, vol. 63, no. 2, March 1956.
Parnas, D.: "On the Criteria to be Used in Decomposing Systems into Modules", CACM, December 1972.
Ross, D.: "An Essay on Activity Diagramming", SofTech Technical Report no. 7104, November, 1976.
Ross, D.: "Principles of Structuring", SofTech Technical Paper no. 082, November 1978.
Rubinsteine, M.: Patterns of Problem Solving, Prentice-Hall, Englewood Cliffs, N.J., 1975.
SofTech, Inc.: "IDEFO Author's Guide to Creating Activity Diagrams", SofTech Deliverable no. 7500-13, September 1979.
SofTech, Inc.: "Integrated Computer-Aided Manufacturing (ICAM) Report: Function Modeling Manual (IDEFO)", contract no. F33612-78-C-5158, SofTech,Inc., 1981.
Thomas, M.: Functional Decomposition: SADT", InfoTech State of the Art Repotr on Structured Analysis and Design, 1978.