2014-04-19 27 views
0

我有一個設備,我代表一個班級,有兩個演員是遠程和本地操作員可以打開或關閉設備。兩個演員都將使用設備的功能。但我現在如何使用順序圖表示它們,因爲如果我從本地和遠程畫一個事件,它將在設備上顯示一個事件發生在另一個之後,但實際上兩個actor都使用相同的功能,並且可以調用它時間。那麼我如何在下面的順序圖中表示這兩個參與者。兩位演員在時序圖中調用相同的功能。如何表示?

P.S. RAN40L是設備,CMS是遠程操作員,模擬操作員是本地操作員。 enter image description here

回答

1

碰巧我有國防行業的豐富經驗,包括海軍CMS,所以我對這個領域很熟悉。

關鍵問題在於,與UML一樣,您想要在圖表中顯示什麼,哪些與您在其他圖表中顯示的內容相關聯。沒有任何圖表是獨立讀取的,您將永遠無法在單個時序圖中捕捉整個雷達功能。

請記住,序列圖旨在以嚴格的順序顯示事件。使用適當的片段可以顯示一些基本的併發性,但是如果您想要顯示兩個參與者完全相同的事情,那麼序列實際上是兩個相同的情況,那麼序列圖就是錯誤的展示的地方。

假設這個序列是作爲一個用例的詳細說明,那麼解決方案是用一個單獨的actor(例如「Radar Controller」)替換這兩個actor。這個演員然後可以專門進入CMS和模擬器,如果雷達不知道或不關心誰在某些(使用)情況下與其進行交互,而在其他情況下則不知情。

如果雷達從未做出區分,則根本不應該有兩個演員。演員必須對他們正在與之交互的系統有意義,否則你的演員模型會出現問題。

因此,一種解決方案是構造用例如下。

RAN40L Use Cases

+0

感謝關於答案的非常好的解釋,仍然在最後一點,正如你所提到的,如果雷達從未作出區分,那麼根本不應該有兩個演員。我認爲就雷達而言,開始輪換並不重要,但考慮到其使用的功能是重要的。我仍然有點困惑,在哪裏參與者的區分並不重要,它需要的用例的手段,但可能是一些其他圖表無關。 –

0

http://sdedit.sourceforge.net/images/webserver.png 這是一個很好的例子,其中使用了兩個參與者。默認情況下,將一個actor放到另一個actor的對面(這不是在示例中完成的)。

+0

問題出在服務器上,即從服務器的時間線看來,客戶端1請求在客戶端2之前提供,這是我想避免的問題。 –

0

演員被認爲是在序列圖只是另一個對象。你可以隨心所欲地放置許多演員,並像使用其他物體一樣使用它們,在這個意義上沒有限制。

雖然有一些文體指導方針,但最重要的是關於演員定位在圖表上。在圖的邊界上顯示事件是常見的做法,將內部系統對象保留在內部。此外,通常在左側顯示人類演員,而系統演員在右側。參與者不應該與系統對象「混合」。下面是一個簡單的例子:由圖中限定的行爲開始後,在行爲圖

Actors in sequence diagram

0

一切都被執行。 如果參與者單獨進行交互,並且他們的交互在單次執行中不會被混淆,則必須爲每個個案繪製圖表。 我會說你需要兩個圖表,每個圖表一個演員。

+0

請閱讀accacent的答案,正如我可以按照您的建議畫出2個圖表一樣,但用例對於演員和操作員都是一樣的,可以是遠程和本地運營商的一般化 –

+0

沒有提到,演員有一般一個在你的問題。我的回答對應於你的問題。但是,如果有一般演員,請在順序圖中使用它,在這種情況下只需要一個演員。 – Vladimir