Message Sequence Charts Simone Pongiglione Brevissimi cenni introduttivi Orientato agli eventi. Ideato dallo stesso study group di SDL. Approvato per la prima volta nel 1992 presso l’ ITU meeting di Ginevra. Migliorato e corretto, riapprovato nel 1996. Due forme sintattiche – – MSC/PR MSC/GR Utilizzato considerevolmente nell’ambito delle telecomunicazioni. CCBS Service Permette ad utente A che trova un utente B occupato, di completare la sua telefonata senza ripetere la chiamata. A J K L ( : B X J ( J ( HMSC (High-level MSC) Fornisce una descrizione ad alto livello di una parte di (o l’intero) sistema. E’ un grafo diretto dove ogni nodo può essere uno tra i seguenti simboli: Inizio. Condition.. Fine. Connessione. MSC reference. Frame parallelo. CCBS_Idle DEACTIVATION REQUEST REJECT CCBS_Requested ACTIVATION CCBS_Activated MONITORING CCBS_Free INVOCATION CCBS_Init RELEASE CANCEL MSC REQUEST Il sistema parte dallo stato inoperoso [CCBS_Idle]. L’utente A chiama l’utente B trovando la linea occupata. Il sistema richiede all’utente A se vuole attivare il servizio (REQUEST). L’utente A accetta. [CCBS_Requested]. CCBS_Idle REQUEST CCBS_Requested Costrutto Instance Costrutto fondamentale del linguaggio. Rappresenta un oggetto (processo, servizio, …) Scambia messaggi con altri oggetti e con l’ambiente. User_A process Test_In Nome istanza Specifica il tipo di processo Costrutto Instance Lungo l’asse di ogni instance è assunto un ordinamento totale. msc REQUESTED User_A CCBS_Idle Request FACILITY (Request_Inv) Costrutto Action Attività interna ad una instance, descritta con testo arbitrario (ling. naturale, logica, …). Network_B CCBS_Idle check queue and service agreed and compatibility MSC REQUEST msc REQUEST User_A Network_A Network_B CCBS_Idle Request FACILITY Request_ReqInd (Request_Inv) CCBS_Requested check queue and service agreed and compatibility MSC REQUEST Il sistema invia la richiesta di servizio all’utente A. L’utente A la inoltra alla sua rete. La rete dell’utente A richiede alla rete dell’utente B di attivare il servizio. La rete dell’utente B controlla lo stato della coda delle richieste e se l’utente B è abilitato a tale servizio. Regole per la semantica statica La lista di nomi attaccati ad un condition HMSC devono essere un sottoinsieme della lista di nomi della condition iniziale (finale) del MSC che lo segue (precede). CCBS_Run User_A Net_A Net_B CCBS_Free, CCBS_Run TURN OFF Regole per la semantica statica Le conditions di un HMSC che precedono immediatamente un MSC reference, devono corrispondere alla condition iniziale (se esistente) del MSC riferito. CCBS_Idle User_A Net_A CCBS_Idle REQUEST Net_B CCBS_Idle DEACTIVATION REQUEST REJECT CCBS_Requested ACTIVATION CCBS_Activated MONITORING CCBS_Free INVOCATION CCBS_Init RELEASE CANCEL MSC REJECT Il sistema è nello stato di richiesta [CCBS_Requested]. Il servizio non può essere fornito, la richiesta viene rifiutata (REJECT). Il sistema ritorna allo stato iniziale [CCBS_Idle]. CCBS_Idle REQUEST CCBS_Requested REJECT MSC REJECT msc REJECT User_A Network_A Network_B CCBS_Requested Reject FACILITY CCBS_Not_Activated (Reject) CCBS_Idle MSC REJECT La rete dell’utente B rifiuta la richiesta del servizio (troppo richieste in coda, incompatibilità delle reti, …), mandando un messaggio alla rete dell’utente A. La rete dell’utente A notifica l’utente A del fallimento della richiesta. L’utente A notifica il sistema. Costrutto Environment Rappresenta l’ambiente con cui un MSC interagisce. Non usa nessun ordinamento temporale. msc User_A REJECT Net_A CCBS_Requested Reject FACILITY CCBS_Not_Activated (Reject) CCBS_Idle Net_B CCBS_Idle DEACTIVATION REQUEST REJECT CCBS_Requested ACTIVATION CCBS_Activated MONITORING CCBS_Free INVOCATION CCBS_Init RELEASE CANCEL MSC ACTIVATION Il sistema richiede il servizio [CCBS_Requested]. Il servizio può essere fornito (ACTIVATION). Il sistema può attivare il servizio (CCBS_Activated). CCBS_Requested ACTIVATION CCBS_Activated Costrutto Timer Set Imposta un timer (una scadenza). In una descrizione completa di un sistema, per ogni timer set deve esistere un relativo timer reset oppure un time out, anche in MSC differenti. T1 durata 10 min MSC ACTIVATION msc ACTIVATION User_A Network_A Network_B CCBS_Requested FACILITY CCBS_Activated Request_RespConf add to queue (Request_RR) T-CCBS2 length 15\45 min CCBS_Activated MSC ACTIVATION La rete dell’utente B conferma la richiesta del servizio e aggiunge alla coda di B la richiesta. La rete dell’utente notifica il successo all’utente A e inizializza un timer. L’utente A notifica il sistema. CCBS_Idle DEACTIVATION REQUEST REJECT CCBS_Requested ACTIVATION CCBS_Activated MONITORING CCBS_Free INVOCATION CCBS_Init RELEASE CANCEL HMSC MONITORING Il servizio è attivo [CCBS_Activated]. Il sistema sorveglia i due utenti (MONITORING). Entrambi gli utenti sono liberi [CCBS_Free]. CCBS_Activated MONITORING CCBS_Free User_B_Busy CCBS_Activated REPLY_B_BUSY CHECK_STATUS_B SUSPENSION REPLY_B_FREE CCBS_Await_Status User_A_Busy REPLY_B_STILL_FREE REPLY_A_BUSY Status_Check_A REPLY_A_FREE User_A_Free CCBS_Free recall HSMC MONITORING (I parte) Controlla lo stato di B Se B è libero, attende un intervallo di tempo e ricontrolla lo stato di B. Se B è occupato, ritorna allo stato iniziale. User_B_Busy CCBS_Activated REPLY_B_BUSY CHECK_STATUS_B REPLY_B_FREE CCBS_Await_Status MSC CHECK_STATUS_B – REPLY_B_FREE Il servizio è attivo [CCBS_Activated]. Viene controllato lo stato dell’utente B (CHECK_STATUS_B). L’utente B risulta libero, dopo un tempo T viene nuovamente controllato lo stato di B (REPLY_B_FREE). Il sistema attende una risposta da B [CCBS_Await_Status]. CCBS_Activated CHECK_STATUS_B REPLY_B_FREE CCBS_Await_Status Costrutto Timeout Indica il punto temporale dove il tempo impostato da un timer set termina. Deve succedere ad un timer set. T-CCBS4 MDelayed > 15 min length 15 min MSC CHECK_STATUS_B msc CHECK_STATUS_B Network_B CCBS_Activated Start_CCBS_Processing reserve B channel to status request process STATUS (Request) MSC REPLY_B_FREE msc REPLY_B_FREE Network_B STATUS (confirm_free) User_B_Free T-CCBS4 to status request process STATUS (Request) CCBS_Await_Status User_B_Busy CCBS_Activated REPLY_B_BUSY CHECK_STATUS_B SUSPENSION REPLY_B_FREE CCBS_Await_Status User_A_Busy REPLY_B_STILL_FREE REPLY_A_BUSY Status_Check_A REPLY_A_FREE User_A_Free CCBS_Free recall HSMC MONITORING (II parte) L’utente B è ancora libero L’utente A è libero, il servizio può proseguire. REPLY_B_STILL_FREE L’utente A è occupato, il servizio viene sospeso sino a quando A non si libera. Status_Check_A SUSPENSION REPLY_A_FREE User_A_Busy User_A_Free REPLY_A_BUSY CCBS_Free Costrutto Timer Reset Effettua il reset di un timer. Deve succedere ad un timer set. T1 T1 MSC REPLY_B_STILL_FREE msc User_A Network_A Network_B REPLY_B_STILL_FREE STATUS (confirm_free) Condizione non-globale User_B_Free FACILITY Remote_User_Free (StatusReq_Inv) T-CCBS1 Status_Check_A MSC REPLY_A_FREE msc MSC_REPLY_A_FREE User_A Network_A Status_Check_A FACILITY T-CCBS1 (StatusReq_Free) FACILITY Remote_User_Free (RemoteUserFree) User_A_Free T-CCBS3 HSMC MONITORING (II parte) L’utente B è ancora libero L’utente A è libero, il servizio può proseguire. REPLY_B_STILL_FREE L’utente A è occupato, il servizio viene sospeso sino a quando A non si libera. Status_Check_A SUSPENSION REPLY_A_FREE User_A_Busy User_A_Free REPLY_A_BUSY CCBS_Free Operatori Inline Permettono di comporre inline due blocchi. Operatori permessi: – – – – – alt: par: loop: opt: exc: alternativa. parallelo. iterazione. opzionale. eccezione. Possono essere nidificati. Operatore Inline alt Permette di definire più alternative per definire lo stesso comportamento. Alternativa 1 alt T-CCBS1 FACILITY T-CCBS1 (StatusReq_busy) Alternativa 2 MSC REPLY_A_BUSY msc User_A Network_A Network_B REPLY_A_BUSY alt T-CCBS1 FACILITY T-CCBS1 (StatusReq_busy) FACILITY (BFree_Inv) Suspend request Suspend queue. Release Suspend request queue. B-channel B-channelRelease reservation. reservation. User_A_Busy CCBS_Idle DEACTIVATION REQUESTED REJECT CCBS_Requested ACTIVATION CCBS_Activated MONITORING CCBS_Free INVOCATION CCBS_Init RELEASE CANCEL HMSC CCBS_SERVICE Il servizio richiama l’utente A. L’utente A accetta. L’utente A rifiuta. CCBS_Free INVOCATION CCBS_Idle CCBS_Init DEACTIVATION RELEASE CANCEL MSC INVOCATION L’utente A accetta la chiamata da parte del CCBS prima che il timer T-CCBS3 scada. La rete di A inizializza la chiamata verso l’utente B. MSC RELEASE msc RELEASE User_A Network_A Network_B CANCEL_ReqInd remove req from queue Release_CCBS_ID CCBS_Idle release B-channel reservation MSC RELEASE La coda CCBS è stata processata, l’utente A è stato richiamato. Il sistema può liberare le risorse utilizzate. Il sistema ritorna allo stato iniziale. Operatore Inline opt Permette di definire un blocco opzionale. Simile all’operatore alt, dove la seconda alternativa è sempre nulla. Commento usato come guardia. opt opt valid if deactivation by user A. CANCEL_ReqInd MSC Release_CCBS_ID msc Release_CCBS_ID Network_A User_A CCBS_Deactivation_Requested opt opt valid if deactivation by user A. CANCEL_ReqInd release CCBS reference T-CCBS2 T-CCBS3 Cosa non abbiamo visto? Creazione e distruzione di instance. Costrutto coregion. Operatori inline: loop, par, … Virtual msc e ereditarietà. Gates. …