Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What exactly does the return line (dotted line) represents in a sequence diagram?

In which kind of steps should be we use the return line in a sequence diagram?

<- - - - - - 
like image 900
Milena Avatar asked May 29 '10 10:05

Milena


2 Answers

The return line represents the flow of control returning from a method/function call

In the case of methods/functions that return a result, it would indicate a value is being returned.

E.g.

    result
<-------------

Otherwise, for void methods/functions it would just be the arrow

<-------------

For asynchronous calls, as the caller doesn't yield control to the invoked method/function, I would only use a return line if it returned a result (e.g. non-void methods/functions)

Hope that helps

EDIT

Here is an example of a sequence diagram I created for a search use case example of a sequence diagram I created for a search use case http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full.png

Note that the Anonymous user only makes asynchronous calls because, as a human being, they do not yield control to the application, hence no return arrows

Also note the return arrow of the search() call, which returns 'results'

Finally, the creation arrows ( ------|> ) do not have return arrows as they implicitly return the instantiated object

EDIT 2

In response to your updated question:

I would not have return arrows for operations by the user, such as login(), as the results are not returned to the user in the same manner as an object, but normally outputted to some kind of UI. Another way of looking at it is that the user is outside the scope of the program, so it doesn't make sense to return results directly.

From your diagram, my interpretation (in a kind of pseudocode) would be:

class User{
    public void login()
    public void sendEmail()
}

class Patient{
    public void getPatient()
}

class Doctor{
    public void getDoctor()
}

class Appointment{
    //This method returns something, but it's not clear what, so I assumed a boolean
    public boolean checkAvailability()
}

As you can see, all but one of these methods do not return anything. If that's what you wanted then good, but I suspect that's not the case.

I also suspect you did not intend for the sendEmail() method to be in the User class.

You should also consider what is happening when checkAvailability() returns, as the the flow of control seems to return to User and then inexplicably jump back to Appointment

like image 192
chrisbunney Avatar answered Sep 20 '22 09:09

chrisbunney


It represents the return message of the operation.You can specify return values using this symbol.

like image 43
Inv3r53 Avatar answered Sep 18 '22 09:09

Inv3r53