架構設計之如何寫架構設計說明書

2022-07-13 01:30:08 字數 2338 閱讀 6381

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

那麼到底如何編寫架構設計說明書?該說明書應該包括哪些方面的內容呢?我們知道,架構設計說明書是闡述系統架構具體內容的,根據我之前的文章《我的 架構觀-架構未來的發展》我們明白架構的本質是呈現三大能力:即系統如何面向終端使用者提供支撐能力、如何面向外部系統提供互動能力、如何面向企業資料提供 處理能力。因此從這個角度看,對架構設計說明書的章節的設定及章節內容安排應該要能說明清楚系統架構到底是如何呈現這三種能力的,讓我們逐個分析:

系統如何面向終端使用者提供支撐能力:這一點是要從系統自身的能力來看,即本系統到底應該具備哪些功能,各功能間如何協作以滿足支撐終端使用者的使用, 其實就是要講系統的功能架構或邏輯架構,回答系統從功能粒度上劃分了幾個功能模組或子系統,各模組或子系統之間的內部介面關係如何等問題。當然還有乙個需 要考慮的問題,在縱向維度上,隨著架構設計理念的不斷發展, 邏輯架構模型從最初的展示-資料兩層模型,到展示-邏輯-資料(所謂的mvc)三層模型,甚至到展示-呼叫介面-邏輯-資料介面-資料五層模型,不同層次 表明系統內部設計的精細程度,因此在邏輯架構設計中也需要針對實際情況加上這種分層設計的內容。尤其是對於powser/server架構模式的mis類 系統,這種層次更為常見。另外,使用者相對於機器來說對系統提供的能力是有個人喜好要求的,不僅要求系統能提供支撐,而且還要更加穩定的、更方便的、靈活 的、快速的等提供,這就需要在架構設計說明書中增加所謂非功能性的設計,即需要描述系統的效能、高可用、可擴充套件性、可維護、安全性、可移植性等。

系統如何面向外部系統提供互動能力:這一點是要把系統當成乙個完整的整體,闡述它如何與外部的系統發生呼叫關係,外部系統為它提供了哪些開放介面, 它又為外部系統提供了哪些外部介面和能力,同時,在這種相互的呼叫關係中它處於整個it架構的何種位置,這其實就是在說系統的整體架構。另外,如果我們把 作業系統和硬體伺服器也當成一類特殊的外部系統的話,就需要說明系統如何基於作業系統利用硬體伺服器來提供計算、儲存、網路等能力,系統如何把自己拆分成 不同的部分以便部署在伺服器上,這其實說的是部署架構。

如何面向企業資料提供處理能力:資訊系統的原始驅動力就是人們需要借助計算機的強大計算能力來輔助處理大量資料,從而形成可理解的資訊,並最終形成 可掌握的知識。因此資料處理是系統的根本目的,至關重要,在架構設計說明書中需要單獨描述系統對資料的處理能力,即我們所謂的系統資料架構。這還是可以從 對外和對內兩個角度來看,對外即需要說明本系統處理的資料在整個企業資料流中所處的位置,與相關的上下游資料之間的關係,本系統需要從資料上游的外部系統 獲取哪些資料?又需要為資料下游的系統提供哪些資料;對內需要說明本系統根據業務需求設計了哪些關鍵資料表,它們之間是何種主外來鍵關係,是否需要從外部導 入資料為系統做資料初始化等。當然還有對資料管理的描述,包括如何做資料冗餘設計,備份機制,資料安全管理機制等。

好,分析完這三種能力,我們幾乎就找出了架構設計說明書中應該包括的內容,包括整體架構、邏輯架構、資料架構、部署架構、內外部介面、非功能性設計 等,如果純把架構設計作為理論研究,有這些也就夠了。但是現實中我們編制架構設計說明書畢竟是用來指導我們後續系統開發的,是需要真正落地實施的,因此就 會涉及使用何種技術實現?有哪些關鍵技術?用到了何種成熟或開源技術元件?復用了哪些之前的技術成果?等等,同時也包括對技術風險的考慮與預防措施。所有 這些就是技術架構的內容。

綜上,我們就可以得到乙份完整的架構設計說明書的結構及應該包含的內容,其大致章節應該是這樣的:

整體架構:主要從整個it層描述系統所處的位置,與周邊關聯系統之間的呼叫關係;

邏輯架構:系統內部功能模組的劃分以及各模組功能介紹、相互之間的關係表述;

介面設計:包括系統間的介面設計以及內部功能模組之間的介面設計;

資料架構:本系統與上下游系統間的資料流關係,以及本系統關鍵資料表設計、資料管理策略等;

技術架構:實施此架構需要用到哪些技術能力,有哪些復用能力及風險;

部署架構:系統如何部署,網路拓撲上有何要求,對硬體伺服器有何要求,需要幾台,是否需要優化伺服器引數;

非功能性設計:效能、高可用、可擴充套件性、可維護、安全性、可移植性等。

其他說明:如特別約束條件、風險考慮、進度要求、政策限制、環境影響等;

以上,便是我認為乙份較為完整的架構設計說明書應該包括的內容了。

系統設計之架構設計

架構設計這個詞聽的非常的多,但真正何謂架構設計呢?可能要你真的來講還真的講不太清楚,很多人都知道架構設計是對系統進行分層 分模組進行設計,但又有多少人知道這步應該怎麼去做呢,往往很多的programmer在剛進入架構設計這個領域的時候,受到以前做模組的那種影響,把自己的眼光限定到了具體的模組實現上去...

系統設計之架構設計

架構設計這個詞聽的非常的多,但真正何謂架構設計呢?可能要你真的來講還真的講不太清楚,很多人都知道架構設計是對系統進行分層 分模組進行設計,但又有多少人知道這步應該怎麼去做呢,往往很多的programmer在剛進入架構設計這個領域的時候,受到以前做模組的那種影響,把自己的眼光限定到了具體的模組實現上去...

寫架構設計文件有感

前段時間寫了篇架構設計文件,一直想就這件事聊點什麼,結果一拖就拖到現在了。算起來這是我第二次寫架構設計文件了。一路摸爬滾打,算是有一點點領悟,也不知道對不對,就隨便說說。很多人覺得架構文件沒有什麼寫的,或者說不知道要怎麼寫。其實我覺得這是因為自己對架構 或者對業務需求並不是那麼理解。如果真的理解了,...