複製鏈接
請複製以下鏈接發送給好友

軟件架構師

鎖定
所謂架構師,通俗的説就是設計師或結構設計者,這些定義如果用在建築學上,則是很容易理解的。在軟件工程領域中,軟件架構師實際上就是軟件項目的總體設計師,是軟件組織新產品的開發與集成、新技術體系的構建者。
中文名
軟件架構師
外文名
Software Architect
主要任務
從事更高層次的開發構架工作
屬    性
新興職業

軟件架構師定義

軟件架構師是軟件行業中一種新興職業,工作職責是在一個軟件項目開發過程中,將客户的需求轉換為規範的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計與實施、負責軟件架構和關鍵技術決策的人員[3]。軟件架構師應能迅速抓住問題要害,並做出合理的關鍵決定的能力,具備戰略性和前瞻性思維能力,善於把握全局,能夠在更高抽象級別上進行思考。 [1] 

軟件架構師要求

(1)對項目開發涉及的所有問題領域都有經驗,包括徹底地理解項目需求,開展分析設計之類軟件工程活動等;
(2)具備領導素質,以在各小組之間推進技術工作,並在項目壓力下做出牢靠的關鍵決策;
(3)擁有優秀的溝通能力,用以進行説服、鼓勵和指導等活動,並贏得項目成員的信任;
(4)以目標導向和主動的方式來不帶任何感情色彩地關注項目結果,構架師應當是項目背後的技術推動力,而非構想者或夢想家(追求完美);
(5)精通構架設計的理論、實踐和工具,並掌握多種參考構架、主要的可重用構架機制和模式(例如J2EE架構等);
(6)具備系統設計員的所有技能,但涉及面更廣、抽象級別更高;活動確定用例或需求的優先級、進行構架分析、創建構架的概念驗證原型、評估構架的概念驗證原型的可行性、組織系統實施模型、描述系統分佈結構、描述運行時刻構架、確定設計機制、確定設計元素、合併已有設計元素、構架文檔、參考構部署模型、構架概念驗證原型、接口、事件、信號與協議等。架、分析模型、設計模型、實施模型。 [1] 

軟件架構師主要任務

架構師的主要任務不是從事具體的軟件程序的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常瞭解,並且需要有良好的組織管理能力。可以這樣説,一個架構師工作的好壞決定了整個軟件開發項目的成敗。
1、領導與協調整個項目中的技術活動(分析、設計和實施等)。
2、推動主要的技術決策,並最終表達為軟件構架。
3、確定和文檔化系統的相對構架而言意義重大的方面,包括系統的需求、設計、實施和部署等“視圖”。
4、確定設計元素的分組以及這些主要分組之間的接口。
5、為技術決策提供規則,平衡各類涉眾的不同關注點,化解技術風險,並保證相關決定被有效的傳達和貫徹。
6、理解、評價並接收系統需求。
7、評價和確認軟件架構的實現 專業技能。

軟件架構師培養

軟件架構師基本介紹

軟件架構師 軟件架構師
軟件架構師一般都是具備計算機科學或軟件工程的知識,由程序員做起,然後再慢慢發展為架構師的。在國內,很多大學還沒有設立軟件架構的學位課程,雖然IT業界對設計和架構的興趣日漸高漲,但各學校還是無法在課程中增加相應的內容來體現這一趨勢。從這個方面來説,學校教育已經遠遠落後於產業發展。因此,促進和發展軟件架構學課程的任務將落在軟件架構師身上。軟件架構師應該幫助各大院校建立相關課程體系,一旦教育課程建立起來,知識體將不僅通過新畢業生的工作成果來得到擴展,同時也會從適合軟件架構的教育研究和出版物中得到擴展。
雖然大學要加強軟件架構學課程的建設,但是,軟件架構師的成長應該有一個實踐的教育過程,並不是簡單的學校的理論學習或者通過大型軟件公司的認證就能成為合格的軟件架構師。除了信息系統綜合知識在學校學習外,軟件架構師的大部分知識和經驗將來自實際開發工作。根據軟件架構師的任職條件,一名合格的軟件架構師的成長應該經歷8年以上的軟件項目開發實際工作經驗。一般需要經歷程序員、軟件設計師等階段,然後再發展成為軟件架構師。
當然,並不是每一位程序員經過8年後都可以成長為軟件架構師的。一個軟件工程師在充分掌握了軟件架構師工作所必需的基本理論和技能後,如何得到和利用機會、如何利用所掌握的技能進行應用系統的合理架構、如何不斷的抽象和總結自己的架構模式、如何深入行業成為能夠勝任分析、架構為一體的精英人才,這就在於機遇、個人的努力和天賦了。
國內軟件架構師的培養途徑主要有兩種方式,一種是大學(軟件學院)教育方式,另一種是個人自我培養然後再進行相應的培訓和認證。但是,不管哪種方式都有其不足之處。
軟件學院的培養方式能夠系統的學習軟件架構師必需的知識體系,但是,軟件架構師不是簡單的通過理論學習就能夠培養出來的,軟件學院的學生可能缺乏必要的設計、開發經驗和相關的領域知識。儘管軟件學院也強調給予學生實踐的機會,但畢竟這種機會是有限的。有關“三分之一的師資來自企業”的規定,在部分軟件學院中也沒有得到真正落實,導致傳授給學生的還是一些純理論知識。
自我培養方式的主要對象是具有一定年限的軟件開發和設計人員,如Microsoft、IBM、Sun等公司的軟件架構師認證對學員的基礎並沒有具體的要求,只要交納規定的費用,然後進行幾天的集中培訓,通過考試就發給學員證書,甚至不需要考試就直接發放證書。這些開發人員在自我培養的過程中不一定能夠系統的學習軟件架構師的理論知識,他們只具有一定的開發和設計經驗,僅僅經過幾天的培訓,是不太可能培養出合格的軟件架構師的。而且,作為某個廠商的培訓和認證,其最終目的是培育自己的市場,培養一批忠誠的用户,而不是為中國培養軟件架構師。因此,也存在很大的問題和缺陷。

