軟件架構是在軟件需求出來之后,軟件構建開始之前的工作,架構師應該確定的事情有:
1、程序組織
架構應該定義程序中的主要構造塊。根據程序規(guī)模不同,各個構造塊可能是單個類,也可能是由多個類組成的系統(tǒng)。每個構造塊實現一個高層功能。并且每個需求都至少有一個構造塊覆蓋它。
定義各個構造塊之間的通信規(guī)則和依賴規(guī)則
2、主要的類
架構應該詳細定義或寫出所用的主要的類。并指出該類如何與其他類交互。
架構不需要對所有類進行說明,使用82法則:對構成系統(tǒng)80%功能的20%類進行說明
3、數據設計
架構應該說明清楚用到的數據表的設計,并且描述為何做出這樣的選擇
4、業(yè)務規(guī)則
對特定的業(yè)務規(guī)則(比如:客戶信息的更新時間不能超過30秒)要有架構方面的描述(比如30秒內對客戶端進行信息同步)
5、用戶界面設計
架構應該有詳細的用戶界面,好的用戶界面直接關系到功能的實現和軟件的最終效果
6、資源管理
架構應該對稀缺資源有管理計劃。比如數據庫連接,線程,句柄等的使用。有可能需要設計一個“資源管理器”的模塊
7、安全性
架構應該描述用戶據輸入數據,cookie,配置文件等的安全性說明
8性能
應該根據需求文檔中對性能的描述來提供估計的性能數據,并且說明為什么架構師相信能達到性能目的?;蛘邽槭裁从械男阅苤笜藷o法達到
9、可伸縮性
架構應該說明系統(tǒng)如何應對以后用戶數量,服務器數量,網絡節(jié)點數量,數據庫記錄數,數據庫記錄長度,交易量等增長的需求。
10、互用性
如果系統(tǒng)與其他軟件或硬件有共享資源,架構應該說明如何完成這項功能
11、國際化/本地化
系統(tǒng)式是否支持國際化,如何在與用戶交互的模塊中實現國際化
12、輸入輸出
架構應該詳細定義讀取策略
13、錯誤處理
有人估計程序中高達90%的代碼是用來處理異常和錯誤的,意味只有10%的代碼是用來處理常規(guī)情況的。
14、容錯性
容錯是增強系統(tǒng)可靠性的技術,如果出現了錯誤是轉入“部分運轉”還是“功能退化”?
15、架構的可行性
架構師應該論證自己這個系統(tǒng)設計的可行性
16過度工程
即健壯性。架構應該指出哪些類哪些模塊需要進行過度工程(健壯性測試),哪些類或模塊只需要做出最簡單的工作性能
17、關于買還是造
一些軟件,開源代碼,處理程序,是使用現貨采購還是自己定制開發(fā)
18、關于復用
如果使用業(yè)界已經存在的軟件,開源代碼等資源,應該說明清楚如何對這些東西進行加工。
19、變更策略
架構應該清楚描述處理變更的策略。架構應該列出已經考慮過的可能會有變更的需求或者可能增強的功能。并提供處理情況,比如使用版本號進行控制,或者將代碼設計成可動態(tài)添加新數據
20、架構的總體質量
架構應該清楚描述其做的所有主要決策的動機明確指出有風險的地方
轉自:瘋狂軟件