針對各架構主題
1、 程序的整體組織結構是否清晰?是否包含一個良好的架構全局觀(及其理由)?
2、 是否明確定義了主要的構造塊(包括每個構造塊的職責範圍及與其他構造塊的接口)?
3、 是否明顯涵蓋了“需求”中列出的所有功能(每個功能對應的構造塊不太多也不太少)?
4、 是否描述並論證了那些最關鍵的類?
5、 是否描述並論證了數據設計?
6、 是否詳細定義了數據庫的組織結構和內容?
7、 是否指出了所用關鍵的業務規則,並描述其對系統的影響?
8、 是否描述了用戶界面設計的策略?
9、 是否將用戶界面模塊化,使界面的變更不會影響程序其餘部分?
10、 是否描述並論證了處理I/O的策略?
11、 是否估算了稀缺資源(如線程、數據庫連接、句柄、網絡帶寬等)的使用量,是否描述並論證了資源管理的策略?
12、 是否描述了架構的安全需求?
13、 架構是否爲每個類、每個子系統、或每個功能域(functionality area)提出空間與時間預算?
14、 架構是否描述瞭如何達到可伸縮性?
15、 架構是否關注互操作性?
16、 是否描述了國際化/本地化的策略?
17、 是否提供了一套內聚的錯誤處理策略?
18、 是否規定了容錯的辦法(如果需要)?
19、 是否證實了系統各個部分的技術可行性?
20、 是否詳細描述了過度工程(overengineering)的方法?
21、 是否包含了必要的“買 vs. 造”的決策?
22、 架構是否描述瞭如何加工被複用的代碼,使之符合其他架構目標?
23、 是否將架構設計得能夠適應很可能出現的變更?
架構的總體質量
1、 架構是否解決了全部需求?
2、 有沒有哪個部分是“過度架構/overarchitected”或“欠架構/underarchitected”?是否明確宣佈了在這方面的預期指標?
3、 整個架構是否在概念上協調一致?
4、 頂層設計是否獨立於用作實現它的機器和語言?
5、 是否說明了所有主要的決策的動機?
6、 你,作爲一名實現該系統的程序員,是否對這個架構感覺良好?