Файл: Предлагаемые мероприятия по улучшению технологии решения задачи.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 27.06.2023

Просмотров: 70

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Стоит отметить на схеме еще блок alt, который является некоторым аналогом условного блока if-else[2.c.403].

Диаграмма состояний (так же диаграммы автоматов) используются для описания поведения, реализуемого в рамках варианта использования, или проведения экземпляра сущности в целом. Поведение моделируется посредством описаний всех возможных состояний экземпляра сущности и переходов между ними на протяжении сего цикла. Данная диаграмма представляет собой связанный ориентированный граф, вершинами которого являются состояния, а ребра служат обозначением переходов между состояниями.

В классификации UML различают два вида операций: действие и деятельность. Под действием понимают операцию, выполнение которой не может быть прервано, приводящая к смене состояний или возвращающая значение. В качестве примера может служить расчет факториала. Деятельность – операция, реализуемая экземпляром в конкретном состоянии, выполнение которой может быть прервано.

Событие – спецификация существенного факта, который может произойти в конкретный момент времени. События могут быть внутренними или внешними. Внешние события передаются между системой и актерами (например, нажатие кнопки или посылка сигнала от датчика передвижений). Внутренние события передаются между объектами внутри системы. В классификации UML следует определить следующие виды событий: посылка сообщений, вызовы, сигналы, события времени и изменения состояний.

Вызов – спецификация факта посылки синхронного сообщения между объектами, предписывающего выполнение операции (действия или деятельности) объектом, которому посылается сообщение. Синхронность означает, что после посылки вызова объект-отправитель передает управление объекту-получателю и после выполнения последним операции получает управление обратно.

Сигнал – спецификация факта посылки асинхронного сообщения между объектами. Исключения, которые поддерживаются в большинстве современных языков программирования, являются наиболее распространенным видом внутренних сигналов.

Событие времени – спецификация факта, обозначающего наступление конкретного момента времени (англ. absolute time) или истечение определенного промежутка времени (англ. relative time). В UML данный факт обозначается с помощью ключевых слов «at» (например, at 9:00:00) и «after» (например, after 2 seconds).

Изменение состояния – спецификация логического условия, соответствующего изменению состояния экземпляра сущности. В UML оно обозначается с помощью ключевого слова «when» (например, when A < B) или сторожевого условия (например, [A < B]).


При разработке данной диаграммы следует придерживаться следующих рекомендаций[4. c.56]:

  1. Наличие нескольких состояний у экземпляра сущности, отличающихся от простой схемы «исправен – неисправен» или «активен – неактивен», служит признаком необходимости построения диаграммы автоматов. При выделении состояний и переходов следует помнить, что длительность срабатывания переходов должна быть существенно меньшей, чем нахождение моделируемого объекта в соответствующих состояниях. Каждое из состояний должно характеризоваться определенной устойчивостью во времени.
  2. Автомат (диаграмма) обязательно должен начинаться знаком начального состояния и заканчиваться знаком конечного. Начальное состояние указывается только один раз, а конечных может быть несколько в целях минимизации пересечений переходов. Для подавтоматов рекомендуется придерживаться этого же правила или использовать точки входа / выхода. Допускается не указывать начальных / конечных состояний и точек входа / выхода для составных состояний или подавтоматов, когда начальное подсостояние (подсостояния) очевидны.
  3. Для облегчения восприятия диаграммы рекомендуется использовать декомпозицию со скрытием составных состояний.
  4. Диаграмма не должна содержать изолированных состояний и переходов. Переходы и их спецификация должны быть заданы таким образом, чтобы на графе каждое состояние было потенциально достижимо из начального и из любого состояния было потенциально достижимо конечное.
  5. Триггерные переходы по условию на диаграмме можно показать тремя способами, согласно рисунку 2.3.

