架構設計是一個大家耳熟能詳的詞,基本都爛大街了。
可是,到底什麼是架構設計呢?估計很多人就回答不上來了。
下面就來詳細聊聊什麼是架構設計,以及對架構設計的一些基本認識。
一:什麼是架構設計
軟體架構設計指的是:對一個軟體系統進行的架構定義、文件編寫、維護和改進、並驗證實現的一系列活動,架構設計的產物就是一個系統的架構。
架構設計實際上是一個過程,圍繞著軟體系統,對它的架構,進行定義、文件編寫、維護和改進、並驗證實現等,把這一系列活動組合起來,就是我們所說的架構設計。
架構設計的產物,也就是結果,就是架構,這也是架構和架構設計的關係。
二:對架構設計的基本認識
(一)架構設計是一門尚不夠成熟的科學
架構設計是一門科學,這個已經是業界共識。但是作為一門科學來講,它一定要有它自己的基礎理論,基礎方法,也會有一些實現的方法論。
架構設計作為一門科學來說,還很不成熟。目前架構設計的基礎理論還不是很完善,方法論上,更是百花齊放,大家都還處於一個探索的階段。
從科學上來講,架構設計主要關注架構設計過程當中的:技術、流程、資源、方法;以及如何去完善並改進架構。
(二)架構設計是一門藝術,需要一定的創造力
剛講到架構設計這門科學還很不成熟,再加上技術領域更新很快,新技術、新思想、新方法 層出不窮。
我們總會面對很多新興的、沒有先例的系統,可能會應用新的框架、新的技術、新的解決方案來實現系統。
因此,做架構設計的時候,是需要一定的創造力的。當然,藝術細胞缺乏的人員也不用太擔心,架構設計上還是有很多是有章可循的,多半是在已有的架構體系上去做一些微調,微創新,並不是完全從零開始。
(三)架構設計是一系列的活動,是不斷演化和完善的過程
架構設計不是一蹴而就的,通常也是由粗到精,剛開始,可能只有一個粗略的架構設計,然後不斷迭代和演化,逐步推進,去完善和細化,這樣的過程。
(四)架構設計跨越軟工的全流程
這個可能有些人不太理解,認為說,軟功過程裡面,不是有專門的概要設計、詳細設計的時間嗎?架構設計不就是在這些設計階段去完成的嗎?做完設計了,把文件發下去,不就沒事了嗎?
有些公司也是這麼幹的,實際上這是有問題的。
架構設計會跨越軟工的完整流程,對於一些大型的或者是重要的專案,可能立項期間,架構師就要參與,做一些粗略的架構規劃,有兩個基本的原因:
1:能不能做得了這件事
2:按照粗略的架構規劃做下去,大致的成本會有多大
立項的時候,就要去考慮你的成本,風險和投資收益。
也就是說,立項的時候,架構師可能就需要參與,那就更不用說需求階段、設計階段了,架構師是肯定要參與的,前面講需求分析的時候已經講過了,這裡就不多囉嗦。
到了編碼階段,有些人可能認為架構師是不參與的,這是不對的。架構師需要參與,只是參與的少一些,主要是一些重點、難點的地方,或者是公共基礎功能,由架構師來實現。
另外在編碼階段,架構師還有一個重要的任務,就是確保開發人員按照架構設計去實現,不要亂做。這就需要兩個基本的方式,一個是架構師要把架構設計的成果,跟開發人員講解清楚,並不斷溝通;另外一個就是要不斷檢查,Review,以確保架構設計的落地實現不出大的偏差。
後面的測試、部署、運維等階段,架構師要做一些技術諮詢,或者是技術指導的工作。架構設計裡面,本來就包含部署架構的設計,因此,架構師也會參與這些階段,只是參與的少一些。
總之,架構設計需要關注所有利益相關者的要求,參與系統設計實現的所有人員,也都是系統的利益相關者,自然而然的,架構設計就需要貫穿軟工的整個流程了。
(五)架構設計需要不斷的決策、不斷進行折中平衡
一個系統,要關注的方方面面是很多的,利益相關者也很多,大家關注點各有不同。
這就意味著,在做架構設計的時候,需要不斷去做決策,在眾多關注點中去尋求平衡,所以有人說,做架構設計,就是一種玩平衡的藝術。
比如:從技術上講,A+B的方式是效能最高的;但是從成本上來看,A+C是最合適的。可能最後綜合權衡後,B+C是各方都能接受的方案。
這種需要考慮的平衡很多,比如:技術和成本的平衡;方案適用性年限的平衡,是滿足1-3年就夠了,還是要考慮8-10年;技術方案和當前開發人員技能的平衡;效能和成本的平衡等等,非常多。
(六)架構設計是系統利益相關者的共識
架構設計是一個過程,需要在這個過程中,不斷去考慮各利益相關者的要求,並不斷折中平衡,因此架構設計的產物,也就是架構,自然就是各方利益相關者的共識了。
(七)架構設計承認經驗的複用
要做出好的架構設計,經驗是不可或缺的,不會每次都是從零開始。
比如以前做過類似的系統;或者是學習到的一些好的架構模式,設計模式,一些現成的元件;或者是一些開源的框架等等的,這些我們都可以看成是可重用的資源。
我們做架構設計的時候,需要不斷去積累這樣子的可重用資源,形成自己的工具箱。這樣當我們在做一個系統的架構設計的時候,就有了很多備用的工具或手段。
有了這些經驗和資源的積累,會使得新系統的架構設計變得更容易。
到這裡,什麼是架構設計,應該算是聊清楚了。
更多架構師之路乾貨文章,已在路上,稍後就到!