架構(gòu)師的主要職責(zé)和一些誤區(qū)
架構(gòu)師需要參與項(xiàng)目開發(fā)的全部過程,包括需求分析、架構(gòu)設(shè)計、系統(tǒng)實(shí)現(xiàn)、集成、測試和部署各個階段,負(fù)責(zé)在整個項(xiàng)目中對技術(shù)活動和技術(shù)說明進(jìn)行指導(dǎo)和協(xié)調(diào)。
架構(gòu)師主要職責(zé)有4條:
1、確認(rèn)需求
在項(xiàng)目開發(fā)過程中,架構(gòu)師是在需求規(guī)格說明書完成后介入的,需求規(guī)格說明書必須得到架構(gòu)師的認(rèn)可。架構(gòu)師需要和分析人員反復(fù)交流,以保證自己完整并準(zhǔn)確地理解用戶需求。
2、系統(tǒng)分解
依據(jù)用戶需求,架構(gòu)師將系統(tǒng)整體分解為更小的子系統(tǒng)和組件,從而形成不同的邏輯層或服務(wù)。隨后,架構(gòu)師會確定各層的接口,層與層相互之間的關(guān)系。架構(gòu)師不僅要對整個系統(tǒng)分層,進(jìn)行“縱向”分解,還要對同一邏輯層分塊,進(jìn)行“橫向”分解。
軟件架構(gòu)師的功力基本體現(xiàn)于此,這是一項(xiàng)相對復(fù)雜的工作。
3、技術(shù)選型
架構(gòu)師通過對系統(tǒng)的一系列的分解,最終形成了軟件的整體架構(gòu)。技術(shù)選擇主要取決于軟件架構(gòu)。
Web Server運(yùn)行在Windows上還是Linux上?數(shù)據(jù)庫采用MSSql、Oracle還是Mysql?需要不需要采用MVC或者Spring等輕量級的框架?前端采用富客戶端還是瘦客戶端方式?類似的工作,都需要在這個階段提出,并進(jìn)行評估。
架構(gòu)師對產(chǎn)品和技術(shù)的選型僅僅限于評估,沒有決定權(quán),最終的決定權(quán)歸項(xiàng)目經(jīng)理。架構(gòu)師提出的技術(shù)方案為項(xiàng)目經(jīng)理提供了重要的參考信息,項(xiàng)目經(jīng)理會從項(xiàng)目預(yù)算、人力資源、時間進(jìn)度等實(shí)際情況進(jìn)行權(quán)衡,最終進(jìn)行確認(rèn)。
4、制定技術(shù)規(guī)格說明
架構(gòu)師在項(xiàng)目開發(fā)過程中,是技術(shù)權(quán)威。他需要協(xié)調(diào)所有的開發(fā)人員,與開發(fā)人員一直保持溝通,始終保證開發(fā)者依照它的架構(gòu)意圖去實(shí)現(xiàn)各項(xiàng)功能。
架構(gòu)師與開發(fā)者溝通的最重要的形式是技術(shù)規(guī)格說明書,它可以是UML視圖、Word文檔,Visio文件等各種表現(xiàn)形式。通過架構(gòu)師提供的技術(shù)規(guī)格說明書,保證開發(fā)者可以從不同角度去觀察、理解各自承擔(dān)的子系統(tǒng)或者模塊。
架構(gòu)師不僅要保持與開發(fā)者的溝通,也需要與項(xiàng)目經(jīng)理、需求分析員,甚至與最終用戶保持溝通。所以,對于架構(gòu)師來講,不僅有技術(shù)方面的要求,還有人際交流方面的要求。
架構(gòu)師的誤區(qū)
1、架構(gòu)師就是項(xiàng)目經(jīng)理
架構(gòu)師不是項(xiàng)目經(jīng)理。項(xiàng)目經(jīng)理側(cè)重于預(yù)算控制、時間進(jìn)度控制、人員管理、與外部聯(lián)系和協(xié)調(diào)等等工作,具備管理職能。一般小型項(xiàng)目中,常見項(xiàng)目經(jīng)理兼架構(gòu)師。
2、架構(gòu)師負(fù)責(zé)需求分析
架構(gòu)師不是需求分析員。需求分析人員的工作是收集需求和分析需求,并與最終用戶、產(chǎn)品經(jīng)理保持聯(lián)系。架構(gòu)師只對最終的需求審核和確認(rèn),提出需求不清和不完整的部分,他會跟需求分析員時刻保持聯(lián)系。架構(gòu)師是技術(shù)專家,不是業(yè)務(wù)專家。
3、架構(gòu)師從來不寫代碼
這是一個尚存爭論的問題。目前有兩種觀點(diǎn):
觀點(diǎn)1:架構(gòu)師不寫代碼,寫代碼純體力活,架構(gòu)師寫代碼大材小用。架構(gòu)師把UML的各種視圖交給開發(fā)人員,如果有不明確的地方,可以與架構(gòu)師隨時溝通。
觀點(diǎn)2:架構(gòu)師本來自于程序員,只是比程序員站的層面更高,比程序員唯一多的是經(jīng)驗(yàn)和知識,所以架構(gòu)師也免不了寫代碼。
我個人覺得這兩種說法是與架構(gòu)師的出身和所處的環(huán)境有關(guān)。
架構(gòu)師首先是一個技術(shù)角色,所以一定是來自于技術(shù)人員這個群體,比如系統(tǒng)架構(gòu)師,多是來自于運(yùn)維人員,可能本身代碼寫得并不多,或者說寫不出來很漂亮的代碼。軟件架構(gòu)師多是來自于程序員,有著程序員的血統(tǒng)和情懷,所以在項(xiàng)目開發(fā)過程中,可能會寫一些核心代碼。我們的理想是架構(gòu)師不用寫代碼,但事實(shí)上有時候過于理想。架構(gòu)師寫不寫代碼,可能取決于公司的規(guī)模、文化、開發(fā)人員的素質(zhì)等現(xiàn)實(shí)情況。