回覆網友xiaobai1023的用例分析問題

網友xiaobai1023:

 

譚老師,你好:
我有這樣一個需求:
通過調度框架如(quartz)定時去執行一些動作,動作的內容是去取一些“原始數據”可能是一些文件,也有可能是通過socket向第三方系統發送一條命令得到的數據,將得到的這些原始數據通過一些數據的映射、轉換組裝成我的上層系統中的值對象上傳。
可能是需求簡單的緣故,本身實踐UML的時間也不長,產生了如下疑問,希望您能幫助解答一下,謝謝。
1、我剛開始把我的系統使用者作爲業務主角去分析獲取他的用例,但是發現從他的身上得到的用例只有兩個:控制調度、配置“原始數據”和上層系統的值對象的對於關係,其中控制調度包括配置和啓、停調度,後來又覺得作爲業務用例的話我的業務主角只有一個業務用例那就是 採集數據,但是後來發現不管從哪個業務用例出發,到了系統用例的時候卻依然還是那些用例,有些迷茫了,可能是我的角度沒有站對吧。
2、系統中的調度框我老是覺得有些系統用例是由他發出來的,按照老師書中所講的他應該是一個 業務工人,不是業務主角,但是這樣的話就覺得有些用例沒有了發出者~
目前就是這樣,望能解惑,謝謝。

 

我的回覆:

 

獲取用例最重要的就是先明確邊界。一旦邊界確定下來,邊界外的就是參與者,邊界內的就是用例。
在你這個例子裏,由於並不是非行業服務軟件,都是在計算機系統內的功能,如何確定什麼是業務用例,什麼是系統用例呢?其實不論是服務軟件還是系統軟件,業務用例要說明的問題仍然是一個完整且獨立的“業務”目標。系統用例要說明的問題仍然是系統做什麼來滿足這個目標。
就以這個例子來說,從你的需求描述:“通過調度框架如(quartz)定時去執行一些動作,動作的內容是去取一些“原始數據”可能是一些文件,也有可能是通過socket向第三方系統發送一條命令得到的數據,將得到的這些原始數據通過一些數據的映射、轉換組裝成我的上層系統中的值對象上傳。”中可以看到一些動作,比方取原始數據,向第三方發命令,軟換數據,上傳等。顯然它們可以作爲備選用例,但它們是業務用例還是系統用例呢?
通過這些的問題來幫助確定:
1.誰使用這個用例?
2.用例能幫助actor完成什麼目的?
3.這個用例是完備的嗎?
4.這個用例是獨立的嗎?
如果滿足,上述四個問題,那麼用例可以作爲業務用例,否則它就不是。比方,取原始數據,這個用例似乎就不是一個完備的用例。取了數據有什麼用?如果取來了就不再做任何處理,取數據的意義何在呢? 再比如轉換數據,這個用例很可能不是一個獨立的用例,它很可能與取數據是綁定在一起的,在取數過程中或取數據結束後馬上執行這個用例。。。。
經過這些分析,我們會發現上述用例似乎都不是業務用例。那麼業務用例在哪裏?出現這個問題要考慮一下是否我們的邊界選擇有問題了,我們站在了系統內部來尋找業務用例。現在,我們試着把邊界擴大一些,把剛纔的所需求描述作爲一個黑盒子,假設我們不知道框架,不知道數據映射,也不知道什麼第三方系統。這時,黑盒子提供的價值是什麼?採集數據?上傳數據?轉換數據?
同樣再四個問題去問它們。假設有一個系統A作爲actor,它向黑盒子提出的要求可能是:
a:採集我需要的數據並轉換成相應的格式再返回給我;
b:幫助我把數據轉換成相應的格式並上傳到另一個系統B;
c:....
以a,b爲例,以4個問題去問時,好象就能得到滿意的答案了。業務用例可以歸納爲:採集數據並轉換格式;轉換數據格式並上傳。注意,如果把採集數據和轉換格式分成兩個用例,對系統A來說就不完整了,A需要的是採集並轉換,而不是單獨的轉換。
這兩個業務用例看上去有點怪,我們做一點加工,根據問題a,把轉換格式作爲採集數據的一個include,根據問題b,上傳纔是真正目的,因此把數據轉換也作爲上傳的一個include。 好,再在我們得到兩個業務用例:採集數據和上傳數據,它們都include了轉換數據格式這樣一個輔助業務用例。這兩個業務用例都有使用者,幫助使用者完成了一個明確的目的,並且是獨立的。

接下來,你所提到的需求就可以派上用場:我們需要爲業務用例描述業務用例場景來說明用例如何滿足需求。在這個描述過程中,很顯然的,在數據採集的場景中一定會提到取“原始數據”,向第三方發數據請求命令等;上傳會提到數據組裝等工作;而轉換數據格式也會提到數據映射,轉換等。
經過這一步工作,需求和業務目標有了結合。重要的是你知道了業務用例在需求的哪個階段發生作用,承擔什麼職責。
在考慮如何實現這些需求時,比如取原始數據時,誰發出命令?我們可以寫個定時器,可以寫個按鈕讓人去按。最終,我們選擇了一個調度框架,由它來發出命令。於是,調度框架在實現需求時承擔了命令發出者的角色,也就是說它成爲了一取數據這一系統用例的動作發出者。這樣,調試框架就作爲一個業務工人出現在數據採集業務用例場景當中;並且,當我們分析到系統層面時,它是取數據系統用例的一個actor。

最後,你說“但是後來發現不管從哪個業務用例出發,到了系統用例的時候卻依然還是那些用例,有些迷茫了”,關鍵是你在發現和分析用例時思路還沒有理清楚,因此對結果不自信。我上述的分析結果未必是正確的,因爲我不太瞭解需求。但是思路應當是可以供你參考的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章