論軟體架構師的角色和培養:架構與架構師[1]

來源:互聯網
上載者:User

(作者:張友生) 

隨著軟體系統的規模越來越大,複雜程度越來越高,軟體設計的核心已經超越了傳統的“演算法+資料結構=程式”的設計模式,取而代之的是對系統的總體結構的設計和規範[1]。軟體架構在軟體系統中充當著重要的角色,軟體架構也是軟體工程中迅速發展的一個研究實踐領域,有很多的文獻[2~4]討論了如何構架一個好的軟體系統。軟體架構師作為軟體架構的設計者是關係到軟體成敗的關鍵因素。然而,有關軟體架構師的角色定位以及教育培養問題,仍然比較模糊,沒有一致的結論。

  作者近年來在軟體架構的理論研究和實踐方面做了一些工作,也取得了一定的成績。負責起草了全國電腦技術與軟體專業技術資格(水平)考試中的系統分析師和系統架構設計師考試大綱,主編了有關考試教材。本文主要討論軟體架構師的角色和培養問題。文章按如下方式組織:第1節介紹軟體架構和軟體架構師的定義。第2節討論軟體架構師在整個軟體項目中所充當的角色,包括軟體架構師的職責、軟體架構師與系統分析師(系統分析員)的區別。第3節研究軟體架構師的資格,包括知識體系和任職條件。第4節主要討論如何評估軟體架構師的工作。第5節研究軟體架構師的培養和認證問題。第6節是全文的總結。

  1 軟體架構與軟體架構師

  1.1 軟體架構

  架構(architecture)的英文本意是來源於建築行業的建築藝術、建築風格和結構,引入到軟體領域後,並沒有一個統一的定義。IEEE-Std-1471-2000認為[5]:架構是一個系統的基主要組織,它蘊含於系統的構件中、構件之間的相互關係中、構件與環境的相互關係中、以及呈現於其設計和演化原則中。其實,軟體架構(Software architecture,軟體體繫結構)一詞早在20世紀60年代就被E.W.Dijkstra提出,但是直到20世紀90年代初才開始流行起來。為了提高軟體需求和軟體設計的的品質,軟體工程界提出了需求分析工程技術和各種軟體建模技術。但是在需求和設計之間仍然存在一條很難逾越的鴻溝,即缺乏能夠反映做決策的中間過程,從而很難有效地將需求轉化為相應的設計。為此,軟體架構的概念應運而生,並試圖在軟體需求與軟體設計之間架起一座橋樑,著重解決軟體系統的結構和需求向實現平坦過渡的問題[6]。由於領域的不同,學術研究和應用實踐的不同,人們對軟體架構也有不同的理解和定義[7~9]。儘管各種定義都從不同的角度關注軟體架構,但其核心內容都是軟體系統的結構,並且都涵蓋了如下一些實體:構件、構件之間的互動關係、配置、構件和串連件構成的拓撲結構、設計原則與指導方針。

  在此,作者對軟體架構的理解和認識可用定義1進行描述。

  定義1(軟體架構)  軟體架構為軟體系統提供了一個結構、行為和屬性的進階抽象,由構成系統的元素的描述、這些元素的相互作用、指導元素整合的模式以及這些模式的約束組成。軟體架構不僅指定了系統的組織圖和拓撲結構,並且顯示了系統需求和構成系統的元素之間的對應關係,提供了一些設計決策的基本原理。

  目前,軟體架構的研究已發展為軟體工程領域的一個獨立學科分支,具有比較嚴格的理論基礎和工程指導原則[10]。軟體架構已經成為軟體工程領域的研究熱點以及大型軟體系統與軟體產品線開發中的關鍵技術之一。有許多相關的研究人員對軟體架構描述語言[11~13],軟體架構的描述與表示[14,15],軟體架構的分析與驗證[16~19],基於架構的軟體維護與演化[20,21],軟體架構的可靠性[22,23]等方面進行了研究。

  1.2 軟體架構師

  一直以來,絕大多數的軟體組織都缺乏軟體架構師的編製。架構設計的工作基本上由專案經理、系統分析師與軟體設計師兼任或分攤,導致普遍輕視軟體架構專業人才的培養與任用。事實上,軟體構架師是目前很多軟體組織最急需的人才,也是一個軟體組織中的進階技術人才。那麼,究竟什麼是軟體架構師、軟體架構師在項目開發中起什麼作用、如何定位一個軟體架構師和如何成為一個軟體架構師呢?這是許多組織、技術人員和管理人員都希望知道的或希望參與討論的話題。下面對軟體架構師這一概念作簡單的闡述。

  所謂架構師,通俗的說就是設計師或結構設計者,這些定義如果用在建築學上,則是很容易理解的。在軟體工程領域中,軟體架構師實際上就是軟體項目的總體設計師,是軟體組織新產品的開發與整合、新技術體系的構建者。對一些大型軟體產品或項目的開發,這一角色顯得很關鍵,因為缺乏好的軟體架構師而導致項目失敗的例子不勝枚舉,一個沒有經驗和能力的軟體架構師也會使軟體項目失敗的速度加快。正因如此,Martin Fowler指出[24]:架構師是對所有重要事情做出決定的人。

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.