- 相關(guān)推薦
什么是系統架構師-如何成為系統架構師
系統架構師是在某一個(gè)技術(shù)領(lǐng)域有深刻專(zhuān)研的技術(shù)達人?還是在技術(shù)面上涉獵廣泛的通才?抑或有個(gè)五六年的工作經(jīng)驗之后就自動(dòng)變成了“架構師”?相信下面的文章對你的疑惑有所幫助!
新入門(mén)或沒(méi)有架構設計經(jīng)驗的程序員剛開(kāi)始的時(shí)候會(huì )有種不知所措的感覺(jué),但其實(shí)架構設計是件很容易的事,它只是軟件系統開(kāi)發(fā)中的一個(gè)環(huán)節而已,整個(gè)軟件系統的開(kāi)發(fā)和維護以及變更還涉及到很多事情,包括技術(shù)、團隊、溝通、市場(chǎng)、環(huán)境等等。
雖然架構設計是件容易的事情,但也不是大多數沒(méi)有架構設計經(jīng)驗的程序員想象中的畫(huà)畫(huà)框圖那么簡(jiǎn)單。把幾臺服務(wù)器一擺,每一臺服務(wù)器運行什么軟件分配好,然后用網(wǎng)絡(luò )連接起來(lái),似乎每個(gè)企業(yè)級應用都是如此簡(jiǎn)間單單的幾步。
但現實(shí)生活中的軟件系統實(shí)實(shí)在在可以用復雜大系統來(lái)形容,從規劃、開(kāi)發(fā)、維護和變更涉及到許許多多的人和事。架構設計就是要在規劃階段都把后面的事情盡量把握進(jìn)來(lái),要為穩定性努力,還要為可維護性、擴擴展性以及諸多的性能指標而思前想后。除了技術(shù)上的考慮,還要考慮人的因素,包括人員的組織、軟件過(guò)程的組織、團隊的協(xié)作和溝通等。
另外,架構設計還需要方法論的指導。這些方法論的思路包括,至上而下的分析,關(guān)注點(diǎn)分離,橫向/縱向模塊劃分等。
有時(shí)候覺(jué)得架構設計決策就像是瀏覽Google Earth,實(shí)際上反映的是一種自上而下的決策過(guò)程。對問(wèn)題的分解是軟件思維的基本素質(zhì),可以有橫向分解、縱向分解以及兩者的結合。能不能有效快速準確的分解問(wèn)題,是軟件開(kāi)發(fā)人員需要首先訓練的項目。
另外,架構設計中圖形化的工具非常有用,它能把系統的結構和運作機制以圖形化的方式表達出來(lái)。也正因為這樣才有了架構設計就是畫(huà)框圖的誤會(huì )。再者,架構設計是一個(gè)工程性質(zhì)的工作,對當事人的實(shí)際從業(yè)經(jīng)驗要求較高。只有對市場(chǎng)上的各種技術(shù)有較全面的了解之后才有可能設計出一個(gè)盡可能滿(mǎn)足各種設計約束的架構。
在架構師需要具備的能力上,架構師首先必須具有豐富的開(kāi)發(fā)經(jīng)驗,是個(gè)技術(shù)主管。因為他必須清楚什么是可以實(shí)現的,實(shí)現的方式有哪些,相應的難度怎么樣,實(shí)現出來(lái)的系統面對需求變化的適應性等一系列指標。
另外,需要對面向過(guò)程、面向對象、面向服務(wù)等設計理念有深刻的理解,可以快速的察覺(jué)出實(shí)現中的問(wèn)題并提出相應的改進(jìn)(重構)方案(也就是通常說(shuō)的反模式)。這些都需要長(cháng)期的開(kāi)發(fā)實(shí)踐才能真正的體會(huì )到,單從書(shū)本上很難領(lǐng)會(huì )到,就算當時(shí)理解了也不一定能融會(huì )到實(shí)踐中去。
在技術(shù)能力上,軟件架構師最重要也是最需要掌握的知識是構件通信機制方面的知識,包括進(jìn)程內通信(對象訪(fǎng)問(wèn)、函數調用、數據交換、線(xiàn)程同步等)以及進(jìn)程外(包括跨計算機)的通信(如RMI、DCOM、Web Service)。
在WEB應用大行其道的今天,開(kāi)發(fā)者往往對服務(wù)器間的通信關(guān)注的比較多,而對進(jìn)程內的通信較少關(guān)注。進(jìn)程外跨機器通信是構建分布式應用的基石,它是架構設計中的鳥(niǎo)瞰視圖;而進(jìn)程內的通信是模塊實(shí)現的骨架,它是基石的基石。如果具體到一個(gè)基于.Net企業(yè)級架構設計,首先需要的是語(yǔ)言級別的認識,包括.NET的CLR、繼承特性、委托和事件處理等。
然后是常用解決方案的認識,包括ASP.NET Web Service、.NET Remoting、企業(yè)服務(wù)組件等?傊,豐富的開(kāi)發(fā)實(shí)踐經(jīng)驗有助于避免架構師紙上談兵式的高來(lái)高去,給代碼編寫(xiě)人員帶來(lái)實(shí)實(shí)在在的可行性。
其次,具有足夠的行業(yè)業(yè)務(wù)知識和商業(yè)頭腦也是很重要的。行業(yè)業(yè)務(wù)知識的足夠把握可以給架構師更多的擁抱變化的能力,可以在系統設計的時(shí)候留出一些擴展的余地來(lái)適應可能來(lái)臨的需求變化。
有經(jīng)驗的設計人員可能都碰到過(guò)這樣的事,一廂情愿的保留接口在需求變化中的命中率非常低。也就是說(shuō),在系統設計之初為擴展性留下來(lái)的系統接口沒(méi)能在需求變化的洪流中發(fā)揮真正的作用,因為需求的變化并沒(méi)有按照預想的方向進(jìn)行,到最后還是不得不為變化的業(yè)務(wù)重新設計系統。
這就是因為對業(yè)務(wù)知識的理解和對市場(chǎng)或者商業(yè)的判斷沒(méi)有達到一個(gè)實(shí)用的、可以為架構擴展性服務(wù)的水平。
再次,架構設計師對人的關(guān)注必須提升到架構設計之初來(lái)納入考慮的范圍,包括溝通以及對人員素質(zhì)的判斷。軟件過(guò)程是團隊協(xié)作共同構建系統的過(guò)程,溝通能力是將整個(gè)過(guò)程中多條開(kāi)發(fā)線(xiàn)粘合在一起的膠水。
大家都應該碰到過(guò)事后說(shuō)“原來(lái)是這樣啊,我不知道啊”或者某個(gè)開(kāi)發(fā)人員突然高聲呼喊“為什么這里的數據沒(méi)有了”之類(lèi)的。溝通的目的就是盡量避免多條開(kāi)發(fā)線(xiàn)的混亂,讓系統構建過(guò)程可以有條理的高效進(jìn)行。
另外,對人的關(guān)注還表現在對團隊成員的素質(zhì)判斷上,比如哪些開(kāi)發(fā)人員對哪些技術(shù)更熟悉,或者哪些開(kāi)發(fā)人員容易拖進(jìn)度等。只有合理的使用人力資源,讓合適的人做合適的事情才能讓整個(gè)軟件過(guò)程更加高效。
另外,架構師應時(shí)刻注意新軟件設計和開(kāi)發(fā)方面的發(fā)展情況,并不斷探索更有效的新方法、開(kāi)發(fā)語(yǔ)言、設計模式和開(kāi)發(fā)平臺不斷很快地升級,軟件架構師需要吸收這些新技術(shù)新知識,并將它們用于軟件系統開(kāi)發(fā)工作中。
但對新技術(shù)的探索應該在一個(gè)理性的范圍內進(jìn)行,不能盲目的跟風(fēng)。解決方案提供商永遠都希望你能使用它提供的最新技術(shù),而且它們在推廣自己的解決方案的時(shí)候往往是以自己的產(chǎn)品為中心,容易給人錯覺(jué)。比如數據庫,往往讓人覺(jué)得它什么都能做,只要有了它其它什么都不重要了。
但事實(shí)上并不是如此,對于小型應用可以將許多業(yè)務(wù)邏輯用script的方式放入數據庫中,但很少看到大型應用采用這樣的做法。對于新東西需要以一種比較的觀(guān)點(diǎn)來(lái)判斷,包括橫向的比較和縱向的比較,最后得出一些性能、可移植性以及可升級等指標。
另外,新入行的開(kāi)發(fā)人員往往關(guān)心新技術(shù)動(dòng)向而忽略了技術(shù)的歷史,而從DOS時(shí)代一路殺過(guò)來(lái)的開(kāi)發(fā)者就對現在的技術(shù)體系有較全面的把握。
構架師不是通過(guò)理論學(xué)習可以搞出來(lái)的,不學(xué)習并且親自實(shí)踐相關(guān)知識肯定是不行的。就像前面說(shuō)到的,架構設計是一個(gè)工程性質(zhì)的事情,只有在不斷實(shí)踐的基礎上才能逐漸熟悉起來(lái)。
實(shí)踐的內容并不是去深挖各種語(yǔ)言的特性,因為系統架構師是設計應用系統架構而不是設計語(yǔ)言(除非你是要實(shí)現DSL)。更多的時(shí)候需要帶著(zhù)一種比較的眼光去實(shí)踐,把不同的實(shí)現方式下的優(yōu)缺點(diǎn)做個(gè)總結,做到自己心里有數,等具體的上下文環(huán)境下才好判斷采用什么樣的方式方法。
把基礎打牢的同時(shí)掌握一定的方法,架構設計不是想象中的那么難。
【什么是系統架構師-如何成為系統架構師】相關(guān)文章:
如何成為優(yōu)秀的系統架構師06-03
系統架構師是做什么的12-30
系統架構師是干什么的01-12
系統架構師的就業(yè)前景分析01-11
系統架構師必須具備哪些能力05-07
系統架構師性能知識整理12-29
如何成為合格的LINUX系統管理員08-07
j2ee架構師介紹08-03
OA系統審批什么12-28
如何搭建系統CSS架構12-31