Рисунок 2.3 – Способы отображения триггерных переходов

  1. В каждый момент времени автомат или подавтомат должен находиться только в одном состоянии. Это означает, что спецификация переходов из одного состояния не должна допускать потенциальной возможности перехода в два и более состояний. На следующем рисунке приведены примеры фрагментов диаграмм с конфликтными переходами.

Диаграмма автоматов для моделирования системы, представлена в приложении В.

При моделировании поведения системы возникает необходимость не только представить процесс изменения ее состояний, но и детализировать особенности алгоритмической и логической реализации выполняемых системой операций. Данная задача решается посредством составления диаграммы деятельности. Каждая диаграмма деятельности акцентирует внимание на последовательности выполнения определенных действий, которые в совокупности приводят к получению желаемого результата. Они могут быть построены для отдельного варианта использования, кооперации, метода и т. д. Диаграммы деятельности являются разновидностью диаграмм автоматов, но если на второй основное внимание уделяется статическим состояниям, то на первой – действиям.


Графически диаграмма деятельности, как и диаграмма автоматов, представляется в виде ориентированного графа, вершинами которого являются действия или деятельности, а дугами – переходы между ними. Переход к следующему действию или деятельности срабатывает сразу по их завершении.

Основными элементами диаграммы являются: исполняемые узлы, объекты, переходы, управляющие узлы, коннекторы, группирующие элементы.

К исполняемым узлам относятся действия и деятельности. На блок-схемах их аналогами являются процессы и предопределенные процессы. Обычное использование исполняемых узлов заключается в моделировании одного шага выполнения алгоритма (процедуры) или потока управления. Графически исполняемые узлы отображаются, как простые и составные состояния. Внутри фигуры записывается выражение действия, записываемое на естественном языке, некотором псевдокоде или языке программирования.

К объектам относятся непосредственно объекты в традиционном понимании UML, отправка сигнала, прием сигнала и событие времени. Отображение сигнала на диаграмме может вызвать затруднения – рисовать его как отправку или прием? В частности, сигнал может рассматриваться как в одном, так и в другом смысле. Если в результате действия генерируется сигнал для последующей обработки (из символа действия исходит стрелка и входит в символ сигнала), то он отображается как «отправка сигнала». Когда сигнал поступает на обработку (из символа сигнала исходит стрелка и входит в символ действия), то он отображается как «прием сигнала».

Переход, как и на диаграмме автоматов, отображается ассоциацией. На диаграммах деятельности различают следующие виды переходов, показанные на рисунке 2.4.

Рисунок 2.4 – Примеры переходов

Поток управления представляет собой самый общий вид перехода и задает порядок выполнения операций. Когда на диаграмме необходимо помимо передачи управления отобразить и передачу информации, показывают объектный поток. В этом случае ассоциации соединяются с символом «объекта» или специальными контактов, прикрепленными к границам действий. К границе действия может быть прикреплено несколько контактов с наименованиями отправляемых/получаемых данных (объектов). Поток прерывания, как правило, исходит из символа «прием сигнала», расположенного в прерываемой области, и входит в действие - обработчик прерывания. Поток исключения используется так же, как и поток прерывания. Отличие прерывания от исключения состоит в том, что первое - это допустимое альтернативное событие в системе, а второе - ошибка при выполнении действия.


Управляющим узлам на диаграмме деятельности соответствуют псевдосостояния на диаграмме автоматов.

Коннекторы выступают в качестве соединителей, применяемых на блок-схемах. Они используются для прерывания потока в одной части диаграммы и продолжении в другой, если диаграмма занимает несколько листов или отображение потока перенасыщает диаграмму. Коннектор представляется в виде круга, внутри которого пишется его идентификатор.

