張友生 李 雄
隨著軟件系統(tǒng)的規(guī)模越來(lái)越大,復(fù)雜程度越來(lái)越高,軟件設(shè)計(jì)的核心已經(jīng)超越了傳統(tǒng)的“算法+數(shù)據(jù)結(jié)構(gòu)=程序”的設(shè)計(jì)模式,取而代之的是對(duì)系統(tǒng)的總體結(jié)構(gòu)的設(shè)計(jì)和規(guī)范。軟件架構(gòu)在軟件系統(tǒng)中充當(dāng)著重要的角色,軟件架構(gòu)也是軟件工程中迅速發(fā)展的一個(gè)研究實(shí)踐領(lǐng)域,有很多的文獻(xiàn)討論了如何構(gòu)架一個(gè)好的軟件系統(tǒng)。軟件架構(gòu)師作為軟件架構(gòu)的設(shè)計(jì)者是關(guān)系到軟件成敗的關(guān)鍵因素。然而,有關(guān)軟件架構(gòu)師的角色定位以及教育培養(yǎng)問(wèn)題,仍然比較模糊,沒(méi)有一致的結(jié)論。
作者近年來(lái)在軟件架構(gòu)的理論研究和實(shí)踐方面做了一些工作,也取得了一定的成績(jī)。負(fù)責(zé)起草了全國(guó)計(jì)算機(jī)技術(shù)與軟件專(zhuān)業(yè)技術(shù)資格(水平)考試中的系統(tǒng)分析師和系統(tǒng)架構(gòu)設(shè)計(jì)師考試大綱,主編了有關(guān)考試教材。本文主要討論軟件架構(gòu)師的角色和培養(yǎng)問(wèn)題。
1 軟件架構(gòu)與軟件架構(gòu)師
1.1 軟件架構(gòu)
軟件架構(gòu)(Software architecture,軟件體系結(jié)構(gòu))一詞早在20世紀(jì)60年代就被E.W.Dijkstra提出,但是直到20世紀(jì)90年代初才開(kāi)始流行起來(lái)。為了提高軟件需求和軟件設(shè)計(jì)的質(zhì)量,軟件工程界提出了需求分析工程技術(shù)和各種軟件建模技術(shù)。但是在需求和設(shè)計(jì)之間仍然存在一條很難逾越的鴻溝,即缺乏能夠反映作決策的中間過(guò)程,從而很難有效地將需求轉(zhuǎn)化為相應(yīng)的設(shè)計(jì)。為此,軟件架構(gòu)的概念應(yīng)運(yùn)而生,并試圖在軟件需求與軟件設(shè)計(jì)之間架起一座橋梁,著重解決軟件系統(tǒng)的結(jié)構(gòu)和需求向?qū)崿F(xiàn)平坦過(guò)渡的問(wèn)題。
目前,軟件架構(gòu)的研究已發(fā)展為軟件工程領(lǐng)域的一個(gè)獨(dú)立學(xué)科分支,具有比較嚴(yán)格的理論基礎(chǔ)和工程指導(dǎo)原則。軟件架構(gòu)已經(jīng)成為軟件工程領(lǐng)域的研究熱點(diǎn)以及大型軟件系統(tǒng)與軟件產(chǎn)品線(xiàn)開(kāi)發(fā)中的關(guān)鍵技術(shù)之一。有許多相關(guān)的研究人員對(duì)軟件架構(gòu)描述語(yǔ)言,軟件架構(gòu)的描述與表示,軟件架構(gòu)的分析與驗(yàn)證,基于架構(gòu)的軟件維護(hù)與演化,軟件架構(gòu)的可靠性等方面進(jìn)行了研究。
1.2 軟件架構(gòu)師
一直以來(lái),絕大多數(shù)的軟件組織都缺乏軟件架構(gòu)師的編制。架構(gòu)設(shè)計(jì)的工作基本上由項(xiàng)目經(jīng)理、系統(tǒng)分析師與軟件設(shè)計(jì)師兼任或分?jǐn)偅瑢?dǎo)致普遍輕視軟件架構(gòu)專(zhuān)業(yè)人才的培養(yǎng)與任用。事實(shí)上,軟件構(gòu)架師是目前很多軟件組織最急需的人才,也是一個(gè)軟件組織中的高級(jí)技術(shù)人才。那么,究竟什么是軟件架構(gòu)師、軟件架構(gòu)師在項(xiàng)目開(kāi)發(fā)中起什么作用、如何定位一個(gè)軟件架構(gòu)師和如何成為一個(gè)軟件架構(gòu)師呢?這是許多組織、技術(shù)人員和管理人員都希望知道的或希望參與討論的話(huà)題。下面對(duì)軟件架構(gòu)師這一概念作簡(jiǎn)單的闡述。
所謂架構(gòu)師,通俗的說(shuō)就是設(shè)計(jì)師或結(jié)構(gòu)設(shè)計(jì)者,這些定義如果用在建筑學(xué)上,則是很容易理解的。在軟件工程領(lǐng)域中,軟件架構(gòu)師實(shí)際上就是軟件項(xiàng)目的總體設(shè)計(jì)師,是軟件組織新產(chǎn)品的開(kāi)發(fā)與集成、新技術(shù)體系的構(gòu)建者。對(duì)一些大型軟件產(chǎn)品或項(xiàng)目的開(kāi)發(fā),這一角色顯得很關(guān)鍵,因?yàn)槿狈玫能浖軜?gòu)師而導(dǎo)致項(xiàng)目失敗的例子不勝枚舉,一個(gè)沒(méi)有經(jīng)驗(yàn)和能力的軟件架構(gòu)師也會(huì)使軟件項(xiàng)目失敗的速度加快。正因如此,Martin Fowler指出:架構(gòu)師是對(duì)所有重要事情作出決定的人。
軟件架構(gòu)師在整個(gè)軟件開(kāi)發(fā)過(guò)程中都起著重要作用,并隨著開(kāi)發(fā)進(jìn)程的推進(jìn)而其職責(zé)或關(guān)注點(diǎn)不斷地變化。在需求階段,軟件架構(gòu)師主要負(fù)責(zé)理解和管理非功能性系統(tǒng)需求,比如軟件的可維護(hù)性、性能、復(fù)用性、可靠性、有效性和可測(cè)試性等。此外,架構(gòu)師還要經(jīng)常審查客戶(hù)和市場(chǎng)人員所提出的需求,確認(rèn)開(kāi)發(fā)團(tuán)隊(duì)所提出的設(shè)計(jì);在需求越來(lái)越明確后,架構(gòu)師的關(guān)注點(diǎn)開(kāi)始轉(zhuǎn)移到組織開(kāi)發(fā)團(tuán)隊(duì)成員和開(kāi)發(fā)過(guò)程的定義上;在軟件設(shè)計(jì)階段,架構(gòu)師負(fù)責(zé)對(duì)整個(gè)軟件架構(gòu)、關(guān)鍵構(gòu)件、接口的設(shè)計(jì)。在編碼階段,架構(gòu)師則成為程序員的顧問(wèn),并且經(jīng)常性地要舉行一些技術(shù)研討會(huì)、技術(shù)培訓(xùn)班等;隨著軟件開(kāi)始測(cè)試、集成和交付,集成和測(cè)試支持將成為軟件架構(gòu)師的工作重點(diǎn);在軟件維護(hù)開(kāi)始時(shí),軟件架構(gòu)師就要開(kāi)始為下一版本的產(chǎn)品是否應(yīng)該增加新的功能模塊進(jìn)行決策。
因此,軟件架構(gòu)師是軟件項(xiàng)目的總體設(shè)計(jì)師,是軟件組織新產(chǎn)品開(kāi)發(fā)與集成、新技術(shù)體系的構(gòu)建者,是從宏觀(guān)上駕馭大型系統(tǒng)的戰(zhàn)略家,是對(duì)軟件項(xiàng)目中所有重要架構(gòu)事情作出決策的人,是策略制定者、組織協(xié)調(diào)高手、稱(chēng)職的顧問(wèn)與領(lǐng)導(dǎo)者。
作為一個(gè)軟件架構(gòu)師,在整個(gè)軟件系統(tǒng)的開(kāi)發(fā)過(guò)程中是樂(lè)趣無(wú)窮的,因?yàn)檫@個(gè)角色很具有挑戰(zhàn)性,有時(shí)需要左右逢源八面玲瓏,有時(shí)又需要果斷堅(jiān)定不留情面。Philippe Kruchten曾經(jīng)說(shuō)過(guò):當(dāng)一個(gè)偉大的架構(gòu)師領(lǐng)導(dǎo)開(kāi)發(fā)團(tuán)隊(duì)時(shí),團(tuán)隊(duì)的每個(gè)成員都感覺(jué)不到他的存在。次一點(diǎn)的架構(gòu)師使開(kāi)發(fā)團(tuán)隊(duì)的每個(gè)成員都喜歡他,再次一點(diǎn)的是害怕他,最次的是鄙視他。在國(guó)內(nèi),軟件組織幾乎沒(méi)有獨(dú)立的架構(gòu)師,通常一個(gè)軟件高手身兼數(shù)職,既是項(xiàng)目經(jīng)理,又是軟件架構(gòu)師,甚至還是軟件開(kāi)發(fā)者,有時(shí)還要客串一個(gè)測(cè)試人員,這對(duì)軟件的開(kāi)發(fā)周期和產(chǎn)品質(zhì)量是不利的。
2 軟件架構(gòu)師的角色
2.1 軟件架構(gòu)師的職責(zé)
好的軟件架構(gòu)師不只是一位受到尊敬的資深技術(shù)人員,通常也是策略制定和組織協(xié)調(diào)的高手,稱(chēng)職的顧問(wèn)與領(lǐng)導(dǎo)者。這是因?yàn)檐浖軜?gòu)規(guī)劃與設(shè)計(jì)主要是以宏觀(guān)的角度切入系統(tǒng)架構(gòu),一般所謂的設(shè)計(jì)則是以微觀(guān)的角度切入。軟件工程師和程序員所考慮的是單個(gè)構(gòu)件的功能,而軟件架構(gòu)師必須從全局的角度理解軟件項(xiàng)目的業(yè)務(wù)目的和期望結(jié)果,能夠定義不同的構(gòu)件是如何組裝在一起的。軟件架構(gòu)師規(guī)劃系統(tǒng)的角度主要是從自上而下的方式著手,而軟件設(shè)計(jì)師則多半從自下而上的方式著手。這種從宏觀(guān)/微觀(guān)的角度進(jìn)行劃分,在其他學(xué)科也常看見(jiàn),如宏觀(guān)經(jīng)濟(jì)學(xué)與微觀(guān)經(jīng)濟(jì)學(xué)等。這種宏觀(guān)角度的本質(zhì),就是軟件架構(gòu)師專(zhuān)業(yè)領(lǐng)域與其他軟件開(kāi)發(fā)人員最根本的區(qū)別。
從宏觀(guān)的角度,舉凡架構(gòu)規(guī)格與決策、排定架構(gòu)審閱時(shí)程、解決所有架構(gòu)相關(guān)的問(wèn)題、所有主要技術(shù)決策的核準(zhǔn)、維護(hù)架構(gòu)規(guī)格等都是架構(gòu)設(shè)計(jì)的主要工作。通常在項(xiàng)目一開(kāi)始,需求與初始分析等工作流程會(huì)產(chǎn)生規(guī)劃的企業(yè)流程與預(yù)期系統(tǒng)完成的功能。有了這些信息,軟件架構(gòu)師就能草擬最初的高層架構(gòu)藍(lán)圖,并列出影響架構(gòu)的可能的因素清單。另外,軟件架構(gòu)師也要擔(dān)負(fù)估算項(xiàng)目成本的職責(zé),評(píng)估項(xiàng)目計(jì)劃對(duì)系統(tǒng)既有基礎(chǔ)結(jié)構(gòu)與架構(gòu)的沖擊,以及計(jì)算可能付出的成本與所帶來(lái)的效益。
除了上述任務(wù)以外,檢查初期架構(gòu)規(guī)劃設(shè)計(jì)、影響因素與成本,維持與組織架構(gòu)決策的一致性也是架構(gòu)設(shè)計(jì)師的重要職責(zé)之一。這通常要找出制定項(xiàng)目的架構(gòu)決策與其優(yōu)先級(jí)的判斷基準(zhǔn)、定義問(wèn)題領(lǐng)域、決定可能解決方案的制約條件、確認(rèn)有關(guān)可能解決方法的假設(shè)狀況以及辨識(shí)模塊重用的可能性。軟件架構(gòu)師也必須負(fù)責(zé)確保需求的達(dá)成,以及硬件、軟件、基礎(chǔ)結(jié)構(gòu)、性能、安全性、容量、可用性和系統(tǒng)運(yùn)行、管理與維護(hù)等屬于系統(tǒng)層次相關(guān)技術(shù)之間的協(xié)調(diào)與平衡。在某些關(guān)鍵時(shí)刻,軟件架構(gòu)師也要做出系統(tǒng)與架構(gòu)在協(xié)調(diào)、平衡上種種必須當(dāng)機(jī)立斷但又很難判斷的決策。
軟件架構(gòu)師必須設(shè)法降低可能的技術(shù)風(fēng)險(xiǎn)對(duì)系統(tǒng)的沖擊。在規(guī)劃初期,技術(shù)風(fēng)險(xiǎn)對(duì)一般人來(lái)說(shuō)通常都是不可知、不可驗(yàn)證也不可測(cè)的。風(fēng)險(xiǎn)大多與系統(tǒng)層次的需求有關(guān),有時(shí)也會(huì)與組織需求有關(guān)。不論任何類(lèi)型的風(fēng)險(xiǎn),有經(jīng)驗(yàn)的架構(gòu)設(shè)計(jì)師都可在項(xiàng)目的先期也就是構(gòu)建架構(gòu)時(shí)期,預(yù)先列出這些可能的風(fēng)險(xiǎn),然后在后續(xù)的開(kāi)發(fā)時(shí)期配合開(kāi)發(fā)人員予以適當(dāng)?shù)靥幚砼c解決。另外,架構(gòu)設(shè)計(jì)師也必須領(lǐng)導(dǎo)開(kāi)發(fā)團(tuán)隊(duì),保持與其他成員的良好互動(dòng),確保開(kāi)發(fā)人員是根據(jù)架構(gòu)藍(lán)圖來(lái)構(gòu)建系統(tǒng)。
總之,軟件架構(gòu)師的主要任務(wù)就是規(guī)劃與系統(tǒng)架構(gòu)層次相關(guān)的事務(wù),評(píng)估可能的風(fēng)險(xiǎn)與成本,并有效運(yùn)用有限的人力、物力資源滿(mǎn)足系統(tǒng)層次的需求。優(yōu)秀的軟件架構(gòu)師是保證軟件系統(tǒng)強(qiáng)大生命力的核心人物。專(zhuān)業(yè)架構(gòu)師能夠幫助組織全面研究現(xiàn)有架構(gòu)和設(shè)計(jì)模式、評(píng)估系統(tǒng)設(shè)計(jì)的優(yōu)缺點(diǎn)和可能存在的風(fēng)險(xiǎn),通過(guò)一系列的專(zhuān)題指導(dǎo)和具體案例幫助組織掌握先進(jìn)的、成熟的設(shè)計(jì)模式,簡(jiǎn)化復(fù)雜的業(yè)務(wù)邏輯和需求,確定系統(tǒng)最佳方案。在必要的情況下,還可就特定領(lǐng)域或課題,為開(kāi)發(fā)人員提供定制指導(dǎo)。
2.2 軟件架構(gòu)師與系統(tǒng)分析師的區(qū)別
在一個(gè)較大規(guī)模的軟件組織里,一般都有項(xiàng)目管理師、軟件架構(gòu)師、系統(tǒng)分析師、軟件設(shè)計(jì)師、測(cè)試工程師、數(shù)據(jù)庫(kù)工程師、程序員、過(guò)程改進(jìn)、質(zhì)量保證等不同的職位。在這些職位中,人們?nèi)菀谆煜氖窍到y(tǒng)分析師和軟件架構(gòu)師。對(duì)于系統(tǒng)分析師的角色,業(yè)界有兩種觀(guān)點(diǎn),一種是把系統(tǒng)分析師當(dāng)成既懂技術(shù)又懂管理的全能冠軍,另一種是把系統(tǒng)分析師當(dāng)作需求分析師,而架構(gòu)師才是靈魂。那么,系統(tǒng)分析師與軟件架構(gòu)師在角色方面的分配究竟有什么區(qū)別呢?
當(dāng)軟件規(guī)模比較小時(shí),系統(tǒng)分析師所完成的工作是把真正的業(yè)務(wù)需求(這個(gè)需求不是指客戶(hù)簡(jiǎn)單所說(shuō)的哪一個(gè)功能,而是需要去挖掘的,可能是潛在的但又是系統(tǒng)必需的,條例清楚、邏輯清晰的業(yè)務(wù)功能,而且需求不僅僅只是來(lái)自業(yè)務(wù)上的,系統(tǒng)所依賴(lài)的運(yùn)行環(huán)境也會(huì)產(chǎn)生一些需求)轉(zhuǎn)換成計(jì)算機(jī)可理解、可實(shí)現(xiàn)、可計(jì)算的模型。但由于現(xiàn)在的系統(tǒng)規(guī)模越來(lái)越大,復(fù)雜程度越來(lái)越高,而且應(yīng)用領(lǐng)域也越來(lái)越廣,所以很難由一個(gè)工種的人來(lái)全面完成這項(xiàng)艱巨的任務(wù)。
在具體的軟件設(shè)計(jì)過(guò)程中,現(xiàn)在把它分解為由系統(tǒng)分析師與軟件架構(gòu)師合作共同來(lái)完成這一任務(wù)。其中系統(tǒng)分析師側(cè)重的是前一部分的工作,軟件架構(gòu)師側(cè)重的是后一部分的工作。系統(tǒng)分析師的主要工作內(nèi)容包括業(yè)務(wù)需求分析、系統(tǒng)需求分析、可行性分析以及建模等,其特點(diǎn)是更多地與行業(yè)專(zhuān)家、用戶(hù)溝通,再及時(shí)與項(xiàng)目經(jīng)理(項(xiàng)目管理師)、軟件架構(gòu)師以及老板商討,分析項(xiàng)目具備的特點(diǎn)、成本、風(fēng)險(xiǎn)等,考慮實(shí)現(xiàn)的模型。系統(tǒng)分析師所面臨的往往是有許多不確定性的事件,需要對(duì)這些不確定的事件進(jìn)行分析、總結(jié),使之得出一個(gè)相對(duì)可靠的確定性結(jié)論或?qū)嵤┓桨改P汀?/p>
軟件架構(gòu)師的主要工作內(nèi)容就是在系統(tǒng)需求比較清晰的條件下進(jìn)行系統(tǒng)總體的架構(gòu)設(shè)計(jì),當(dāng)然它也可能會(huì)涵蓋一些系統(tǒng)分析師和軟件設(shè)計(jì)師的工作內(nèi)容,但其特點(diǎn)是確定性的東西會(huì)多一些,力求為系統(tǒng)找到或架構(gòu)一個(gè)最優(yōu)的模型。這里面雖然可能有很多創(chuàng)新的成分,但更重要的是如何充分運(yùn)用現(xiàn)有的各種模型、結(jié)構(gòu)、方案,并根據(jù)項(xiàng)目的特點(diǎn),在各種方案中取長(zhǎng)補(bǔ)短,找到一個(gè)最好的平衡點(diǎn)和結(jié)合點(diǎn),使之最適合當(dāng)前項(xiàng)目的解決方案。所以,軟件架構(gòu)師實(shí)際上是使系統(tǒng)細(xì)致化、完善化,為擁有更好的可靠性提供保障。
在實(shí)際的職責(zé)上,軟件架構(gòu)師比系統(tǒng)分析師所站的角度更高一些。在大規(guī)模的軟件系統(tǒng)中,系統(tǒng)分析師可能就系統(tǒng)的某個(gè)子系統(tǒng)進(jìn)行分析與設(shè)計(jì),而軟件架構(gòu)師應(yīng)該對(duì)整個(gè)系統(tǒng)的結(jié)構(gòu)負(fù)責(zé)。
3 軟件架構(gòu)師的培養(yǎng)與認(rèn)證
3.1 軟件架構(gòu)師的培養(yǎng)
軟件架構(gòu)師一般都是具備計(jì)算機(jī)科學(xué)或軟件工程的知識(shí),由程序員做起,然后再慢慢發(fā)展為架構(gòu)師的。在國(guó)內(nèi),很多大學(xué)目前還沒(méi)有設(shè)立軟件架構(gòu)的學(xué)位課程,雖然IT業(yè)界對(duì)設(shè)計(jì)和架構(gòu)的興趣日漸高漲,但各學(xué)校還無(wú)法在課程中增加相應(yīng)的內(nèi)容來(lái)體現(xiàn)這一趨勢(shì)。從這個(gè)方面來(lái)說(shuō),學(xué)校教育已經(jīng)遠(yuǎn)遠(yuǎn)落后于產(chǎn)業(yè)發(fā)展。因此,促進(jìn)和發(fā)展軟件架構(gòu)學(xué)課程的任務(wù)將落在現(xiàn)在的軟件架構(gòu)師身上。目前的軟件架構(gòu)師應(yīng)該幫助各大院校建立相關(guān)課程體系,一旦教育課程建立起來(lái),知識(shí)體將不僅通過(guò)新畢業(yè)生的工作成果來(lái)得到擴(kuò)展,同時(shí)也會(huì)從適合軟件架構(gòu)的教育研究和出版物中得到擴(kuò)展。
雖然大學(xué)要加強(qiáng)軟件架構(gòu)學(xué)課程的建設(shè),但是,軟件架構(gòu)師的成長(zhǎng)應(yīng)該有一個(gè)實(shí)踐的教育過(guò)程,并不是簡(jiǎn)單的學(xué)校的理論學(xué)習(xí)或者通過(guò)大型軟件公司的認(rèn)證就能成為合格的軟件架構(gòu)師。除了信息系統(tǒng)綜合知識(shí)在學(xué)校學(xué)習(xí)外,軟件架構(gòu)師的大部分知識(shí)和經(jīng)驗(yàn)將來(lái)自實(shí)際開(kāi)發(fā)工作。一般來(lái)說(shuō),一名合格的軟件架構(gòu)師的成長(zhǎng)應(yīng)該經(jīng)歷8年以上的軟件項(xiàng)目開(kāi)發(fā)實(shí)際工作經(jīng)驗(yàn)。一般需要經(jīng)歷程序員、軟件設(shè)計(jì)師等階段,然后再發(fā)展成為軟件架構(gòu)師。
當(dāng)然,并不是每一位程序員經(jīng)過(guò)8年后都可以成長(zhǎng)為軟件架構(gòu)師的。一個(gè)軟件工程師在充分掌握了軟件架構(gòu)師工作所必需的基本理論和技能后,如何得到和利用機(jī)會(huì)、如何利用所掌握的技能進(jìn)行應(yīng)用系統(tǒng)的合理架構(gòu)、如何不斷地抽象和總結(jié)自己的架構(gòu)模式、如何深入行業(yè)成為能夠勝任分析、架構(gòu)為一體的精英人才,這就在于機(jī)遇、個(gè)人的努力和天賦了。
就目前來(lái)看,國(guó)內(nèi)軟件架構(gòu)師的培養(yǎng)途徑主要有兩種方式,一種是大學(xué)(軟件學(xué)院)教育方式,另一種是個(gè)人自我培養(yǎng)然后再進(jìn)行相應(yīng)的培訓(xùn)和認(rèn)證。但是,不管哪種方式都有其不足之處。
軟件學(xué)院的培養(yǎng)方式能夠系統(tǒng)地傳授軟件架構(gòu)師必需的知識(shí)體系,但是,軟件架構(gòu)師不是簡(jiǎn)單的通過(guò)理論學(xué)習(xí)就能夠培養(yǎng)出來(lái)的,軟件學(xué)院的學(xué)生可能缺乏必要的設(shè)計(jì)、開(kāi)發(fā)經(jīng)驗(yàn)和相關(guān)的領(lǐng)域知識(shí)。盡管軟件學(xué)院也強(qiáng)調(diào)給予學(xué)生實(shí)踐的機(jī)會(huì),但畢竟這種機(jī)會(huì)是有限的。有關(guān)“三分之一的師資來(lái)自企業(yè)”的規(guī)定,在部分軟件學(xué)院中也沒(méi)有得到真正落實(shí),導(dǎo)致傳授給學(xué)生的還是一些純理論知識(shí)。
自我培養(yǎng)方式的主要對(duì)象是具有一定年限的軟件開(kāi)發(fā)和設(shè)計(jì)人員,如Microsoft、IBM、Sun等公司的軟件架構(gòu)師認(rèn)證對(duì)學(xué)員的基礎(chǔ)并沒(méi)有具體的要求,只要交納規(guī)定的費(fèi)用,然后進(jìn)行幾天的集中培訓(xùn),通過(guò)考試就發(fā)給學(xué)員證書(shū),甚至不需要考試就直接發(fā)放證書(shū)。這些開(kāi)發(fā)人員在自我培養(yǎng)的過(guò)程中不一定能夠系統(tǒng)地學(xué)習(xí)軟件架構(gòu)師的理論知識(shí),他們只具有一定的開(kāi)發(fā)和設(shè)計(jì)經(jīng)驗(yàn),僅僅經(jīng)過(guò)幾天的培訓(xùn),是不太可能培養(yǎng)出合格的軟件架構(gòu)師的。而且,作為某個(gè)廠(chǎng)商的培訓(xùn)和認(rèn)證,其最終目的是培育自己的市場(chǎng),培養(yǎng)一批忠誠(chéng)的用戶(hù),而不是為中國(guó)培養(yǎng)軟件架構(gòu)師。因此,也存在很大的問(wèn)題和缺陷。
3.2 尋求合適的培養(yǎng)方法
針對(duì)軟件架構(gòu)師在軟件組織中的作用和其在國(guó)內(nèi)的培養(yǎng)現(xiàn)狀,作者認(rèn)為有必要將軟件架構(gòu)師的教育、培訓(xùn)和認(rèn)證作為發(fā)展民族軟件產(chǎn)業(yè)的一個(gè)基本決策,制定詳細(xì)的軟件架構(gòu)師培養(yǎng)方案。
(1) 確定軟件架構(gòu)師在軟件組織中的職責(zé)和充當(dāng)?shù)慕巧?,確定其相應(yīng)的必須具備的知識(shí)體系,確定軟件架構(gòu)師的職業(yè)及其相關(guān)制度,制定軟件架構(gòu)師的培養(yǎng)目標(biāo)和培養(yǎng)方案。
(2) 堅(jiān)持以大學(xué)教育為主(特別是各軟件學(xué)院在這方面可以大施身手),以項(xiàng)目實(shí)踐為輔的教育方針。大學(xué)可以聘請(qǐng)現(xiàn)有的軟件架構(gòu)師擔(dān)任核心課程的講師,通過(guò)學(xué)校教育,系統(tǒng)學(xué)習(xí)軟件架構(gòu)師所必需的知識(shí)體系;通過(guò)項(xiàng)目實(shí)踐使其具有初步的軟件開(kāi)發(fā)和設(shè)計(jì)經(jīng)驗(yàn),逐步成長(zhǎng)為一名合格的軟件架構(gòu)師。
(3) 對(duì)國(guó)外一些大公司的軟件架構(gòu)師的培訓(xùn)和認(rèn)證予以支持,但是在認(rèn)證的過(guò)程中必須堅(jiān)持符合我國(guó)實(shí)際情況的原則。例如,在認(rèn)證考試之前對(duì)考生的知識(shí)體系進(jìn)行系統(tǒng)的測(cè)試和評(píng)估,在通過(guò)認(rèn)證后的適當(dāng)時(shí)間內(nèi)進(jìn)行重新認(rèn)證和繼續(xù)教育。
(4) 建立完善的軟件架構(gòu)師教育和認(rèn)證制度,使得通過(guò)認(rèn)證的人員能夠在實(shí)際的軟件開(kāi)發(fā)中成為稱(chēng)職的和優(yōu)秀的軟件架構(gòu)師,并通過(guò)此制度能夠?yàn)閲?guó)家培養(yǎng)出更多、更優(yōu)秀的軟件架構(gòu)師,解決當(dāng)前軟件架構(gòu)師急缺問(wèn)題。
4 結(jié)束語(yǔ)
軟件架構(gòu)師是軟件組織中必不可少的人才,對(duì)軟件整體結(jié)構(gòu)及性能都起著重要的作用,直接關(guān)系到軟件產(chǎn)品的成功與否。但是當(dāng)前絕大多數(shù)軟件組織都沒(méi)有配備專(zhuān)門(mén)的軟件架構(gòu)師,這對(duì)軟件組織和軟件產(chǎn)品都存在一定的隱患。因此對(duì)軟件架構(gòu)師這一角色必須有一個(gè)新的認(rèn)識(shí),對(duì)軟件架構(gòu)師的培養(yǎng)也要有一個(gè)詳細(xì)的方案和措施。
本文根據(jù)作者的實(shí)踐經(jīng)驗(yàn),基于作者的理解和認(rèn)識(shí),討論了軟件架構(gòu)師的角色定位和培養(yǎng)問(wèn)題,旨在拋磚引玉。由于作者學(xué)識(shí)有限,其中觀(guān)點(diǎn)可能不完善,甚至有錯(cuò)誤之處,歡迎同行和專(zhuān)家斧正。