概述
一個公司中針對架構(gòu)組的職責(zé)有很多,其中典型的分支有兩種。
一種技術(shù)架構(gòu),主要負(fù)責(zé)搭建技術(shù)框架,公共組件以及對產(chǎn)品技術(shù)難點的解決和處理。同時要在項目上線的過程中,對架構(gòu)的運作效率,開發(fā)效率等進(jìn)行優(yōu)化和升級。
一種是業(yè)務(wù)架構(gòu),主要跟隨產(chǎn)品團(tuán)隊一起發(fā)展。這種業(yè)務(wù)架構(gòu)師要理解具體的業(yè)務(wù),要了解業(yè)務(wù)中具體的功能要求以及功能模塊之間的關(guān)系。并且選擇合適的公共組件和技術(shù)架構(gòu),用于產(chǎn)品發(fā)展的不同階段。
很多小團(tuán)隊,技術(shù)架構(gòu)和業(yè)務(wù)架構(gòu)不再進(jìn)行拆分。很多時候一個架構(gòu)組前期負(fù)責(zé)技術(shù)選型,后期負(fù)責(zé)產(chǎn)品規(guī)劃。或者很多技術(shù)架構(gòu)的事情交給一個專門的團(tuán)隊進(jìn)行規(guī)劃。
從我們團(tuán)隊的職責(zé)需要支持整個公司的架構(gòu),我們需要兩個架構(gòu)師團(tuán)隊同時存在并且要求保持穩(wěn)定。
系統(tǒng)架構(gòu)師存在的意義
從一般意義上來說,一個公司的架構(gòu)師能力如何,將直接決定一個公司或者公司產(chǎn)品的技術(shù)路線是否先進(jìn)、技術(shù)架構(gòu)是否合理、技術(shù)積累成熟度、甚至于整個公司人員的技術(shù)水平。從這個角度上來說,系統(tǒng)架構(gòu)師對公司來說具有非常重要的意義。
系統(tǒng)架構(gòu)師的設(shè)置原則
從普遍的情況來看,為了實現(xiàn)更好的技術(shù)積累,提升代碼開發(fā)的質(zhì)量,縮短開發(fā)周期,應(yīng)該按照不同的所屬行業(yè),不同的技術(shù)路線來設(shè)置系統(tǒng)架構(gòu)師。
舉例來說:
1. 按照行業(yè)不同,照明事業(yè)部和市政事業(yè)部都應(yīng)該單獨設(shè)置架構(gòu)師。
2. 按照技術(shù)路線不同,需要分為:.NET架構(gòu)師,J2EE架構(gòu)師,Android架構(gòu)師,大數(shù)據(jù)架構(gòu)師,微服務(wù)架構(gòu)師等
系統(tǒng)架構(gòu)師的組織關(guān)系定位
1. 從項目的組織維度看,架構(gòu)師從屬于項目開發(fā)經(jīng)理或者產(chǎn)品開發(fā)經(jīng)理。
2. 從公司或者部門的組織維護(hù)看,架構(gòu)師獨立于項目,從屬于部門經(jīng)理。從部門級的組織關(guān)系看,系統(tǒng)架構(gòu)師與開發(fā)經(jīng)理同級。
要說明這個問題,首先要明確公司部門的組織結(jié)構(gòu),考慮到系統(tǒng)架構(gòu)師工作職責(zé)的問題,一般采取以下架構(gòu)(矩陣型組織架構(gòu))的公司比較多(個人建議)。

而我們公司事業(yè)部制的組織結(jié)構(gòu)(項目型組織架構(gòu))如下:

