架構設計是需求分析到軟件實現的橋樑,也是決定軟件質量的關鍵。編制架構設計說明書是開發人員向架構師轉變一定會經歷的過程。在架構師整個的成長過程當中,一定會經歷編制架構設計說明書、評審架構設計說明書以及根據業務需求分析設計系統架構的三個過程。安全
架構設計是需求分析到軟件實現的橋樑,也是決定軟件質量的關鍵。編制架構設計說明書是開發人員向架構師轉變一定會經歷的過程。在架構師整個的成長過程當中,一定會經歷編制架構設計說明書、評審架構設計說明書以及根據業務需求分析設計系統架構的三個過程。做爲一個架構師,我想嘗試一下根據這三個過程對不一樣能力須要,寫一次系列文章,包括《架構設計三部曲之如何寫架構設計說明書》、《架構設計三部曲之如何評審架構設計說明書》以及《架構設計三部曲之如何作架構設計》,一來能夠幫助本身整理思路,從新審視架構設計,二來也能夠與你們分享心得,聽取你們的意見,共同進步。本篇屬於系列中的第一篇。服務器
那麼到底如何編寫架構設計說明書?該說明書應該包括哪些方面的內容呢?咱們知道,架構設計說明書是闡述系統架構具體內容的,根據我以前的文章《個人架構觀-架構將來的發展》咱們明白架構的本質是呈現三大能力:即系統如何面向最終用戶提供支撐能力、如何面向外部系統提供交互能力、如何面向企業數據提供處理能力。所以從這個角度看,對架構設計說明書的章節的設置及章節內容安排應該要能說明清楚系統架構究竟是如何呈現這三種能力的,讓咱們逐個分析:網絡
系統如何面向最終用戶提供支撐能力:這一點是要從系統自身的能力來看,即本系統到底應該具有哪些功能,各功能間如何協做以知足支撐最終用戶的使用,其實就是要講系統的功能架構或邏輯架構,回答系統從功能粒度上劃分了幾個功能模塊或子系統,各模塊或子系統之間的內部接口關係如何等問題。固然還有一個須要考慮的問題,在縱向維度上,隨着架構設計理念的不斷髮展, 邏輯架構模型從最初的展現-數據兩層模型,到展現-邏輯-數據(所謂的MVC)三層模型,甚至到展現-調用接口-邏輯-數據接口-數據五層模型,不一樣層次代表系統內部設計的精細程度,所以在邏輯架構設計中也須要針對實際狀況加上這種分層設計的內容。尤爲是對於powser/Server架構模式的MIS類系統,這種層次更爲常見。另外,用戶相對於機器來講對系統提供的能力是有我的喜愛要求的,不只要求系統能提供支撐,並且還要更加穩定的、更方便的、靈活的、快速的等提供,這就須要在架構設計說明書中增長所謂非功能性的設計,即須要描述系統的性能、高可用、可擴展性、可維護、安全性、可移植性等。架構
系統如何面向外部系統提供交互能力:這一點是要把系統當成一個完整的總體,闡述它如何與外部的系統發生調用關係,外部系統爲它提供了哪些開放接口,它又爲外部系統提供了哪些外部接口和能力,同時,在這種相互的調用關係中它處於整個IT架構的何種位置,這其實就是在說系統的總體架構。另外,若是咱們把操做系統和硬件服務器也當成一類特殊的外部系統的話,就須要說明系統如何基於操做系統利用硬件服務器來提供計算、存儲、網絡等能力,系統如何把本身拆分紅不一樣的部分以便部署在服務器上,這其實說的是部署架構。性能
如何面向企業數據提供處理能力:信息系統的原始驅動力就是人們須要藉助計算機的強大計算能力來輔助處理大量數據,從而造成可理解的信息,並最終造成可掌握的知識。所以數據處理是系統的根本目的,相當重要,在架構設計說明書中須要單獨描述系統對數據的處理能力,即咱們所謂的系統數據架構。這仍是能夠從對外和對內兩個角度來看,對外即須要說明本系統處理的數據在整個企業數據流中所處的位置,與相關的上下游數據之間的關係,本系統須要從數據上游的外部系統獲取哪些數據?又須要爲數據下游的系統提供哪些數據;對內須要說明本系統根據業務需求設計了哪些關鍵數據表,它們之間是何種主外鍵關係,是否須要從外部導入數據爲系統作數據初始化等。固然還有對數據管理的描述,包括如何作數據冗餘設計,備份機制,數據安全管理機制等。優化
好,分析完這三種能力,咱們幾乎就找出了架構設計說明書中應該包括的內容,包括總體架構、邏輯架構、數據架構、部署架構、內外部接口、非功能性設計等,若是純把架構設計做爲理論研究,有這些也就夠了。可是現實中咱們編制架構設計說明書畢竟是用來指導咱們後續系統開發的,是須要真正落地實施的,所以就會涉及使用何種技術實現?有哪些關鍵技術?用到了何種成熟或開源技術組件?複用了哪些以前的技術成果?等等,同時也包括對技術風險的考慮與預防措施。全部這些就是技術架構的內容。操作系統
綜上,咱們就能夠獲得一份完整的架構設計說明書的結構及應該包含的內容,其大體章節應該是這樣的:架構設計
文檔概述:包含項目背景、項目目標、文檔版本信息、目標讀者、參考文檔、名詞解釋之類的通常文檔都會有的章節;設計
總體架構:主要從整個IT層描述系統所處的位置,與周邊關聯繫統之間的調用關係;htm
邏輯架構:系統內部功能模塊的劃分以及各模塊功能介紹、相互之間的關係表述;
接口設計:包括系統間的接口設計以及內部功能模塊之間的接口設計;
數據架構:本系統與上下游系統間的數據流關係,以及本系統關鍵數據表設計、數據管理策略等;
技術架構:實施此架構須要用到哪些技術能力,有哪些複用能力及風險;
部署架構:系統如何部署,網絡拓撲上有何要求,對硬件服務器有何要求,須要幾臺,是否須要優化服務器參數;
非功能性設計:性能、高可用、可擴展性、可維護、安全性、可移植性等。
其餘說明:如特別約束條件、風險考慮、進度要求、政策限制、環境影響等;
以上,即是我認爲一份較爲完整的架構設計說明書應該包括的內容了。
轉自:http://developer.51cto.com/art/201506/478487.htm