所謂的“業務用例”和“系統用例”有什麼區別呢?
首先,業務用例和系統用例是相對而言的。
其次,業務用例和系統用例的研究對象不同。
仍以經典的銀行為例。
我去銀行開戶:我在櫃檯前拿張空白的開戶申請單,填寫好我的資訊,然後把我的身份證和填寫好的申請單遞給櫃員(此處省去排隊數十分鐘等巨不爽事…)。櫃員接個單子,啪嗒啪嗒的把我的資訊錄入他們的系統。一番折騰後,我面前的密碼輸入器提示我設定帳號的密碼兩次。接著,他遞出列印了資訊的單子,讓我簽字確認。我簽字後遞給他,他使勁敲上幾個印章,然後把我的存摺、身份證以及手續單遞給我,並且告訴我辦好了。
這是銀行很簡單很常見的服務,也可以說是銀行的功能。其實銀行還有很多其它“功能”,比如存錢、取錢、掛失等等。此時,我們其實是在把銀行看作一個能提供很多“功能”的“系統”。
同時,在這個過程中,櫃員一直在操作銀行的軟體系統,過程可能是這樣的:
櫃員首選選擇開戶功能;軟體系統要求櫃員將我的資訊錄入,並選擇開戶類型(我在申請單上寫的是活期);軟體系統可能會檢查我的社會安全號碼是否合法;軟體系統為我產生一個銀行帳號;軟體系統會問櫃員我是否要密碼(我在開戶申請單上註明了需要),所以軟體系統提示我設定密碼;軟體系統將我的存摺列印出來。
銀行的軟體系統給櫃員提供了很多功能,除了開戶當然也會有存錢、取錢、掛失等。但這些功能是銀行的軟體系統提供給銀行職員的。
這樣我們綜合上述兩個過程來看,其實我們在研究兩個層次的“功能”。第一層次是銀行提供給銀行的客戶的功能;第二層次是軟體系統提供給銀行職員的功能。如所示:
當我們對銀行的業務進行建模時,我們會把銀行看作一個整體,去研究銀行會提供給客戶哪些服務。此時我們的研究對象是銀行。
當我們對銀行的軟體系統進行建模時,我們把軟體系統當作一個整體,去研究它需要提供哪些功能給銀行的職員使用。此時我們的研究對象是銀行的軟體系統。
這樣我們為了區分起見,把前者稱作“業務用例模型”;相對的,把後者稱作“系統用例模型”。
業務用例和系統用例在用例技術的使用上沒什麼差別,如用例的關係、用例的描述等。
在業務模型中還有一個概念,即“業務工人(Business Worker)”。業務工作表示實現業務的人、軟體或硬體等角色。比如銀行的“開戶”業務用例中,銀行櫃員、軟體系統、列印存摺的印表機等都可看作是“業務工人”。
為什麼要做業務建模?請參閱《Use Case的“前因”、“後果”》(待出)。