一個架構師談什么是架構以及怎么成為一個架構師?

來點輕松的話題。今天我們先來點”番外篇“,講講什么是架構師,什么是架構這個永恒的話題吧。

一、架構的定義

先來看看軟件架構的普遍定義吧。

一個程序和計算系統軟件體系結構是指系統的一個或多個結構。結構中包括軟件的構建,構建的外部可見屬性以及它們之間的相互關系。

體系結構并非可運行軟件。確切的說,它是一種表達,使軟件工程師能夠:

分析設計在滿足規定需求方面的有效性。

在設計變更相對容易的階段,考慮體系結構可能的選擇方案。

降低與軟件構造相關聯的風險。

二、軟件架構的生命周期

軟件開發有其生命周期,它應該是:

而軟件架構也有著其生命周期,它又是怎么樣的呢?

三、軟件架構的重要性

為什么說一個軟件架構是很重要的呢?直接編程直接開發,多EASY?請看下面幾點:

軟件架構能夠滿足系統的品質

架構設計使受益人達成一致的目標

架構設計能夠支持計劃編制過程

架構設計對系統開發的指導性

架構設計能夠有效地管理復雜性

架構設計為復用奠定了基礎

架構設計能夠降低維護費用

架構設計能夠支持沖突分析

四、什么是好的軟件架構

這個問題,可能大家一直都在問,包括一些IT企業也在問,對于這個問題的回答,可能不僅僅是一個簡單的語句或者是定義就可以回答的出的,我們來看下面的幾個形象的例子:

這個是什么東東呢?樂高玩具,樂高玩具大家肯定都玩過吧?

它即可以以一個完整的模型賣給你,你也可以把它全部打碎了重新從一個模型自由的再去組裝成另一個模型,因為每一個樂高的模塊在橫向、堅向里都有標準的接口,這就是我們常說的高內聚、低耦合。

五、什么又是糟糕的架構

大家看看上面這幅圖是什么?

一個是清代的八股文,一個是孔乙己。

還記得回字的四種寫法嗎?

那么你專門就研究回字的四種寫法 ,但你有沒有想過我把回字折開來又可以變成幾個字?是否好折?

六、要知道最時髦的并不一定是最好的

為什么M1A2和阿帕奇直升機里不用A8處理器,或者是最新的奔騰處理器啊?實用、經過檢驗的才是最好的!

七、成功的軟件又是怎么樣的呢

我們談的是軟件架構,架構的最終體現是一個軟件,那么什么是成功的架構什么是成功的軟件呢?

大家看左邊的這個圖,是美國的“阿利伯克級”宙斯盾驅逐艦,右邊的是印度模仿美國的宙斯盾自己設計和建造的”德里級”的“咖喱盾”驅逐艦。

兩艘戰艦一對比,怎么樣?

一個是模塊化的設計,整體線條流暢,戰損時模塊可以任意替換。

一個卻是拼拼湊湊,線路外露,甲板上布滿了各種電子設備和天線,一旦戰損,極難維護

八、架構之美

架構,架構,到底什么是架構?我以前上大學時有一個70多歲的老教授,他上課每講20分鐘左右,需要2個同學”架“著去上一次WC,我們的架構師當然不是指這種”架構濕“。那么我們一直說的架構,到底它是一個什么樣的東西呢? 怎么樣又可以做出一個完美的架構呢?

8.1 架構就像是迷蹤拳

動作輕靈敏捷,靈活多變

它其實違背一切傳統拳法,因此可以克敵制勝。

8.2 架構就像是獨孤九劍

破劍式、破槍式、無招勝有招,它發源于傳統武術,又擴展了傳統的武術

8.3 架構就像是一件藝術珍品

有時一個看似簡單的架構往往卻是一件藝術珍品。

大家知道這幅畫嗎?他是挪威畫家蒙克的一幅作品叫”吶喊“,蒙克這個人是一個瘋子,這幅畫很簡單,就是隨手涂鴉一般,但是大家可知道這幅畫值多少錢嗎?2012年該畫在紐約蘇富比拍賣上以1.19億美元被拍賣。

九、架構的意境

一個好的架構不應該受限于框架,受限于語言,受限于技術,受限于各種條條框框,它是一種意境。

架構時需要考慮的幾個基本因素

十、JAVA通用領域的相關技術

當然,我們這邊主要說的是JAVA,那么作為一名學習JAVA、J2EE的架構師來說,要具備一些什么樣的技能才能達到架構師的水平呢?

上面這張圖,我們這樣來看,它分為3個部分:

頂部,是我們需要掌握的一些技術領域的知識,它可以使我們應對通用領域如電商、企業OA、銀行保險金融等領域的一些解決方案和設計

中部,為了達到頂部這些技術我們需要了解的一些中間件、數據庫、開發框架這些知識,它是一根支柱

底部,底部呢?它是我們的基礎,為鋪設我們通向中間或者更上層的一個基石,這也是為什么大家有時發覺我的博客和其它博客有不一樣的地方,不僅僅有編程還有”中間“的這一層即數據庫、性能、安全、框架搭建這些東西混合在里面的原因,因為我不希望大家通過閱讀完了我的博客還只是停留在一個碼農、碼工、螺絲釘的這種水平上。

十一、架構師的職能

說了這么多架構,我們來說說架構師吧。

大家看到了沒有,架構師的第一職責就是關注:non-functional requirements,即非功能性需求。

很多人對功能性需求和非功能性需求的界線劃分還是不清楚,我這邊舉2個例子說明一下吧:

11.1 功能性需求

頁面查詢,這個查詢是關聯哪些哪些數據庫表,因為我的業務是有這樣這樣的需求,在界面A里點了一個按鈕,然后彈出窗口B,在窗口B里要顯示什么樣的數據,最后界面A里點完后,當我打開界面B時哪塊數據已經隨之發生了更改。

