前段時間寫了篇架構設計文檔,一直想就這件事聊點什么咐柜,結(jié)果一拖就拖到現(xiàn)在了兼蜈。算起來這是我第二次寫架構設計文檔了。一路摸爬滾打拙友,算是有一點點領悟为狸,也不知道對不對,就隨便說說遗契。
很多人覺得架構文檔沒有什么寫的辐棒,或者說不知道要怎么寫。其實我覺得這是因為自己對架構、或者對業(yè)務需求并不是那么理解漾根。如果真的理解了泰涂,再來寫這個文檔,會發(fā)現(xiàn)真的有很多可以寫的地方辐怕。因為你在明白架構設計文檔的目的逼蒙、作用后,就知道這個東西不僅僅是拿來糊弄公司的寄疏,而是真的有指導意義的是牢。
首先要理解架構設計文檔的作用,架構設計文檔其實對項目開發(fā)是有很大幫助的陕截,而且在寫架構設計文檔的過程中驳棱,也能讓設計師認真的重新梳理一遍業(yè)務需求,從而有針對性的去設計农曲,而不是在寫代碼過程中臨時決定要用什么方法去寫社搅。
突然想起之前面試的時候問面試者,架構是什么乳规? 聽到的回答五花八門形葬,什么都有。有的人干脆就說架構就是 MVC驯妄,MVP 等等荷并,讓人有點無奈。我在這里簡單聊一下我的理解青扔。
什么是架構源织?
架構這個詞其實并不是軟件領域?qū)S械摹K踔量梢宰匪莸饺祟惼鹪吹臅r候微猖。
剛開始人類只有很簡單的需求:有東西吃谈息、有地方睡。一個人就能做完所有的事情凛剥。但是隨著需求變得多樣性侠仇,還有技術領域的細分化,一個人做不完所有的事情了犁珠,而且也學不會那么多技能逻炊。這個時候社會分工就出現(xiàn)了。隨即演變出了社會組織架構犁享。包括現(xiàn)在的企業(yè)組織架構余素,都是為了更好的分工而生的。
建筑中的架構也是類似的炊昆。一開始就一個茅草屋桨吊,一個火坑威根,簡簡單單的屋子就夠了,不需要什么架構設計视乐。隨著社會的發(fā)展洛搀,人們對建筑功能的需求也越來越多,空間的切分也越來越細致佑淀。以居所為例留美,出現(xiàn)了客廳、餐廳渣聚、廚房独榴、臥室、衛(wèi)生間等專用空間奕枝。隨著人們對空間劃分變得細致、空間組合變得多樣瓶堕,建筑架構就應運而生了隘道。
那么在軟件領域,架構最根本的目的郎笆,我認為也是為了讓一個團隊能更好的分工谭梗,進而更好的合作。
之前說了宛蚓,寫不出文檔一方面是因為對架構理解不到位激捏。另一方面就是因為對業(yè)務需求理解的不到位,那么為什么業(yè)務需求對架構這么重要呢凄吏?
什么是業(yè)務需求远舅?
業(yè)務在很大的程度上決定了一個團隊的分工。但是在講業(yè)務需求之前痕钢,我想先聊一下程序員所需要解決的兩類問題图柏。
第一類就是生意問題。我們制作的軟件任连,其實都是為了做生意蚤吹。而且很多時候,這個生意沒有了軟件一樣能做随抠,只是比較低效而已裁着。我們只是生產(chǎn)了一個工具,可以提升做生意的效率拱她。
另一類問題二驰,就是計算機問題,是用來支撐我們?nèi)ドa(chǎn)這個工具的椭懊,比如計算機诸蚕、數(shù)據(jù)庫步势、網(wǎng)絡等等,都是為了更好的支撐我們?nèi)ツM做生意的過程背犯。
這兩類問題坏瘩,都會對我們的架構設計產(chǎn)生或深或遠的影響,所以一定要在設計前就有一定的了解漠魏。
接下來聊聊業(yè)務需求為什么會對架構設計產(chǎn)生深遠的影響倔矾。我們先看一下建筑的用途是怎么影響到建筑的架構的。
像農(nóng)村里的普通住宅(一般規(guī)模)柱锹,磚混結(jié)構就夠用了哪自;城鎮(zhèn)的中低層住宅樓(規(guī)模變大),就需要框架結(jié)構禁熏;高層住宅(規(guī)模進一步變大)的結(jié)構也不一樣壤巷,是核心筒 + 剪力墻;至于像機場瞧毙、車站這種需要超大空間的建筑體(另一種使用場景)胧华,則又需要大跨結(jié)構。你看宙彪,建筑上不同的空間訴求矩动,對架構的要求也是不同的。
回到軟件領域释漆,不同的業(yè)務悲没,它的特點也不一樣。像活動這種男图,天天在變示姿,那么架構設計上就需要考慮快速迭代和快速開發(fā);像日志系統(tǒng)享言,每天都有大量寫入峻凫,但是讀取比較少,所以在設計的時候也要考慮性能和穩(wěn)定性等因素览露。不同的業(yè)務需求荧琼,有不同的特性,我們要在架構設計的時候就考慮進去這些特性差牛,并且盡力去滿足這些需求命锄。
在這里我再多嘴一句,很多時候我們接收到的任務偏化,其實是別人給過來一個解決方案脐恩,并不是他想解決的問題。我們要學會識別這個陷阱侦讨,因為別人給的解決方案可能并不是最優(yōu)的解決方案驶冒,甚至可能是錯的苟翻。我們需要直面問題,然后解決問題骗污,這樣是最高效的崇猫。
怎么寫架構設計文檔
說了這么多,到底要怎么寫架構設計文檔呢需忿?
我覺得架構文檔最應該體現(xiàn)的就是:對業(yè)務需求的合理分解诅炉,以及對各個子業(yè)務的特性的理解。對業(yè)務進行了合理的分解后屋厘,我們的項目就有了一個比較合理的骨架涕烧,這個骨架就是我們的底層架構。然后再對每個子模塊做概要設計汗洒,隨后將底層架構和上層的各個子模塊的設計進行融合议纯。其實這個過程就是一個化繁為簡的過程,將繁瑣的業(yè)務轉(zhuǎn)化為一個個關鍵類和協(xié)議接口仲翎。
到了這一步痹扇,我們對業(yè)務已經(jīng)有了很明確的認知了,自然也清楚每個模塊的特性溯香,此時再做技術選型,就有很強的目的性了浓恶。這樣一來計算機問題也就隨著業(yè)務問題一起解決了玫坛。
這里有一個文檔綱領,只要思路正確包晰,直接填鴨也沒啥問題湿镀。
一、概述
二伐憾、目的
三勉痴、項目背景
四、系統(tǒng)建設目標
五树肃、參考資料
六蒸矛、架構設計
6.1 架構分析
6.2 設計思想
6.3 架構體系
6.4 系統(tǒng)視圖
6.5 模塊劃分
6.5.1 模塊描述
6.5.2 模塊接口
``
---
最新更新請關注微信公眾號
![](https://upload-images.jianshu.io/upload_images/2409585-19c21b4a87725559.jpeg)