Now that we have a frame, we need to show who will be participating in these actions. The two types of participants are:
As with Use Cases, the actors are people or subsystems outside of your system’s control. Again, they are indicated by stick figures. These actors will normally be the entities that begin an interaction or to whom feedback is provided. This is an actor, in case you forgot.
Human actors need can only interact with UI elements of your system. They (obviously) cannot interact with classes themselves.
Now, the new parts of an interaction, the objects. As you well know, an object is an instance of a class. You didn’t know that? Go back to first year!
As the running of your system goes on, objects will be instantiated, they will interact with other objects and be interacted upon. An object is indicated as a rectangle containing object name, colon, and the class name.
You only have to indicate the object name if it has significance, otherwise you can just use the class name. Normally you will use only the latter.
The classes you use in your interaction sequence diagram must be in your class diagram. It should be obvious, but it always isn’t.
All classes/objects that you have defined up to this point runs as part of the the current process. However, other objects that you interact with, might run on their own thread of control/process. They are called Active Object and are drawn with a double lines at each end.
Objects of classes do not last forever, they have a specific lifetime. In your interaction sequence diagram, you will draw the lifeline of their lifetime. This lifeline is a dashed line running from top to bottom.
On this lifeline, you will find the focus of control. The focus of control shows which object is currently controlling the interaction. This focussed object performs some task or (and then) sends some message to another object.
Focus of control is shown as a white rectangle over the lifeline of an object.
Normally, this focus of control is relinquished once the object has performed its task. However, if the task not a synchronous task (i.e. threaded), multiple objects can have focus of control at the same time. In others words, multiple objects can perform tasks at the same time.