如何規(guī)劃軟件的邏輯層次[1]

字號:

軟件的基本層次
    軟件的邏輯結(jié)構(gòu)可以劃分為下面四個基本層次:
         
    從下往上依次是:
    1、基礎(chǔ)設施層——這個層次是純技術(shù)層次,解決的是系統(tǒng)的物理問題,比如database gateway、網(wǎng)絡通信、對象容器……這個部分與業(yè)務需求關(guān)系不大,是系統(tǒng)的物理條件。
    2、business對象——在這個層次上,業(yè)務要素出現(xiàn)了,業(yè)務領(lǐng)域中的概念在這里實現(xiàn)。比如一個航運公司的系統(tǒng),這里就應該有航線、航班、座位、乘客、登機牌……這些對象應該擁有與實際業(yè)務領(lǐng)域相符的屬性、方法。來源:www.examda.com  
    3、business流程——這個流程不是指程序解決問題的流程,而是用戶的商業(yè)活動的流程。他體現(xiàn)的是端到端的業(yè)務流程。比如:檢票員為旅客辦理登機牌。business流程的輸入?yún)?shù)是business對象,輸出參數(shù)是business對象,產(chǎn)生的異常也是business對象。business對象在這里組合、串接,實現(xiàn)業(yè)務流程的自動化。這個層次是在直接實現(xiàn)用戶的需求。
    4、UI和接口——這個層面調(diào)用business流程,將執(zhí)行的結(jié)果交給軟件的用戶,或者別的系統(tǒng)。
    這種邏輯層次劃分是最基本的情況,各種復雜的層次都是這種方式的一種擴充。比如下面這樣的形式:
         
    在基礎(chǔ)設施層和business對象之間,加入了一個DAO層。DAO層一方面負責數(shù)據(jù)的存儲,體現(xiàn)了數(shù)據(jù)的存儲方式,另一方面體現(xiàn)了業(yè)務對象的屬性。這樣就使business對象只需要負責純粹的業(yè)務邏輯,不用關(guān)心物理問題。簡單的說,業(yè)務對象里面不需要寫SQL語句了。
    business對象和business過程之間,加入了Service層。business對象也是具有行為的,但是這樣的行為是比較細微的,需要調(diào)用者在多次調(diào)用之間保持必要的狀態(tài),需要用Service層來做一個封裝,更明確的表達業(yè)務含義。
    單元測試
    單元測試需要關(guān)心一個問題:層次之間的依賴關(guān)系。如果要測試某一個層次上的對象,必須同時建立他所依賴的每一個對象。層次之間的依賴越簡單,測試越容易。