К группирующим элементам относятся разделы деятельности и прерываемые регионы. Разделы деятельности обычно используют для моделирования бизнес-процессов или совместной работы нескольких сущностей (актеров, объектов, компонентов, узлов и т.д.). В этом случае диаграмма делится на разделы (области) вертикальными или горизонтальными линиями, в заголовке которых указываются имена сущностей, ответственных за выполнение действий внутри соответствующего раздела. Прерываемый регион группирует действия, обычная последовательность выполнения которых может прервана в результате наступления нестандартной ситуации (например, при оформлении кредита клиент от него отказывается). Он отображается четырехугольником со скругленными углами и штриховым контуром.

При разработке диаграммы следует придерживаться следующих правил и рекомендаций.

  1. При построении диаграмм рекомендуется использовать классические принципы моделирования – декомпозиции и иерархического упорядочения. Т.е. при моделировании алгоритма вначале строится контекстная диаграмма с деятельностями, которые после детализируются с помощью соответствующих диаграмм декомпозиции.
  2. Количество пересечений линий следует минимизировать. При этом считается, что пересекающиеся линии не имеют логической связи друг с другом. Другими словами потоки данных или управления в местах пересечений не меняют своего направления.
  3. Если на диаграмме имеется ветвление / решение на параллельные или альтернативные потоки, то должно указываться и соответствующее соединение / слияние этих потоков.
  4. При использовании альтернативных потоков каждый из них должен быть специфицирован с помощью сторожевого условия. Сторожевые условия не должны допускать одновременного срабатывания двух и более переходов.
  5. В целях определения зоны ответственности (набора действий) сущностей рекомендуется использовать разделы деятельности.

Построенная диаграмма деятельности, касательно заданной темы, представлена в приложении Г.


Диаграмма классов отражает различные взаимосвязи между остальными сущностями (объектами) а так же описывает их внутреннюю структуру.

Графически класс отображается в виде прямоугольника, который может быть разделен горизонтальными линиями на секции. В этих секциях указывается имя, атрибуты (свойства) и операции (функции, методы).

С точки зрения структурного подхода, атрибуты – это переменные, а методы – это функции, описанные в теле класса. Они могут быть доступны или не доступны для изменения или выполнения внешними объектами, в зависимости от уровня доступа к ним.

Обязательным элементом обозначения класса на диаграмме является его имя. Оно должно быть уникальным в пределах пакета.

В секции имени класса может быть указан стереотип (например, "entity", "boundary", "interface" и т. п.).

Во второй секции каждому атрибуту соответствует отдельная строка со следующей спецификацией:

[видимость] [/] имя [: тип [‘[‘кратность‘]‘] [ = исходное значение]] [‘{‘модификаторы’}’].

Квадратные скобки означают, что соответствующий элемент спецификации может отсутствовать. Таким образом, при описании обязательным является только имя атрибута.

Видимость переменных и функций характеризует возможность чтения и модификации значения атрибута объекта описываемого класса, из объектов других классов. Модификация значения возможна лишь при условии, что атрибут не является константой. Видимость отображается с помощью следующих символов:

- "+" – общедоступный атрибут (англ. public) – доступен для чтения и модификации из объектов любого класса;

- "#" – защищенный атрибут (англ. protected) – доступен только объектам описываемого класса и его потомкам при наследовании;

- "–" – закрытый атрибут (англ. private) – доступен только объектам описываемого класса;

- "~" – пакетный атрибут (англ. package) – доступен только объектам классов, входящих в тот же пакет.

Символ "/" перед именем атрибута указывает на то, что он является производным (т.е. его значение вычисляется из значений других атрибутов или ассоциаций).

Имя атрибута представляет собой строку текста, которая используется для его идентификации. Оно должно быть уникальным в пределах класса.

Тип атрибута выбирается исходя из семантики значений, которые должны храниться в атрибуте, и, как правило, возможностей целевого языка программирования по представлению этих значений. Он соответствует одному из стандартных типов, определенных в этом языке (например, String, Boolean, Integer, Color и т. д.) или имени класса, на объект которого в этом атрибуте будет храниться ссылка. Во втором случае класс, имя которого указано в качестве типа, должен быть определен на диаграмме или в модели.