軟件系統架構是根據需求對軟件進行建立架構,進行規劃的一項工作。中培偉業《詳細設計與系統架構最佳實踐》培訓專家曾老師認為要做好架構設計,應該考慮以下10大因素。
1、需求的符合性:正確性、完整性;功能性需求、非功能性需求
軟件項目最主要的目標是滿足客戶需求。在進行構架設計的時候,大家考慮更多的是使用哪個運行平臺、編成語言、開發環境、數據庫管理系統等問題,對于和客戶需求相關的問題考慮不足、不夠系統。如果無論怎么好的構架都無法滿足客戶明確的某個功能性需求或非功能性需求,就應該與客戶協調在項目范圍和需求規格說明書中刪除這一需求。否則,架構設計應以滿足客戶所有明確需求為最基本目標,盡量滿足其隱含的需求。
一般來說,功能需求決定業務構架、非功能需求決定技術構架,變化案例決定構架的范圍。需求方面的知識告訴我們,功能需求定義了軟件能夠做些什么。我們需要根據業務上的需求來設計業務構架,以使得未來的軟件能夠滿足客戶的需要。非功能需求定義了一些性能、效率上的一些約束、規則。而我們的技術構架要能夠滿足這些約束和規則。變化案例是對未來可能發生的變化的一個估計,結合功能需求和非功能需求,我們就可以確定一個需求的范圍,進而確定一個構架的范圍。
對于功能需求的正確性,在構架設計文檔中可能不好驗證(需要人工、費力)。對于功能需求完整性,就應當使用需求功能與對應模塊對照表來跟蹤追溯。對于非功能需求正確性和完整性,可以使用需求非功能與對應設計策略對照表來跟蹤追溯評估。
“軟件設計工作只有基于用戶需求,立足于可行的技術才有可能成功。”
2、總體性能
性能其實也是客戶需求的一部分,當然可能是明確的,也有很多是隱含的,這里把它單獨列出來在說明一次。性能是設計方案的重要標準,性能應考慮的不是單臺客戶端的性能,而是應該考慮系統總的綜合性能;
性能設計應從以下幾個方面考慮:內存管理、數據庫組織和內容、非數據庫信息、任務并行性、網絡多人操作、關鍵算法、與網絡、硬件和其他系統接口對性能的影響;
幾點提示:算法優化及負載均衡是性能優化的方向。經常要調用的模塊要特別注意優化。占用內存較多的變量在不用時要及時清理掉。需要下載的網頁主題文件過大時應當分解為若干部分,讓用戶先把主要部分顯示出來。
3、運行可管理性
系統的構架設計應當為了使系統可以預測系統故障,防患于未然。現在的系統正逐步向復雜化、大型化發展,單靠一個人或幾個人來管理已顯得力不從心,況且對于某些突發事件的響應,人的反應明顯不夠。因此通過合理的系統構架規劃系統運行資源,便于控制系統運行、監視系統狀態、進行有效的錯誤處理;為了實現上述目標,模塊間通信應當盡可能簡單,同時建立合理詳盡的系統運行日志,系統通過自動審計運行日志,了解系統運行狀態、進行有效的錯誤處理;(運行可管理性與可維護性不同)
4、與其他系統接口兼容性(解釋略)
與網絡、硬件接口兼容性及性能(解釋略)
5、系統安全性
隨著計算機應用的不斷深入和擴大,涉及的部門和信息也越來越多,其中有大量保密信息在網絡上傳輸,所以對系統安全性的考慮已經成為系統設計的關鍵,需要從各個方面和角度加以考慮,來保證數據資料的絕對安全。
6、系統可靠性
系統的可靠性是現代信息系統應具有的重要特征,由于人們日常的工作對系統依賴程度越來越多,因此系統的必須可靠。系統構架設計可考慮系統的冗余度,盡可能地避免單點故障。系統可靠性是系統在給定的時間間隔及給定的環境條件下,按設計要求,成功地運行程序的概率。成功地運行不僅要保證系統能正確地運行,滿足功能需求,還要求當系統出現意外故障時能夠盡快恢復正常運行,數據不受破壞。
7、業務流程的可調整性
應當考慮客戶業務流程可能出現的變化,所以在系統構架設計時要盡量排除業務流程的制約,即把流程中的各項業務結點工作作為獨立的對象,設計成獨立的模塊或組件,充分考慮他們與其他各種業務對象模塊或組件的接口,在流程之間通過業務對象模塊的相互調用實現各種業務,這樣,在業務流程發生有限的變化時(每個業務模塊本身的業務邏輯沒有變的情況下),就能夠比較方便地修改系統程序模塊或組件間的調用關系而實現新的需求。如果這種調用關系被設計成存儲在配置庫的數據字典里,則連程序代碼都不用修改,只需修改數據字典里的模塊或組件調用規則即可。
8、業務信息的可調整性
應當考慮客戶業務信息可能出現的變化,所以在系統構架設計時必須盡可能減少因為業務信息的調整對于代碼模塊的影響范圍
9、使用方便性
使用方便性是不須提及的必然的需求,而使用方便性與系統構架是密切相關的。WinCE1.0)的失敗和后來改進版本的成功就說明了這個問題。WinCE1.0)有太多層次的視窗和菜單,而用戶則更喜歡簡單的界面和快捷的操作。失敗了應當及時糾正,但最好不要等到失敗了再來糾正,這樣會浪費巨大的財力物力,所以在系統構架階段最好能將需要考慮的因素都考慮到。當然使用方便性必須與系統安全性協調平衡統一,使用方便性也必須與業務流程的可調整性和業務信息的可調整性協調平衡統一。“滿足用戶的需求,便于用戶使用,同時又使得操作流程盡可能簡單。這就是設計之本。”
10、構架樣式的一致性
軟件系統的構架樣式有些類似于建筑樣式(如中國式、哥特式、希臘復古式)。軟件構架樣式可分為數據流構架樣式、調用返回構架樣式、獨立組件構架樣式、以數據為中心的構架樣式和虛擬機構架樣式,每一種樣式還可以分為若干子樣式。構架樣式的一致性并不是要求一個軟件系統只能采用一種樣式,就像建筑樣式可以是中西結合的,軟件系統也可以有異質構架樣式(分為局部異質、層次異質、并行異質),即多種樣式的綜合,但這樣的綜合應該考慮其某些方面的一致性和協調性。每一種樣式都有其使用的時機,應當根據系統最強調的質量屬性來選擇。