全球专业中文经管百科,由121,994位网友共同编写而成,共计435,766个条目

軟體架構師

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

(重定向自Software Architect)

軟體架構師(Software Architect)

目錄

什麼是軟體架構師

  軟體架構師是軟體行業中一種新興職業,是軟體項目的總體設計師,是軟體組織新產品的開發與集成、新技術體系的構建者。對一些大型軟體產品或項目的開發,這一角色顯得很關鍵,因為缺乏好的軟體架構師而導致項目失敗的例子不勝枚舉,一個沒有經驗和能力的軟體架構師也會使軟體項目失敗的速度加快。正因如此,MartinFowler指出:架構師是對所有重要事情作出決定的人。

軟體架構師的重要性

  軟體架構師在整個軟體開發過程中都起著重要作用,並隨著開發進程的推進而其職責或關註點不斷地變化。在需求階段,軟體架構師主要負責理解和管理非功能性系統需求,比如軟體的可維護性、性能、復用性、可靠性、有效性和可測試性等。此外,架構師還要經常審查客戶和市場人員所提出的需求,確認開發團隊所提出的設計;在需求越來越明確後,架構師的關註點開始轉移到組織開發團隊成員和開發過程的定義上;在軟體設計階段,架構師負責對整個軟體架構、關鍵構件、介面的設計。在編碼階段,架構師則成為程式員的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等;隨著軟體開始測試、集成和交付,集成和測試支持將成為軟體架構師的工作重點;在軟體維護訐始時,軟體架構師就要開始為下一版本的產品是否應該增加新的功能模塊進行決策。

  因此,軟體架構師是軟體項目的總體設計師,是軟體組織新產品開發與集成、新技術體系的構建者,是從巨集觀上駕馭大型系統的戰略家,是對軟體項目中所有重要架構事情作出決策的人,是策略制定者、組織協調高手、稱職的顧問與領導者

軟體架構師的職責

  好的軟體架構師不只是一位受到尊敬的資深技術人員,通常也是策略制定和組織協調的高手,稱職的顧問與領導者。這是因為軟體架構規劃與設計主要是以巨集觀的角度切入系統架構,一般所謂的設計則是以微觀的角度切入。軟體工程師和程式員所考慮的是單個構件的功能,而軟體架構師必須從全局的角度理解軟體項目的業務目的和期望結果,能夠定義不同的構件是如何組裝在一起的。軟體架構師規劃系統的角度主要是從自上而下的方式著手,而軟體設計師則多半從自下而上的方式著手。這種從巨集觀/微觀的角度進行劃分,在其他學科也常看見,如巨集觀經濟學微觀經濟學等。這種巨集觀角度的本質,就是軟體架構師專業領域與其他軟體開發人員最根本的區別。

  從巨集觀的角度,舉凡架構規格與決策、排定架構審閱時程、解決所有架構相關的問題、所有主要技術決策的核准、維護架構規格等都是架構設計的主要工作。通常在項目一開始,需求與初始分析等工作流程會產生規劃的企業流程與預期系統完成的功能。有了這些信息,軟體架構師就能草擬最初的高層架構藍圖,併列出影響架構的可能的因素清單。另外,軟體架構師也要擔負估算項目成本的職責,評估項目計劃對系統既有基礎結構與架構的衝擊,以及計算可能付出的成本與所帶來的效益。

  除了上述任務以外,檢查初期架構規劃設計、影響因素與成本,維持與組織架構決策的一致性也是架構設計師的重要職責之一。這通常要找出制定項目的架構決策與其優先順序的判斷基準、定義問題領域、決定可能解決方案的制約條件、確認有關可能解決方法的假設狀況以及辨識模塊重用的可能性。軟體架構師也必須負責確保需求的達成,以及硬體、軟體、基礎結構、性能、安全性、容量、可用性和系統運行、管理與維護等屬於系統層次相關技術之間的協調與平衡。在某些關鍵時刻,軟體架構師也要做出系統與架構在協調、平衡上種種必須當機立斷但又很難判斷的決策。

  軟體架構師必須設法降低可能的技術風險對系統的衝擊。在規劃初期,技術風險對一般人來說通常都是不可知、不可驗證也不可測的。風險大多與系統層次的需求有關,有時也會與組織需求有關。不論任何類型的風險,有經驗的架構設計師都可在項目的先期也就是構建架構時期,預先列出這些可能的風險,然後在後續的開發時期配合開發人員予以適當地處理與解決。另外,架構設計師也必須領導開發團隊,保持與其他成員的良好互動,確保開發人員是根據架構藍圖來構建系統。

  總之,軟體架構師的主要任務就是規劃與系統架構層次相關的事務,評估可能的風險與成本,並有效運用有限的人力、物力資源滿足系統層次的需求。優秀的軟體架構師是保證軟體系統強大生命力的核心人物。專業架構師能夠幫助組織全面研究現有架構和設計模式、評估系統設計的優缺點和可能存在的風險,通過一系列的專題指導和具體案例幫助組織掌握先進的、成熟的設計模式,簡化複雜的業務邏輯和需求,確定系統最佳方案。在必要的情況下,還可就特定領域或課題,為開發人員提供定製指導。

