I'm reading Applying UML and Patterns and trying to match the OOA&D principles in there to a project I've worked on. It is kind of a retroactive learning exercise.
The basic question I'm trying to answer is do I have the correct understanding of how to find the actors in this domain? Have I found them correctly?
The project's basic idea is to connect security alarms of various brands having generally similar behavior (although with significant differences) and distinct proprietary TCP protocols to a server or servers and control them via a mobile app (and also via a web application if you're not an end user).
So the user will be able to arm/disarm an alarm of any brand from her phone and perform similar commands, as well as be notified when the alarm goes off and other events. Additionally, events will be sent to monitoring centers (third-party). Users are clients of the monitoring centers.
An arm command sent by the phone will call a REST API which in turn will send the command to the server to be executed by interacting with the alarm through its protocol.
The server then exposes at least two ports, one for receiving commands and one for alarms of a given model to connect to it.
I see the following Systems under Discussion (SuD's): the mobile app, the web application containing the REST API, the model X alarms, the model Y alarms, the TCP server (there may be more than one).
The book talks about Primary actors. Those have user goals fulfilled through using services of the SuD.
I see the following primary actors:
The user: her goal is to interact with the alarms through the mobile app.
The mobile app: its goal is to interact with the alarms through the REST API.
The web application: its goal is to command the panels through the TCP server and to register and manage users and alarms.
The monitoring center: its goal is to register users and alarms.
The administrator: its goal is to register monitoring centers and manage users and alarms.
The book talks about supporting actors. Those provide a service (for example, information) to the SuD.
I see the following supporting actors:
The TCP server: accomplishes commands from the web application's REST API.
The alarms: obey the TCP server.
Offstage actors: have an interest in the behavior of the use case, but are not primary or supporting. I see none.
Have I found the SuD's and actors correctly?