11.2 非功能性需求

我們的系統查詢速度小于2S,是否考慮使用異步查詢、使用隊隊列機制,系統要求可以容納1000個并發,這個系統要可以做成插件式的,要可以橫向擴展,要符合XXX協議,這個Webservice要做成SOAP HEAD內帶有BASIC認證,還是做成符合NTLM的認證的,還是使用令牌環認證的?這個下拉框要做成即可輸入又可以下拉的,這塊認證要訪問LDAP?

很多以業務為主的項目型公司認為架構師就是trouble shooting(即排錯、查錯的意思,就是有錯誤、出問題了再找架構師),把架構師當成了fireman(救火員),可是你不自己想想為什么出了問題架構師過來2秒、2分鐘或者1天半可以解決你們1個月幾十人天天到零晨也解決不了的問題呢?嗯?

解決了說這是人家應該的,解決不了,說人家架構師不合格呢?是不是我們應該從這個軟件最早的框架上、架構上去發現一下問題呢?

架構師啊,這不是一個trouble shooting的問題啊。

在節前我也進行了一些面試,出于純技術角度來說,即走架構師,TECH LEADER這樣的路線的侯選人。

我還是發覺了不少的問題這也是中國的一個通病:即我們的程序員,很多時候不是在做程序,而更多時候是在做業務邏輯,成了一個某一領域的業務人員了。

當然,我們的程序員在其職業生涯的前3年、4年都是做某一塊領域的代碼的,這個是沒有問題的,但是請一定一定記住,我們是編碼,是IT,是程序員,不是“業務人員”!!!

什么是IT?什么是程序員?什么是Tech Leader?什么是架構師?

這個問題大家有必要好好的去問一下自己,去好好的想一下,架構師的要求是什么?

我這邊隨便說一些東西:相信對一些要走技術道路的同學們是有幫助的:

TCP/IP協議,加密解密,計算機原理(增補反碼),JPG碼,MPEG2-3協議,邏輯電子電路,計算機編譯器原理(堆、棧、隊列),這些東西你平時工作時一直用到嗎?這些是你一直關注的底層嗎?

如果你是要走技術路線,一定一定請記得“數據庫+ASP/JSP”不是技術,它只比表單制作,報表制作人員稍微強了那么一點點。

請一定記住,技術路線關注的是非功能性需求,非功能性需求啊,就是一種一通百通的東西,有了這塊底蘊,任何需求和你說清了,對你來說是沒有任何“難度”的,或者你再去學,是可以舉一反三的啊。

最近一直面試一些侯選人,做架構師的,在此過程中我對此深有感受,找一個程序員開發不難,招一個架構師,難。。。唉,我覺得大家有必要要考慮一下,如果我走技術路線,我缺什么,我怎么補,還要關注些什么?

科技是第一生產力,管理方法論中的所謂的六SIGMA即六西格瑪的第一條就是“技術人材是當下企業的第一生產力”,大家看看能夠發財的是哪些公司?阿里,淘寶,支付寶,GOOGLE, 騰迅,互聯網,高科技等等等一些企業,他們靠的不是業務邏輯,而是真正的技術,這足以說明問題了,所以大家如果要走技術道路,請多關注一下更細節,更底層的東西吧。

這也是為什么我在之前的博文中所擅述的那些東西的原因,可見企業IT項目開發之七宗罪

第一宗罪:重業務不重技術

第二宗罪:編程開發人員淪為業務開發人員、淪為碼農

第三宗罪:IT市場淪為自由市場、小菜場一樣的叫買

第四重罪:技術無用論的誕生

第五宗罪:閉門造車,與實際脫節,完全拋棄業務

第六宗罪:消極怠工

第七宗罪:不思進取

十二、架構師的分類

一般會把架構師分為:

業務架構師即BA

系統架構師SA

其實從嚴格意義上業說架構師是可以分成三類的:

一般就是把系統架構師和應用架構師合成一類。這個從本質上來講倒沒有什么太大的區別,不傷大雅。

十三、架構師會做什么

一個架構師在一個團隊中或者說在一個企業中它具體要做哪些日常工作呢?

十四、架構師并不是萬能的

架構師很牛B,可是架構師也是人,他不是超人。

十五、架構師需要掌握的軟技巧

技術,是架構師的Hard Skill,那么架構師的Soft Skill有哪些呢?

十六、架構師不是皇冠上的明珠

大家一定一定要記住,架構師決不是像大家想像中的那樣,是所謂的皇冠上的明珠,架構師承擔的責任是相當的大的。

十七、如何成為架構師

人類是如何進化的?

學習、使用工具、社會協作性、不斷的總結經驗。

十八、架構師也會退化到比一般的程序員都不如

如果停止了學習的步伐,那么。。。。。。

十九、談架構師的自我修養

19.1 學習之道

19.2 需要掌握的基本功中的基本功

大家注意,上面這個列表在學習時是有先后順序的,從上至下分別為第一步,第二步,第三步。。。。。。不要覺得枯燥,你可以去試試,真的,被折騰著和被快樂著。

19.3 Bad artist copy good artist steal

19.4 放正你的心態

19.5 不斷的需要自我激勵

成功的唯一方法便是,承認現實,超越現實,鼓起勇氣并善用它。

學會平靜的對待生活中的不完美之處,適應自己的情緒,了解如何讓它們自然宣泄出去

學習如何把不完美的地方轉換成我們的優勢,激發我們的創造力

自我激勵,不管外部條件是否有激勵性,找到一種激發最佳狀態的情緒,學習如何在我們的意識中制造一些波動來激勵我們前進

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容