Методология структурного анализа и проектирования SADT. Глава 3Дэвид А. Марка, Клемент МакГоуэн, Предисловие Дугласа Т. Росса
Глава 3. Синтаксис моделей и работа с ними
Одна SADT-диаграмма сложна сама по себе, поскольку она содержит от трех до шести блоков, связанных множеством дуг. Для адекватного описания системы требуется несколько таких диаграмм. Диаграммы, собранные и связанные вместе, становятся SADT-моде-лью. В SADT дополнительно к правилам синтаксиса диаграмм существуют правила синтаксиса моделей. Синтаксис SADT-моделей позволяет аналитику определить границу модели, связать диаграммы в одно целое и обеспечить точное согласование между диаграммами. Никакой другой метод структурного анализа не позволяет так точно, как SADT, соединять диаграммы в тщательно организованные комплекты, называемые моделями. 3.1. Система представляется одним блоком
SADT-модель является иерархически организованной совокупностью диаграмм. Диаграммы обычно состоят из трех-шести блоков, каждый из которых потенциально может быть детализирован на другой диаграмме. Каждый блок может пониматься как отдельный тщательно определенный объект. Разделение такого объекта на его структурные части (блоки и дуги, составляющие диаграмму) называется декомпозицией. Декомпозиция формирует границы, и каждый блок в SADT рассматривается как формальная граница некоторой части целой системы, которая описывается. Другими словами, блок и касающиеся его дуги определяют точную границу диаграммы, представляющей декомпозицию этого блока. Эта диаграмма, называемая диаграммой с потомком, описывает все, связанное с этим блоком и его дугами, и не описывает ничего вне этой границы. Декомпозируемый блок называется родительским блоком, а содержащая его диаграмма - соответственно родительской диаграммой. Таким образом, SADT-диаграмма является декомпозицией некоторого ограниченного объекта. Принцип ограничения объекта встречается на каждом уровне. Один блок и несколько дуг на самом верхнем уровне используются для определения границы всей системы. Этот блок описывает общую функцию, выполняемую системой. Дуги, касающиеся этого блока, описывают главные управления, входы, выходы и механизмы этой системы. Диаграмма, состоящая из одного блока и его дуг, определяет границу системы и называется контекстной диаграммой модели. Таким образом, этот блок изображает границу системы: все, лежащее внутри него, является частью описываемой системы, а все, лежащее вне него, образует среду системы. На рис. 3-1 показан верхний уровень модели экспериментального механического цеха. Блок с названием изготовить нестандартную деталь описывает самую общую функцию механического цеха и имеет нулевой номер. (Блок самого верхнего уровня модели всегда нумеруется нулем.) Этот блок представляет весь экспериментальный механический цех. Дуги требования по срокам выполнения задания и справочник стандартов качества определяют, как экспериментальный механический цех преобразует рабочие комплекты и станки и инструменты в готовые детали и оценку степени завершенности задания. Они определяют интерфейс между экспериментальным механическим цехом и остальной частью аэрокосмической компании. 3.2. Идентификация декомпозиции номерами узлов
SADT-модели развиваются в процессе структурной декомпозиции сверху вниз. Сначала декомпозируется один блок, являющийся границей модели, на одной диаграмме, которая имеет Рис 3-1. Контекстная диаграмма модели от трех до шести блоков, затем декомпозируется один (или больше) из этих блоков на другой диаграмме с тремя-шестью блоками и т.д. Название диаграммы совпадает с названием декомпозируемого блока. Результатом этого процесса является модель, диаграмма верхнего уровня которой описывает систему в общих терминах "черного ящика", а диаграммы нижнего уровня описывают очень детализированные аспекты и операции системы. Таким образом, каждая диаграмма представляет собой некоторую законченную часть всей модели. В методологии SADT идентифицируется каждая диаграмма данной модели посредством того, что называется "номер узла". Номер узла для контекстной диаграммы имеет следующий вид: название модели или аббревиатура, косая черта, заглавная буква A (Activity в функциональных диаграммах), дефис и ноль. Например, номером узла для контекстной диаграммы модели экспериментального механического цеха является ЭМЦ/А-0. Номером узла диаграммы, декомпозирующей контекстную диаграмму, является тот же номер узла, но без дефиса (например, ЭМЦ/АО). Все другие номера узлов образуются посредством добавления к номеру узла родительской диаграммы номера декомпозируемого блока. На рис. 3-2 показаны две диаграммы модели экспериментального механического цеха. Номер узла на первой диаграмме - ЭМЦ/АО, а номер узла на второй диаграмме - ЭМЦ/А1. Диаграмма ЭМЦ/А1 декомпозирует блок 1 диаграммы ЭМЦ/АО. (Первый ноль при образовании номера узла принято опускать, поэтому вместо ЭМЦ/А01 пишется ЭМЦ/А1.) 3.3. Связывание декомпозиции с помощью С-номеров
Помимо использования для идентификации версий диаграмм, С-номера применяются для связки диаграмм при движении как вверх, так и вниз по иерархии модели. Обычно С-номер диаграммы, декомпозирующей некоторый блок, впервые появляется непосредственно под этим блоком на родительской диаграмме. Это образует "направленную вниз" связь от родительской диаграммы к диаграмме-потомку. На рис. 3-2 С-номер DAM008 диаграммы управлять выполнением задания размещен ниже блока 1 на диаграмме изготовить нестандартную деталь. Это указывает на то, что функция управлять выполнением задания была декомпозирована. Рис 3-2. Связь между родительской диаграммой и диаграммой потомком Как только образуется направленная вниз связь, на диаграмме-потомке формируется ссылка на родительскую диаграмму. В области контекста SADT-бланка (правый верхний угол) автор изображает каждый блок родительской диаграммы маленькими квадратиками, заштриховывает квадратик декомпозируемого блока и размещает С-номер родительской диаграммы возле заштрихованного квадратика. Это образует "направленную вверх" (к родительской диаграмме) связь. Метод соединения диаграмм посредством однозначно определенных номеров гарантирует, что именно нужная версия диаграммы станет частью модели. Другими словами, при использовании С-номеров осуществляется тщательный контроль за введением новых диаграмм в иерархию модели. На рис. 3-2 область контекста бланка диаграммы управлять выполнением задания содержит три квадратика - по одному для каждого блока диаграммы изготовить нестандартную деталь. Первый блок заштрихован. Это указывает на то, что данная диаграмма декомпозирует первый блок диаграммы DAM008. 3.4. Коды ICOM гарантируют стыковку диаграмм
Хорошая методология структурного анализа, позволяющая создавать отдельные диаграммы, должна гарантировать правильное соединение всех диаграмм для образования согласованной модели. SADT-диаграммы имеют внешние дуги -дуги, как бы выходящие наружу и ведущие к краю страницы. Эти дуги являются интерфейсом между диаграммой и остальной частью модели. SADT требует, чтобы все внешние дуги диаграммы были согласованы с дугами, образующими границу этой диаграммы. Другими словами, диаграмма должна быть "состыкована" со своей родительской диаграммой. Обычно это означает, что внешние дуги согласованы по числу и наименованию (но не обязательно по расположению) с дугами, касающимися декомпозированного блока родительской диаграммы. Например, у блока 1 диаграммы изготовить нестандартную деталь восемь граничных дуг: входы рабочий комплект и деталь с биркой, управления требования по срокам выполнения задания, штамп "принято" и статус работы, а также выходы оценка степени завершенности задания, готовая деталь, план выполнения задания. Все эти внешние дуги и их имена можно найти на диаграмме управлять выполнением задания. В SADT принята система обозначений, позволяющая аналитику точно идентифицировать и проверять связи по дугам между диаграммами. Эта схема кодирования дуг -"ICOM" - получила название по первым буквам английских эквивалентов слов вход (Input), управление (Control), выход (Output), механизм (Mechanism). Коды ICOM чрезвычайно эффективны, поскольку они позволяют аналитику быстро проверять согласованность внешних дуг диаграммы с граничными дугами соответствующего блока родительской диаграммы. Они также обеспечивают согласованность декомпозиции, поскольку все дуги, входящие в диаграмму и выходящие из нее, должны быть учтены. На рис. 3-2 дуга требования по срокам выполнения задания может быть отслежена от ее начала (С1 блока 0 диаграммы ЭМЦ/ А-0) на границе модели через верхнюю часть диаграммы ЭМЦ/АО к блоку управлять выполнением задания (СЗ блока 4 диаграммы ЭМЦ/ А1). (Мы детально обсудим некоторые исключения из этого правила в главе 5.) Если вы начинаете строить диаграмму следующего уровня, то дуги, касающиеся декомпозируемого блока, используются в качестве источников и приемников для дуг, которые вы создаете на новой диаграмме. После завершения диаграммы ее внешние дуги стыкуются с родительской диаграммой для обеспечения согласованности. Одним из способов такой стыковки может служить присваивание кодов ICOM внешним дугам новой диаграммы согласно следующим правилам:
На рис. 3-3 приведены субъект и его границы (блок и прилегающие дуги) и декомпозирующая его диаграмма. Обратите внимание, что граница субъекта изображена жирной линией для того, чтобы подчеркнуть, как внешние дуги связаны с соответствующими граничными дугами. В этом примере мы изобразили на диаграмме пунктирными линиями зрительные связи только между выходными дугами и соответствующими им граничными дугами. (Другие связи легко определить зрительно.) В соответствии со схемой кодирования для рис. 3-3 были получены коды ICOM: II, 12, Cl, C2, 01, 02, Ml. Кодирование дуг ICOM-метками произведено в зависимости от того, к какой стороне родительского блока примыкает данная дуга. При следовании схеме кодирования ICOM создается совокупность неявных связующих звеньев между страницами, которые можно быстро изменить при изменении границ. (Сравните схему кодирования ICOM/SADT с альтернативной схемой, в которой внешние дуги просто помечаются определенным образом, скажем, буквами от А до Я.) Эти неявные межстраничные связующие звенья облегчают процесс чтения и рецензирования SADT-диаграмм, а также проверку, насколько согласованно произведена декомпозиция. Коды ICOM упрощают также работу, связанную с внесением вручную локальных изменений в диаграмму, и объединяют различные варианты диаграмм так, что они хорошо стыкуются в модели. По нашему мнению, коды ICOM являются одним из наиболее важных вкладов SADT в технологию графического моделирования. Они обеспечивают требуемую строгость, позволяя в то же время авторам работать независимо, чертить разборчиво и выбирать без ущерба для предыдущей работы подходящую терминологию на последующих уровнях детализации. 3.5. Обозначения для менее распространенных интерфейсов по дугам
Номера узлов, С-номера и коды ICOM управляют подавляющим большинством ситуаций внутренних связей в модели. Однако между родительскими диаграммами и диаграммами-потомками могут возникать некоторые специфические ситуации, в которых разумное использование синтаксиса модели улучшает описание модели, а именно: (1) при разветвлении и соединении внешних дуг; (2) при изменении входных дуг на управляющие и наоборот; (3) когда дуги "входят в тоннель". Мы приведем примеры каждой из этих ситуаций, так чтобы вы могли распознать их и понять их значение. Однако необходимо предупредить, что такие средства изображения следует использовать только в особых ситуациях для прояснения и упрощения описания системы. Их следует применять для удобства, а не как прикрытие плохого анализа систем. Во всех этих случаях данные при пересечении границ диаграмм сохраняются, т. е. все входные данные некоторым образом используются для образования всех выходных данных. Ключом для понимания таких ситуаций является то, что дуги SADT изображают иерархические наборы данных (в главе 5 приведены дополнительные пояснения относительно иерархии дуг и дуг вообще). Одна из особых ситуаций заключается в разветвлении или соединении внешних дуг между диаграммами. Например, две внешние выходные дуги на диаграмме могут быть частями общей выходной дуги на границе блока. Это может произойти, если аналитик вместо того, чтобы обычным способом соединить их на диаграмме, оставляет это соединение неявным. Узнать об этом непоказанном соединении или разветвлении можно только, заметив, что коды ICOM для двух разных дуг совпадают. (Такая ситуация показана в уроке 7, где дуга бюджет и деньги, Cl на диаграмме ПС/А-0, разделена на диаграмме ПС/АО на дугу бюджет и дугу деньги.) Мы настоятельно рекомендуем почти во всех случаях делать явным факт соединения или разветвления внешних дуг, вычерчивая это на декомпозируемой диаграмме. Это позволит избежать использования ICOM-меток для указания соединения или разветвления дуг. Особая ситуация возникает также тогда, когда входная дуга превращается в дугу управления и наоборот. Это происходит, если дуга управления (или входная), касающаяся границы блока, используется при декомпозиции диаграммы как входная (или соответственно управленческая) дуга. В уроке 7 обратите внимание на то, что дуга деньги как часть дуги деньги и бюджет является дугой управления на диаграмме ПС/А-0, однако используется как входная дуга на диаграмме ПС/ АО. Аналитик связал их для того, чтобы подчеркнуть, что на верхнем уровне модели бюджет и деньги управляют процессом питания семьи. Бюджет управляет планированием, а деньги - это нечто, превращаемое в процессе хождения по магазинам в продукты. Нам редко встречались ситуации, в которых требуется подобная техника. Мы советуем хорошо подумать об альтернативных способах построения диаграммы, прежде чем применять эту технику. Две другие особые ситуации возникают, когда дуги "входят в тоннель" между диаграммами. Дуга "входит в тоннель", либо (1) если она Рис 3-3. Кодирование связей между SADT-диаграммами является внешней дугой, которая отсутствует на родительской диаграмме (имеет скрытый источник), либо (2) если она касается блока, но не появляется на диаграмме, которая его декомпозирует (имеет скрытый приемник). Тоннельные дуги от скрытого источника начинаются скобками, чтобы указать, что эти дуги идут из какой-то другой части модели или прямо извне модели. На рис. 3-2 дуга незанятый рабочий С1 блока получить задание и назначить исполнителя на диаграмме ЭМЦ/А1 входит в тоннель и поэтому она не касается блока управлять выполнением задания на родительской диаграмме ЭМЦ/АО. Тоннельные дуги, имеющие скрытый приемник, кончаются скобками, чтобы отразить тот факт, что такая дуга идет к какой-то другой части модели или выходит из нее или что она не будет более в этой модели рассматриваться. На рис. 3-2 все дуги механизмов диаграммы изготовить нестандартную деталь являются тоннельными и указывают на то, что они не будут показаны при декомпозиции соответствующих блоков. Наш опыт свидетельствует, что описанные особые ситуации встречаются редко, и если это все же происходит, то по очень специальным причинам. Хотя мы неоднократно сталкивались с полезным применением этой методики, советуем применять ее с большой осторожностью. При неправильном использовании она быстро становится прикрытием плохого моделирования. Поэтому мы рекомендуем ее только опытным SADT-аналитикам, да и то редко. Вместо этого мы предлагаем использовать синтаксис SADT-моделей стандартными способами, которые обсуждаются в этой книге. Если же диаграммы становятся слишком сложными для чтения и понимания, можно обратиться к этим альтернативным методам. Если вы хотите познакомиться со специальными случаями использования синтаксиса SADT, обратитесь к изучению моделей промышленного производства, представленных в части VI, чтобы посмотреть, как эти методы применяются для упрощения описаний систем.
SADT-диаграммы являются декомпозициями ограниченных объектов. Объект ограничивается блоком и касающимися его дугами. Диаграмма, содержащая границу, называется родительской диаграммой, а диаграмма, декомпозирующая блок родительской диаграммы, называется диаграммой-потомком. Для связывания родительской диаграммы и диаграммы-потомка используются С-номера, так что модель всегда сохраняет актуальность. Коды ICOM используются для того, чтобы стыковать диаграмму-потомка с родительской диаграммой. Номер узла идентифицирует уровень данной диаграммы в иерархии модели. Когда диаграммы в модели становятся слишком трудными для чтения, для упрощения описания системы могут разумным образом использоваться специальные технические приемы типа "вхождения дуг в тоннель". Дополнительная литература
|