系統(tǒng)架構(gòu)師工作職責(zé)
1. 系統(tǒng)架構(gòu)師的責(zé)任
- 負(fù)責(zé)產(chǎn)品或者項目的技術(shù)路線選型。
- 負(fù)責(zé)產(chǎn)品或者項目的系統(tǒng)架構(gòu)設(shè)計。
- 負(fù)責(zé)產(chǎn)品技術(shù)路線和技術(shù)架構(gòu)的技術(shù)積累,優(yōu)化和升級。
- 負(fù)責(zé)新技術(shù)的研究和應(yīng)用。
- 負(fù)責(zé)技術(shù)課題的攻關(guān)。
- 負(fù)責(zé)相關(guān)技術(shù)體系的培訓(xùn)工作。
2. 需求整理分析階段
首先,架構(gòu)師能夠準(zhǔn)確把握第一手的需求,防止出現(xiàn)需求理解偏差;
其次,分析人員在與客戶交流時,往往不會深入挖掘需求,因為有很多隱藏的需求客戶自己都不見得意識的到,而架構(gòu)師則可以依靠敏感的軟件嗅覺發(fā)現(xiàn)這些需求,減少以后的變數(shù);
第三,分析人員往往脫離開發(fā)團(tuán)隊,盲目接受客戶需求,而架構(gòu)師能夠清楚把握現(xiàn)有的研發(fā)團(tuán)隊能做什么,不能做什么,提前預(yù)知風(fēng)險,降低項目失敗的機(jī)率。
總結(jié):
系統(tǒng)架構(gòu)師參與需求的整體理解工作,可以給出指導(dǎo)意見,但是需求分析由需求分析師負(fù)責(zé)。
3. 系統(tǒng)分解工作(產(chǎn)品整體架構(gòu)設(shè)計,業(yè)務(wù)架構(gòu))
在收集完信息后,架構(gòu)師需要將用戶需求轉(zhuǎn)化為軟件需求,同時要補充非業(yè)務(wù)需求,如健壯性,擴(kuò)展性等等。如何區(qū)分和化解用戶需求與軟件需求,如何有效把握用戶需求與軟件需求的區(qū)別,是系統(tǒng)分解的核心。這是最考驗架構(gòu)師的地方,也是只有架構(gòu)師參與的工作。
總結(jié):系統(tǒng)架構(gòu)師負(fù)責(zé)產(chǎn)品的系統(tǒng)分解,系統(tǒng)整體軟件架構(gòu)設(shè)計,但是不負(fù)責(zé)產(chǎn)品的業(yè)務(wù)功能設(shè)計和業(yè)務(wù)流程設(shè)計。
4. 技術(shù)選型以及技術(shù)標(biāo)準(zhǔn)的制定
這一步要根據(jù)對軟件需求決定項目該使用何種架構(gòu),開發(fā)模型,及依賴選項。如使用多層架構(gòu)還是分布式架構(gòu),是使用MySQL還是SQLServer,是否需要使用企業(yè)庫,是否需要使用ORM。但是,架構(gòu)師對項目的技術(shù)選型要提供多種不同的方案,并為每種不同方案提供詳細(xì)說明文檔,用來闡述每種方案的優(yōu)勢,劣勢,可行性等內(nèi)容。這些文檔供項目經(jīng)理或領(lǐng)導(dǎo)決策最終的技術(shù)選型。
這里的技術(shù)選型,包含第三方產(chǎn)品的選型以及技術(shù)框架的技術(shù)選型。
同時要提出相應(yīng)的技術(shù)規(guī)范,開發(fā)流程規(guī)范,代碼規(guī)范,概要設(shè)計中相關(guān)規(guī)范(服務(wù)接口規(guī)范,性能要求,功能設(shè)計,UI規(guī)范等)以及部分詳細(xì)設(shè)計規(guī)范(包含數(shù)據(jù)庫設(shè)計規(guī)范(具體列表),重點流程設(shè)計規(guī)范,重點界面設(shè)計規(guī)范)。
總結(jié):
1. 負(fù)責(zé)技術(shù)選型。
2. 負(fù)責(zé)技術(shù)標(biāo)準(zhǔn)制定。
3. 負(fù)責(zé)技術(shù)框架實現(xiàn)。
5. 系統(tǒng)設(shè)計階段(系統(tǒng)概要設(shè)計)
依據(jù)軟件需求和技術(shù)選型,架構(gòu)師需要和軟件工程師一起將軟件需求落實到軟件詳細(xì)設(shè)計說明書中。架構(gòu)師負(fù)責(zé)將軟件需求分解,重組織為子項目,子系統(tǒng),組件和模塊,以及它們之間的邏輯關(guān)系,從而形成不同的邏輯組成部分,最后還需要確定各個子系統(tǒng)及組件間的接口。這些都是作為進(jìn)一步的團(tuán)隊分工的依據(jù)。同系統(tǒng)分解一樣,系統(tǒng)設(shè)計是考驗架構(gòu)師能力的重要職責(zé)。
6. 系統(tǒng)優(yōu)化階段
在進(jìn)入到系統(tǒng)的詳細(xì)設(shè)計階段,架構(gòu)師負(fù)責(zé)協(xié)助系統(tǒng)分析師,軟件工程師等進(jìn)行數(shù)據(jù)庫設(shè)計,集成環(huán)境搭建等工作。
系統(tǒng)架構(gòu)師負(fù)責(zé)系統(tǒng)的非功能性設(shè)計,數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計等詳細(xì)設(shè)計工作,但是UI設(shè)計不屬于架構(gòu)師,屬于UI設(shè)計師。
7. 培訓(xùn)與指導(dǎo)
在軟件詳細(xì)設(shè)計說明書完成后,為保證項目的順利進(jìn)行,架構(gòu)師需要對整個團(tuán)隊進(jìn)行技術(shù)培訓(xùn)。
8. 保持溝通
溝通是保證項目順利開展的有效保障。架構(gòu)師要從多方面跟蹤項目進(jìn)度,及時與項目經(jīng)理或直屬領(lǐng)導(dǎo)匯報項目進(jìn)展,與技術(shù)開發(fā)人員溝通遇到的問題,如果是迭代開發(fā),還需要與用戶溝通需求變更。
系統(tǒng)架構(gòu)師的職業(yè)發(fā)展規(guī)劃
個人以為的系統(tǒng)架構(gòu)師的發(fā)展規(guī)劃主要流程應(yīng)該是:

說明:
a) 單一產(chǎn)品的系統(tǒng)架構(gòu)師:負(fù)責(zé)單個產(chǎn)品的技術(shù)架構(gòu)設(shè)計,實現(xiàn),維護(hù)以及技術(shù)積累。
b) 同行業(yè)體系下,多項目系統(tǒng)架構(gòu)師:負(fù)責(zé)相同行業(yè)中單一個技術(shù)架構(gòu)的多項目應(yīng)用。能夠根據(jù)項目的不同需求實現(xiàn)架構(gòu)的優(yōu)化。
c) 結(jié)合業(yè)務(wù)負(fù)責(zé)產(chǎn)品設(shè)計和系統(tǒng)設(shè)計的系統(tǒng)架構(gòu)師:在負(fù)責(zé)技術(shù)架構(gòu)的基礎(chǔ)上,具備單個產(chǎn)品的產(chǎn)品架構(gòu)設(shè)計能力。要具備一定的UI設(shè)計能力,協(xié)助UI設(shè)計師進(jìn)行產(chǎn)品架構(gòu)的設(shè)計。
d) 整合行業(yè)的系統(tǒng)架構(gòu)師:對整個行業(yè)進(jìn)行整體設(shè)計,更強(qiáng)調(diào)的是行業(yè)內(nèi)個系統(tǒng)之間的關(guān)系設(shè)計。
e) 公司級的系統(tǒng)架構(gòu)師:對整個公司的技術(shù)系統(tǒng),技術(shù)路線等負(fù)責(zé)。