Guida al tool: Progettazione con gli oggetti attivi in Rational Rose RealTime
Questa guida al tool descrive i componenti degli oggetti attivi e illustra il modo in cui effettuare progettazioni con gli oggetti attivi in Rational Rose RealTime.
Strumento: Rational Rose RealTime
Relazioni
Elementi correlati
Descrizione principale

Panoramica

Un oggetto attivo è composto da capsule con protocolli e porte.

Le capsule sono oggetti incapsulati ad alto livello utilizzando la comunicazione basata sui messaggi verso altre capsule attraverso i loro oggetti porte. Le capsule possono aggregare altre capsule. Una struttura delle capsule può contenere altre capsule, che sono ruoli capsule.

L'impostazione dei messaggi scambiati tra due oggetti è conforme ad un pattern di comunicazione, chiamato protocollo. Si tratta sostanzialmente di un contratto che definisce i tipi validi di messaggi che possono essere scambiati tra i partecipanti nel protocollo.

Un diagramma di stato è uno dei modi per definire il comportamento degli oggetti. Mostra la sequenza degli stati in cui si trova un oggetto o una iterazione durante la sua vita in risposta ai messaggi ricevuti, insieme alle risposte e alle azioni.

Modalità d'uso del tool

Per progettare con oggetti attivi in Rational Rose RealTime, effettuare le seguenti operazioni:

  1. Creazione di un ruolo capsule
  2. Creazione di porte e bind per i protocolli
  3. Definizione di una macchina a stati capsule
  4. Definizione di stati e stati secondari
  5. Definizione di transizioni di stato
  6. Definizione di attributi nelle classi

1. Creazione di un ruolo capsule

Le capsule vengono create nella vista logica del browser dei modelli.

  1. Selezionare il tool Ruolo capsule (Capsule Role) nella barra degli strumenti.
  2. Posizionare il cursore dove il ruolo capsule deve essere posizionato e fare clic con il pulsante sinistro del mouse.
  3. Selezionare la capsula associata al nuovo ruolo capsule dall'elenco a discesa.
  4. Associare al ruolo capsule un nome appropriato.
  5. Ripetere i passi appena riportati per ciascun ruolo capsule da creare.

2. Creazione di porte e bind per i protocolli

  1. Individuare la capsula nel browser dei modelli oppure in un diagramma di classe.
  2. Espandere gli elementi al di sotto della capsula nel browser, oppure fare clic con il pulsante destro del mouse nel diagramma di classe per aprire il diagramma struttura della capsula.
  3. Utilizzare il tool Porta nella barra degli strumenti per posizionare una porta nel diagramma struttura della capsula. La porta potrebbe essere passata sul bordo della capsula oppure all'interno dell'ampia area rettangolare.
  4. Impostare il nome della porta.
  5. Selezionare un protocollo dall'elenco oppure crearne uno nuovo.
  6. Fare clic con il pulsante destro del mouse per selezionare il dialogo di specifica della porta.
  7. Utilizzare il dialogo di specifica della porta per modificare il protocollo, per decidere se la porta è cablata o meno, e per impostare se la porta è coniugata.

3. Definizione di una macchina a stati capsule

  1. Individuare la capsula nel browser dei modelli oppure in un diagramma di classe.
  2. Espandere gli elementi al di sotto della capsula nel browser, oppure fare clic con il pulsante destro del mouse nel diagramma di classe per aprire il diagramma di stato della capsula.
  3. Utilizzare la barra degli strumenti Diagramma di stato (State Diagram) per mettere gli stati e le transizioni nel diagramma di stato.

4. Definizione di stati e stati secondari

  1. Individuare la capsula per la quale è stato aggiornato il comportamento. È possibile individuare le capsule nel browser dei modelli oppure in un diagramma di classe.
  2. Fare clic con il pulsante destro del mouse sulla capsula da aprire nel diagramma di stato. In tal modo verrà aperto il diagramma nell'editor del diagramma di stato.
  3. Utilizzare il tool Stato nella barra degli strumenti per passare ad un nuovo stato nel diagramma. Eseguire questa operazione per ciascuno stato che si desidera creare.
  4. Associare ad ogni stato un nome appropriato.
  5. Fare doppio clic su uno stato che possiede stati secondari. In tal modo verrà esposto un nuovo diagramma stato in cui è possibile aggiungere stati secondari.
  6. Utilizzare la scheda nella parte inferiore della finestra per scegliere il livello di stato nel quale esplorare.

