SEG-2106 - Software Construction - Winter 2016

Assignment 1 : Designing and implementing a telephone system à la SIP

Given: January 26 - Due date: during your lab session of the week of February 22. Students may work individually or in groups of two.

Please submit your report on paper to the TA. Also, please send an e-mail to the TA including your LTSA system specification and the Umple-Java program (point 4 below)


The objective of this assignment is to practice these things again with a slightly different version of a telephone system.

System description


The telephone system consists of

Dynamic behavior

Each telephone can initate a call and also respond to a call request. The messages exchanged between the telephones (through the switch) follow the SIP conventions. Only the INVITE, INVITE_Response, ACK, BYE, and BYE_Response messages of SIP are used for the control of telephone connections. The switch plays the role of a SIP Stateful Proxy (see for instance Wikipedia).

The user objects communicate with their corresponding telephone through the following interactions:


  1. Define the dynamic behavior of the user objects in terms of a state machine model involving the interactions listed above. Note: It is suggested to use a state machine model with a single interaction per transition, either input or output.
  2. The SIP messages mentioned above are quite complex and contain a large number of parameters. For modeling the behavior of the telephone system for this assignment, one can simplify the situation a lot by using as few parameters as possible. You should write down the list of messages and their parameters which you intend to use for this project. Note, you may change the names of the messages and their parameters compared with how they are called in SIP - however, it is important to keep these names similar in order to show the correspondance with the SIP definitions.
  3. Define the dynamic behavior of the telephone objects in terms of a state machine model involving the interactions with the user and with the switch. Note: It is suggested to use a Mealy state machine model where each transition has an input interaction that triggers the transition and zero, one or more output interactions that are generated during the transition.
  4. Based on your state machine models from points (1) and (3), build a simplified telephone system in LTSA and verify that it does not have any deadlocks. Suggestions for simplification:
  5. Model the telephone system (based on points (1), (2) and (3)) in the Umple development environment.
  6. Implement the telephone system in Umple by adding the main process which creates the switch and three telephones. Do some test runs and document the sequence of interactions that are performed. You may in particular test the following situations:
  7. Compare some of the observed interaction sequences in the Umple implementation with the sequences provided by the LTSA modeling.

Hand-in on paper: A report on the results obtained for the above tasks

The (preliminary) marking scheme is as follows: