Create ---------- Destroy .----->< Inactive >------->(.) ---------- Shutdown ^ | Startup (UserID) | v (UserID) ---------- < Active > ---------- ^ | Reset | vFreeze ---------- ---------- Моделирование динамики функционирования программного обеспечения Диаграммы состояний в языке UML Диаграмма состояний (statechart) - это диаграмма, которая представляет собой конечный автомат. Главное её назначение - описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение моделируемой системы в течение всего её жизненного цикла. Диаграмма состояний изображает динамическое поведение сущностей на основе спецификации их реакций на восприятие некоторых конкретных событий. Состояние - это ситуация в ходе жизненного цикла объекта, в течение которой он удовлетворяет логическому условию, выполняет определённую деятельность или ожидает событие. -------------- --------------- |Имя состояния | |Имя состояния | | | +---------------+ | | |entry/ | | | |do/ | | | |exit/ | -------------- --------------- Действие (action) - это спецификация выполняемого утверждения, которая образует абстракцию вычислительной процедуры. Действие обычно приводит к изменению состояния системы и может быть реализовано с помощью передачи сообщения объекту, модификации связи или значения аттрибута. Виды действий: 1) входное (entry action) - действие, которое выполняется в момент перехода к данному состоянию; 2) действие выхода (exit action) - действие, которое выполняется при выходе из состояния; 3) внутренняя деятельность (do activity) - выполнение объектом операций или процедур, которые требуют определённого времени. Псевдосостояния (pseudo state) - вершины в конечном автомате, которые имеют форму состояния, но не имеют поведения: 1) начальное состояние (start state) - это разновидность псевдосостояния, обозначающая начало выполнения процесса изменения состояний конечного автомата; в этом состоянии находится объект устойчиво в начальный момент времени; .----------> 2) конечное состояние (final state) - это также разновидность псевдосостояний, которая обозначает прекращение процесса изменения состояний конечного автомата; в этом состоянии должен находиться объекти или система устойчиво после завершения работы конечного автомата. ----------->(.) Переход (transition) - это отношение между двумя состояниями, который указывает на то, что объект в первом состоянии должен выполнить определённые действия, перейти к другому состоянию. Переход осуществляется при осуществлении определённого события, при получении объектом сообщения или при получении (приёме) сигнала. --------------> <Имя события>(список параметров)[сторожевое условие]<выражение действия> Событие (event) - это спецификация существенных явлений в поведении системы, которые имеют место во времени и пространстве. Сторожевое условие (guard condition) - это логическое условие, которое записывается в квадратных скобках и является булевым выражением. Выражение действия (action expression) является вызовом операции или передачей сообщения, имеет атомарный характер и выполняется сразу после срабатывания соответствующего перехода к началу действий в целевом состоянии. Диаграммы деятельности Project Manager|System |Printer . | v --------- |EnterData+---------+ ----+---- | ^ | | | v v |+--------+ --------- ||Repeat +--->|Generate | ||Criteria| |Inform +--------+ |+--------+ +----+-----+ | | | | |[make v v |repeats] +----------+ ------------ | |_Report_ +->|Print Info | | +----------+ +------+-----+ | | <><----------------------------------+ |[ne more repeats] v (.) Диаграмма деятельности является частным случаем диаграммы состояний. Основным направлением использования является визуализация особенностей реализации операций класса, когда необходимо представить алгоритмы их выполнения. При этом каждое состояние может быть выполнением операции определённого класса или её части, позволяя использовать диаграмму деятельности для описания реакций на внутренние события системы. Также диаграммы деятельности используются для моделирования потока работ, то есть деятельность с точки зрения действующих лиц, взаимодействующих с системой. Основные элементы: 1) состояние деятельности (activity state) - это состояние в графе деятельности, которое служит для изображения процедурной последовательности действий, требующих определённого времени; деятельность, описанная в состоянии деятельности, не может быть прервана каким-либо внешним событием, и обычно используется для моделирования выполнения. Обычно состояние деятельности сводится к выполнению определённых алгоритмов или процедур; 2) состояние действия (action state) - специальный случай состояния с определённым входным действием и по крайней мере одним переходом, который выходит из состояния; обычно используются для моделирования шага выполнения алгоритма или процедуры в рамках одного потока управления. Допускается наличие нескольких конечных состояний, при этом все они эквивалентны друг другу. Ветвление (decision) <> В ромб может входить только одна стрелка из того состояния действия, после которого поток управления должен быть продолжен по одной из ветвей, которые являются взаимоисключающими. При наличии нескольких стрелок выхода каждой указывается сторожевое условие в виде булевого выражения. merge <> (соединение) используется для графического объединения альтернативных ветвей. Возможно объединения символа соединения с символом решения. Разделение (forking) и слияние (joining) - графическое изображение параллельных потоков на диаграмме деятельности. | \ / v vv =================== ================= / \ | / \ | v v v Диаграммы деятельности могут быть использованы не только для спецификации алгоритмов вычислений или потоков управления в программных системах, а также для моделирования бизнес-процессов. Для бизнес-процессов желательно выполнение каждого действия ассоциировать с конкретным исполнителем. В этом случае исполнитель будет отвечать за реализацию определённых действий, а сам бизнес-процесс представляется в виде переходов действий от одного исполнителя к другому. Дорожка (swimlane) - это графический участок диаграммы деятельности, который содержит элементы модели, ответственность за выполнение которых принадлежит отдельным исполнителям или подсистемам.