<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCUP2I_State_Machines_and_Use_Cases</id>
	<title>OCUP2I State Machines and Use Cases - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCUP2I_State_Machines_and_Use_Cases"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCUP2I_State_Machines_and_Use_Cases&amp;action=history"/>
	<updated>2026-04-21T08:52:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=OCUP2I_State_Machines_and_Use_Cases&amp;diff=44556&amp;oldid=prev</id>
		<title>Filip Stachecki at 09:32, 20 October 2016</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCUP2I_State_Machines_and_Use_Cases&amp;diff=44556&amp;oldid=prev"/>
		<updated>2016-10-20T09:32:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Private]]&lt;br /&gt;
[[Category:OCUP2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;false&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: UML 2.5 Certification -  OCUP 2 Intermediate Exam Preparation&lt;br /&gt;
;author: &amp;lt;br/&amp;gt;Filip Stachecki (Filip@NobleProg.pl)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Module 8. State Machines and Use Cases⌘==&lt;br /&gt;
===References⌘===&lt;br /&gt;
UML 2.5 specification:&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
** Intervals&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Chapter 12: Packages&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Packages&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Chapter 20: Information Flows&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
===State Machines⌘===&lt;br /&gt;
[[File:StateMachineDiagram.png |500px]]&lt;br /&gt;
* State machine diagram is a behavior diagram which shows &amp;#039;&amp;#039;&amp;#039;discrete event-driven behavior&amp;#039;&amp;#039;&amp;#039; of a part of designed system through finite state transitions. &lt;br /&gt;
* State machine diagrams can also be used to express the valid interaction sequences (&amp;#039;&amp;#039;&amp;#039;protocols&amp;#039;&amp;#039;&amp;#039;) for parts of a system.&lt;br /&gt;
* Two kinds of state machines:&lt;br /&gt;
** behavior state machine,&lt;br /&gt;
** protocol state machine.&lt;br /&gt;
====Behavior State Machine⌘====&lt;br /&gt;
=====Vertex⌘=====&lt;br /&gt;
* Vertex is named element which is an abstraction of a node (State or Pseudostate) in a state machine graph. &lt;br /&gt;
* It can be the source or destination of any number of transitions.&lt;br /&gt;
=====State⌘=====&lt;br /&gt;
[[File:UMLState.png]]&lt;br /&gt;
* State models a situation during which some invariant condition holds. &lt;br /&gt;
* In most cases this condition is not explicitly defined.&lt;br /&gt;
=====Pseudo State⌘=====&lt;br /&gt;
[[File:PseudoStates.png]]&lt;br /&gt;
* Pseudostate is an abstract vertex that describes different types of transient vertices in the state machine graph.&lt;br /&gt;
* Pseudostates are transitive - a compound transition execution simply passes through them, arriving on an incoming Transition and leaving on an outgoing Transition &amp;#039;&amp;#039;&amp;#039;without pause&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
======Fork⌘======&lt;br /&gt;
[[File:PseudoStateFork.png]]&lt;br /&gt;
* Splits an incoming Transition into two or more Transitions terminating on Vertices in orthogonal Regions of a composite State. &lt;br /&gt;
* The Transitions outgoing from a &amp;#039;&amp;#039;&amp;#039;Fork&amp;#039;&amp;#039;&amp;#039; cannot have a guard or a trigger.&lt;br /&gt;
&lt;br /&gt;
======Join⌘======&lt;br /&gt;
[[File:PseudoStateJoin.png]]&lt;br /&gt;
* Common target Vertex for two or more Transitions originating from Vertices in different orthogonal Regions. &lt;br /&gt;
* Transitions terminating on a &amp;#039;&amp;#039;&amp;#039;Join&amp;#039;&amp;#039;&amp;#039; cannot have a guard or a trigger.&lt;br /&gt;
&lt;br /&gt;
======Terminate ⌘======&lt;br /&gt;
[[File:PseudoStateTerminate.png]]&lt;br /&gt;
* Execution of the State Machine is terminated immediately. &lt;br /&gt;
* The State Machine does not exit any States nor does it perform any exit Behaviors. Any executing doActivity Behaviors are automatically aborted.&lt;br /&gt;
&lt;br /&gt;
======Entry Point ⌘======&lt;br /&gt;
[[File:PseudoStateEntry.png]]&lt;br /&gt;
* Represents an entry point for a State Machine or a composite State that provides encapsulation of the insides of the State or StateMachine. &lt;br /&gt;
* In each Region of the StateMachine or composite State owning the Entry Point, there is at most a single Transition from the entry point to a Vertex within that Region.&lt;br /&gt;
&lt;br /&gt;
If the owning State has an associated entry Behavior, this Behavior is executed before any behavior associated with the outgoing Transition. If multiple Regions are involved, the entry point acts as a fork Pseudostate.&lt;br /&gt;
&lt;br /&gt;
======Exit Point ⌘======&lt;br /&gt;
[[File:PseudoStateExit.png]]&lt;br /&gt;
* Represents an exit point of a StateMachine or composite State that provides encapsulation of the insides of the State or State Machine. &lt;br /&gt;
* Transitions terminating on an exit point within any Region of the composite State or a State Machine referenced by a submachine State implies exiting of this composite State or submachine State (with execution of its associated exit Behavior). &lt;br /&gt;
&lt;br /&gt;
If multiple Transitions from orthogonal Regions within the State terminate on this Pseudostate, then it acts like a join Psuedostate.&lt;br /&gt;
======Shallow History⌘======&lt;br /&gt;
[[File:PseudoStateSHistory.png]]&lt;br /&gt;
* Represents the most recent &amp;#039;&amp;#039;&amp;#039;active substate&amp;#039;&amp;#039;&amp;#039; of its containing Region, but not the substates of that substate. &lt;br /&gt;
* Transition terminating on this Pseudostate implies restoring the Region to that substate. &lt;br /&gt;
* A single outgoing Transition from this Pseudostate may be defined terminating on a substate of the composite State. &lt;br /&gt;
* Shallow History can only be defined for composite States and, at most one such Pseudostate can be included in a Region of a composite State.&lt;br /&gt;
======Deep History⌘======&lt;br /&gt;
[[File:PseudoStateDHistory.png]]&lt;br /&gt;
* Represents the most recent &amp;#039;&amp;#039;&amp;#039;active state configuration&amp;#039;&amp;#039;&amp;#039; of its owning Region. &lt;br /&gt;
* Transition terminating on this Pseudostate implies restoring the Region to that same state configuration. &lt;br /&gt;
* The entry Behaviors of all States in the restored state configuration are performed in the appropriate order starting with the outermost State. &lt;br /&gt;
* Deep History Pseudostate can only be defined for composite States and, at most one such Pseudostate can be contained in a Region of a composite State.&lt;br /&gt;
&lt;br /&gt;
====Protocol State Machine⌘====&lt;br /&gt;
[[File:ProtocolStateMachine.png]]&lt;br /&gt;
* Is always defined in the context of a classifier.&lt;br /&gt;
* Specify allowed invocation sequences (lifecycle of a classifier).&lt;br /&gt;
* Describes which operations of the classifier can be called in which state and under which condition.&lt;br /&gt;
=====Protocol State⌘=====&lt;br /&gt;
* A protocol State represents an exposed stable situation of its context Classifier.&lt;br /&gt;
* The States of a ProtocolStateMachine cannot have defined entry, exit, or doActivity actions.&lt;br /&gt;
=====Protocol Transition⌘=====&lt;br /&gt;
[[File:ProtocolTransition.png]]&lt;br /&gt;
* A Protocol Transition specifies a legal Transition for an operation of the context Classifier.&lt;br /&gt;
* Syntax: &amp;#039;&amp;#039;&amp;#039;[precondition] event / [postcondition]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
====Events⌘====&lt;br /&gt;
based on 13.3 Events&lt;br /&gt;
=====Time Events⌘=====&lt;br /&gt;
&amp;lt;source  lang=bnf&amp;gt;&lt;br /&gt;
 &amp;lt;time-event&amp;gt; ::= &amp;lt;relative-time-event&amp;gt; | &amp;lt;absolute-time-event&amp;gt;&lt;br /&gt;
 &amp;lt;relative-time-event&amp;gt; ::= ‘after’ &amp;lt;time-expression&amp;gt;&lt;br /&gt;
 &amp;lt;absolute-time-event&amp;gt; ::= ‘at’ &amp;lt;time-expression&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* examples&lt;br /&gt;
 after 5 seconds&lt;br /&gt;
 at midnight&lt;br /&gt;
 at Jan. 1, 2020, 14:34  NOT  when Jan. 1, 2020, 14:34&lt;br /&gt;
&lt;br /&gt;
===Use Cases⌘===&lt;br /&gt;
====The Subject and the Owner⌘====&lt;br /&gt;
* A Use Case may be owned either by a Package or by a Classifier.&lt;br /&gt;
* The owning Classifier &amp;#039;&amp;#039;&amp;#039;typically&amp;#039;&amp;#039;&amp;#039; represents a subject to which the owned Use Cases apply, but this is not necessarily the case.&lt;br /&gt;
* Every Element in a model must be &amp;#039;&amp;#039;&amp;#039;owned by exactly one&amp;#039;&amp;#039;&amp;#039; other Element of that model, with the exception of the top-level Packages of the model&lt;br /&gt;
* A Use Case may &amp;#039;&amp;#039;&amp;#039;apply to any number of subjects&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
=====Use Case owned by a Classifier⌘=====&lt;br /&gt;
[[File:ClipCapIt-150902-130342.PNG]]&lt;br /&gt;
* The nesting (owning) of a UseCase by a Classifier may optionally be represented by nesting the Use Case ellipse inside the Classifier rectangle in a separate compartment.&lt;br /&gt;
&lt;br /&gt;
=====Use Cases owned by Packages⌘=====&lt;br /&gt;
[[File:ClipCapIt-160427-102834.PNG]]&lt;/div&gt;</summary>
		<author><name>Filip Stachecki</name></author>
	</entry>
</feed>