需求用例分析之四:业务规则
作者:張克強
作者微博:張克強-敏捷307
在雅各布森用例分析方法和科伯恩用例分析方法中用例本身其實都沒有“業務規則”的屬性。但是業界使用中常常會給用例加上這個屬性,這是為什么呢?為什么兩位大師沒有加上,是大師們疏忽了?而為什么不少人加上了呢?
從時間和傳播上很容易推斷,業務規則的來源是傳統的需求規格說明書。在傳統的需求規格說明書中,整理提煉業務規則或稱業務邏輯是其中核心的分析產物。受到傳統需求規格說明書的深遠影響,不少人覺得這樣的業務規則是值得寫的用例規約中的。
業務規則有哪些?
在《用例規約的編寫--業務規則和實體描述》一文(下文稱為c文)中,將業務規則分為三類:
1.第一種是全局規則,一般與所有用例都相關而不是與特定用例相關
2.第二種是交互規則,產生于用例場景當中
3.第三種是內稟規則,是指業務實體本身具備的規則,并且不因為外部的交互而變化的規則,例如,每張定單至少要有一件商品,同一類商品數量不能大于5件等。
在這篇文章的后面提出“將這些單獨列出來并給予關注和管理是很有必要的”。
顯然的,將全局規則列出的話,肯定不會在用例規約中,因為它與特定用例無關;那么在用例規約中要單獨列出來的是交互規則和內稟規則。
用例規約與交互規則
先來看交互規則的情況,同樣在上述那篇文章中?“交互規則是在用例場景當中產生的,它們規定了滿足什么條件后業務將如何反應。通常,這部分規則是最復雜,也最不穩定,最容易變化的。大家所說的需求經常變更相信絕大部分就來自于此”,那么如果是先寫了用例場景(指事件流),再將這復雜不穩定交易的規則提煉出來后,就將產生信息冗余一致性的問題。在以后處理變化時,需要修改2處。如果是提煉到用例以外,那么上下文關聯問題和冗余不一致問題就更加突出,如果是提煉在用例之內,即是有專門的“業務規則”屬性字段,事件流的表現力是足夠表現任何復雜規則的,把相同信息在同一個地方寫兩次是沒有必要的。所以這樣的提煉是多余的。
而如果是在業務規則中先寫了交互規則,再來寫用例事件流,也可大致分為兩種情況,一是按傳統SRS寫法已經書寫了較完整的交互規則,這種情況下,用例事件流的書寫就顯得多余,往往在2~4行字中說明參見業務規則,然后事件流就結束了,這種寫法相當于穿著用例外衣的傳統SRS,我想這也許就是兩位大師都沒有加上“業務規則”屬性的原因。二是先非常概要的記錄了業務規則,然后書寫事件流來體現業務規則,這種情況下事件流的書寫就顯得有價值。那么在這種情況下這概要的業務規則就不必要獨占一個專門的屬性字段,完全可以寫到用例的簡要說明中。
用例規約與內稟規則
再來看內稟規則的情況,首先交互規則與內稟規則的差異是極為模糊的,比如諸如“同一類商品數量不能大于5件”在交互中需要校驗,是可以屬于交互規則的。其次這本身屬于需求的范疇,這是業務層面的規則,c文也是說“這類規則是業務實體的內在規則”,但是c文緊接著說“因此應該寫到領域模型文檔中”。顯然的此類規則應當反映在用例中,因為如果不在用例中反映,那么需求就是不完整的。其次在用例中如何反映?這與交互規則的情況是完全一樣,概要可以寫到簡要說明,具體規則的具體應用在事件流中反映,如果規則的篇幅長而且又是比較細節,需要引用到其它文件,但前提是一定在事件流里明確說明并引用。
?
事實上c文在后面說到“同時這部分規則(指交互規則)通常在系統中以Control類去實現,MVC模式如此,SOA架構中的BPEL也是如此”“這類規則(指內稟規則)應該實現到你的實體類中去,不論你的業務實體是EntityBean,JavaBean,POJO還是COM+,根據面向對象的封裝原則,內稟的邏輯一定不要讓它暴露到外部去”,這就讓需求分析去考慮了后續分析設計的任務,需求分析已經是天下難事,再兼顧分析設計,那么用例承擔了過重的任務。當然在RUP當中,用例確實承擔了如此重的任務,在“擁抱敏捷的用例分析方法”一文中說明了用例分析不必承擔過多的職責,不必考慮識別具體實現的類,專注于需求表達。專注于表達需求的用例對后續的面向對象分析與設計同樣是高效而且準確的傳遞信息。
小結
經過以上分析,可以看到“業務規則”確實不是用例規約的必需字段,可以通過用例簡要說明和事件流覆蓋用例級別所有的業務規則。如果非要有業務規則,有一個簡單的規則來幫助判斷是否體現了用例分析的優勢:事件流的描述文字是否明顯比業務規則長?如果很長的業務規則配與很短的事件流,那么這是穿著用例外衣的傳統SRS寫法。
另外,有些規則篇幅可能比較長,也比較細節,比如說明地址信息的有效性校驗,在《編寫有效用例》中建議在用例中引用,另外地方書寫,比如數據字典。這也是不錯的辦法。
參考文獻
OO系統分析員之路--用例分析系列(7)--用例規約的編寫--業務規則和實體描述,coffeewoo??http://blog.csdn.net/coffeewoo/article/details/4073551?
擁抱敏捷的用例分析方法,張克強,http://blog.csdn.net/zhangmike/article/details/6790919
總結
以上是生活随笔為你收集整理的需求用例分析之四:业务规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 需求用例分析之三:补充规约
- 下一篇: 关于用例需要多少文档以及业务用例等等