架構設計三部曲之如何寫架構設計說明書


    架構設計是需求分析到軟件實現的橋梁,也是決定軟件質量的關鍵。編制架構設計說明書是開發人員向架構師轉變必定會經歷的過程。在架構師整個的成長過程中,必定會經歷編制架構設計說明書、評審架構設計說明書以及根據業務需求分析設計系統架構的三個過程。作為一個架構師,我想嘗試一下根據這三個過程對不同能力需要,寫一次系列文章,包括《架構設計三部曲之如何寫架構設計說明書》、《架構設計三部曲之如何評審架構設計說明書》以及《架構設計三部曲之如何做架構設計》,一來可以幫助自己整理思路,重新審視架構設計,二來也可以與大家分享心得,聽取大家的意見,共同進步。本篇屬於系列中的第一篇。

    那么到底如何編寫架構設計說明書?該說明書應該包括哪些方面的內容呢?我們知道,架構設計說明書是闡述系統架構具體內容的,根據我之前的文章《我的架構觀-架構未來的發展》我們明白架構的本質是呈現三大能力:即系統如何面向最終用戶提供支撐能力、如何面向外部系統提供交互能力、如何面向企業數據提供處理能力。因此從這個角度看,對架構設計說明書的 章節的設置 及章節內容安排 應該要能說明清楚系統架構到底是如何呈現這三種能力的,讓我們逐個分析:
  1. 系統如何面向最終用戶提供支撐能力:這一點是要從系統自身的能力來看,即本系統到底應該具備哪些功能,各功能間如何協作以滿足支撐最終用戶的使用,其實就是要講系統的功能架構或邏輯架構,回答系統從功能粒度上划分了幾個功能模塊或子系統,各模塊或子系統之間的內部接口關系如何等問題。當然還有一個需要考慮的問題,在縱向維度上,隨着架構設計理念的不斷發展, 邏輯架構模型從最初的展示-數據兩層模型,到展示-邏輯-數據(所謂的MVC)三層模型,甚至到展示-調用接口-邏輯-數據接口-數據五層模型,不同層次表明系統內部設計的精細程度,因此在邏輯架構設計中也需要針對實際情況加上這種分層設計的內容。尤其是對於Browser/Server架構模式的MIS類系統,這種層次更為常見。另外,用戶相對於機器來說對系統提供的能力是有個人喜好要求的,不僅要求系統能提供支撐,而且還要更加穩定的、更方便的、靈活的、快速的等提供,這就需要在架構設計說明書中增加所謂非功能性的設計,即需要描述系統的性能、高可用、可擴展性、可維護、安全性、可移植性等。
  2. 系統如何面向外部系統提供交互能力:這一點是要把系統當成一個完整的整體,闡述它如何與外部的系統發生調用關系,外部系統為它提供了哪些開放接口,它又為外部系統提供了哪些外部接口和能力,同時,在這種相互的調用關系中它處於整個IT架構的何種位置,這其實就是在說系統的整體架構另外,如果我們把操作系統和硬件服務器也當成一類特殊的外部系統的話,就需要說明系統如何基於操作系統利用硬件服務器來提供計算、存儲、網絡等能力,系統如何把自己拆分成不同的部分以便部署在服務器上,這其實說的是部署架構
  3. 如何面向企業數據提供處理能力:信息系統的原始驅動力就是人們需要借助計算機的強大計算能力來輔助處理大量數據,從而形成可理解的信息,並最終形成可掌握的知識。因此數據處理是系統的根本目的,至關重要,在架構設計說明書中需要單獨描述系統對數據的處理能力,即我們所謂的系統數據架構。這還是可以從對外和對內兩個角度來看,對外即需要說明本系統處理的數據在整個企業數據流中所處的位置,與相關的上下游數據之間的關系,本系統需要從數據上游的外部系統獲取哪些數據?又需要為數據下游的系統提供哪些數據;對內需要說明本系統根據業務需求設計了哪些關鍵數據表,它們之間是何種主外鍵關系,是否需要從外部導入數據為系統做數據初始化等。當然還有對數據管理的描述,包括如何做數據冗余設計,備份機制,數據安全管理機制等。
          好,分析完這三種能力,我們幾乎就找出了架構設計說明書中應該包括的內容,包括整體架構、邏輯架構、數據架構、部署架構、內外部接口、非功能性設計等,如果純把架構設計作為理論研究,有這些也就夠了。但是現實中我們編制架構設計說明書畢竟是用來指導我們后續系統開發的,是需要真正落地實施的,因此就會涉及使用何種技術實現?有哪些關鍵技術?用到了何種成熟或開源技術組件?復用了哪些之前的技術成果?等等,同時也包括對技術風險的考慮與預防措施。所有這些就是 技術架構 的內容。
    綜上,我們就可以得到一份完整的架構設計說明書的結構及應該包含的內容,其大致章節應該是這樣的:
    1. 文檔概述:包含項目背景、項目目標、文檔版本信息、目標讀者、參考文檔、名詞解釋之類的一般文檔都會有的章節;
    2. 整體架構:主要從整個IT層描述系統所處的位置,與周邊關聯系統之間的調用關系;
    3. 邏輯架構:系統內部功能模塊的划分以及各模塊功能介紹、相互之間的關系表述;
    4. 接口設計:包括系統間的接口設計以及內部功能模塊之間的接口設計;
    5. 數據架構:本系統與上下游系統間的數據流關系,以及本系統關鍵數據表設計、數據管理策略等;
    6. 技術架構:實施此架構需要用到哪些技術能力,有哪些復用能力及風險;
    7. 部署架構:系統如何部署,網絡拓撲上有何要求,對硬件服務器有何要求,需要幾台,是否需要優化服務器參數;
    8. 非功能性設計:性能、高可用、可擴展性、可維護、安全性、可移植性等。
    9. 其他說明:如特別約束條件、風險考慮、進度要求、政策限制、環境影響等;
以上,便是我認為一份較為完整的架構設計說明書應該包括的內容了。
 
 
 
 
 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM