Структурные методы концептуального проектирования ПО В структурном анализе и проектировании используются различные модели, описывающие: 1) функциональную структуру системы; 2) последовательность выполнения действий; 3) передачу информации между функциональными процессами; 4) отношения между данными. Наиболее распространёнными и успешными методами в построении таких моделей являются методы: 1) SADT (Structure Analysis and Design Technique) IDEF0; 2) IDEF3 (Integrated DEFinition); 3) DFD (Data Flow Diagrams); 4) ARIS. SADT представляет собой совокупность правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области. Данный метод был разработан известным американским учёным Дугласом <...> и поддерживается Министерством обороны США, которое было инициатором системы стандартов IDEF. Функциональная модель SADT отражает функциональную структуру объекта, то есть производимые им действия и связи между этими действиями. Основные элементы SADT основываются на следующих концепциях: 1) графическое представление блочного моделирования (отражает функцию в виде блока, а интерфейсы ввода/вывода представляются дугами. Взаимодействие блоков друг с другом описывается при помощи этих интерфейсных дуг, выражающих ограничение, которое, в свою очередь, определяет, когда и каким образом функции выполняются и управляются; 2) строгость и точность: выполнение правил SADT требует достаточной строгости и точности, не накладывая в то же время серьёзных ограничений на действия аналитика; правила SADT включают ограничение количества блоков на каждом уровне декомпозиции: правило "3--6 блоков" -- ограничение мощности краткосрочной памяти человека; связанность диаграм: должны быть номера блоков; уникальность меток наименования (отсутствие повторяющихся имён); синтаксические правила для меток; разделение <...>; 3) отделение организации от функции: SADT может использоваться для моделирования самых разных процессов и систем. Состав функциональной модели: результатом метода SADT является модель, состоящая из диаграмм, методов и глоссариев, имеющих ссылки друг на друга. Диаграммы -- главные компоненты модели; все элементы интерфейса на них представлены как блоки и дуги. Место соединения дуги с блоком определяет тип интерфейса. vУправление Вход>[Функция]>Выход ^Механизм Управляющая информация входит в блок сверху, входная информация, которая подвегается обработке -- с левой стороны, а результаты -- с правой стороны. Механизм (человек или автоматизированная система, которые осуществляют операцию) представляют собой дугу, входящую в блок снизу. Одной из наиболее важных особенностей метода SADT является постепенное введение всё большего уровня детализации по мере создания диаграмм, отражающих модель, т. е. каждый компонент модели может быть декомпозирован на другой диаграмме. Каждая диаграмма иллюстрирует внутреннее строение блока на родительской диаграмме. [Av0] v >[Av1]-v---+---+ +>[Av2] v | +>[Av3] v +>[Av4]-> Построение SADT-модели заключается в выполнении следующих действий: 1) сбор информации об объекте, определение его границ; 2) определение цели и т. з. модели; 3) построение, обобщение и декомпозиция диаграмм; 4) критическая оценка, рецензирование и комментирование. Построение всей системы начинается с простейшего компонента: одного блока и дуг, изображающих интерфейсы с функциями всей системы. Так как единственный блок отображает систему как единое целое, имя, указанное в блоке, является общим. Это верно и для интерфейсных дуг: они тоже соответствуют полному набору интерфейсов системы в целом. Затем блок детализируется на другой диаграмме с помощью нескольких блоков, соединённых интерфейсными дугами. Эти блоки определяют основные подфункции исходной функции. Данная декомпозиция выявляет полный набор подфункций, каждая из которых показана как блок, границы которого определены интерфейсными дугами. Каждый блок может быть детализирован с целью получения более подробной информации. В каждом случае каждая подфункция может содержать только те элементы, которые входят в исходную функцию. Кроме того, модель не может опустить какие-то элементы, то есть родительский блок и его интерфейсы обеспечивают контекст. Модель SADT представляет собой модели с сопроводительной документацией. Детали каждого из блоков отображены на другой диаграмме. <...> На этих диаграммах не указаны явно ни последовательность, ни время. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся по времени функции могут быть изображены с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений. Стратегии декомпозиции При построении иерархии диаграмм используются следующие стратегии декомпозиции: 1) функциональная декомпозиция: может оказаться полезной стратегией для создания системы описаний, фиксирующих взаимодействия между людьми в процессе их работы; 2) декомпозиция в соответствии с известными стабильными подсистемами: приводит к созданию набора моделей по одной модели на каждую подсистему или важный компонент, затем для описания всей системы должна быть построена составная модель, объединяющая все отдельные модели; рекомендуется использовать это разложение на подсистемы только когда разложение на основные части системы не меняется; 3) декомпозиция по физическому процессу: выделение функциональных стадий, этапов завершения или шагов выполнения; хотя эта стратегия полезна при описании существующих процессов, таких как работа промышленного предприятия, результатом её может стать слишком последовательное описание системы, не учитывающие ограничения, диктуемые функциями друг другу, и даже после этого могут оказаться скрытые методы управления; рекомендуется при описании физического процесса как такового либо когда неясно, как действовать. Одной из наиболее частых проблем в процессе построения модели SADT является -- когда же завершить построение контекстной модели? Существуют некоторые эвристики для определения этого вопроса: 1) блок содержит достаточно деталей: в конце моделирования блоки описывают систему с нужным уровнем подробности: отвечает ли модель целям? 2) необходимо изменить уровень абстракции, чтобы достичь большей детализации блока, если они недостаточно детализированы для удовлетворения цели модели; 3) необходимость изменить точку зрения, чтобы детализировать блок (происходит примерно так же, как изменение уровня абстракции); это характерно для ситуации, когда т. з. модели нельзя использовать для декомпозиции конкретного блока; об этом может свидетельствовать заметное изменение терминологии; 4) блок очень похож на другой блок модели: если выполняет похожие функции и имеет те же входы и выходы; 5) блок представляет тривиальную функцию (не требуется никаких объяснений): лучше всего описывать небольшим объёмом текста; тривиальные фукнции не являются бесполезным, они объясняют роль более сложной функции, а иногда и соединяют основные подсистемы. Общее число уровней в модели, включая контексты, не должно превышать 5--6. Метод SADT наибольшей степенью подходит для описания процессов верхнего уровня управления. Его преимущества: простота бизнес-процесса, комплекстность декомпозиции, возможность агрегирования и детализации потоков данных и информации (разделение и слияние дуг), наличие жёстких требований, обеспечивающих получение модели стандартного вида, простота документирования процессов, соответствие подхода стандартам ISO 9000:2000. Недостатки: <...> IDEF3: разработан в конце 80-х гг. Этот метод предназначен для моделирования последовательности выполнения действия и взаимосвязи между ними в рамках процессов. Основой модели служит сценарий процесса, который выделяет последовательность действий и процессов анализируемой системы. Метод использует графическое описание информационных потоков. Целью IDEF3 является дать возможность аналитикам описать ситуацию, когда процессы выполняются в определённой последовательности, а также описать объекты, участвующие совместно в одном процессе. Любая диаграмма IDEF3 может содержать работы, связи, перекрёстки и объекты ссылок. Работа изображается прямоугольником +-----------------+ activity |Изготовл. изделия| +---------+-------+ 21 | ----------+-------- и содержит имя существительное, изображающее основной выход (результат работы), ей присваивается не меняющийся никогда идентификатор. Все стороны равнозначны и в каждый элемент может входить или выходить ровно по одной стрелке. Номер работы может быть декомпозирован: 1.1,7. Связи показывают взаимоотношения работ. Связи однонаправленны и могут быть направлены в любую сторону, но обычно стараются делать так, чтобы связи были направлены слева направо. Precedence (старшая стрелка) -- показывает, что работа источник закончится прежде, чем работа-цель начнётся. [Принятие рекомендаций рецензента]======>[Внесение исправлений] 1.1 | 1.2| -----------+---------------------- ----+---------------- Потоки объектов (Object) -- применяется для описания того факта, что результатом работы источника становится объект, являющийся необходимым для работы цели Собранная деталь [Собрать деталь]-------------->>[Покрасить деталь] 1.1 | 1.2 | -----------+---- ----+------------- Стрелка отношений (Relational Link) -- изображение связей между единицами работы, а также между единицами работы и объектами ссылок. Значение задаётся аналитиком отдельно для каждого случая. Одобрение [Рекомендации разработчиков]- - - - >[Выполнить рекомендации] 1.1 | 1.2 | -----------+---------------- ----+------------- Перекрёстки (Junction) -- окончание одной работы может служить сигналом к началу нескольких работ или же одна работа для своего запуска может ожидать окончания нескольких работ, т. е. перекрёстки используются для отображения логики взаимодействия стрелок при слиянии и разветвлении или для отображения множества событий, которые могут или должны быть завершены перед началом следующей работы. Асинхронное И ++-+ ||&| ++-+ Различают перекрёстки слияния (Fan-in Junction) и перекрёстки разветвления (Fan-out Junction). Перекрёсток не может одновременно использоваться для слияния и разветвления. В случае слияния все предыдущие процессы должны быть завершены, в случае разветвления все последующие процессы должны быть запущены. Синхронное И ++-++ ||&|| ++-++ Все процессы должны быть завершены/запущены одновременно. ИЛИ ++-+ ++-++ ||O| ||O|| ++-+ ++-++ Исключающее ИЛИ ++++ +++++ ||X| ||X|| ++++ +++++ Только один предшествующий процесс завершён / только один последующий процесс запускается. Правила создания перекрёстков: 1) каждому перекрёстку для слияния должен предшествовать перекрёсток для разветвления; 2) перекрёсток для слияния И не может следовать за перекрёстком разветвления типа синхронного или асинхронного; 3) перекрёсток для слияния И не может следовать за разветвлением типа исключительного ИЛИ. +->[Оплата наличными]-----+ | 1.1.7 | | ++++--+ --------+--------- +--->++++ ->||X| ||X| ++++---->[Безналичная оплата]------->++++ 1.1.8 | --------+-----------