上面的內(nèi)容也可以通過UML中的活動圖來描述。但是,這里的描述方式更接近于一個故事。這是我喜歡的形式。
仔細(xì)看看上面的描述,是不是感覺有點味道了?這個故事所需要的計算(服務(wù))都已經(jīng)很清楚了。注意,在這個設(shè)計階段,不要急于進入細(xì)節(jié),不要去追問參數(shù)傳遞的問題、上下文范圍的問題等。急于進入細(xì)節(jié)是設(shè)計人員的大忌。
事實上,我們正在循序漸進地思考。
如果你是一名從事大連保險行業(yè)軟件的設(shè)計人員,一定會對上面故事中的計算(服務(wù))很敏感。那些計算(服務(wù))包含的業(yè)務(wù)含義需要大量的領(lǐng)域經(jīng)驗。不過,領(lǐng)域經(jīng)驗也不在本書的討論范圍。我想要討論的是——接下來要怎么做呢?
在對故事中的業(yè)務(wù)含義進行分析之后,我們可以把計算(服務(wù))分成了幾個相對獨立的大類:
保單相關(guān)的;
客戶相關(guān)的;
折扣相關(guān)的;
傭金相關(guān)的;
共保相關(guān)的;
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/每個相對獨立大類中的服務(wù),可以由一個組件來承載。老實說,我在這里定義的分類,大連保險行業(yè)軟件開發(fā)抽象層次都比較低。對于大連保險行業(yè)軟件有興趣的讀者可以去了解一下IAA標(biāo)準(zhǔn)。IAA標(biāo)準(zhǔn)提供了一個更加靈活、抽象層次更高的組件模型。
順便插一句,企業(yè)應(yīng)用應(yīng)該盡可能地向標(biāo)準(zhǔn)靠攏。其實,每一個標(biāo)準(zhǔn)都是領(lǐng)域?qū)<业膶氋F經(jīng)驗。在質(zhì)疑某一個標(biāo)準(zhǔn)不能解決你的實際問題之前,要非常認(rèn)真地問自己一個問題,你真的理解標(biāo)準(zhǔn)了嗎?通常情況下,為了所謂的“實際問題”而放棄標(biāo)準(zhǔn),大多是使用者自身的問題,而不是標(biāo)準(zhǔn)的問題。另外,采用標(biāo)準(zhǔn)可以最大程度地簡化問題,從而為大連保險行業(yè)軟件開發(fā)組織帶來巨大的利益。
讓我們回到正題。根據(jù)計算(服務(wù))的分類,我創(chuàng)建了一些組件:
CoPolicy
CoPersonInfo
CoDiscount
CoCommission
CoCoPremium
實際上,在對計算(服務(wù))進行分類和創(chuàng)建組件時,有一些取舍裁剪的原則。這些基于原則的思考才是最重要的。我的思路是:
在同一抽象級別上提供計算(服務(wù))。例如,關(guān)于折扣的故事,關(guān)于傭金的故事。當(dāng)然,這取決于設(shè)計者的視角;
組件具有高內(nèi)聚、低耦合的可能性。例如,只有在涉及折扣時,才會與折扣服務(wù)相關(guān)。折扣的業(yè)務(wù)邏輯可以獨立地變化。
有了服務(wù)和組件,設(shè)計工作開始變得比較具體了。我們可以拿著這份大連零售會員管理軟件開發(fā)設(shè)計成果與更多的涉眾進行討論,例如,客戶和業(yè)務(wù)分析人員等。我們有故事、計算(服務(wù))分類的理由、業(yè)務(wù)含義明顯的組件、涉眾的反饋,后續(xù)的微調(diào)工作應(yīng)該沒有什么問題。