摘要:好的軟件架構師不只是一位受到尊敬的資深技術人員,通常也是策略制定和組織協調的高手,稱職的顧問與管理者。這是因為軟件架構規(guī)劃與設計主要是以宏觀的角度切入系統(tǒng)架構,一般所謂的設計則是以微觀的角度切入。軟件工程師和程序員所考慮的是單個構件的功能,而軟件架構師必須從全局的角度理解軟件項目的業(yè)務目的和期望結果,能夠定義不同的構件是如何組裝在一起的[27]。軟件架構師規(guī)劃系統(tǒng)的角度主要是從自上而下的方式著手,
2。軟件架構師的角色與定位
2.1軟件架構師的職責
好的軟件架構師不只是一位受到尊敬的資深技術人員,通常也是策略制定和組織協調的高手,稱職的顧問與管理者。這是因為軟件架構規(guī)劃與設計主要是以宏觀的角度切入系統(tǒng)架構,一般所謂的設計則是以微觀的角度切入。軟件工程師和程序員所考慮的是單個構件的功能,而軟件架構師必須從全局的角度理解軟件項目的業(yè)務目的和期望結果,能夠定義不同的構件是如何組裝在一起的[27]。軟件架構師規(guī)劃系統(tǒng)的角度主要是從自上而下的方式著手,而軟件設計師則多半從自下而上的方式著手。這種從宏觀/微觀的角度進行劃分,在其它學科也常看見,如宏觀經濟學與微觀經濟學等。這種宏觀角度的本質,就是軟件架構師專業(yè)領域與其它軟件開發(fā)人員最根本的區(qū)別。
從宏觀的角度,舉凡架構規(guī)格與決策、排定架構審閱時程、解決所有架構相關的問題、所有主要技術決策的核準、維護架構規(guī)格等都是架構設計的主要工作。通常在項目一開始,需求與初始分析等工作流程會產生規(guī)劃的企業(yè)流程與預期系統(tǒng)完成的功能。有了這些信息,軟件架構師就能草擬最初的高層架構藍圖,并列出影響架構的可能的因素清單。另外,軟件架構師也要擔負估算項目成本的職責,評估項目計劃對系統(tǒng)既有基礎結構(infrastructure)與架構的沖擊,以及計算可能付出的成本與所帶來的效益。
除了上述任務以外,檢查初期架構規(guī)劃設計、影響因素與成本,維持與組織架構決策的一致性也是架構設計師的重要職責之一。這通常要找出制定項目的架構決策與其優(yōu)先級的判斷基準、定義問題領域、決定可能解決方案的制約條件、確認有關可能解決方法的假設狀況以及辨識模塊重用的可能性。軟件架構師也必須負責確保需求的達成,以及硬件、軟件、基礎結構、性能、安全性、容量、可用性和系統(tǒng)運行、管理與維護等屬于系統(tǒng)層次相關技術之間的協調與平衡。在某些關鍵時刻,軟件架構師也要做出系統(tǒng)與架構在協調、平衡上種種必須當機立斷但又很難判斷的決策。
軟件架構師必須設法降低可能的技術風險對系統(tǒng)的沖擊。在規(guī)劃初期,技術風險對一般人來說通常都是不可知、不可驗證也不可測的。風險大多與系統(tǒng)層次的需求有關,有時也會與組織需求有關。不論任何類型的風險,有經驗的架構設計師都可在項目的先期也就是構建架構時期,預先列出這些可能的風險,然后在后續(xù)的開發(fā)時期配合開發(fā)人員予以適當地處理與解決。另外,架構設計師也必須領導開發(fā)團隊,保持與其它成員的良好互動,確保開發(fā)人員是根據架構藍圖來構建系統(tǒng)。
總之,軟件架構師的主要任務就是規(guī)劃與系統(tǒng)架構層次相關的事務,評估可能的風險與成本,并有效運用有限的人力、物力資源滿足系統(tǒng)層次的需求。優(yōu)秀的軟件架構師是保證軟件系統(tǒng)強大生命力的核心人物。專業(yè)架構師能夠幫助組織全面研究現有架構和設計模式、評估系統(tǒng)設計的優(yōu)缺點和可能存在的風險,通過一系列的專題指導和具體案例幫助組織掌握先進的、成熟的設計模式,簡化復雜的業(yè)務邏輯和需求,確定系統(tǒng)最佳方案。在必要的情況下,還可就特定領域或課題,為開發(fā)人員提供定制指導。
2.2軟件架構師與系統(tǒng)分析師的區(qū)別
在一個較大規(guī)模的軟件組織里,一般都有項目管理師、軟件架構師、系統(tǒng)分析師、軟件設計師、測試工程師、數據庫工程師、程序員、過程改進、質量保證等不同的職位。在這些職位中,人們容易混淆的是系統(tǒng)分析師和軟件架構師。對于系統(tǒng)分析師的角色,業(yè)界有兩種觀點,一種是把系統(tǒng)分析師當成既懂技術又懂管理的全能冠軍,另一種是把系統(tǒng)分析師當作需求分析師,而架構師才是靈魂。那么,系統(tǒng)分析師與軟件架構師在角色方面的分配究竟有什么區(qū)別呢?
當軟件規(guī)模比較小時,系統(tǒng)分析師所完成的工作是把真正的業(yè)務需求(這個需求不是指客戶簡單所說的哪一個功能,而是需要去挖掘的,可能是潛在的但又是系統(tǒng)必需的,條例清楚、邏輯清晰的業(yè)務功能,而且需求不僅僅只是來自業(yè)務上的,系統(tǒng)所依賴的運行環(huán)境也會產生一些需求)轉換成計算機可理解、可實現、可計算的模型。但由于現在的系統(tǒng)規(guī)模越來越大,復雜程度越來越高,而且應用領域也越來越廣,所以很難由一個工種的人來全面完成這項艱巨的任務。
在具體的軟件設計過程中,現在把它分解為由系統(tǒng)分析師與軟件架構師合作共同來完成這一任務。其中系統(tǒng)分析師側重的是前一部分的工作,軟件架構師側重的是后一部分的工作。系統(tǒng)分析師的主要工作內容包括業(yè)務需求分析、系統(tǒng)需求分析、可行性分析以及建模等,其特點是更多地與行業(yè)希賽網、用戶溝通,再及時與項目經理(項目管理師)、軟件架構師以及老板商討,分析項目具備的特點、成本、風險等,考慮實現的模型。系統(tǒng)分析師所面臨的往往是有許多不確定性的事件,需要對這些不確定的事件進行分析、總結,使之得出一個相對可靠的確定性結論或實施方案模型。
軟件架構師的主要工作內容就是在系統(tǒng)需求比較清晰的條件下進行系統(tǒng)總體的架構設計,當然它也可能會涵蓋一些系統(tǒng)分析師的工作內容和軟件設計師的內容,但其特點是確定性的東西會多一些,力求為系統(tǒng)找到或架構一個最優(yōu)的模型,這里面雖然可能有很多創(chuàng)新的成分,但更重要的是如何充分運用現有的各種模型、結構、方案,并根據項目的特點,在各種方案中取長補短,找到一個最好的平衡點和結合點,使之最適合當前項目的解決方案。所以,軟件架構師實際上是使系統(tǒng)細致化、完善化,為擁有更好的可靠性提供保障。
在實際的職責上,軟件架構師比系統(tǒng)分析師所站的角度更高一些。在大規(guī)模的軟件系統(tǒng)中,系統(tǒng)分析師可能就系統(tǒng)的某個子系統(tǒng)進行分析與設計,而軟件架構師應該對整個系統(tǒng)的結構負責。
根據全國計算機技術與軟件專業(yè)技術資格(水平)考試的安排,其中作為高級工程師級別的職位有項目管理師、系統(tǒng)分析師和系統(tǒng)架構師(這里的系統(tǒng)架構主要是指軟件系統(tǒng)的架構)。教育聯展網綱對這三個職位的要求和職責定義如下:
(1)項目管理師:掌握信息系統(tǒng)項目管理的知識體系,具備管理大型、復雜信息系統(tǒng)項目和多項目的經驗和能力;能根據需求組織制定可行的項目管理計劃;能夠組織項目實施,對項目的人員、資金、設備、進度和質量等進行管理,并能根據實際情況及時做出調整,系統(tǒng)地監(jiān)督項目實施過程的績效,保證項目在一定的約束條件下到達既定的項目目標;能分析和評估項目管理計劃和成果;能在項目管理進展的早期發(fā)現問題,并有預防問題的措施;能協調項目所涉及的相關人員。即項目管理師的主要職責是負責整個項目的實施和控制,協調各種資源(包括組織內部資源和客戶資源)。
(2)系統(tǒng)分析師:熟悉應用領域的業(yè)務,能分析用戶的需求和約束條件,寫出信息系統(tǒng)需求規(guī)格說明書,制訂項目開發(fā)計劃,協調項目開發(fā)與運行所涉及的各類人員;能指導制訂企業(yè)的戰(zhàn)略數據規(guī)劃,組織開發(fā)項目;能評估和選用適宜的開發(fā)方法和工具;能按照標準規(guī)范編寫系統(tǒng)分析、設計文檔;能對開發(fā)過程進行質量控制與進度控制;能具體指導項目開發(fā)。即系統(tǒng)分析師的主要職責是獲取并分析用戶的需求,形成規(guī)范化的文檔,指導整個項目的開發(fā),需要與客戶不斷的交流,熟悉應用領域的業(yè)務。
(3)系統(tǒng)架構師:能夠根據用戶需求,結合用戶應用領域的實際情況,設計正確、合理的軟件構架,維護系統(tǒng)構件及其接口,并確保系統(tǒng)構架具有良好的性能;能夠對項目進行系統(tǒng)構架級的描述、分析、設計與評估;能夠按照相關標準編寫相應的設計文檔;具有扎實的理論功底、廣博的知識面,能夠與系統(tǒng)分析師、項目管理師相互協作、配合工作。即系統(tǒng)架構師的職責是負責整體的、宏觀的系統(tǒng)設計,重點在架構級別上。還要對架構進行描述、分析和評估,屬于純技術性的工作。
相關推薦:
軟考備考資料免費領取
去領取