Nota: in alternativa, è possibile aggiungere stati attraverso l'area di esplorazione dell'editor del diagramma di stato.

5. Definizione di transizioni di stato

Aggiungere una transizione iniziale

  1. Fare clic sul punto iniziale nel diagramma e trascinare la transizione all'inizio dello stato di destinazione. Il punto iniziale viene rappresentato dal un cerchio nero visualizzato nell'estremo angolo sinistro del diagramma.
  2. Assegnare un nome appropriato alla transizione, se non è il valore predefinito. La transizione iniziale ha come nome predefinito Iniziale. È possibile modificare il nome selezionando l'etichetta e digitandola. La transizione iniziale verrà richiamata automaticamente al runtime quando verrà creata un'istanza di capsula. Tutti i codici azione associati con la transizione iniziale verranno eseguiti alla creazione dell'istanza della capsula.

Aggiungere transizioni

  1. Selezionare il tool di transizione dalla barra degli strumenti e trascinare la transizione dallo stato di origine a quello di destinazione.
  2. Assegnare alla transizione un nome appropriato oppure accettare quello predefinito.

Aggiungere codice di dettagli alle macchine di stato

È possibile aggiungere il codice C, C++ oppure Java come azioni o transizioni, punti di scelta, ingresso oppure uscita di stato su diagrammi di stato delle capsule da eseguire al runtime. Solo il codice aggiunto ai diagrammi di stato della capsula viene aggiunto al codice generato per il modello. Le azioni dettagliate sul protocollo oppure i diagrammi di stato della classe non vengono compresi nel codice generato per tali classi.

Aggiungere trigger

Prima di impostare un trigger per una transizione, occorre definire la porta su cui verrà ricevuto il trigger.

  1. Fare doppio clic sulla transizione per aprire il dialogo di specifica della transizione.  
  2. Selezionare la scheda Trigger.
  3. Con il cursore posizionato nell'area di elenco delle porte, fare clic con il pulsante destro del mouse e selezionare Inserisci dal menu.
  4. Nell'area Porta, selezionare la porta in cui verrà ricevuto il trigger.
  5. Nell'area dei segnali, selezionare il segnale della porta che provocherà l'evento trigger.
  6. Fare clic sui pulsanti OK per chiudere le finestre aperte.

Aggiungere codice alla transizione

Una volta che tutti gli elementi richiesti sono a posto (stato iniziale, transizione iniziale e porte), occorre aggiungere codice dettagliato alla transizione iniziale, così come lo stato alle transizioni di stato. Il codice in dettaglio viene eseguito quando la transizione iniziale viene eseguita al momento di esecuzione del modello oppure quando viene ricevuto un trigger sullo stato nella transizione di stato.

  1. Fare doppio clic sulla transizione per aprire il dialogo di specifica della transizione.
  2. Selezionare la scheda Azioni per visualizzare la finestra sul codice.
  3. Aggiungere il codice che verrà eseguito sulla transizione.
  4. Selezionare il pulsante OK per chiudere la finestra aperta.

Nota: non di devono aggiungere le parentesi graffe di apertura e chiusura '{`, `}'. Vengono aggiunte automaticamente dal generatore di codice.

6. Definizione di attributi nella classi

  1. Aprire la casella di dialogo di specifica della capsula facendo doppio clic nel browser oppure selezionando la capsula in un diagramma e selezionando Apri specifica (Open Specification) dal menu a comparsa.
  2. Selezionare la scheda Attributi nella specifica della capsula.
  3. Con il cursore nell'area aperta della scheda, fare clic con il pulsante destro del mouse e selezionare Inserisci.
  4. Modificare il nome da NewAttribute1 in qualcosa di più significativo e quindi premere INVIO.
  5. Fare doppio clic sul nuovo attributo per visualizzare la finestra di specifica degli attributi.
  6. Utilizzare la finestra di specifica degli attributi per impostare il tipo di attributo e il valore iniziale.