由于國內(nèi)外軟件土壤差別巨大,適合國外的一些理論在國內(nèi)不一定行的通,而國內(nèi)的一些資料往往都是根據(jù)國外的資料直接搬過來用的,這也直接導(dǎo)致國外的軟件架構(gòu)師在國內(nèi)變得水土不服。今天本篇隨筆的內(nèi)容則是在一些培訓(xùn)資料的基礎(chǔ)上,加上自己的思考,總結(jié)出來的適合國情的軟件架構(gòu)師職責(zé)范圍。
1,需求整理分析
有人認(rèn)為架構(gòu)師是在需求規(guī)格說明書完成后介入的,但我認(rèn)為架構(gòu)師要從項(xiàng)目最開始的階段就參與進(jìn)來。理由有很多:首先,第一手的信息損失最少,架構(gòu)師能夠更好的把握需求;其次,分析人員在與客戶交流時(shí),往往不會深入挖掘需求,因?yàn)橛泻芏嚯[藏的需求客戶自己都不見得意識的到,而架構(gòu)師則可以依靠敏感的軟件嗅覺發(fā)現(xiàn)這些需求,減少以后的變數(shù);第三,分析人員往往脫離開發(fā)團(tuán)隊(duì),盲目接受客戶需求,而架構(gòu)師能夠清楚把握現(xiàn)有的研發(fā)團(tuán)隊(duì)能做什么,不能做什么,提前預(yù)知風(fēng)險(xiǎn),降低項(xiàng)目失敗的機(jī)率。
2,系統(tǒng)分解
在收集完信息后,架構(gòu)師需要將用戶需求轉(zhuǎn)化為軟件需求,同時(shí)要補(bǔ)充非業(yè)務(wù)需求,如健壯性,擴(kuò)展性等等。如何區(qū)分和化解用戶需求與軟件需求,如何有效把握用戶需求與軟件需求的區(qū)別,是系統(tǒng)分解的核心。這是最考驗(yàn)架構(gòu)師的地方,也是只有架構(gòu)師參與的工作。
3,技術(shù)選型
這一步要根據(jù)對軟件需求決定項(xiàng)目該使用何種架構(gòu),開發(fā)模型,及依賴選項(xiàng)。如使用多層架構(gòu)還是分布式架構(gòu),是瀑布模型還是RUP,是使用MySQL還是SQLServer,是否需要使用企業(yè)庫,是否需要使用ORM。但是,架構(gòu)師對項(xiàng)目的技術(shù)選型要提供多種不同的方案,并為每種不同方案提供詳細(xì)說明文檔,用來闡述每種方案的優(yōu)勢,劣勢,可行性等內(nèi)容。這些文檔供項(xiàng)目經(jīng)理或領(lǐng)導(dǎo)決策最終的技術(shù)選型。
4,系統(tǒng)設(shè)計(jì)
依據(jù)軟件需求和技術(shù)選型,架構(gòu)師需要和軟件工程師一起將軟件需求落實(shí)到軟件詳細(xì)設(shè)計(jì)說明書中。架構(gòu)師負(fù)責(zé)將軟件需求分解,重組織為子項(xiàng)目,子系統(tǒng),組件和模塊,以及它們之間的邏輯關(guān)系,從而形成不同的邏輯組成部分,最后還需要確定各個(gè)子系統(tǒng)及組件間的接口。這些都是作為進(jìn)一步的團(tuán)隊(duì)分工的依據(jù)。同系統(tǒng)分解一樣,系統(tǒng)設(shè)計(jì)是考驗(yàn)架構(gòu)師能力的重要職責(zé)。
5,培訓(xùn)與指導(dǎo)
在軟件詳細(xì)設(shè)計(jì)說明書完成后,為保證項(xiàng)目的順利進(jìn)行,架構(gòu)師需要對整個(gè)團(tuán)隊(duì)進(jìn)行技術(shù)培訓(xùn),讓團(tuán)隊(duì)中的每個(gè)人明白自己的職責(zé)范圍,該做什么,不該做什么。在項(xiàng)目實(shí)施過程中,架構(gòu)師需要參與到具體開發(fā)過程中,給與每個(gè)開發(fā)人員有效指導(dǎo),以避免團(tuán)隊(duì)成員對系統(tǒng)設(shè)計(jì)的誤解而造成項(xiàng)目的延誤。在我看來,這點(diǎn)對于新手比較多的團(tuán)隊(duì)尤為重要。因?yàn)閲鴥?nèi)新手的一個(gè)通病是眼高手低,剛學(xué)會了一點(diǎn)點(diǎn)就認(rèn)為自己什么都會;當(dāng)他們拿到真正的設(shè)計(jì)時(shí)又往往不知所措,畏首畏尾。
6,保持溝通
溝通是保證項(xiàng)目順利開展的有效保障。架構(gòu)師要從多方面跟蹤項(xiàng)目進(jìn)度,及時(shí)與項(xiàng)目經(jīng)理或直屬領(lǐng)導(dǎo)匯報(bào)項(xiàng)目進(jìn)展,與技術(shù)開發(fā)人員溝通遇到的問題,如果是迭代開發(fā),還需要與用戶溝通需求變更。
以上是一個(gè)項(xiàng)目開發(fā)過程中架構(gòu)師需要承擔(dān)的主要職責(zé),相比一些培訓(xùn)指導(dǎo),我認(rèn)為,架構(gòu)師需要更深入地參與到項(xiàng)目中。