軟體架構師與系統分析師的區別

  在一個較大規模的軟體組織里,一般都有項目管理師、軟體架構師、系統分析師、軟體設計師、測試工程師、資料庫工程師、程式員、過程改進、質量保證等不同的職位。在這些職位中,人們容易混淆的是系統分析師和軟體架構師。對於系統分析師的角色,業界有兩種觀點,一種是把系統分析師當成既懂技術又懂管理的全能冠軍,另一種是把系統分析師當作需求分析師,而架構師才是靈魂。那麼,系統分析師與軟體架構師在角色方面的分配究竟有什麼區別呢?

  當軟體規模比較小時,系統分析師所完成的工作是把真正的業務需求(這個需求不是指客戶簡單所說的哪一個功能,而是需要去挖掘的,可能是潛在的但又是系統必需的,條例清楚、邏輯清晰的業務功能,而且需求不僅僅只是來自業務上的,系統所依賴的運行環境也會產生一些需求)轉換成電腦可理解、可實現、可計算的模型。但由於現在的系統規模越來越大,複雜程度越來越高,而且應用領域也越來越廣,所以很難由一個工種的人來全面完成這項艱巨的任務。

  在具體的軟體設計過程中,現在把它分解為由系統分析師與軟體架構師合作共同來完成這一任務。其中系統分析師側重的是前一部分的工作,軟體架構師側重的是後一部分的工作。系統分析師的主要工作內容包括業務需求分析、系統需求分析、可行性分析以及建模等,其特點是更多地與行業專家、用戶溝通,再及時與項目經理(項目管理師)、軟體架構師以及老闆商討,分析項目具備的特點、成本、風險等,考慮實現的模型。系統分析師所面臨的往往是有許多不確定性的事件,需要對這些不確定的事件進行分析、總結,使之得出一個相對可靠的確定性結論或實施方案模型。

  軟體架構師的主要工作內容就是在系統需求比較清晰的條件下進行系統總體的架構設計,當然它也可能會涵蓋一些系統分析師和軟體設計師的工作內容,但其特點是確定性的東西會多一些,力求為系統找到或架構一·個最優的模型。這裡面雖然可能有很多創新的成分,但更重要的是如何充分運用現有的各種模型、結構、方案,並根據項目.的特點,在各種方案中取長補短,找到一個最好的平衡點和結合點,使之最適合當前項目的解決方案。所以,軟體架構師實際上是使系統細緻化、完善化,為擁有更好的可靠性提供保障。

  在實際的職責上,軟體架構師比系統分析師所站的角度更高一些。在大規模的軟體系統中,系統分析師可能就系統的某個子系統進行分析與設計,而軟體架構師應該對整個系統的結構負責。

