Identifying Actors

The operating environment of a software system consists of the users, devices, and programs that the system interacts with. These are called actors.

Types of actors include:

users
database systems
clients and servers
platforms
devices

A UML actor icon is a stick figure:

Note that actors (and the system itself) are simply classes of objects that inhabit the system's operating environment and interact with the system.

Therefore we can replace the actor icon with a class icon of stereotype <<actor>>:

Since actors are classes, we can model associations and generalizations between them using class diagram notation:

Primary and Secondary Actors

A primary actor initiates an interaction with the system.

The system initiates interactions with secondary actors.

For example:

A user clicks the search button on an application's user interface. The application sends and SQL quesry to a database system. The database system responds with a result set. The application formats and displays the result set to the user.

In this scenario the user is a primary actor because he initiates the interaction with the system (application). The database system is a secondary actor because the application initiates the interaction by sending an SQL query.

Guidelines

Here are a few questions to guide identification of secondary actors:

Who are the primary actors?

What roles do they play in the application domain?

What are their roles? What tasks must they perform?

How will they interact with the system? GUI? Telephone? Web?

Who are the secondary actors?

What services do they provide?

How will the system communicate with them? Network? Port?

What specific APIs do secondary actors provide for communication and services?