一個(gè)優(yōu)秀系統(tǒng)架構(gòu)設(shè)計(jì)師需要具備哪些條件?

系統(tǒng)架構(gòu)設(shè)計(jì)師 責(zé)任編輯:冰凍芒果 2015-08-13

添加老師微信

備考咨詢

加我微信

摘要:如果一個(gè)架構(gòu)師負(fù)責(zé)的僅僅是一個(gè)小的模塊,或者是一個(gè)小的應(yīng)用程序,那么他所能施展的空間不太多,包括操作系統(tǒng),硬件,驅(qū)動(dòng),其他模塊的接口等都是已經(jīng)確定的了,甚至自己的模塊需要哪些接口暴露給別人也都是定義好的了,那么這個(gè)架構(gòu)師該做些什么呢?從別的程序或者系統(tǒng)來(lái)看,這個(gè)應(yīng)用程序至少要具備以下幾個(gè)條件才能算是合格的:

    系統(tǒng)架構(gòu)師在軟件開發(fā)的活動(dòng)中起到了綱領(lǐng)性的作用,就像建筑設(shè)計(jì)師一樣,從大的方向來(lái)給軟件定一個(gè)基調(diào)。軟件開發(fā)中碰到的很多問題,歸咎起來(lái)都可能和當(dāng)初的架構(gòu)設(shè)計(jì)有關(guān),所以架構(gòu)師要想不成為眾矢之的,也不是容易的事情。

    各個(gè)行業(yè)甚至同一行業(yè)不同主攻方向的team都需要不同的架構(gòu)師,比如做SOA的很多架構(gòu)師實(shí)際上的職責(zé)是向用戶推銷自己的產(chǎn)品,即使有時(shí)采用其他方案更適合企業(yè)的情況,出于宣傳本公司產(chǎn)品的需要,也要貶低一番。當(dāng)然利益對(duì)架構(gòu)的影響不可避免,其他行業(yè)也存在類似的情況。但是SOA的架構(gòu)師更多做的是把自己公司的產(chǎn)品套用在客戶身上。當(dāng)架構(gòu)師是在設(shè)計(jì)自己公司的產(chǎn)品時(shí),相對(duì)來(lái)說(shuō)會(huì)客觀一些,從功能,性能,穩(wěn)定性,擴(kuò)展性,市場(chǎng)接受程度和成本等幾方面來(lái)權(quán)衡。

    如果一個(gè)架構(gòu)師負(fù)責(zé)的僅僅是一個(gè)小的模塊,或者是一個(gè)小的應(yīng)用程序,那么他所能施展的空間不太多,包括操作系統(tǒng),硬件,驅(qū)動(dòng),其他模塊的接口等都是已經(jīng)確定的了,甚至自己的模塊需要哪些接口暴露給別人也都是定義好的了,那么這個(gè)架構(gòu)師該做些什么呢?從別的程序或者系統(tǒng)來(lái)看,這個(gè)應(yīng)用程序至少要具備以下幾個(gè)條件才能算是合格的:

    1、完成此應(yīng)用程序的基本功能。如果這是一個(gè)通信程序客戶端,那么它至少應(yīng)該完成客戶端所具有的功能,通過所有的測(cè)試用例。不同的功能是需要不同的組成架構(gòu)的,從降低復(fù)雜度和提高可維護(hù)性的角度來(lái)考慮對(duì)系統(tǒng)進(jìn)行解構(gòu),往往是最直觀的做法。

    2、健壯性。這個(gè)程序不應(yīng)該輕易的crash,如果是界面程序,在面對(duì)異常情況的時(shí)候采取柔和的方式來(lái)通知用戶。如果是被別的程序所使用的庫(kù),保持健壯性更是非常重要。作為架構(gòu)師,應(yīng)該采取一定的措施來(lái)保證模塊的正確工作,至少應(yīng)該保證在出錯(cuò)的情況下能夠比較容易的區(qū)分是否是本模塊造成的。也許有人說(shuō)這是design和program的事情,但是架構(gòu)師如果不在綱領(lǐng)上制定策略和要求,實(shí)現(xiàn)上也是很難操作的。

    3、低的資源消耗。我碰到很多軟件架構(gòu),在架構(gòu)文檔里看時(shí)非常華麗,用了很多模式,一個(gè)普通的應(yīng)用要拆分成多個(gè)進(jìn)程,再用MVC分離各個(gè)模塊,加上一大堆監(jiān)聽器適配器過濾器等,可以說(shuō)模式是能帶來(lái)一些好處的,但是往往代價(jià)是更多的資源消耗,內(nèi)存占的多了,性能下降了,邏輯變得更復(fù)雜了。作為架構(gòu)師一定要權(quán)衡,而不是為了表達(dá)自己的知識(shí)能力。最好的情況是,能夠給出在各種usecase下模塊或應(yīng)用對(duì)資源的消耗程度,比如會(huì)占用多少內(nèi)存,某個(gè)接口需要多長(zhǎng)時(shí)間等。因?yàn)楝F(xiàn)在的接口定義一般都只是定義使用方式,包括函數(shù)名和參數(shù)列表,至于使用時(shí)的代價(jià)由于沒有說(shuō)明,往往成為模塊使用者和提供者之間爭(zhēng)論的焦點(diǎn)。

    從程序員的角度來(lái)講,可維護(hù)性往往更為重要,因?yàn)榫S護(hù)的階段比開發(fā)的階段更長(zhǎng),面對(duì)的壓力也更大,而且由于各種各樣的原因,經(jīng)常要一個(gè)新手來(lái)維護(hù)這個(gè)程序,如何讓新手很容易的理解它并且馬上具備解決問題的能力,對(duì)架構(gòu)師來(lái)說(shuō)也不是一件可以推卸的責(zé)任,采用常見的設(shè)計(jì)模式,制定或采用通用的代碼風(fēng)格,完善相關(guān)的文檔等等,都是好的practice。

    對(duì)于那些高層次的架構(gòu)師來(lái)說(shuō),因?yàn)槊鎸?duì)的是由很多模塊應(yīng)用組成的系統(tǒng),他所要處理的實(shí)際上如何協(xié)調(diào)各模塊關(guān)系,保證整個(gè)系統(tǒng)的功能性能和穩(wěn)定性,至少他應(yīng)該了解各個(gè)應(yīng)用所具備的功能,基于此來(lái)制定各個(gè)模塊之間的接口。在必要的時(shí)候,要去掉那些作用不大但影響整個(gè)系統(tǒng)性能和穩(wěn)定性的模塊,對(duì)各個(gè)模塊的可選功能也要做一定的限制,不能允許其無(wú)限制的膨脹。架構(gòu)師也往往面臨著選擇既有實(shí)現(xiàn)的困境,采用第三方或者開源實(shí)現(xiàn)時(shí),一定要和已有的實(shí)現(xiàn)進(jìn)行全方位的比較,在很難做出決定時(shí)寧可保持不變,或者采用小的實(shí)驗(yàn)步驟來(lái)獲取真實(shí)的數(shù)據(jù)。

    本文由希賽軟考網(wǎng)整理。


    相關(guān)推薦:

  我們?yōu)槭裁匆獔?bào)考系統(tǒng)架構(gòu)師考試?

  系統(tǒng)架構(gòu)師與產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理有什么區(qū)別?

  2015年軟考系統(tǒng)架構(gòu)設(shè)計(jì)師精選復(fù)習(xí)筆記

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢?cè)诰€老師!