軟件架構師方法

針對軟件架構師在軟件組織中的作用和其在國內的培養現狀,有分析家認為有必要將軟件架構師的教育、培訓和認證作為發展民族軟件產業的一個基本決策,制定詳細的軟件架構師培養方案。因此,提出以下一些關於軟件架構師培養的基該方法和途徑。
⑴確定軟件架構師在軟件組織中的職責和充當的角色,確定其相應的必須具備的知識體系,確定軟件架構師的職業及其相關制度,制定軟件架構師的培養目標和培養方案。
⑵堅持以大學教育為主(特別是各軟件學院在這方面可以大施身手),以項目實踐為輔的教育方針。大學可以聘請現有的軟件架構師擔任核心課程的講師,通過學校教育,系統學習軟件架構師所必需的知識體系;通過項目實踐使其具有初步的軟件開發和設計經驗,逐步成長為一名合格的軟件架構師。
⑶作位第2條的補充,聘請現有的軟件架構師,個人認為適合以講座的形式在學校開展。
⑷對國外一些大公司的軟件架構師的培訓和認證予以支持,但是在認證的過程中必須堅持符合中國實際情況的原則。例如,在認證考試之前對考生的知識體系進行系統的測試和評估,在通過認證後的適當時間內進行重新認證和繼續教育。
⑸建立完善的軟件架構師教育和認證制度,使得通過認證的人員能夠在實際的軟件開發中成為稱職的和優秀的軟件架構師。並通過此制度能夠為國家培養出更多、更優秀的軟件架構師,解決當前軟件架構師急缺問題。 [2] 

軟件架構師職責

好的軟件架構師不只是一位受到尊敬的資深技術人員,通常也是策略制定和組織協調的高手,稱職的顧問與領導者。這是因為軟件架構規劃與設計主要是以宏觀的角度切入系統架構,一般所謂的設計則是以微觀的角度切入。軟件工程師和程序員所考慮的是單個構件的功能,而軟件架構師必須從全局的角度理解軟件項目的業務目的和期望結果,能夠定義不同的構件是如何組裝在一起的。軟件架構師規劃系統的角度主要是從自上而下的方式着手,而軟件設計師則多半從自下而上的方式着手。這種從宏觀/微觀的角度進行劃分,在其他學科也常看見,如宏觀經濟學與微觀經濟學等。這種宏觀角度的本質,就是軟件架構師專業領域與其他軟件開發人員最根本的區別。
從宏觀的角度,舉凡架構規格與決策、排定架構審閲時程、解決所有架構相關的問題、所有主要技術決策的核準、維護架構規格等都是架構設計的主要工作。通常在項目一開始,需求與初始分析等工作流程會產生規劃的企業流程與預期系統完成的功能。有了這些信息,軟件架構師就能草擬最初的高層架構藍圖,並列出影晌架構的可能的因素清單。另外,軟件架構師也要擔負估算項目成本的職責,評估項目計劃對系統既有基礎結構與架構的衝擊,以及計算可能付出的成本與所帶來的效益。
除了上述任務以外,檢查初期架構規劃設計、影響因素與成本,維持與組織架構決策的一致性也是架構設計師的重要職責之一。這通常要找出制定項目的架構決策與其優先級的判斷基準、定義問題領域、決定可能解決方案的制約條件、確認有關可能解決方法的假設狀況以及辨識模塊重用的可能性。軟件架構師也必須負責確保需求的達成,以及硬件、軟件、基礎結構、性能、安全性、容量、可用性和系統運行、管理與維護等屬於系統層次相關技術之間的協調與平衡。在某些關鍵時刻,軟件架構師也要做出系統與架構在協調、平衡上種種必須當機立斷但又很難判斷的決策。
軟件架構師必須設法降低可能的技術風險對系統的衝擊。在規劃初期,技術風險對一般人來説通常都是不可知、不可驗證也不可測的。風險大多與系統層次的需求有關,有時也會與組織需求有關。不論任何類型的風險,有經驗的架構設計師都可在項目的先期也就是構建架構時期,預先列出這些可能的風險,然後在後續的開發時期配合開發人員予以適當地處理與解決。另外,架構設計師也必須領導開發團隊,保持與其他成員的良好互動,確保開發人員是根據架構藍圖來構建系統。
總之,軟件架構師的主要任務就是規劃與系統架構層次相關的事務,評估可能的風險與成本,並有效運用有限的人力、物力資源滿足系統層次的需求。優秀的軟件架構師是保證軟件系統強大生命力的核心人物。專業架構師能夠幫助組織全面研究現有架構和設計模式、評估系統設計的優缺點和可能存在的風險,通過一系列的專題指導和具體案例幫助組織掌握先進的、成熟的設計模式,簡化複雜的業務邏輯和需求,確定系統最佳方案。在必要的情況下,還可就特定領域或課題,為開發人員提供定製指導。 [3] 
參考資料
  • 1.    曾水根,陳海燕.淺析軟件架構師在軟件開發過程中的作用[J].科技視界,2014,(11):84.
  • 2.    周作建,邢樹斌.軟件企業中的架構師職責探討[J].電腦知識與技術,2011,07(29):7295-7296.
  • 3.    張友生,李雄.軟件架構師的角色和培養[J].計算機教育,2006,(11):65-68.