軟件架構(gòu)師是什么?所謂架構(gòu)師,通俗的說就是設(shè)計師或結(jié)構(gòu)設(shè)計者,這些定義如果用在建筑學(xué)上,則是很容易理解的。在軟件工程領(lǐng)域中,軟件架構(gòu)師實際上就是軟件項目的總體設(shè)計師,是軟件組織新產(chǎn)品的開發(fā)與集成、新技術(shù)體系的構(gòu)建者。
定義
軟件架構(gòu)師是軟件行業(yè)中一種新興職業(yè),工作職責(zé)是在一個軟件項目開發(fā)過程中,將客戶的需求轉(zhuǎn)換為規(guī)范的開發(fā)計劃及文本,并制定這個項目的總體架構(gòu),指導(dǎo)整個開發(fā)團(tuán)隊完成這個計劃。主導(dǎo)系統(tǒng)全局分析設(shè)計與實施、負(fù)責(zé)軟件架構(gòu)和關(guān)鍵技術(shù)決策的人員。軟件架構(gòu)師應(yīng)能迅速抓住問題要害,并做出合理的關(guān)鍵決定的能力,具備戰(zhàn)略性和前瞻性思維能力,善于把握全局,能夠在更高抽象級別上進(jìn)行思考。
要求
(1)對項目開發(fā)涉及的所有問題領(lǐng)域都有經(jīng)驗,包括徹底地理解項目需求,開展分析設(shè)計之類軟件工程活動等;
(2)具備領(lǐng)導(dǎo)素質(zhì),以在各小組之間推進(jìn)技術(shù)工作,并在項目壓力下做出牢靠的關(guān)鍵決策;
(3)擁有優(yōu)秀的溝通能力,用以進(jìn)行說服、鼓勵和指導(dǎo)等活動,并贏得項目成員的信任;
(4)以目標(biāo)導(dǎo)向和主動的方式來不帶任何感情色彩地關(guān)注項目結(jié)果,構(gòu)架師應(yīng)當(dāng)是項目背后的技術(shù)推動力,而非構(gòu)想者或夢想家(追求完美);
(5)精通構(gòu)架設(shè)計的理論、實踐和工具,并掌握多種參考構(gòu)架、主要的可重用構(gòu)架機(jī)制和模式(例如 J2EE 架構(gòu)等);
(6)具備系統(tǒng)設(shè)計員的所有技能,但涉及面更廣、抽象級別更高;活動確定用例或需求的優(yōu)先級、進(jìn)行構(gòu)架分析、創(chuàng)建構(gòu)架的概念驗證原型、評估構(gòu)架的概念驗證原型的可行性、組織系統(tǒng)實施模型、描述系統(tǒng)分布結(jié)構(gòu)、描述運行時刻構(gòu)架、確定設(shè)計機(jī)制、確定設(shè)計元素、合并已有設(shè)計元素、構(gòu)架文檔、參考構(gòu)部署模型、構(gòu)架概念驗證原型、接口、事件、信號與協(xié)議等。架、分析模型、設(shè)計模型、實施模型。
培養(yǎng)
概述
軟件架構(gòu)師一般都是具備計算機(jī)科學(xué)或軟件工程的知識,由程序員做起,然后再慢慢發(fā)展為架構(gòu)師的。在國內(nèi),很多大學(xué)還沒有設(shè)立軟件架構(gòu)的學(xué)位課程,雖然 IT 業(yè)界對設(shè)計和架構(gòu)的興趣日漸高漲,但各學(xué)校還是無法在課程中增加相應(yīng)的內(nèi)容來體現(xiàn)這一趨勢。從這個方面來說,學(xué)校教育已經(jīng)遠(yuǎn)遠(yuǎn)落后于產(chǎn)業(yè)發(fā)展。因此,促進(jìn)和發(fā)展軟件架構(gòu)學(xué)課程的任務(wù)將落在軟件架構(gòu)師身上。軟件架構(gòu)師應(yīng)該幫助各大院校建立相關(guān)課程體系,一旦教育課程建立起來,知識體將不僅通過新畢業(yè)生的工作成果來得到擴(kuò)展,同時也會從適合軟件架構(gòu)的教育研究和出版物中得到擴(kuò)展。
雖然大學(xué)要加強(qiáng)軟件架構(gòu)學(xué)課程的建設(shè),但是,軟件架構(gòu)師的成長應(yīng)該有一個實踐的教育過程,并不是簡單的學(xué)校的理論學(xué)習(xí)或者通過大型軟件公司的認(rèn)證就能成為合格的軟件架構(gòu)師。除了信息系統(tǒng)綜合知識在學(xué)校學(xué)習(xí)外,軟件架構(gòu)師的大部分知識和經(jīng)驗將來自實際開發(fā)工作。根據(jù)軟件架構(gòu)師的任職條件,一名合格的軟件架構(gòu)師的成長應(yīng)該經(jīng)歷 8 年以上的軟件項目開發(fā)實際工作經(jīng)驗。一般需要經(jīng)歷程序員、軟件設(shè)計師等階段,然后再發(fā)展成為軟件架構(gòu)師。
當(dāng)然,并不是每一位程序員經(jīng)過 8 年后都可以成長為軟件架構(gòu)師的。一個軟件工程師在充分掌握了軟件架構(gòu)師工作所必需的基本理論和技能后,如何得到和利用機(jī)會、如何利用所掌握的技能進(jìn)行應(yīng)用系統(tǒng)的合理架構(gòu)、如何不斷的抽象和總結(jié)自己的架構(gòu)模式、如何深入行業(yè)成為能夠勝任分析、架構(gòu)為一體的精英人才,這就在于機(jī)遇、個人的努力和天賦了。
國內(nèi)軟件架構(gòu)師的培養(yǎng)途徑主要有兩種方式,一種是大學(xué)(軟件學(xué)院)教育方式,另一種是個人自我培養(yǎng)然后再進(jìn)行相應(yīng)的培訓(xùn)和認(rèn)證。但是,不管哪種方式都有其不足之處。
軟件學(xué)院的培養(yǎng)方式能夠系統(tǒng)的學(xué)習(xí)軟件架構(gòu)師必需的知識體系,但是,軟件架構(gòu)師不是簡單的通過理論學(xué)習(xí)就能夠培養(yǎng)出來的,軟件學(xué)院的學(xué)生可能缺乏必要的設(shè)計、開發(fā)經(jīng)驗和相關(guān)的領(lǐng)域知識。盡管軟件學(xué)院也強(qiáng)調(diào)給予學(xué)生實踐的機(jī)會,但畢竟這種機(jī)會是有限的。有關(guān)“三分之一的師資來自企業(yè)”的規(guī)定,在部分軟件學(xué)院中也沒有得到真正落實,導(dǎo)致傳授給學(xué)生的還是一些純理論知識。
自我培養(yǎng)方式的主要對象是具有一定年限的軟件開發(fā)和設(shè)計人員,如 Microsoft、IBM、Sun 等公司的軟件架構(gòu)師認(rèn)證對學(xué)員的基礎(chǔ)并沒有具體的要求,只要交納規(guī)定的費用,然后進(jìn)行幾天的集中培訓(xùn),通過考試就發(fā)給學(xué)員證書,甚至不需要考試就直接發(fā)放證書。這些開發(fā)人員在自我培養(yǎng)的過程中不一定能夠系統(tǒng)的學(xué)習(xí)軟件架構(gòu)師的理論知識,他們只具有一定的開發(fā)和設(shè)計經(jīng)驗,僅僅經(jīng)過幾天的培訓(xùn),是不太可能培養(yǎng)出合格的軟件架構(gòu)師的。而且,作為某個廠商的培訓(xùn)和認(rèn)證,其最終目的是培育自己的市場,培養(yǎng)一批忠誠的用戶,而不是為中國培養(yǎng)軟件架構(gòu)師。因此,也存在很大的問題和缺陷。