以前做過乙個產品,共分為三層:平台層,應用伺服器層,應用層。其中有乙個業務流程,實現是在應用層,但它那裡的資訊不全,需要通過應用伺服器層向平台層獲取必要的業務資料,然後通過應用伺服器層控制業務流程。當時考慮這個結構的時候,主要的出發點就是業務和控制分離,將業務處理從平台層剝離開來。當時,在具體是實施過程中,我們工程師對這種結構牴觸心理很強烈。他認為我們的業務開發非常的繁瑣,而且經常要貼「狗皮膏藥」。
先拋開上面這個例項的設計思路,這裡面反映出乙個問題:軟體開發過程中,軟體體系結構同樣需要「重構」。
結合經典的《重構》,這裡簡單的寫一下軟體體系結構重構的定義,原因,設計,方法。僅作拋磚引玉,希望能和大家一起思考。
何謂重構
對軟體體系結構的一種調整,目的是在不改變其「外在行為」的前提下,調整其結構,使其易於修改,維護和理解。
為何重構
1、使整個系統易於新增新的功能。為系統新增新功能將會非常的容易。
2、調整系統中各個模組的功能,角色,使整個系統更容易理解。
何時重構
由於系統結構的重構成本非常高,所以要選擇乙個合適的重構時機。
1、為系統新增功能時重構。此時專案進度壓力如果非常大,這放棄此時重構。
2、軟體第乙個版本開發完畢後重構。在第乙個版本開發完畢,第二個版本開發之前,根據第乙個版本的開發經驗,對系統進行重構。
3、開發出系統原型時進行重構。開發出乙個系統的原型的時候,如果發現系統需要重構,這及時的進行,這個時候重構成本較低,但對是否重構決策要求較高。
重構的必要條件
重構之前必須為軟體系統建立乙個可靠的、自動化的功能測試環境,這樣才能有效防止重構帶來的危害。好的測試時重構的根本。重構之前,首先檢查自己是否有一套可靠的測試機制。這些測試必須有自我檢驗(selfchecking)能力。
重構與設計
系統架構層次的重構,因為重構的成本相對較高,所以預先設計的程度要相對較深,要盡量考慮系統可能遇到的情況,方案要適當的靈活和強固。儘量減少系統結構的重構。
軟體體系結構的重和**的重構的區別
1、針對的層次不同:乙個是系統結構層次的,乙個是**層次的。
2、重構成本不同,系統結構的重構成本相對較高。
3、是否重構的決策者不同。
4、重構的時機不同。
軟體體系結構的重構 定義
以前做過乙個產品,共分為三層 平台層,應用伺服器層,應用層。其中有乙個業務流程,實現是在應用層,但它那裡的資訊不全,需要通過應用伺服器層向平台層獲取必要的業務資料,然後通過應用伺服器層控制業務流程。當時考慮這個結構的時候,主要的出發點就是業務和控制分離,將業務處理從平台層剝離開來。當時,在具體是實施...
軟體體系結構 軟體體系結構概論
開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...
軟體體系結構
軟體體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件 資料構建 連線構建。處理構建 負責對資料進行加工 資料構建 是被加工的資訊 連線構建 把體系結構的不同部分組合連線起來 1 作為通訊的手段 2 代表了早期的設計決策結果 3 高層次的設計復用手段 1 軟體體系結構是風險承擔者 又稱涉...