基本層次
軟體的邏輯結構可以劃分為下面四個基本層次:
從下往上依次是:
1:基礎設施層——這個層次是純技術層次,解決的是系統的物理問題,比如database gateway、網路通訊、物件容器……這個部分與業務需求關係不大,是系統的物理條件。
2:business物件——在這個層次上,業務要素出現了,業務領域中的概念在這裡實現。比如乙個航運公司的系統,這裡就應該有航線、航班、座位、乘客、登機牌……這些物件應該擁有與實際業務領域相符的屬性、方法。
3:business流程——這個流程不是指程式解決問題的流程,而是使用者的商業活動的流程。他體現的是端到端的業務流程。比如:檢票員為旅客辦理登機牌。business流程的輸入引數是business物件,輸出引數是business物件,產生的異常也是business物件。business物件在這裡組合、串接,實現業務流程的自動化。這個層次是在直接實現使用者的需求。
4:ui和介面——這個層面呼叫business流程,將執行的結果交給軟體的使用者,或者別的系統。
這種邏輯層次劃分是最基本的情況,各種複雜的層次都是這種方式的一種擴充。比如下面這樣的形式:
在基礎設施層和business物件之間,加入了乙個dao層。dao層一方面負責資料的儲存,體現了資料的儲存方式,另一方面體現了業務物件的屬性。這樣就使business物件只需要負責純粹的業務邏輯,不用關心物理問題。簡單的說,業務物件裡面不需要寫sql語句了。
business物件和business過程之間,加入了service層。business物件也是具有行為的,但是這樣的行為是比較細微的,需要呼叫者在多次呼叫之間保持必要的狀態,需要用service層來做乙個封裝,更明確的表達業務含義。
單元測試
單元測試需要關心乙個問題:層次之間的依賴關係。如果要測試某乙個層次上的物件,必須同時建立他所依賴的每乙個物件。層次之間的依賴越簡單,測試越容易。
邏輯層次之間原則上是由上至下的依賴關係,同一層次內部的物件可以互相依賴。跨越層次的呼叫也是允許的,比如在ui process中呼叫business物件。ui層和ui process層之間存在著互相的依賴。開發中我們最希望測試的是這三個層次:business過程、service、business物件。我們只要對下層物件建立stub物件,就可以對這三個層次上的物件進行測試。
對這三個層次的測試結果不僅保證了程式的執行時正確性,也是對程式的業務流程進行測試。在開發過程中和維護過程中,某個業務流程發生了變化,可以用單元測試保證其他流程不會受到危害。這樣的構架可以保證迭代開發過程。
和物理層次的結合
上面說的都是系統的邏輯層次。在系統中還存在著另乙個層次——物理層次。邏輯層次的目的是簡化程式的邏輯複雜度,便於開發和維護;物理層次的實現需要考慮實際的物理分布情況,合理的安排每個物理節點的任務,最大限度提高系統的效能。邏輯層次和物理層次的劃分依據和劃分目的都是不一樣的,他們之間存在著聯絡,但也不是絕對的。
邏輯層次和物理層次的結合有兩種方式:
1、在基礎設施層解決掉物理分布的問題,建立乙個分布式的物件容器,把business物件和service放到容器中。這樣,business物件和service就不必處理複雜的物理分布問題,business過程也不必關心他所呼叫的物件是在什麼位置建立的。這樣的方式最大限度的減少了物理結構對程式邏輯結構的影響,增加了物理分布的靈活性。但是在大部分情況下,對系統的效率都是有危害的。
2、在business物件內部處理物理分布的問題,或者制定乙個技術無關的介面來體現business物件,在各物理節點編寫各自的實現。這樣物理層次和邏輯層次是攪在一起的,使系統的邏輯結構顯得混亂,但是可以達到較高的執行效率。
軟體需求的層次
1.需求是有層次的。2.不要針對一條條需求進行分析。而是要建立乙個需求的架構。有了架構後就可以看到某乙個具體的需求所在的位置。對客戶的理解就不再是碎片化的。3.如何建立起需求的架構?又如何劃分需求的層次。4.需求的二重性 需求都是由問題和解決方案構成的。這裡的問題不一定是缺陷,也可能是一種願望。這時...
Linux系統中的軟體層次
1.核心 這是整個系統的根本基石。無用多說。使用者態程式自己所做的計算,基本都算是決定策略。即程式要做哪些操作,每個操作要做成什麼樣子。這些事情確定了之後,就可以指示核心幫我們去實施了。一句話,使用者態程式所做的幾乎所有的操作 除非是比較特殊的應用 最終都通過核心代我們去完成。當然,核心除了代使用者...
軟體需求的3個層次
和實踐中不斷地理清需求 提高需求分析能力。軟體需求包括3個不同的層次 業務需求 描述組織或客戶的高層次目標,通常問題定義本身就是業務需求。這種目標通常體現在兩個方面 問題 解決企業 組織運作過程中遇到的問題,如物資 脫節 使用者投訴量大 客戶流失率高等。機會 抓住外部環境變化所帶來的機會,以便為企業...