4

My system uses both Augmented reality and computer vision, The first feature is: The user actor can scan a specific object and the computer vision should recognize it. The second feature is: The user actor can view a specific place using the augmented reality.

Each feature is a use case connected to the user, but do I also connect them to some sort of AI actors? and if so what is the suitable way to do it? Do I just say "Computer vision system", and "Augmented reality system" ?

Suggested Use Case diagram

  • The above look good to me (except for the typos). – qwerty_so Apr 12 '22 at 21:37
  • 1
    I must say that's the most interesting way to spell *Virtual Reality System* I've ever seen. But seriously, use cases is not about features, and definitely not about technical system inside your system. Use cases are about the big things a user can do with your system that have added value to to them. The system is supposed to be a black box in use cases. There should not be secondary actors unless they are other 3th party systems that your system communicates with. – Geert Bellekens Apr 13 '22 at 05:17
  • Manar, could you please tell us if the computer vision and virtual reality are independent and autonomous systems or if it’s just implementation details of your system (sub-system, component, library, …)? – Christophe Apr 13 '22 at 06:56
  • And by the way, is the actor’s goal just to scan an object? or is the scanning just a step to achieve a larger goal (eg: recognizing an object, placing the object in a vr, etc)? – Christophe Apr 13 '22 at 07:30

2 Answers2

2

Feature or use-case?

This is a good start. However, there is a key misconception here:

  • Features are characteristics or capabilities offered by the software that are valued by users because it helps them to achieve some purpose. Features are often identified with user stories.
  • Use-cases represent goals of the actors using the system, that corresponds to a set of behaviors and interactions with the user, without reference to the internal structure of the system.

These a two different concepts. There is of course some overlap: some higher level capabilities can be described in terms of goals. For example, an ERP can be expected to have accounting, warehouse management and sales administration features.

But features are more general: it can also describe technical capabilities that are not directly observable by the user (e.g. backup), capabilities that are not directly related to a specific set of behaviors (e.g. multilingual user interface), Or which are much more detailed (e.g. date picking feature)

If you're on features, you may consider non-UML techniques, such as a feature tree, or user-story mapping (which is a kind of feature tree constructed with user-stories).

The big picture with use-cases

In your diagram, the bulbs seem to show that the system offers, and not what the user wants to do. If you want to show the big-picture with use-cases, you need to relate the bubbles with user goals:

  • Does the user just want to scan objects? Or is this scanning only one step for a larger goal, such as making an inventory, recognizing and ordering spare parts, or populating a virtual world.
  • Does the user just want to view a place in VR? Or are the expectations more ambitious, like purchasing products that would look fine in a given place?

This might look like an unecessary philosophic debate. But it is not. Because the main benefit of use-cases is a goal-oriented approach. Framing the problem or the expectations correctly, may allow you to think more creatively at alternatives instead of locking you early in a pre-conceived solution.

The right boundaries

The actors raise another question: are these actors autonomous and independent systems and do they matter to the user? Or are they just implementation details?

Formally, actors are external to the system, and moreover, the use-case should not depend on the internal structure of the system. So if the computer vision and the virtual reality system are in fact libraries, components, sub-systems of your system, they should not appear in the diagram.

Secondly, use-cases should offer observable result of value for actors. If the external system is dependent on your system and has no value on its own, then the use-case results cannot be of value to this system. For example, a DBMS are often viewed as candidate actors, but do not pass this test: the DBMS without the main system would be useless. If the system is not independent an autonomous, just remove it from the diagram to keep things simple.

Lastly, is, does the system actor matter to the other actors? If it makes no difference for your human users if an external system-actor intervenes, keep it simple and do not show the system-actor although you could. Because then again, it's more an implementation choice to rely on an external system than a requirement.

Christophe
  • 68,716
  • 7
  • 72
  • 138
  • 1
    I always wonder where from you get the time to elaborate all you answers. – qwerty_so Apr 14 '22 at 09:05
  • Yes I did not specify what will happen exactly since I just shared part of the diagram, what will actually happen is the user now has accepted a mission that will ask him to scan some objects in order for him to collect points, if the picture he took matches then he will receive the points. and there are use case for collecting points and accepting a mission – manar Aldhafyan Apr 14 '22 at 12:22
1

The way you denoted it is common practice. The so-called primary actor (which is who receives the added value from the system under consideration) is placed to the left and the so-called secondary actors (which only take part in and/or support the use case) are placed to the right. Depending on who the reader of the UC diagram will be their appearance will make sense or not. If you present it to some customer they are likely not interested in IT blurb. But for system designers it would be some important information.

qwerty_so
  • 35,448
  • 8
  • 62
  • 86