Что понимается под уровнем иерархической диаграммы
Что понимается под уровнем иерархической диаграммы
Затем блок, который представляет систему в качестве единого модуля, детализируется на другой диаграмме с помощью нескольких блоков, соединенных интерфейсными дугами. Эти блоки представляют основные подфункции исходной функции. Данная декомпозиция выявляет полный набор подфункций, каждая из которых представлена как блок, границы которого определены интерфейсными дугами. Каждая из этих подфункций может быть декомпозирована подобным образом для более детального представления.
Во всех случаях каждая подфункция может содержать только те элементы, которые входят в исходную функцию. Кроме того, модель не может опустить какие-либо элементы, т.е., как уже отмечалось, родительский блок и его интерфейсы обеспечивают контекст. К нему нельзя ничего добавить, и из него не может быть ничего удалено.
Модель SADT представляет собой серию диаграмм с сопроводительной документацией, разбивающих сложный объект на составные части, которые представлены в виде блоков. Детали каждого из основных блоков показаны в виде блоков на других диаграммах. Каждая детальная диаграмма является декомпозицией блока из более общей диаграммы. На каждом шаге декомпозиции более общая диаграмма называется родительской для более детальной диаграммы.
Дуги, входящие в блок и выходящие из него на диаграмме верхнего уровня, являются точно теми же самыми, что и дуги, входящие в диаграмму нижнего уровня и выходящие из нее, потому что блок и диаграмма представляют одну и ту же часть системы.
Рис. 2.2. Структура SADT-модели. Декомпозиция диаграмм
Рис. 2.3. Одновременное выполнение
Рис. 2.4. Соответствие должно быть полным и непротиворечивым
Некоторые дуги присоединены к блокам диаграммы обоими концами, у других же один конец остается неприсоединенным. Неприсоединенные дуги соответствуют входам, управлениям и выходам родительского блока. Источник или получатель этих пограничных дуг может быть обнаружен только на родительской диаграмме. Неприсоединенные концы должны соответствовать дугам на исходной диаграмме. Все граничные дуги должны продолжаться на родительской диаграмме, чтобы она была полной и непротиворечивой.
На SADT-диаграммах не указаны явно ни последовательность, ни время. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся (по времени) функции могут быть изображены с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений и т.д. (рисунок 2.5).
Рис. 2.5. Пример обратной связи
Как было отмечено, механизмы (дуги с нижней стороны) показывают средства, с помощью которых осуществляется выполнение функций. Механизм может быть человеком, компьютером или любым другим устройством, которое помогает выполнять данную функцию (рисунок 2.6).
Рис. 2.6. Пример механизма
Каждый блок на диаграмме имеет свой номер. Блок любой диаграммы может быть далее описан диаграммой нижнего уровня, которая, в свою очередь, может быть далее детализирована с помощью необходимого числа диаграмм. Таким образом, формируется иерархия диаграмм.
Для того, чтобы указать положение любой диаграммы или блока в иерархии, используются номера диаграмм. Например, А21 является диаграммой, которая детализирует блок 1 на диаграмме А2. Аналогично, А2 детализирует блок 2 на диаграмме А0, которая является самой верхней диаграммой модели. На рисунке 2.7 показано типичное дерево диаграмм.
Что такое иерархическая диаграмма? Самые важные особенности
иерархическая диаграмма графический ресурс, используемый в качестве когнитивной стратегии, помогающей организовать и структурировать отношения между различными частями системы. Организация будет зависеть от существующих отношений внутри иерархической структуры, в которой самые высокие уровни мощности принадлежат верхним частям диаграммы..
Иерархическая диаграмма позволяет разложить определенную систему на несколько уровней. Классификация этих страт производится в зависимости от значения элемента или концепции, которая появляется на диаграмме, причем каждый имеет уровень сложности и более низкое или более высокое значение в зависимости от случая..
В результате он также рассматривается как инструмент, который определяет поток информации и идей в нисходящем порядке. Эта модель помогает легче понять работу и организацию структуры, поскольку она отражает отношения подчиненности, которые существуют между каждым элементом.
Иерархическая диаграмма позволяет четко определить функции каждого объекта и избежать вторжений в этом смысле. Они могут быть разных форм, в зависимости от предпочтений пользователя; характеристики различных форматов будут зависеть от того, какой из них является наилучшим способом представления информации, в зависимости от характера.
Структура иерархической диаграммы
Структура иерархической диаграммы демонстрирует сверхординацию и подчиненность идей или концепций данной системы..
То есть этот тип диаграммы характеризуется порядком, который элементы ранее имели в своей системе отношений.
Поэтому организация данных разделена на разные уровни и обрамлена блоками с соединительными линиями, помогающими установить отношения между одним и другим..
В общем, этот тип структуры обычно имеет пирамидальную или хронологическую форму дерева, такую как отношения отца и сына.
стили
Существует несколько форматов, в которых могут быть представлены иерархические диаграммы. Среди них выделяются следующие:
— вертикальный.
— горизонтальный.
— циркуляры.
— масштаб.
сегментация
Сегментации между иерархической диаграммой и иерархической моделью данных относительно похожи. Единственное отличие заключается в использовании, которое присваивается сегментациям в соответствии с системой управления, использующей иерархическую модель данных..
Однако оба используют одинаковые ссылки для определения ограничений между одним компонентом и другим. Таким же образом, иерархическая диаграмма использует логическую структуру, чтобы указать сущности и взаимосвязи компонентов.
В иерархической диаграмме существует три типа сегментаций или уровней:
Родительский сегмент
Это тема, концепция или главный герой. Он назван так, потому что в этой системе он действует как отец подтем, которые являются дочерними сегментами..
Родительский сегмент может быть легко идентифицирован, потому что у него есть потомки, расположенные на том же более низком уровне.
Сегмент сына
Все они являются подтемами или концепциями поддержки, которые зависят от сегмента более высокого уровня, такого как родительский сегмент.
Корневой сегмент
Он уникален и может занимать место на верхнем уровне диаграммы, поскольку у него нет родительского сегмента..
Преимущества иерархической схемы
— Облегчает разделение функций.
— Не допускает помех между линиями командования.
— Идентификация иерархических отношений четко разработана.
— Организация более адаптируется и реагирует на изменения.
Недостатки иерархической схемы
— Данные или соответствующая информация могут отсутствовать из-за жесткости их структуры.
— Это неэффективно, когда требуется больше знаний на любом из уровней.
— Иерархическая структура может генерировать избыточности.
— Дизайн может быть однообразным для глаз.
Иерархическая схема: понятие и характеристика
Содержание:
Иерархическая диаграмма позволяет разбить данную систему на несколько уровней. Классификация этих слоев производится в зависимости от значения элемента или концепции, которые появляются на диаграмме, каждый из которых имеет более низкий или более высокий уровень сложности и ценность в зависимости от случая.
В результате он также рассматривается как инструмент, определяющий поток информации и идей по убыванию. Эта модель помогает легче понять работу и организацию структуры, поскольку она отражает отношения подчинения, существующие между каждым элементом.
Иерархическая диаграмма позволяет четко определить функции каждого объекта и избежать вмешательства в этом смысле.Это может быть по-разному, в зависимости от предпочтений пользователя; Характеристики различных форматов будут зависеть от наилучшего способа представления информации, в зависимости от ее характера.
Структура иерархической диаграммы
Структура иерархической диаграммы демонстрирует превосходство и подчинение идей или концепций данной системы.
То есть этот тип диаграммы характеризуется порядком, который элементы ранее имели в своей системе отношений.
По этой причине организация данных разделена на разные уровни и обрамлена прямоугольниками с соединительными линиями, помогающими установить отношения между ними.
Обычно этот тип структуры имеет пирамидальную или хронологическую древовидную форму, как отношения родитель / потомок.
Стили
Существуют различные форматы, в которых могут быть представлены иерархические диаграммы. К ним относятся следующие:
Сегментации
Разделение иерархической диаграммы и иерархической модели данных относительно похоже. Единственная разница заключается в использовании, которое назначается сегментам в соответствии с системой управления, которая использует иерархическую модель данных.
Однако оба используют похожие ссылки для определения ограничений между одним компонентом и другим. Таким же образом иерархическая диаграмма использует логическую структуру для обозначения сущностей и взаимосвязей компонентов.
В иерархической диаграмме есть три типа сегментации или уровня:
Родительский сегмент
Это тема, концепция или главный герой. Он называется так, потому что в этой системе он действует как родительский для подтем, которые являются дочерними сегментами.
Родительский сегмент можно легко идентифицировать, поскольку у него есть потомки, расположенные на том же нижнем уровне.
Дочерний сегмент
Все они являются подтемами или вспомогательными концепциями, которые зависят от сегмента верхнего уровня, такого как родительский сегмент.
Корневой сегмент
Он уникален и может занимать место на верхнем уровне диаграммы, так как не имеет родительского сегмента.
Преимущества иерархической диаграммы
— Облегчает разделение функций.
— Не допускает вмешательства в командные строки.
— Четко проработано определение иерархических отношений.
— Организация более гибкая и адаптируемая к изменениям.
Недостатки иерархической схемы
— Данные или соответствующая информация могут отсутствовать из-за жесткости его структуры.
— Это неэффективно, когда вам нужно больше знаний о любом из уровней.
— Иерархическая структура может создавать избыточность.
— Дизайн может быть на вид однообразным.
Ссылки
Что происходит в вашем мозгу, когда вы едите шоколад или какао?
Эуплотес: характеристика, среда обитания, питание и размножение
Что понимается под уровнем иерархической диаграммы
Предмет: Технология разработки программных продуктов.
Тема :Определение спецификаций при структурном подходе.
Развивать умение слушать других, делать выводы и обобщать полученные знания
Воспитывать чувство значимости предмета в профессиональной деятельности, аккуратности в работе
— Основы алгоритмизации и программирования
Оборудование: доска, мел, письменные принадлежности, проектор, ПК
Тип урока: комбинированный
Метод обучения: Объяснительно иллюстративный
— Проверка готовности кабинета
2. Постановка цели урока
3.Повторение пройденного материала
Методы разработки при модульном программировании
Метод восходящей разработки
Метод нисходящей разработки
Целенаправленная конструктивная реализация
4.Сообщение новых знаний
Диаграммы переходов состояний (SDT)
Диаграммы потоков данных (DFD)
5. Восприятие и осознание учащимися нового материала
6. Осмысление обобщение и систематизация знаний
7. Подведение итогов урока и постановка домашнего задания
Выучить содержимое темы
Гагарина Л.Г. стр. С.101-107
Ответить на вопросы:
Анализ требований и определение спецификаций при структурном подходе
На этом этапе необходимо построить модели ПО во взаимодействии с окружающей средой. Поскольку разные модели описывают проектируемое программное обеспечение с разных
сторон, рекомендуется использовать сразу несколько моделей и сопровождать их описаниями. Структурный подход к проектированию программных продуктов предполагает разработку
следующих моделей [1, 53]:
• диаграмм потоков данных (DFD — Data Flow Diagrams), описывающих взаимодействие источников и потребителей информации через процессы, которые должны быть реализованы в системе;
• диаграмм «сущность—связь» (ERD Entity-Relationship Diagrams), описывающих базы данных разрабатываемой системы;
• диаграмм переходов состояний (STD — State Transition Diagrams), характеризующих поведение системы во времени;
• функциональных диаграмм (методология SADT);
3.5.1. Спецификации процессов
Спецификации процессов могут быть представлены в виде псевдокодов, блок-схем алгоритмов, Flow-форм, диаграмм Насей — Шнейдермана или просто краткого текстового описания [1].
При структурном программировании различают три вида вычислительного процесса: линейный, разветвленный и циклический.
Линейная структура — выполнение операторов последовательно.
Разветвленная структура — в зависимости от выполнения некоторого условия выполняется та или иная последовательность операторов.
Циклическая структура — многократное выполнение одинаковой последовательности операторов.
Для изображения схем алгоритмов разработан ГОСТ 19.701—90
Любой, сколь угодно сложный, алгоритм можно представить с использованием трех основных конструкций, которые получили название базовых [1]:
• следование. Обозначает последовательное выполнение действий (рис. 3.15, а);
• ветвление. Соответствует выбору одного из двух вариантов действий (рис. 3.15, б)\
• цикл-пока. Определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла (рис. 3.15, в).
Помимо базовых, процедурные языки программирования высокого уровня обычно используют еще три конструкции, которые можно составить из базовых:
• выбор. Обозначает выбор одного варианта из нескольких в зависимости от значения некоторой величины (рис. 3.16, а);
• цикл-до. Обозначает повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле (рис. 3.16, б)’,
• цикл с заданным числом повторений (счетный цикл).
Обозначает повторение некоторых действий указанное количество раз (рис. 3.16, в).
Любая из дополнительных конструкций легко реализуется с помощью базовых. Перечисленные шесть конструкций были положены в основу структурного программирования.
Псевдокод — формализованное текстовое описание алгоритма (текстовая нотация). В литературе были предложены несколько вариантов псевдокодов. Один из них приведен в табл. 3.3.
Flow-формы представляют собой графическую нотацию описания структурных алгоритмов, которая иллюстрирует вложенность структур. Каждый символ Flow-формы имеет вид угольника и может быть вписан в любой внутренний прямоугольник любого другого символа. Нотация Flow-форм приведена на рис. 3.17.
Диаграммы Насси — Шнейдермана
Диаграммы Насси — Шнейдермана являются продолжением Flow-форм. Отличие их от Flow-форм состоит в том, что область обозначения условий изображают в виде треугольников (рис. 3.18). Это обозначение обеспечивает большую наглядность представления алгоритма.
При использовании псевдокодов, Flow-форм и диаграмм Насси — Шнейдермана описать неструктурный алгоритм невозможно (для неструктурных передач управления в этих нотациях
просто отсутствуют условные обозначения).
По сравнению с псевдокодами Flow-формы и диаграммы Насси — Шнейдермана, являясь графическими, лучше отображают вложенность конструкций.
Общим недостатком Flow-форм и диаграмм Насси —Шнейдермана является сложность построения изображений символов,что затрудняет практическое применение этих нотаций для описания больших алгоритмов.
Словарь терминов представляет собой краткое описание основных понятий, используемых при составлении спецификаций.
Он предназначен для повышения степени понимания предметной области и исключения риска возникновения разногласий при обсуждении моделей между заказчиками и разработчиками [1].
Обычно описание термина в словаре выполняют по следующей схеме:
• категория (понятие предметной области, элемент данных, условное обозначение и т. д.);
Описание Совокупность Web-страниц с повторяющимся дизайном, объединенных по смыслу, навигационно и физически находящихся на одном сервере.
Диаграммы переходов состояний (SDT)
SDT демонстрирует поведение разрабатываемой программной системы при получении управляющих воздействий (извне).
В диаграммах такого вида узлы соответствуют состояниям динамической системы, а дуги — переходу системы из одного состояния в другое. Узел, из которого выходит дуга, является
начальным состоянием, узел, в который дуга входит, — следующим.
Дуга помечается именем входного сигнала или события, вызывающего переход, а также сигналом или действием, сопровождающим переход. Условные обозначения, используемые при построении диаграмм переходов состояний, показаны на рис. 3.19.
На рис. 3.20 представлена диаграмма переходов состояний
программы, активно не взаимодействующей с окружающей средой, которая имеет примитивный интерфейс, производит некоторые вычисления и выводит простой результат [1].
На рис. 3.21 представлена диаграмма переходов торгового автомата, активно взаимодействующего с покупателем [55].
Функциональными называют диаграммы, в первую очередь отражающие взаимосвязи функций разрабатываемого программного обеспечения [53].
Они создаются на ранних этапах проектирования систем, для того чтобы помочь проектировщику выявить основные функции и составные части проектируемой системы и, по возможности, обнаружить и устранить существенные ошибки.
Современные методы структурного анализа и проектирования предоставляют разработчику определенные синтаксические и графические средства проектирования функциональных диаграмм
В качестве примера рассмотрим методологию SADT, предложенную Дугласом Россом. На ее основе разработана, в частности, известная методология IDEFO (Icam DEFinition).
Методология SADT представляет собой набор методов, правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области.
Функциональная модель SADT отображает функциональную структуру объекта, т. е. производимые им действия и связи между этими действиями. Основные элементы этой методологии
основываются на следующих концепциях:
• графическое представление блочного моделирования. На SADT-диаграмме функции представляются в виде блока, а интерфейсы входа-выхода — в виде дуг, соответственно
входящих в блок и выходящих из него. Интерфейсные дуги отображают взаимодействие функций друг с другом;
• строгость и точность отображения.
Правила SADT включают:
• уникальность меток и наименований;
• ограничение количества блоков на каждом уровне декомпозиции;
• синтаксические правила для графики;
• отделение организации от функции;
• разделение входов и управлений.
Методология SADT может использоваться для моделирования и разработки широкого круга систем, удовлетворяющих определенным «требованиям и реализующих требуемые функции.
В уже разработанных системах методология SADT может быть использована для анализа выполняемых ими функций, а также для указания механизмов, посредством которых они
Диаграммы — главные компоненты модели, все функции программной системы и интерфейсы на них представлены как блоки и дуги. Место соединения дуги с блоком определяет тип
интерфейса. Дута, обозначающая управление, входит в блок сверху, в то время как информация, которая подвергается обработке, представляется дугой с левой стороны блока, а результаты
обработки — дугами с правой стороны. Механизм (человек или автоматизированная система), который осуществляет операцию, представляется в виде дуги, входящей в блок снизу (рис. 3.22).
Блоки на диаграмме размещают по «ступенчатой» схеме в соответствии с последовательностью их работы или доминированием, которое понимается как влияние, оказываемое одним блоком на другие. В функциональных диаграммах SADT различают пять типов влияний блоков друг на друга [1]:
• вход-выход блока подается на вход блока с меньшим доминированием, т. е. следующего (рис. 3.23, а);
• управление. Выход блока используется как управление для блока с меньшим доминированием (рис. 3.23, б)’,
• обратная связь по входу. Выход блока подается на вход блока с большим доминированием (рис. 3.23, #);
• обратная связь по управлению. Выход блока используется как управляющая информация для блока с большим доминированием (рис. 3.23, г);
• выход-исполнитель. Выход блока используется как механизм для другого блока (рис. 3.23, д).
Одной из наиболее важных особенностей методологии SADT является постепенное введение все больших уровней детализации по мере создания диаграмм, отображающих модель.
Прежде всего, вся система представляется в виде простейшей компоненты — одного блока и дуг, представляющих собой интерфейсы с внешними по отношению к данной системе функциями. Имя блока является общим для всей системы [53].
Затем блок, который представляет систему в целом, детализируется на следующей диаграмме. Он представляется в виде нескольких блоков, соединенных интерфейсными дугами. Каждый
блок детальной диаграммы представляет собой подфункцию, границы которой определены интерфейсными дугами. Каждый из блоков детальной диаграммы может быть также детализирован на следующей в иерархии диаграмме. На каждом шаге декомпозиции более общая диаграмма называется родительской для более детальной диаграммы.
Все диаграммы связывают друг с другом иерархической нумерацией блоков: первый уровень — АО, второй — Al, A2 и т. п., третий — All, A12, А13 и т. п., где первые цифры — номер родительского блока, а последняя — номер конкретного блока детальной диаграммы.
Во всех случаях каждая подфункция может содержать только те элементы, которые входят в исходную функцию, причем никакие из них не могут быть опущены. То есть родительский блок
и его интерфейсы обеспечивают контекст. К нему нельзя ничего добавить, и из него не может быть ничего удалено.
Дуги, входящие в блок и выходящие из него на диаграмме верхнего уровня, являются точно теми же самыми, что и дуги, входящие в диаграмму нижнего уровня и выходящие из нее, потому что блок и диаграмма представляют одну и ту же часть системы.
На рис. 3.25—3.27 представлены различные варианты выполнения функций и соединения дуг с блоками.
Последовательность операций, время их выполнения не указываются на SADT-диаграммах. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся (по времени)
Функции могут быть изображены с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений и т. д. (см. рис. 3.27).
Пример 3.1. Разработку функциональных диаграмм продемонстрируем на примере уточнения спецификаций программы сортировки одномерного массива с использованием нескольких
Диаграмма, представленная на рис. 3.28, а, является диаграммой верхнего уровня. Она иллюстрирует исходные данные программы и ожидаемые результаты.
Диаграмма, представленная на рис. 3.28, б, детализирует Функции программы. На ней показаны три блока: Меню, Сортировка, Вывод результата. Для каждого блока определены исходные данные, управляющие воздействия и результаты. На детализирующей диаграмме используются следующие обозначения:
11 — размер массива;
R1 — вывод описания метода;
R2 — отсортированный массив.
Диаграммы потоков данных (DFD)
Такая диаграмма состоит из трех типов узлов: узлов обработки данных, узлов хранения данных и внешних узлов, представляющих внешние по отношению к используемой диаграмме
источники или потребители данных. Дуги в диаграмме соответствуют потокам данных, передаваемых от узла к узлу. Они помечены именами соответствующих данных. Описание процесса,
функции или системы обработки данных, соответствующих узлу диаграммы, может быть представлено диаграммой следующего уровня детализации, если процесс достаточно сложен [1, 53].
Для изображения диаграмм потоков данных традиционно используют два вида нотаций: нотации Йордана и Гейна — Сарсона (табл. 3.4).
Первым шагом при построении иерархии диаграмм потоков данных является построение контекстных диаграмм, показывающих, как система будет взаимодействовать с пользователями
и другими внешними системами. При проектировании простых систем достаточно одной контекстной диаграммы, имеющей звездную топологию, в центре которой располагается основной
процесс, соединенный с источниками и приемниками информации.
Для сложных систем строится иерархия контекстных диаграмм, которая определяет взаимодействие основных функциональных подсистем проектируемой системы как между собой, так и с внешними входными и выходными потоками данных и внешними объектами. При этом контекстная диаграмма верхнего уровня содержит набор подсистем, соединенных потоками данных. Контекстные диаграммы следующего уровня детализируют содержимое и структуру подсистем.
После построения контекстных диаграмм полученную модель следует проверить на полноту исходных данных и отсутствие информационных связей с другими объектами.
Для каждой подсистемы, присутствующей на контекстных диаграммах, выполняется ее детализация с помощью диаграмм потоков данных, при этом необходимо соблюдать следующие правила [53]:
• правило балансировки. Означает, что при детализации подсистемы можно использовать только те компоненты (подсистемы, процессы, внешние сущности, накопители данных), с которыми она имеет информационную связь на родительской диаграмме;
• правило нумерации. Означает, что при детализации подсистем должна поддерживаться их иерархическая нумерация. Например, подсистемы, детализирующие подсистему с номером 2, получают номера 2.1, 2.2, 2.3 и т. д.
При построении иерархии диаграмм потоков данных переходить к детализации процессов следует только после определения структур данных, которые описывают содержание всех потоков
и накопителей данных. Структуры данных могут содержать альтернативы, условные вхождения и итерации. Условное вхождение означает, что соответствующие компоненты могут отсутствовать в структуре. Альтернатива означает, что в структуру может входить один из перечисленных элементов. Итерация означает, что компонент может повторяться в структуре некоторое указанное число раз. Для каждого элемента данных может Указываться его тип (непрерывный или дискретный). Для непрерывных данных может указываться единица измерения (кг, см и т. п.), диапазон значений, точность представления и форма Физического кодирования. Для дискретных данных может указываться таблица допустимых значений.
Построенную модель системы необходимо проверить на полноту и согласованность. В полной модели все ее объекты (подсистемы, процессы, потоки данных) должны быть подробно
описаны и детализированы. Выявленные недетализированные объекты следует детализировать, вернувшись на предыдущие шаги разработки. В согласованной модели для всех потоков данных и
накопителей данных должно выполняться правило сохранения информации: все поступающие куда-либо данные должны быть считаны, а все считываемые данные должны быть записаны.
В соответствии с вышесказанным процесс построения модели разбивается на следующие этапы [39]:
1. Выделение множества требований в основные функциональные группы — процессы.
2. Выявление внешних объектов, связанных с разрабатываемой системой.
3. Идентификация основных потоков информации, циркулирующей между системой и внешними объектами.
4. Предварительная разработка контекстной диаграммы.
5. Проверка предварительной контекстной диаграммы и внесение в нее изменений.
6. Построение контекстной диаграммы путем объединения всех процессов предварительной диаграммы в один процесс, а также группирования потоков.
7. Проверка основных требований контекстной диаграммы.
8. Декомпозиция каждого процесса текущей DFD с помощью детализирующей диаграммы или спецификации процесса.
9. Проверка основных требований по DFD соответствующего уровня.
10. Добавление определений новых потоков в словарь данных при каждом их появлении на диаграммах.
11. Проверка полноты и наглядности модели после построения каждых двух-трех уровней.
Пример 3.2. Разработаем иерархию диаграмм потоков данных программы сортировки одномерных массивов.
Для начала построим контекстную диаграмму, для чего определим внешние сущности и потоки данных между программой и внешними сущностями. Внешней сущностью по отношению к программе является Пользователь. Он выбирает метод сортировки и вводит исходные данные, а затем получает от программы описание выбранного метода и отсортированный массив. На рис. 3.29 представлена контекстная диаграмма данной программы.
После детализации получилось три процесса: Меню, Сортировка, Вывод результата. Для хранения описаний алгоритмов служит Хранилище алгоритмов. Теперь определим потоки данных.
Детализирующая диаграмма потоков данных изображена на рис. 3.30. Как мы видим, она несколько отличается от функциональной диаграммы (см. рис. 3.28), например, на ней показано хранилище данных для хранения описаний алгоритмов. Это отличие является важным при проектировании баз данных.
Базовыми понятиями ER-модели данных (ER — Entity- Relationship) являются сущность, атрибут и связь [55].
(нотация Мартина, нотация IDEF1X, нотация Баркера и др.). Кроме того, различные программные средства, реализующие одну и ту же нотацию, могут отличаться своими возможностями. Все
варианты диаграмм «сущность—связь» исходят из одной идеи — рисунок всегда нагляднее текстового описания. Все такие диаграммы используют графическое изображение сущностей
предметной области, их свойств (атрибутов) и взаимосвязей между сущностями.
Поскольку нотация Баркера является наиболее распространенной, в дальнейшем будем придерживаться именно ее.
Основные понятия ER-диаграмм
Сущность — это класс однотипных объектов, информация о которых должна быть учтена в модели [55]. Сущность имеет
наименование, выраженное существительным в единственном числе, и обозначается в виде прямоугольника с наименованием (рис. 3.31, а). Примерами сущностей могут быть такие классы
объектов, как «Студент», «Сотрудник», «Товар».
Экземпляр сущности — это конкретный представитель данной сущности. Например, конкретный представитель сущности «Студент» — «Максимов». Причем сущности должны иметь некоторые свойства, уникальные для каждого экземпляра этой сущности, для того чтобы различать экземпляры.
Атрибут сущности — это именованная характеристика, являющаяся некоторым свойством сущности. Наименование атрибута должно быть выражено существительным в единственном числе
(возможно, с описательными оборотами или прилагательными).
Примерами атрибутов сущности «Студент» могут быть такие атрибуты, как «Номер зачетной книжки», «Фамилия», «Имя», «Пол», «Возраст», «Средний балл» и т. п. Атрибуты изображаются
в прямоугольнике, обозначающем сущность (рис. 3.31, б).
Ключ сущности — это неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. При удалении любого атрибута из ключа нарушается его уникальность. Ключей у сущности может быть несколько. На диаграмме ключевые атрибуты отображаются подчеркиванием (рис. 3.31, в).
Связь — это отношение одной сущности к другой или к самой себе. Возможно по одной сущности находить другие, связанные с ней. Например, связи между сущностями могут выражаться следующими фразами — «СОТРУДНИК может иметь несколько ДЕТЕЙ», «СОТРУДНИК обязан числиться точно в одном ОТДЕЛЕ». Графически связь изображается линией, соединяющей две сущности (рис. 3.32).
Каждая связь имеет одно или два наименования.
Наименование обычно выражается неопределенной формой глагола:
«Продавать», «Быть проданным» и т. п. Каждое из наименований относится к своему концу связи. Иногда наименования не пишутся ввиду их очевидности.
Связь может иметь один из следующих типов — рис. 3.33.
Связь типа один-к-одному означает, что один экземпляр первой сущности связан точно с одним экземпляром второй сущности. Такая связь чаще всего свидетельствует о том, что мы
неправильно разделили одну сущность на две.
Связь типа один-ко-многим означает, что один экземпляр первой сущности связан с несколькими экземплярами второй сущности. Это наиболее часто используемый тип связи. Пример
такой связи приведен на рис. 3.32.
Связь типа много-ко-многим означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и наоборот. Тип связи много-ко-многим является временным типом связи, допустимым на ранних этапах разработки модели. В дальнейшем такую связь необходимо заменить двумя связями типа один-ко-многим путем создания промежуточной сущности. Каждая связь может иметь одну из двух модальностей связи (рис. 3.34).
Связь может иметь разную модальность с разных концов, как на рис. 3.32. Каждая связь может быть прочитана как слева направо, так и справа налево. Связь на рис. 3.32 читается так:
слева направо: «Сотрудник может иметь несколько детей»;
справа налево: «Ребенок должен принадлежать точно одному сотруднику».
Пример разработки простой ER-диаграммы
Необходимо разработать информационную систему по заказу некоторой оптовой торговой фирмы, которая должна выполнять следующие действия:
• хранить информацию о покупателях;
печатать накладные на отпущенные товары;
• следить за наличием товаров на складе.
Выделим все существительные в этих предложениях — это будут потенциальные кандидаты на сущности и атрибуты, и проанализируем их (непонятные термины будем выделять знаком
• Покупатель — явный кандидат на сущность.
• Накладная — явный кандидат на сущность.
• Товар — явный кандидат на сущность
• (?) Склад — а вообще, сколько складов имеет фирма? Если несколько, то это будет кандидатом на новую сущность.
• (?)Наличие товара — это, скорее всего, атрибут, но атрибут какой сущности?
Сразу возникает очевидная связь между сущностями — «покупатели могут покупать много товаров» и «товары могут продаваться многим покупателям». Первый вариант диаграммы
выглядит, как показано на рис. 3.35.
Задав дополнительные вопросы менеджеру, мы выяснили, что фирма имеет несколько складов. Причем каждый товар может храниться на нескольких складах и быть проданным с
Куда поместить сущности «Накладная» и «Склад» и с чем их связать? Спросим себя, как связаны эти сущности между собой и с сущностями «Покупатель» и «Товар»? Покупатели покупают
товары, получая при этом накладные, в которые внесены данные 0 количестве и цене купленного товара. Каждый покупатель может получить несколько накладных. Каждая накладная обязана
выписываться на одного покупателя. Каждая накладная обязана содержать несколько товаров (не бывает пустых накладных). Каждый товар, в свою очередь, может быть продан нескольким покупателям по нескольким накладным. Кроме того, каждая накладная должна быть выписана с определенного склада, и с любого склада может быть выписано много накладных. Таким образом, после уточнения диаграмма будет выглядеть следующим образом (рис. 3.36).
Пора подумать об атрибутах сущностей. Беседуя с сотрудниками фирмы, мы выяснили следующее:
• каждый покупатель является юридическим лицом и имеет наименование, адрес, банковские реквизиты;
• каждый товар имеет наименование, цену, а также характеризуется единицами измерения;
• каждая накладная имеет уникальный номер, дату выписки, список товаров с количествами и ценами, а также общую сумму накладной. Накладная выписывается с определенного склада и на определенного покупателя;
• каждый склад имеет свое наименование.
Снова выпишем все существительные, которые будут потенциальными атрибутами, и проанализируем их:
• Юридическое лицо — термин риторический, мы не работаем с физическими лицами. Не обращаем внимания;
• Наименование покупателя — явная характеристика покупателя;
• Адрес — явная характеристика покупателя;
• Банковские реквизиты — явная характеристика покупателя;
• Наименование товара — явная характеристика товара;
• (?)Цена товара — похоже, что это характеристика товара.
Отличается ли эта характеристика от цены в накладной?
• Единица измерения — явная характеристика товара;
• Номер накладной — явная уникальная характеристика накладной;
• Дата накладной — явная характеристика накладной;
• (?) Список товаров в накладной — список не может быть атрибутом. Вероятно, нужно выделить этот список в отдельную сущность;
• (?)Количество товара в накладной — это явная характеристика, но характеристика чего? Это характеристика не просто «товара», а «товара в накладной»;
• (?)Цена товара в накладной — опять же это должна быть не просто характеристика товара, а характеристика товара в накладной. Но цена товара уже встречалась выше — это одно и то же?
• Сумма накладной — явная характеристика накладной. Эта характеристика не является независимой. Сумма накладной равна сумме стоимостей всех товаров, входящих в накладную;
• Наименование склада — явная характеристика склада.
В ходе дополнительной беседы с менеджером удалось прояснить различные понятия цен. Оказалось, что каждый товар имеет некоторую текущую цену. Это цена, по которой товар
продается в данный момент. Естественно, что эта цена может меняться со временем. Цена одного и того же товара в разных накладных, выписанных в разное время, может быть различной.
Таким образом, имеется две цены — цена товара в накладной и текущая цена товара.
С возникающим понятием «Список товаров в накладной» все довольно ясно. Сущности «Накладная» и «Товар» связаны друг с другом отношением типа много-ко-многим. Такая связь, как мы отмечали ранее, должна быть расщеплена на две связи типа один-ко-многим. Для этого требуется дополнительная сущность. Этой сущностью и будет сущность «Список товаров в накладной». Связь ее с сущностями «Накладная» и «Товар» характеризуется следующими фразами — «каждая накладная обязана иметь несколько записей из списка товаров в накладной», «каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную», «каждый товар может включаться в несколько записей из списка товаров в накладной», «каждая запись из списка товаров в накладной обязана быть связана ровно с одним товаром». Атрибуты «Количество товара в накладной» и «Цена товара в накладной» являются атрибутами сущности «Список товаров в накладной».
Точно так же поступим со связью, соединяющей сущности «Склад» и «Товар». Введем дополнительную сущность «Товар на складе». Атрибутом этой сущности будет «Количество товара на складе». Таким образом, товар будет числиться на любом складе и количество его на каждом складе будет свое.
Теперь можно внести все это в диаграмму (рис. 3.37).