Практикум для выполнения лабораторных работ состоит из семнадцати лабораторных работ по дисциплинам Спецификация, архитектура и проектирование программных систем
Скачать 2.9 Mb.
|
Завершение моделирования (определение момента прекращения декомпозиции) Одна из наиболее частых проблем, возникающих в процес- се построения SADT-моделей, — когда же следует завершить построение конкретной модели? На этот вопрос не всегда легко ответить, хотя существуют некоторые эвристики для определе- ния разумной степени полноты. Здесь представлены правила, которыми пользуются опытные аналитики для определения момента завершения моделирования. Они носят характер рекомендаций. Только длительная практика позволит приоб- рести знания, необходимые для принятия правильного реше- ния об окончании моделирования. Прежде чем обсуждать критерии для определения за- вершения процесса моделирования, рассмотрим, как увеличи- вается размер модели. С точки зрения математики размер иерархических моделей увеличивается со скоростью геомет- рической прогрессии. В табл. 5.1. показаны размеры полной четырехуровневой SADT-модели, каждая диаграмма которой состоит из четырех блоков, причем каждый из этих блоков декомпозируется аналогичной диаграммой. В такой модели общее число блоков составляет 1365, а в четырехуровневой модели, содержащей по шесть блоков на диаграмме, общее число их 9331. Хотя с математической точки зрения все верно, SADT- модели такого размера никогда не создаются по целому ряду 50 причин. Ни одна SADT-модель не будет иметь одинаковую глубину. Обычно модель строится слоями, большинство из которых не являются глубокими. Чаще всего ограничиваются тремя уровнями. Опыт показывает, что, как правило, создают- ся несколько диаграмм второго и третьего уровней только для того, чтобы убедиться, что для достижения цели уже первый уровень содержит достаточно информации. Таблица 5.1 Размеры четырехуровневой SADT-модели Уровень модели Общее число блоков модели 4 блока / 1 диаграмма 6 блоков / 1 диаграмма Top 1 1 0 5 7 1 21 43 2 85 259 3 341 1555 4 1365 9331 Если SADT-модель декомпозируется на глубину 5–6 уров- ней, то в этом случае на такую глубину декомпозируется обычно один из блоков диаграммы АО. Функции, которые требуют такого уровня детализации, часто очень важны, и их детальное описание дает ключ к секретам работы всей системы. Но хотя важные функции могут нуждаться в глубокой детализации, таких функций при создании одной модели насчитывается, как правило, немного. Модели, обладающие такими функциями, имеют обычно форму зонтика с широким тонким куполом и длинной ручкой, на которой происходит детализация. Поэтому вторая причина, по которой размер SADT-моделей не растет в геометрической прогрессии, заключается в том, что, хотя неред- ко модель имеет глубину 5–6 уровней, она почти никогда не декомпозируется вся до такой степени детализации. Большие аналитические проекты обычно разбиваются на несколько отдельных более мелких проектов, каждый из кото- рых создает модель одного конкретного аспекта всей пробле- мы. Поэтому вместо одной гигантской модели создается сеть из нескольких небольших моделей. Исключительно большие проекты могут привести к созданию высококачественной модели, состоящей из тысяч блоков, но это случается редко. 51 Большинство систем не требует для адекватного описания моделей такой величины. Рекомендуется прекращать моделирование, когда уро- вень детализации модели удовлетворяет ее цели. Опыт пока- зал, что для отдельной модели, которая создается независимо от какой-либо другой модели, декомпозиция одного из ее блоков должна прекращаться, если: – блок содержит достаточно деталей. Одна из типичных ситуаций, встречающихся в конце моделирования, — это блок, который описывает систему с нужным уровнем подробности. Проверить достаточность деталей обычно совсем легко, доста- точно просто спросить себя, отвечает ли блок на все или на часть вопросов, составляющих цель модели. Если блок помога- ет ответить на один или более вопросов, то дальнейшая де- композиция может не понадобиться; – необходимо изменить уровень абстракции, чтобы достичь большей детализации блока. Блоки подвергаются декомпозиции, если они недостаточно детализированы для удовлетворения цели модели. Но иногда при декомпозиции блока выясняется, что диаграмма начинает описывать, как функционирует блок, вместо описания того, что блок делает. В этом случае происходит изме- нение уровня абстракции — изменение сути того, что должна представлять модель (т. е. изменение способа описания системы). В SADT изменение уровня абстракции часто означает выход за пределы цели модели и, следовательно, это указывает на пре- кращение декомпозиции; – необходимо изменить точку зрения, чтобы детализиро- вать блок. Изменение точки зрения происходит примерно так же, как изменение уровня абстракции. Это чаще всего харак- терно для ситуаций, когда точку зрения модели нельзя ис- пользовать для декомпозиции конкретного блока, т. е. этот блок можно декомпозировать, только если посмотреть на него с другой позиции. Об этом может свидетельствовать заметное изменение терминологии; – блок очень похож на другой блок той же модели или на блок другой модели. Иногда встречается блок, чрезвычайно похожий на другой блок модели. Два блока похожи, если они выполняют примерно одну и ту же функцию и имеют почти одинаковые по типу и количеству входы, управления и выходы. Если второй блок уже декомпозирован, то разумно отложить 52 декомпозицию и тщательно сравнить два блока. Если нужны ничтожные изменения для совпадения первого блока со вто- рым, то внесение этих изменений сократит усилия на декомпо- зицию и улучшит модульность модели (т. е. сходные функции уточняются согласованным образом); – блок представляет тривиальную функцию. Тривиаль- ная функция — это такая функция, понимание которой не требует никаких объяснений. В этом случае очевидна целесо- образность отказа от декомпозиции, потому что роль SADT заключается в превращении сложного вопроса в понятный, а не в педантичной разработке очевидных деталей. В таких случаях декомпозиция определенных блоков может принести больше вреда, чем пользы. Тривиальные функции лучше всего описываются небольшим объемом текста. Следует заметить, что «тривиальный» не означает «бесполезный». Тривиальные функции выполняют очень важную роль, поясняя работу более сложных функций, а иногда и соединяя вместе основные под- системы. Поэтому при анализе не следует пропускать триви- альные функции. Наоборот, их существование должно быть зафиксировано, и они должны быть детализированы, как и любые другие функции. Однако следует предостеречь от больших затрат времени на анализ тривиальных функций системы. Усиленное внимание к мелочам может привести к созданию модели, которой будет недоставать абстракции, что сделает ее трудной для понимания и использования. Типы связей между функциями Одним из важных моментов при моделировании с помо- щью метода SADT является точная согласованность типов связей между функциями. Различают, по крайней мере, связи семи типов (в порядке возрастания их относительной значимости): – случайная; – логическая; – временная; – процедурная; – коммуникационная; – последовательная; – функциональная. Случайная связь показывает, что конкретная связь между функциями незначительна или полностью отсутствует. Это 53 относится к ситуации, когда имена данных на SADT-дугах в одной диаграмме имеют слабую связь друг с другом. Крайний вариант этого случая показан на рис. 5.8. Логическая связь — данные и функции собираются вме- сте благодаря тому, что они попадают в общий класс или набор элементов, но необходимых функциональных отношений между ними не обнаруживается. Рис. 5.8. Случайная связь Временная связь — представляет функции, связанные во времени, когда данные используются одновременно или функции включаются параллельно, а не последовательно. Процедурная связь (рис. 5.9) — функции сгруппированы вместе благодаря тому, что они выполняются в течение одной и той же части цикла или процесса. Рис. 5.9. Процедурная связь 54 Коммуникационная связь — функции группируются бла- годаря тому, что они используют одни и те же входные данные и/или производят одни и те же выходные данные (рис. 5.10). Рис. 5.10. Коммуникационная связь Последовательная связь — выход одной функции служит входными данными для следующей функции. Связь между элементами на диаграмме является более тесной, чем в рас- смотренных выше случаях, поскольку моделируются причин- но-следственные зависимости (рис. 5.11). Рис. 5.11. Последовательная связь Функциональная связь — все элементы функции влияют на выполнение одной и только одной функции. Диаграмма, являющаяся чисто функциональной, не содержит чужеродных элементов, относящихся к последовательному или более сла- бому типу связи. 55 Одним из способов определения функционально-связанных диаграмм является рассмотрение двух блоков, связанных через управляющие дуги, как показано на рис. 5.12. Рис. 5.12. Функциональная связь В математических терминах необходимое условие для про- стейшего типа функциональной связи имеет следующий вид: 𝐶𝐶 = 𝑔𝑔(𝐵𝐵) = 𝑔𝑔�𝑓𝑓(𝐴𝐴)�. Важно отметить, что уровни 4–6 устанавливают связи, которые разработчики считают важнейшими для получения диаграмм хорошего качества. Индивидуальные задания В соответствии со своим вариантом разработать модель IDEF0, содержащую не менее трех функциональных блоков второго уровня. Выполнить детализацию одного функцио- нального блока с использованием не менее чем 3 функцио- нальных блоков. Примерный перечень индивидуальных заданий: 1. Информационная система ВУЗа. 2. Информационная система проектной организации. 3. Информационная система библиотеки. 4. Информационная система аптеки. 5. Информационная система городской телефонной сети. 6. Информационная система фотоцентра. 7. Информационная система железнодорожной пасса- жирской станции. 8. Информационная система альпинистского клуба. 9. Информационная система поликлиники. 10. Информационная система Городской Думы. 11. Информационная система рыболовной фирмы. 12. Информационная система фирмы, проводящей аук- ционы. 13. Информационная система учета успеваемости сту- дентов. 14. Информационная система учета аудиторного фонда университета. 15. Информационная система учета происшествий. 16. Информационная система учета и проведения конфе- ренций. 17. Информационная система обслуживания склада. 18. Информационная система музыкального магазина. 19. Информационная система деканата. 20. Информационная система «отдел кадров университета». Контрольные вопросы 1. В чем заключается метод моделирования SADT? 2. Какие правила именования объектов определены для диаграмм SADT? 3. Какие возможные типы связей определены для диа- грамм SADT? 4. Какие типы полагаются на диаграммах SADT? 5. Какой вид в математических терминах имеет необхо- димое условие для простейшего типа? 57 Лабораторная работа 6. Построение процессной модели Цель работы Получить навыки построения процессной модели. Теоретические сведения Метод моделирования IDEF3, являющийся частью семей- ства стандартов IDEF, был разработан в конце 1980-х годов для закрытого проекта ВВС США. Этот метод предназначен для таких моделей процессов, в которых важно понять последова- тельность выполнения действий и взаимозависимости между ними. Хотя IDEF3 и не достиг статуса федерального стандарта США, он приобрел широкое распространение среди системных аналитиков как дополнение к методу функционального моде- лирования IDEF0 (модели IDEF3 могут использоваться для детализации функциональных блоков IDEF0, не имеющих диаграмм декомпозиции). Основой модели IDEF3 служит сце- нарий процесса, который выделяет последовательность дей- ствий и подпроцессов анализируемой системы. Как и в методе IDEF0, основной единицей модели IDEF3 является диаграмма. Другой важный компонент модели — действие, или в терминах IDEF3 «единица работы» (Unit of Work — UOW). Диаграммы IDEF3 отображают действие в виде прямоугольника. Действия именуются с использованием гла- голов или отглагольных существительных, каждому из дей- ствий присваивается уникальный идентификационный номер. Этот номер не используется вновь даже в том случае, если в процессе построения модели действие удаляется. В диаграм- мах IDEF3 номер действия обычно предваряется номером его родителя (рис. 6.1). Рис. 6.1. Изображение и нумерация действия в диаграмме IDEF3 58 Существенные взаимоотношения между действиями изображаются с помощью связей. Все связи в IDEF3 являются однонаправленными, и, хотя стрелка может начинаться или заканчиваться на любой стороне блока, обозначающего дей- ствие, диаграммы IDEF3 обычно организуются слева направо таким образом, что стрелки начинаются на правой и заканчи- ваются на левой стороне блоков. В табл. 6.1 приведены три возможных типа связей. Связь типа «временное предшествование» показывает, что исходное действие должно полностью завершиться, преж- де чем начнется выполнение конечного действия. Связь типа «объектный поток» используется в том слу- чае, когда некоторый объект, являющийся результатом вы- полнения исходного действия, необходим для выполнения конечного действия. Обозначение такой связи отличается от связи временного предшествования двойной стрелкой. Наиме- нования потоковых связей должны четко идентифицировать объект, который передается с их помощью. Временная семан- тика объектных связей аналогична связям предшествования, это означает, что порождающее объектную связь исходное действие должно завершиться, прежде чем конечное действие может начать выполняться. Таблица 6.1 Типы связей IDEF3 Изображение Название Назначение Временное предше- ствование (Temporal precedence) Исходное действие должно завершиться, прежде чем конечное действие сможет начаться Объектный поток ( Object Flow) Выход конечного действия является входом конечного действия (исходное действие должно завершиться, прежде чем конечное действие сможет начаться) 59 Окончание табл. 6.1 Изображение Название Назначение Нечеткое отношение ( Relationship) Вид взаимодействия между исходным и конечным действиями задается аналитиком отдельно для каждого случая использования такого отношения Связь типа «нечеткое отношение» используется для вы- деления отношений между действиями, которые невозможно описать с использованием связей предшествования или объ- ектных связей. Значение каждой такой связи должно быть определено, поскольку связи типа «нечеткое отношение» сами по себе не предполагают никаких ограничений. Одно из применений нечетких отношений — отображение взаимоот- ношений между параллельно выполняющимися действиями. Завершение одного действия может инициировать начало выполнения сразу нескольких других действий или, наоборот, определенное действие может требовать заверше- ния нескольких других действий до начала своего выполне- ния. Соединения разбивают или соединяют внутренние потоки и используются для изображения ветвления процесса: − разворачивающие соединения используются для раз- биения потока. Завершение одного действия вызывает начало выполнения нескольких других; − сворачивающие соединения объединяют потоки. За- вершение одного или нескольких действий вызывает начало выполнения другого действия. В табл. 6.2 описаны три типа соединений. Соединения «и» инициируют выполнение конечных дей- ствий. Все действия, присоединенные к сворачивающему со- единению «и», должны завершиться, прежде чем начнется выполнение следующего действия. На рис. 6.2 после обнаруже- ния пожара инициируются включение пожарной сигнализа- ции, вызов пожарной охраны, и начинается тушение пожара. Запись в журнал производится только тогда, когда все три перечисленных действия завершены. 60 Рис. 6.2. Соединение «и» Таблица 6.2 Типы соединений Графическое обозначение Название Вид Правила инициации & Соединение «И» Разворачивающее Каждое конечное действие обязательно ини- циируется Сворачивающее Каждое исходное действие обяза- тельно должно завершиться X Соединение « исключающее» « или» Разворачивающее Одно и только одно конечное действие инициируется Сворачивающее Одно и только одно исходное действие должно завершиться О Соединение « или» Разворачивающее Одно или несколько конечных действий инициируются 61 Окончание табл. 6.2 Графическое обозначение Название Вид Правила инициации Сворачивающее Одно или несколько исходных действий должны завершиться Соединение «исключающее «или»» означает, что вне за- висимости от количества действий, связанных со сворачиваю- щим или разворачивающим соединением, инициировано будет только одно из них, и поэтому только оно будет завершено перед тем, как любое действие, следующее за сворачивающим соединением, сможет начаться. Если правила активации со- единения известны, они обязательно должны быть докумен- тированы либо в его описании, либо пометкой стрелок, исходящих из разворачивающего соединения. На рис. 6.3 со- единение «исключающее «или»» используется для отображе- ния того факта, что студент не может одновременно быть направлен на лекции по двум разным курсам. Рис. 6.3. Соединение исключающее «или» Соединение «или» предназначено для описания ситуаций, которые не могут быть описаны двумя предыдущими типами соединений. Аналогично связи нечеткого отношения соединение 62 «или» в основном определяется и описывается непосредственно системным аналитиком. На рис. 6.4 соединение J2 может активи- зировать проверку данных чека и/или проверку суммы налич- ных. Проверка чека инициируется, если покупатель желает расплатиться чеком, проверка суммы наличных — при оплате наличными. То и другое действие инициируется при частичной оплате, как чеком, так и наличными. Рис. 6.4. Соединение «или» В рассмотренных примерах все действия выполнялись асинхронно, т. е. они не инициировались одновременно. Однако существуют случаи, когда время начала или окончания парал- лельно выполняемых действий должно быть одинаковым, т. е. действия должны выполняться синхронно. Длямоделирования такого поведения системы используются различные виды син- хронных соединений, которые обозначаются двумя двойными вертикальными линиями внутри прямоугольника. Например, в спортивных состязаниях выстрел стартового пистолета, запуск секундомера и начало состязания должны произойти одновременно. На рис. 6.5 представлена модель этого примера, построенная с использованием синхронного соединения. Синхронное разворачивающее соединение не обязатель- но должно иметь парное сворачивающее соединение, т. е. начинающиеся одновременно действия не обязаны оканчи- 63 ваться одновременно. Возможны также ситуации синхронного окончания асинхронно начавшихся действий. Рис. 6.5. Синхронное соединение Все соединения на диаграммах должны быть парными, из чего следует, что любое разворачивающее соединение имеет парное себе сворачивающее. Однако типы соединений не обя- зательно должны совпадать. Соединения могут комбинироваться для создания более сложных ветвлений. Комбинации соединений следует исполь- зовать с осторожностью, поскольку перегруженные ветвлени- ем диаграммы могут оказаться сложными для восприятия. Действия в IDEF3 могут быть декомпозированы или раз- ложены на составляющие для более детального анализа. Ме- тод IDEF3 позволяет декомпозировать действие несколько раз, что обеспечивает документирование альтернативных потоков процесса в одной модели. |