A use-case diagram shows the relation of actors to system functions, they can represent the stakeholders / users view of a system.

It consists of the elements:

  • System (UML Use-case)

    The system (boundary) is the boundary between the system and the users of the system.

    graph {
    	subgraph cluster0 {
    		label="System"
    		A
    	}
     
    	Actor [shape=star label="" xlabel="X"]
    	A--Actor
    }
    Link to original
  • Actor (UML Use-case)

    Actors interact with the system by using use cases (actors initiate execution of use case) and by being used by use cases (actors provide functionality for the execution of the use case). Actors represent roles that users / systems adopt.

    • Specific users can adopt and set aside multiple roles simultaneously.
    • Actors are not part of the system / they are outside of system boundaries.
    graph {
    	label="role of the users of the system"
    	A [shape=star label="" xlabel="A"]
    }
    Link to original
  • Use cases (UML Use-case)

    Use cases describe the functionality expected from the system under development, it provides tangible benefit for one or more actors that communicate with this use case. It is derived from the customer’s wishesw

    graph {
    	label="unit of functionality of the system"
    	A
    }
    Link to original
  • Association (UML Use-case)

    Associations connect Actors and use cases via solid lines. Every actor must communicate with at least one use case. An association is always binary and multiplicities may be specified.

    graph {
    	nodesep=0.8
     
    	subgraph cluster0 {
    		label = "Laboratory Assignment"
    		c [label="Conduct oral exam"]
    	}
     
    	c--a
    	c--s [label="1..3"]
     
    	a [shape=star label="" xlabel="Assistant"]
    	s [shape=star label="" xlabel="Student"]
    }
    Link to original
  • Generalisation (UML Use-case)

    Generalisation shows inheritance relationships between actors or use cases. Multiple inheritance is permitted, abstract actors are possible. Sub-actors can access all of their use cases plus those of the super-actor.

    digraph {
    	nodesep=2
     
    	B->A
    	D->C
     
    	D[shape=star label=B xlabel="Super-actor"]
    	C[shape=star label=A xlabel="Sub-actor"]
    }
    Link to original
  • Include relationship (UML Use-case)

    The include relationship, , is where the behaviour of one use case (included use case) is integrated in the behaviour of another use case (base use case).

    digraph {
    	layout=neato
    	splines=true
     
    	actor [shape=star label=""]
    	actor->A,B [arrowhead=none]
    	A->B [label=" «include»"]
    }
    Link to original
  • Extend relationship (UML Use-case)

    The extend relationship, , is where the behaviour of one use case (extending use case) may be integrated in the behaviour of another use case (base use case) but does not have to. Both use cases may be executed independently of each other.

    • decides if is executed.
    • Extension points define at which point the behaviour is integrated.
    • Conditions define under which circumstances the behaviour is integrated.
    • Multiple extension points may be specified.
    • Extension points are written directly on the use case.
    digraph {
    	layout=neato
    	splines=true
     
    	actor [shape=star label=""]
    	actor->A,B [arrowhead=none]
    	B->A [label=" «extend»"]
    }
    Link to original