When modelling personas should you use OAs or Roles?

A quick example. You are modelling a software application where there will be users of different types, each with their own remits. There will be a System Administrator, A Power User, A Regular User and a Read Only / Auditor User.

In Operational Analysis, would I have one Actor per each? Or just one Actor called “User” and then when doing the activity diagrams use Roles for the Activity Boundaries on the Scenario diagrams?

I don’t believe there is only one answer to these types of questions as there is not one way to model things, it always depends on what your goal is.
But generally speaking, based on your description, I would model one Actor per each. Most likely you do want to model what each type of Actor wants to achieve, what are their goals, how they differ.

Thank you for your reply. This is what I started doing as it felt the most intuitive. However my confidence started to wane when I got to creating activities. Take for instance, one such activity I want to record is that of logging in. This is applicable to all actors wishing to log in to the system.

It’s a question of cardinality I suspect. If an actor can have many activities, but an activity can only have one actor then this would force me to have one actor for “user” and assign all common activities to that actor, and then create roles within that actor to contain role specific activities.

For example

Actor: User

User Activities -

Log in
Log out
Visit Dashboard

User Roles-

Administrator

Administrator activities

Add User
Delete User
Unlock User
Lock User

Does that make sense?

Yes it makes sense.
That’s what roles are made for: you can allocate an activity to a role, and then you can assign 1 role to multiple actors. See the example:
image

Now having said that:

  • I am not sure if you are at the right level of modeling (Operational Analysis) if you’re down to defining that your actors need to login. At the Operational Analysis, you’re not supposed to model your system, you’re not supposed to make assumptions about what the system will be, what will be its boundaries, etc… You’re supposed to model what you’re users are trying to achieve, what are their (business) goals. Most likely the login activity happens because in the end you have designed a system that requires to login, but I doubt that it is a goal of your users to login to something, this is not the business problem they are trying to solve.
  • So maybe what you are trying to model here should happen at the System Analysis level. There are no Roles at the SA level. So you will have to model all your actors and all their activities. There are multiple reasons why this is like that in Capella (well actually, Arcadia) and I don’t want to enter into a long description here. But you would model all your actors with all their actions. There you may consider that having to duplicate all these actions is painful and adopt a modeling strategy for it. Some options/ideas that will depend on why you want to model this (what value does it bring you to model it):

And so, at the OA level, you may say: ok, but how can I derive at the SA that my users needs to authenticate to my future system? Well, maybe at the OA level, there is an entity (maybe your company, and your customers) that have some activities or capabilities like “manage security of the information” or “ensure that customer data is safe” or “monetize the service” that will generate some activities at the SA level now that you add the system on the loop: “because we are now adding a software system that users can connect to through the internet, and because we want to be able to monetize the access, we need to be able to authenticate users, so they have o login when accessing the service”.

Stephane Lacrampe
Obeo Canada

1 Like