首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級(jí) | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 心得技巧 > 正文

計(jì)算機(jī)軟考心得:系統(tǒng)架構(gòu)師是怎樣煉成的?

  坦率的講,除了少數(shù)對(duì)開發(fā)程序極其熱愛并愿意為之奮斗終身的編程者來說,對(duì)于大多數(shù)開發(fā)人員,寫代碼只是他們未來獲得職業(yè)提升的一個(gè)必不可少的積累階段,在做開發(fā)的時(shí)間里,他們會(huì)積極學(xué)習(xí)各種知識(shí),經(jīng)驗(yàn),培養(yǎng)自己的商業(yè)頭腦,包括擴(kuò)展自己各方面的資源,這些積累會(huì)為他們未來成為管理者或創(chuàng)業(yè)打下牢固的基礎(chǔ)。

  成為架構(gòu)設(shè)計(jì)師是廣大開發(fā)者職業(yè)發(fā)展道路之一,架構(gòu)師究竟是個(gè)什么樣的職業(yè)?需要具備什么基本能力?如何才能成為一個(gè)優(yōu)秀的架構(gòu)設(shè)計(jì)師以及架構(gòu)設(shè)計(jì)師需要關(guān)注哪些內(nèi)容?針對(duì)有關(guān)問題,本期我們?yōu)槟稍L了(微軟認(rèn)證專家,系統(tǒng)分析員,希賽顧問團(tuán)顧問,中國計(jì)算機(jī)學(xué)會(huì)會(huì)員) 張友邦,他會(huì)就相關(guān)問題與大家分享他的看法。

  “在我工作的六年多時(shí)間里,除了第一年是純粹編碼以外,其余時(shí)間都在做和架構(gòu)設(shè)計(jì)有關(guān)的工作,當(dāng)然也還一直在寫各種各樣的代碼。”張友邦認(rèn)為架構(gòu)設(shè)計(jì)可能看起來很神秘,新入門或沒有架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)的程序員剛開始的時(shí)候會(huì)有種不知所措的感覺,但其實(shí)架構(gòu)設(shè)計(jì)是件很容易的事,它只是軟件系統(tǒng)開發(fā)中的一個(gè)環(huán)節(jié)而已,整個(gè)軟件系統(tǒng)的開發(fā)和維護(hù)以及變更還涉及到很多事情,包括技術(shù)、團(tuán)隊(duì)、溝通、市場(chǎng)、環(huán)境等等。

  同時(shí),張友邦表示,雖然架構(gòu)設(shè)計(jì)是件容易的事情,但也不是大多數(shù)沒有架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)的程序員想象中的畫畫框圖那么簡(jiǎn)單。把幾臺(tái)服務(wù)器一擺,每一臺(tái)服務(wù)器運(yùn)行什么軟件分配好,然后用網(wǎng)絡(luò)連接起來,似乎每個(gè)企業(yè)級(jí)應(yīng)用都是如此簡(jiǎn)間單單的幾步。但現(xiàn)實(shí)生活中的軟件系統(tǒng)實(shí)實(shí)在在可以用復(fù)雜大系統(tǒng)來形容,從規(guī)劃、開發(fā)、維護(hù)和變更涉及到許許多多的人和事。架構(gòu)設(shè)計(jì)就是要在規(guī)劃階段都把后面的事情盡量把握進(jìn)來,要為穩(wěn)定性努力,還要為可維護(hù)性、擴(kuò)擴(kuò)展性以及諸多的性能指標(biāo)而思前想后。除了技術(shù)上的考慮,還要考慮人的因素,包括人員的組織、軟件過程的組織、團(tuán)隊(duì)的協(xié)作和溝通等。

  另外,架構(gòu)設(shè)計(jì)還需要方法論的指導(dǎo)。張友邦強(qiáng)調(diào),這些方法論的思路包括,至上而下的分析,關(guān)注點(diǎn)分離,橫向/縱向模塊劃分等。有時(shí)候覺得架構(gòu)設(shè)計(jì)決策就像是瀏覽Google Earth,實(shí)際上反映的是一種自上而下的決策過程。對(duì)問題的分解是軟件思維的基本素質(zhì),可以有橫向分解、縱向分解以及兩者的結(jié)合。能不能有效快速準(zhǔn)確的分解問題,是軟件開發(fā)人員需要首先訓(xùn)練的項(xiàng)目。另外,架構(gòu)設(shè)計(jì)中圖形化的工具非常有用,它能把系統(tǒng)的結(jié)構(gòu)和運(yùn)作機(jī)制以圖形化的方式表達(dá)出來。也正因?yàn)檫@樣才有了架構(gòu)設(shè)計(jì)就是畫框圖的誤會(huì)。再者,架構(gòu)設(shè)計(jì)是一個(gè)工程性質(zhì)的工作,對(duì)當(dāng)事人的實(shí)際從業(yè)經(jīng)驗(yàn)要求較高。只有對(duì)市場(chǎng)上的各種技術(shù)有較全面的了解之后才有可能設(shè)計(jì)出一個(gè)盡可能滿足各種設(shè)計(jì)約束的架構(gòu)。

  在談到架構(gòu)師需要具備的能力上,張友邦認(rèn)為架構(gòu)師首先必須具有豐富的開發(fā)經(jīng)驗(yàn),是個(gè)技術(shù)主管。因?yàn)樗仨毲宄裁词强梢詫?shí)現(xiàn)的,實(shí)現(xiàn)的方式有哪些,相應(yīng)的難度怎么樣,實(shí)現(xiàn)出來的系統(tǒng)面對(duì)需求變化的適應(yīng)性等一系列指標(biāo)。另外,需要對(duì)面向過程、面向?qū)ο、面向服?wù)等設(shè)計(jì)理念有深刻的理解,可以快速的察覺出實(shí)現(xiàn)中的問題并提出相應(yīng)的改進(jìn)(重構(gòu))方案(也就是通常說的反模式)。這些都需要長(zhǎng)期的開發(fā)實(shí)踐才能真正的體會(huì)到,單從書本上很難領(lǐng)會(huì)到,就算當(dāng)時(shí)理解了也不一定能融會(huì)到實(shí)踐中去。

  在技術(shù)能力上,軟件架構(gòu)師最重要也是最需要掌握的知識(shí)是構(gòu)件通信機(jī)制方面的知識(shí),包括進(jìn)程內(nèi)通信(對(duì)象訪問、函數(shù)調(diào)用、數(shù)據(jù)交換、線程同步等)以及進(jìn)程外(包括跨計(jì)算機(jī))的通信(如RMI、DCOM、Web Service)。在WEB應(yīng)用大行其道的今天,開發(fā)者往往對(duì)服務(wù)器間的通信關(guān)注的比較多,而對(duì)進(jìn)程內(nèi)的通信較少關(guān)注。進(jìn)程外跨機(jī)器通信是構(gòu)建分布式應(yīng)用的基石,它是架構(gòu)設(shè)計(jì)中的鳥瞰視圖;而進(jìn)程內(nèi)的通信是模塊實(shí)現(xiàn)的骨架,它是基石的基石。如果具體到一個(gè)基于.Net企業(yè)級(jí)架構(gòu)設(shè)計(jì),首先需要的是語言級(jí)別的認(rèn)識(shí),包括.NET的CLR、繼承特性、委托和事件處理等。然后是常用解決方案的認(rèn)識(shí),包括ASP.NET Web Service、.NET Remoting、企業(yè)服務(wù)組件等?傊,豐富的開發(fā)實(shí)踐經(jīng)驗(yàn)有助于避免架構(gòu)師紙上談兵式的高來高去,給代碼編寫人員帶來實(shí)實(shí)在在的可行性。

  其次,具有足夠的行業(yè)業(yè)務(wù)知識(shí)和商業(yè)頭腦也是很重要的。行業(yè)業(yè)務(wù)知識(shí)的足夠把握可以給架構(gòu)師更多的擁抱變化的能力,可以在系統(tǒng)設(shè)計(jì)的時(shí)候留出一些擴(kuò)展的余地來適應(yīng)可能來臨的需求變化。有經(jīng)驗(yàn)的設(shè)計(jì)人員可能都碰到過這樣的事,一廂情愿的保留接口在需求變化中的命中率非常低。也就是說,在系統(tǒng)設(shè)計(jì)之初為擴(kuò)展性留下來的系統(tǒng)接口沒能在需求變化的洪流中發(fā)揮真正的作用,因?yàn)樾枨蟮淖兓]有按照預(yù)想的方向進(jìn)行,到最后還是不得不為變化的業(yè)務(wù)重新設(shè)計(jì)系統(tǒng)。這就是因?yàn)閷?duì)業(yè)務(wù)知識(shí)的理解和對(duì)市場(chǎng)或者商業(yè)的判斷沒有達(dá)到一個(gè)實(shí)用的、可以為架構(gòu)擴(kuò)展性服務(wù)的水平。

  再次,張友邦提到,架構(gòu)設(shè)計(jì)師對(duì)人的關(guān)注必須提升到架構(gòu)設(shè)計(jì)之初來納入考慮的范圍,包括溝通以及對(duì)人員素質(zhì)的判斷。軟件過程是團(tuán)隊(duì)協(xié)作共同構(gòu)建系統(tǒng)的過程,溝通能力是將整個(gè)過程中多條開發(fā)線粘合在一起的膠水。大家都應(yīng)該碰到過事后說“原來是這樣啊,我不知道啊”或者某個(gè)開發(fā)人員突然高聲呼喊“為什么這里的數(shù)據(jù)沒有了”之類的。溝通的目的就是盡量避免多條開發(fā)線的混亂,讓系統(tǒng)構(gòu)建過程可以有條理的高效進(jìn)行。另外,對(duì)人的關(guān)注還表現(xiàn)在對(duì)團(tuán)隊(duì)成員的素質(zhì)判斷上,比如哪些開發(fā)人員對(duì)哪些技術(shù)更熟悉,或者哪些開發(fā)人員容易拖進(jìn)度等。只有合理的使用人力資源,讓合適的人做合適的事情才能讓整個(gè)軟件過程更加高效。

  另外,張友邦認(rèn)為架構(gòu)師應(yīng)時(shí)刻注意新軟件設(shè)計(jì)和開發(fā)方面的發(fā)展情況,并不斷探索更有效的新方法、開發(fā)語言、設(shè)計(jì)模式和開發(fā)平臺(tái)不斷很快地升級(jí),軟件架構(gòu)師需要吸收這些新技術(shù)新知識(shí),并將它們用于軟件系統(tǒng)開發(fā)工作中。但對(duì)新技術(shù)的探索應(yīng)該在一個(gè)理性的范圍內(nèi)進(jìn)行,不能盲目的跟風(fēng)。解決方案提供商永遠(yuǎn)都希望你能使用它提供的最新技術(shù),而且它們?cè)谕茝V自己的解決方案的時(shí)候往往是以自己的產(chǎn)品為中心,容易給人錯(cuò)覺。比如數(shù)據(jù)庫,往往讓人覺得它什么都能做,只要有了它其它什么都不重要了。但事實(shí)上并不是如此,對(duì)于小型應(yīng)用可以將許多業(yè)務(wù)邏輯用script的方式放入數(shù)據(jù)庫中,但很少看到大型應(yīng)用采用這樣的做法。對(duì)于新東西需要以一種比較的觀點(diǎn)來判斷,包括橫向的比較和縱向的比較,最后得出一些性能、可移植性以及可升級(jí)等指標(biāo)。另外,新入行的開發(fā)人員往往關(guān)心新技術(shù)動(dòng)向而忽略了技術(shù)的歷史,而從DOS時(shí)代一路殺過來的開發(fā)者就對(duì)現(xiàn)在的技術(shù)體系有較全面的把握。

  構(gòu)架師不是通過理論學(xué)習(xí)可以搞出來的,不學(xué)習(xí)并且親自實(shí)踐相關(guān)知識(shí)肯定是不行的。就像前面說到的,架構(gòu)設(shè)計(jì)是一個(gè)工程性質(zhì)的事情,只有在不斷實(shí)踐的基礎(chǔ)上才能逐漸熟悉起來。實(shí)踐的內(nèi)容并不是去深挖各種語言的特性,因?yàn)橄到y(tǒng)架構(gòu)師是設(shè)計(jì)應(yīng)用系統(tǒng)架構(gòu)而不是設(shè)計(jì)語言(除非你是要實(shí)現(xiàn)DSL)。更多的時(shí)候需要帶著一種比較的眼光去實(shí)踐,把不同的實(shí)現(xiàn)方式下的優(yōu)缺點(diǎn)做個(gè)總結(jié),做到自己心里有數(shù),等具體的上下文環(huán)境下才好判斷采用什么樣的方式方法。把基礎(chǔ)打牢的同時(shí)掌握一定的方法,架構(gòu)設(shè)計(jì)不是想象中的那么難。

  張友邦,男,微軟認(rèn)證專家,系統(tǒng)分析員,希賽顧問團(tuán)顧問,中國計(jì)算機(jī)學(xué)會(huì)會(huì)員。1980年生于四川宜賓,2002年獲得國防科技大學(xué)宇航科學(xué)與工程系空間工程專業(yè)學(xué)士學(xué)位,2004年初成立長(zhǎng)沙石斑軟件有限公司并擔(dān)任總經(jīng)理,2006年底出任廣州快網(wǎng)信息技術(shù)有限公司技術(shù)總監(jiān),2007年10月任湖南新郵信息技術(shù)有限公司軟件中心副經(jīng)理。主要研究領(lǐng)域包括軟件架構(gòu)與設(shè)計(jì)、WEB RIA、流媒體與計(jì)算機(jī)圖形圖像。受國家自然科學(xué)基金資助,于2001年發(fā)表國家級(jí)核心刊物學(xué)術(shù)論文一篇。

  相關(guān)推薦:2010年計(jì)算機(jī)軟件水平考試時(shí)間安排通知
       2009下半年計(jì)算機(jī)軟件水平考試試題答案專題
       2010年上半年全國計(jì)算機(jī)軟考報(bào)名時(shí)間匯總
文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。