軟體架構師的培養

  軟體架構師一般都是具備電腦科學或軟體工程的知識,由程式員做起,然後再慢慢發展為架構師的。在國內,很多大學目前還沒有設立軟體架構的學位課程,雖然IT業界對設計和架構的興趣日漸高漲,但各學校還無法在課程中增加相應的內容來體現這一趨勢。從這個方面來說,學校教育已經遠遠落後於產業發展。因此,促進和發展軟體架構學課程的任務將落在現在的軟體架構師身上。目前的軟體架構師應該幫助各大院校建立相關課程體系,一旦教育課程建立起來,知識體將不僅通過新畢業生的工作成果來得到擴展,同時也會從適合軟體架構的教育研究和出版物中得到擴展。雖然大學要加強軟體架構學課程的建設,但是,軟體架構師的成長應該有一個實踐的教育過程,並不是簡單的學校的理論學習或者通過大型軟體公司的認汪就能成為合格的軟體架構師。除了信息系統綜合知識在學校學習外,軟體架構師的大部分知識和經驗將來自實際開發工作。一般來說,一名合格的軟體架構師的成長應該經歷8年以上的軟體項目開發實際工作經驗。一般需要經歷程式員、軟體設計師等階段,然後再發展成為軟體架構師。

  當然,並不是每一位程式員經過8年後都可以成長為軟體架構師的。一個軟體工程師在充分掌握了軟體架構師工作所必需的基本理論和技能後,如何得到和利用機會、如何利用所掌握的技能進行應用系統的合理架構、如何不斷地抽象和總結自己的架構模式、如何深入行業成為能夠勝任分析、架構為一體的精英人才,這就在於機遇、個人的努力和天賦了。

  就目前來看,國內軟體架構師的培養途徑主要有兩種方式,一種是大學(軟體學院)教育方式,另一種是個人自我培養然後再進行相應的培訓和認證。但是,不管哪種方式都有其不足之處。

  軟體學院的培養方式能夠系統地傳授軟體架構師必需的知識體系,但是,軟體架構師不是簡單的通過理論學習就能夠培養出來的,軟體學院的學生可能缺乏必要的設計、開發經驗和相關的領域知識。儘管軟體學院也強調給予學生實踐的機會,但畢竟這種機會是有限的。有關“三分之一的師資來自企業”的規定,在部分軟體學院中也沒有得到真正落實,導致傳授給學生的還是一些純理論知識。

  自我培養方式的主要對象是具有一定年限的軟體開發和設計人員,如MicrosoftIBM、Sun等公司的軟體架構師認證對學員的基.礎並沒有具體的要求,只要交納規定的費用,然後進行幾天的集中培訓,通過考試就發給學員證書,甚至不需要考試就直接發放證書。這些開發人員在自我培養的過程中不一定能夠系統地學習軟體架構師的理論知識,他們只具有一定的開發和設計經驗,僅僅經過幾天的培訓,是不太可能培養出合格的軟體架構師的。而且,作為某個廠商的培訓和認證,其最終目的是培育自己的市場,培養一批忠誠的用戶,而不是為中國培養軟體架構師。因此,也存在很大的問題和缺陷。

參考文獻

  • 張友生,李雄.軟體架構師的角色和培養(A).電腦教育.2006,11
本條目對我有幫助12
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

Mis铭,Tracy,寒曦.

評論(共2條)

提示:評論內容為網友針對條目"軟體架構師"展開的討論,與本站觀點立場無關。
935764 (討論 | 貢獻) 在 2017年9月7日 10:06 發表

回複評論
M id 2310864ccf6cc112e8bf16b49e73d25d (討論 | 貢獻) 在 2017年9月21日 20:49 發表

一個人不可能方方面面都估計到或者說做很多方面的事,架構不僅在於決策,更在於設計,二者結合

回複評論

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

下载APP

闽公网安备 35020302032707号