Проектирование информационных систем. Раздел 5. Индустриальное проектирование информационных систем. Объектно-ориентированная Case-технология проектир
.pdf
щем состоянии. На диаграмме такой переход изображается сплошной линией со стрелкой.
Ветвление
Ситуация, когда последовательно выполняемая деятельность разделяется на альтернативные ветви в зависимости от значения некоторого промежуточного результата, называется ветвлением. Графически ветвление на диаграмме деятельности обозначается ромбом. В этот ромб может входить только одна стрелка от того состояния действия, после выполнения которого деятельность может быть продолжена по одной из взаимно исключающих ветвей. Принято входящую стрелку присоединять к верхней вершине символа ветвления. Для каждой из выходящих стрелок должно быть указано соответствующее условие.
В качестве примера рассмотрим алгоритм нахождения корней квадратного уравнения. В общем случае после приведения уравнения
второй степени к каноническому виду ax2 + bx + c =0 необходимо вычислить его дискриминант. В случае отрицательного дискриминанта уравнение не имеет решения на множестве действительных чисел, и дальнейшие вычисления должны быть прекращены. При неотрицательном дискриминанте уравнение имеет решение, корни которого могут быть получены на основе расчетной формулы.
Графически фрагмент процедуры вычисления корней квадратного уравнения может быть представлен в виде диаграммы деятельности с тремя состояниями действия и ветвлением, как показано на рисунке 34.
Рисунок 34 – Диаграмма деятельности для алгоритма нахождения корней квадратного уравнения
51
Каждый из переходов, выходящих из состояния действия «Вычислить дискриминант», имеет условие, определяющее единственную ветвь, по которой может быть продолжен процесс вычисления корней в зависимости от знака дискриминанта. Очевидно, что в случае его отрицательности мы сразу попадаем в конечное состояние, тем самым завершая выполнение алгоритма в целом.
Разделение и слияние
Один из недостатков обычных блок-схем связан с проблемой изображения параллельных ветвей отдельных вычислений.
Поскольку распараллеливание вычислений существенно повышает общее быстродействие информационных систем, необходимы графические обозначения для представления параллельных процессов. В языке UML для разделения и слияния параллельных вычислений используется специальный символ – прямая черта, толщина которой несколько шире основных линий диаграммы деятельности. При этом разделение имеет один входящий переход и несколько выходящих. Слияние, наоборот, имеет несколько входящих переходов и один выходящий (рисунке 35).
Рисунок 35 – Изображение разделения и слияния параллельных потоков на диаграмме деятельности
Диаграммы деятельности играют важную роль в понимании алгоритмов, заложенных в операции классов, открывая дополнительные возможности для наглядного представления бизнес-процессов.
52
Контрольные вопросы
1.Поясните назначение динамических моделей объектноориентированных систем.
2.Для чего применяются диаграммы состояний?
3.Определите основные понятия, используемые в диаграмме состояний.
4.Как графически представляется состояние на диаграмме состояний?
5.Поясните общий синтаксис представления действия при описании состояния.
6.Какие значения определены для метки действия в UML?
7.Какие события определены на диаграммах состояний?
8.Какими атрибутами описывается переход состояний?
9.Как задаются составные состояния в диаграммах состояний?
10.Что общего в диаграммах последовательностей и кооперативных диаграммах? Чем они отличаются друг от друга?
11.Для чего служит линия жизни, определяемая в диаграммах последовательностей?
12.Как отображается порядок передачи сообщений в диаграммах последовательностей?
13.Что такое фокус управления?
14.Что такое кооперация?
15.Выделите основные элементы кооперативной диаграммы.
16.Каким образом на кооперативной диаграмме отражается последовательность взаимодействий?
17.Поясните общий синтаксис определения объекта в кооперативных диаграммах.
18.Какой объект в кооперативной диаграмме является составным?
19.Приведите примеры составных объектов кооперативных диаграмм.
20.Какие стереотипы может иметь связь на кооперативной диаграмме?
21.Охарактеризуйте средства и возможности диаграммы деятельности.
22.Как графически изображается состояние действия на диаграммах деятельности?
23.Каким образом на диаграмме деятельности отображается ветвление?
24.Как в диаграммах деятельности представлено протекание параллельных процессов?
25.Какие состояния действия можно выделить при нахождении корней квадратного уравнения?
53
Глава 4. МОДЕЛИ РЕАЛИЗАЦИИ ОБЪЕКТНООРИЕНТИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ
Статические и динамические модели описывают логическую организацию системы. Модели реализации обеспечивают представление системы в физическом мире, рассматривая вопросы упаковки логических элементов в компоненты и размещения компонентов в аппаратных узлах.
4.1.Диаграммы компонентов
Вотличие от ранее рассмотренных диаграмм, диаграммы компонентов (component diagram) описывают особенности физического представления системы. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых могут выступать исходный, бинарный и исполняемый коды. Во многих средах разработки модуль или компонент соответствует файлу. Пунктирные стрелки, соединяющие модули, показывают отношения взаимозависимости, аналогичные тем, которые имеют место при компиляции исходных текстов программ. Основными графическими элементами диаграммы компонентов являются компоненты, интерфейсы и зависимости между ними.
Диаграммы компонентов разрабатываются для следующих целей:
•визуализации общей структуры исходного кода программной сис-
темы;
•спецификации исполнимого варианта программной системы;
•обеспечения многократного использования отдельных фрагментов программного кода;
•представления концептуальной и физической схем баз данных. Разработка диаграмм компонентов предполагает использование
информации как о логическом представлении модели системы, так и об особенностях ее физической реализации. До начала разработки необходимо принять решения о выборе вычислительных платформ и операционных систем, на которых предполагается реализовывать систему, а также о выборе конкретных баз данных и языков программирования.
Для представления физических сущностей в языке UML применяется специальный термин – компонент. Компонент реализует некоторый
54
набор интерфейсов и служит для общего обозначения элементов физического представления модели. Для графического изображения компонента используется прямоугольник со вставленными слева двумя более мелкими прямоугольниками, как показано на рисунке 36. Внутри прямоугольника записывается имя компонента.
Рисунок 36 – Графическое изображение компонента
Изображение этого символа может незначительно варьироваться в зависимости от характера ассоциируемой с компонентом информации. На рисунке 37 представлены некоторые из общепринятых обозначений компонентов. Эти дополнительные обозначения не специфицированы в языке UML, однако их применение упрощает понимание диаграммы компонентов, существенно повышая наглядность ее физического представления.
Рисунок 37 – Графические изображения компонентов
В качестве простых имен принято использовать имена исполняемых файлов (с указанием расширения ехе), имена динамических библиотек (расширение dll), имена web-страниц (расширение html), имена текстовых файлов (расширения txt или doc) или файлов справки (hlp), имена файлов баз данных (DB) или имена файлов с исходными текстами программ (расширения h, cpp для языка C++, расширение java для языка
Java), скрипты (pi, asp) и др.
55
Следующим элементом диаграммы компонентов являются интерфейсы. В общем случае интерфейс графически изображается окружностью, которая соединяется с компонентом отрезком линии (рисунке 38). При этом имя интерфейса, которое обязательно должно начинаться с заглавной буквы «I», записывается рядом с окружностью. Семантически линия означает реализацию интерфейса, а наличие интерфейсов у компонента означает, что данный компонент реализует соответствующий набор интерфейсов.
Рисунок 38 – Графическое изображение интерфейса на диаграмме компонентов
Зависимости
Зависимость служит для представления такой связи, когда изменение одного элемента модели оказывает влияние или приводит к изменению другого элемента модели. Отношение зависимости на диаграмме компонентов изображается пунктирной линией со стрелкой, направленной от клиента (зависимого элемента) к источнику (независимому элементу) (рисунок 39).
Зависимости могут отражать связи модулей программы на этапе компиляции и генерации объектного кода, а также наличие в независимом компоненте описаний классов, которые используются в зависимом компоненте для создания соответствующих объектов.
Применительно к диаграмме компонентов зависимости могут связывать компоненты и импортируемые этим компонентом интерфейсы, а также различные виды компонентов между собой.
56
По способу связи компонента с интерфейсом различают:
•экспортируемый интерфейс – интерфейс, который реализует компонент и предлагает его как услугу клиентам;
•импортируемый интерфейс – интерфейс, который компонент использует как услугу другого компонента.
Для указания связи компонента и интерфейса рисуют стрелку от компонента-клиента к импортируемому интерфейсу (рисунок 39).
Рисунок 39 – Графическое изображение отношения зависимости между компонентом и интерфейсом
Наличие такой стрелки означает, что компонент не реализует соответствующий интерфейс, а использует его в процессе своего выполнения. Причем на этой же диаграмме может присутствовать и другой компонент, который реализует этот интерфейс. Так, например, изображенный ниже фрагмент диаграммы компонентов представляет информацию о том, что компонент с именем «main. exe» зависит от импортируемого интерфейса IDialog, который, в свою очередь, реализуется компонентом с именем «image. java». Для второго компонента этот же интерфейс является экспортируемым.
Другим случаем отношения зависимости на диаграмме компонентов является отношение между различными видами компонентов (рисунок 40). Наличие подобной зависимости означает, что внесение изменений в исходные тексты программ или динамические библиотеки приводит к изменениям самого компонента.
57
Рисунок 40 – Графическое изображение отношения зависимости между компонентами
На диаграмме компонентов могут быть представлены отношения зависимости между компонентами и реализованными в них классами (рисунок 41). Эта информация имеет важное значение для обеспечения согласования логического и физического представлений модели системы. При этом изменения в структуреописанийклассовмогутпривестикизменениюкомпонента.
Рисунок 41 – Графическое изображение зависимости между компонентом и классами
58
Следует отметить, что диаграмма компонентов, как правило, разрабатывается совместно с диаграммой размещения, на которой представляется информация о физическом размещении компонентов программной системы по ее отдельным узлам.
4.2. Диаграммы размещения
Диаграмма размещения (deployment diagram) – вторая из двух раз-
новидностей диаграмм реализации UML, моделирующих физические аспекты объектно-ориентированных систем.
Диаграмма размещения отражает физические взаимосвязи между программными и аппаратными компонентами системы. Диаграмма размещения показывает физическое расположение сети и местонахождение в ней различных компонентов.
При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. То есть компоненты, которые не используются на этапе исполнения, на диаграмме размещения не показываются. Так, компоненты с исходными текстами программ могут присутствовать только на диаграмме компонентов, на диаграмме размещения они не указываются.
Диаграмма размещения содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма размещения является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации.
При разработке диаграммы размещения ставятся следующие цели:
•определить распределение компонентов системы по ее физическим узлам;
•показать физические связи между всеми узлами реализации системы на этапе ее исполнения;
•выявить «узкие места» системы и реконфигурировать ее топологию для достижения требуемой производительности.
Разработка диаграммы размещения начинается с идентификации всех аппаратных, механических и других типов устройств, которые необходимы для выполнения системой всех ее функций. Дальнейшее по-
59
строение диаграммы размещения связано с расстановкой всех исполняемых компонентов диаграммы по узлам системы.
Элементами диаграмм размещения являются узлы, а также отношения между ними.
Узлы
Узел представляет собой физически существующий элемент системы, обладающий некоторым вычислительным ресурсом.
Графически на диаграмме размещения узел изображается в форме трехмерного куба (рисунок 42). Узел имеет собственное имя, которое указывается внутри этого графического символа.
Рисунок 42 – Графическое изображение узла на диаграмме размещения
Соединения
На диаграмме размещения также указываются отношения между узлами. В качестве отношений выступают физические соединения между узлами и зависимости между узлами и компонентами, изображения которых тоже могут присутствовать на диаграммах размещения.
Соединения являются разновидностью ассоциации и изображаются сплошными линиями. Наличие такой линии указывает на необходимость организации физического канала для обмена информацией между соответствующими узлами (рисунок 43).
Рисунок 43 – Фрагмент диаграммы размещения с соединением между узлами
60
