在電影制作術(shù)語中,軟件項(xiàng)目經(jīng)理被稱作制作人,因?yàn)樗麄儧Q定需要做什么事情。而軟件構(gòu)架師就是導(dǎo)演,他來決定所作的事情是否正確,并且他要保證產(chǎn)品符合投資人的要求。下面這篇文章就是描述軟件構(gòu)架師的。
現(xiàn)在我們可以把注意力集中到創(chuàng)建構(gòu)架的人員——構(gòu)架師身上。軟件構(gòu)架師被證明是軟件開發(fā)項(xiàng)目過程中最具挑戰(zhàn)性的角色。軟件構(gòu)架師是項(xiàng)目的技術(shù)領(lǐng)袖,并且從技術(shù)角度來講,他承擔(dān)了項(xiàng)目成敗的責(zé)任。
下面是電氣及電子工程師協(xié)會(huì)給“構(gòu)架師”做的定義:
軟件構(gòu)架師是技術(shù)主管
首先,軟件構(gòu)架師是技術(shù)主管,這意味著除了他要有技術(shù)上的技能外,還要有很好的領(lǐng)導(dǎo)才能。構(gòu)架師的領(lǐng)導(dǎo)能力在團(tuán)隊(duì)中和項(xiàng)目質(zhì)量控制中起著十分重要的作用。
在團(tuán)隊(duì)中,構(gòu)架師是項(xiàng)目的技術(shù)總管,他需要有豐富的知識(shí)背景,以便作出技術(shù)上的決定。相對(duì)于構(gòu)架師來說,項(xiàng)目經(jīng)理是來管理項(xiàng)目的資源,時(shí)間進(jìn)度和花費(fèi)的。使用電影制作來做類比的話,項(xiàng)目經(jīng)理就是制片人(他要確定工作被完成了),而構(gòu)架師是導(dǎo)演(他需要確定工作被正確的完成)。由于他們?cè)陧?xiàng)目中所處的位置,構(gòu)架師和項(xiàng)目經(jīng)理是公眾人物,在一個(gè)團(tuán)隊(duì)中,他們是整個(gè)項(xiàng)目所涉及的所有人員的聯(lián)系樞紐。構(gòu)架師應(yīng)該為建立軟件構(gòu)架爭(zhēng)取投資,并且要明確建立軟件構(gòu)架能給組織帶來的價(jià)值。
構(gòu)架師還要把團(tuán)隊(duì)組織在構(gòu)架周圍,并且要積極地投入到計(jì)劃活動(dòng)上,因?yàn)橐褬?gòu)架轉(zhuǎn)化成為完成任務(wù)的先后順序,這樣才能及時(shí)地確定在什么位置需要什么技術(shù)。有一點(diǎn)需要注意,由于構(gòu)架師能否成功與團(tuán)隊(duì)的整體水平有很大關(guān)系,所以構(gòu)架師應(yīng)該參與團(tuán)隊(duì)新成員錄用的面試。
根據(jù)構(gòu)架師所擁有的能力,他可以同時(shí)參與其他團(tuán)隊(duì)的工作。構(gòu)架師需要根據(jù)具體的實(shí)例情況來做領(lǐng)導(dǎo)決定,并且在決定過程中要展現(xiàn)出足夠的自信。一個(gè)成功的構(gòu)架師是以人為導(dǎo)向的,并且像一個(gè)教練一樣給他的團(tuán)隊(duì)安排工作時(shí)間。這對(duì)于小組的成員來說是有好處的,他們可以及時(shí)得到幫助。這是整個(gè)團(tuán)隊(duì)的一個(gè)巨大財(cái)富。
構(gòu)架師還要把精力放在切實(shí)工作的交付上,他是技術(shù)方面的推進(jìn)力量。構(gòu)架師需要做決定(經(jīng)常需要在壓力下做決定),并且要保證這些決定是經(jīng)過成員之間的交流的,并且確保它能夠執(zhí)行。
架構(gòu)師可能是有一個(gè)小組來完成的
下面介紹一個(gè)人和一個(gè)角色的區(qū)別。一個(gè)人可以扮演很多角色(例如,Mary是一個(gè)開發(fā)人員,同時(shí)也是一個(gè)測(cè)試人員),同時(shí),一個(gè)角色可以有很多的人扮演(例如,Mary和John都是測(cè)試人員)。構(gòu)架師的角色需要非常廣泛的技術(shù),這就為什么構(gòu)架師的角色經(jīng)常是很多人同時(shí)擔(dān)當(dāng)。這樣可以使技術(shù)知識(shí)在小組中傳播開來,每一個(gè)人都把他的或者她的經(jīng)驗(yàn)帶到工作中。特別是當(dāng)某種技術(shù)同時(shí)被商業(yè)部門和技術(shù)小組理解的時(shí)候,這項(xiàng)技術(shù)就會(huì)最大程度的傳播開來。小組所作的結(jié)果,需要被"平衡。" 貫穿整個(gè)文章的術(shù)語"構(gòu)架師",是指的一個(gè)人或者整個(gè)小組的成員。
一個(gè)小組是一些擁有各種技術(shù)的人的集合,他們之間有共同需要完成的目標(biāo),并且之間相互負(fù)責(zé)任。2、如果一個(gè)小組來擔(dān)當(dāng)構(gòu)架師的角色,那么就需要有一個(gè)人作為這些構(gòu)架師的領(lǐng)導(dǎo),他要擁有整體的前景,并且需要調(diào)節(jié)構(gòu)架師小組之間的問題。如果沒有這種調(diào)節(jié),構(gòu)架師小組成員之間就會(huì)存在危險(xiǎn),他們可能不會(huì)建立出一個(gè)緊密地構(gòu)架或者決策不會(huì)被成功的完成。
現(xiàn)在有一個(gè)新的概念在構(gòu)架師小組中被提出:為了使成員之間達(dá)到共同的目的和目標(biāo),團(tuán)隊(duì)為構(gòu)架師小組建立并發(fā)布了一個(gè)章程。
好的構(gòu)架師知道自己的強(qiáng)項(xiàng)和弱點(diǎn)在哪里。無論構(gòu)架師的角色被一個(gè)人還是一個(gè)小組擔(dān)當(dāng),他們背后都有"值得信賴的顧問"的支持。他們可以通過和其他構(gòu)架師協(xié)同工作來彌補(bǔ)自身在某些技術(shù)方面的不足。最好的構(gòu)架通常是被一個(gè)構(gòu)架師小組建立的,而不是一個(gè)人。原因很簡(jiǎn)單,一個(gè)小組的力量總要比一個(gè)人的知識(shí)豐富的多。
構(gòu)架師小組的概念有一個(gè)缺陷,他們有時(shí)被團(tuán)隊(duì)中的其他人認(rèn)為是在"象牙塔"里工作,因?yàn)樗麄兊漠a(chǎn)品經(jīng)常是很有智慧的但卻沒有使用價(jià)值。這種誤解可以從開始就把它減到最。1)確保所有的涉眾都能積極地協(xié)商,2)不斷的交流構(gòu)架和它的價(jià)值,3)在執(zhí)行過程中要有組織策略的意識(shí)。
構(gòu)架師應(yīng)該理解軟件開發(fā)過程
構(gòu)架師應(yīng)該對(duì)軟件開發(fā)過程有正確的估計(jì),因?yàn)檫@個(gè)過程確保小組中的所有成員使用同等的方式工作。一個(gè)好的過程需要定義各個(gè)角色的工作承擔(dān)責(zé)任,產(chǎn)品的建立,不同角色之間的協(xié)同工作等等。由于構(gòu)架師每天的工作都需要和很多小組成員打交道,所以對(duì)于他們來說了解工作的職責(zé)是非常重要的。在每天的工作中,開發(fā)小組經(jīng)常要找到構(gòu)架師,了解該做什么工作以及怎么去做。這就是軟件構(gòu)架師和項(xiàng)目經(jīng)理之間的細(xì)微差別。
軟件構(gòu)架師需要有商業(yè)領(lǐng)域的知識(shí)
盡管擁有了豐富的軟件開發(fā)經(jīng)驗(yàn),但是我們還期望(或者是要求)構(gòu)架師擁有一定商業(yè)領(lǐng)域的知識(shí)。
一個(gè)領(lǐng)域是在一個(gè)范圍內(nèi)工作的從業(yè)人員使用一系列特定的概念和術(shù)語來表達(dá)這個(gè)領(lǐng)域內(nèi)的知識(shí)。這種知識(shí)將會(huì)使構(gòu)架師更好的理解系統(tǒng)的需求,并把精力投身于其中,確保系統(tǒng)的需求是合適的——例如,從構(gòu)架師領(lǐng)域的角度出發(fā),需求是要被準(zhǔn)確捕獲的。經(jīng)常會(huì)出現(xiàn)這樣的情況,一個(gè)特定系列的構(gòu)架樣式可以被應(yīng)用到與它相聯(lián)系的一個(gè)特定的領(lǐng)域中。如果構(gòu)架師知道這種映射關(guān)系,那么對(duì)他的工作將是很大的幫助。
因此,一個(gè)好的構(gòu)架師將會(huì)在軟件開發(fā)和商業(yè)領(lǐng)域的知識(shí)上面做出權(quán)衡。如果一個(gè)構(gòu)架師具有很好的軟件開發(fā)經(jīng)驗(yàn)但是不了解商業(yè)領(lǐng)域,那么他的解決方案可能不會(huì)解決實(shí)際的問題,而僅僅只能反映出構(gòu)架師是多么精通他的專業(yè)。
另外一個(gè)構(gòu)架師需要精通商業(yè)領(lǐng)域知識(shí)的原因是,構(gòu)架師要能夠預(yù)見軟件構(gòu)架隨時(shí)可能出現(xiàn)的變化。由于軟件構(gòu)架受它被配置的環(huán)境的影響非常大,所以對(duì)商業(yè)領(lǐng)域有正確理解的構(gòu)架師,可以從軟件構(gòu)架的角度,對(duì)不斷變化的情況做出更有遠(yuǎn)見的決策。例如,如果構(gòu)架師發(fā)覺哪種新的標(biāo)準(zhǔn)在未來很可能成為主流,那么他將會(huì)使自己的軟件構(gòu)架在可用壽命內(nèi)符合這種標(biāo)準(zhǔn)。
軟件構(gòu)架師應(yīng)該擁有技術(shù)知識(shí)
軟件構(gòu)架的一個(gè)特定方面需要有一定的專業(yè)知識(shí),因此一個(gè)構(gòu)架師必須具備這個(gè)水平的知識(shí)才能夠勝任他的工作?墒菢(gòu)架師不必成為技術(shù)專家,這體現(xiàn)了這篇文章第一部分的思想——構(gòu)架師宏觀上的決策。因此,構(gòu)架師只需要了解宏觀上的問題,而不必關(guān)心細(xì)節(jié)化的事情。由于技術(shù)的變化過于頻繁,所以構(gòu)架師要隨時(shí)與這些變化保持同步。
軟件構(gòu)架師應(yīng)該擁有很好的設(shè)計(jì)技巧
雖然軟件構(gòu)架并不僅僅是設(shè)計(jì),但是設(shè)計(jì)無疑是很重要的一個(gè)組成部分。構(gòu)架師應(yīng)該擁有很好的設(shè)計(jì)技巧,因?yàn)檐浖臉?gòu)架包含整個(gè)軟件的關(guān)鍵性設(shè)計(jì)決策。這種決定包括軟件主要結(jié)構(gòu)的設(shè)計(jì)決策,特定部分的選擇以及指導(dǎo)的說明文檔等等。為了確保系統(tǒng)構(gòu)架的完整性,上面那些要素都要被特別的應(yīng)用到設(shè)計(jì)中,這對(duì)整個(gè)系統(tǒng)的成功完成有很大的作用。因此這些要素需要有固定的擁有設(shè)計(jì)技巧的人來負(fù)責(zé)——這個(gè)人就是構(gòu)架師。