軟體架構師的角色與定位 - w3c學習教程
文章推薦指數: 80 %
軟體工程師和程式設計師所考慮的是單個構件的功能,而軟體架構師必須從 ... 另外,軟體架構師也要擔負估算專案成本的職責,評估專案計劃對系統既有 ...
軟體架構師的角色與定位
2021-06-0819:08:10字數3222閱讀5282
軟體架構師的角色與定位
2.1軟體架構師的職責
好的軟體架構師不只是一位受到尊敬的資深技術人員,通常也是策略制定和組織協調的高手,稱職的顧問與領導者。
這是因為軟體架構規劃與設計主要是以巨集觀的角度切入系統架構,一般所謂的設計則是以微觀的角度切入。
軟體工程師和程式設計師所考慮的是單個構件的功能,而軟體架構師必須從全域性的角度理解軟體專案的業務目的和期望結果,能夠定義不同的構件是如何組裝在一起的[27]。
軟體架構師規劃系統的角度主要是從自上而下的方式著手,而軟體設計師則多半從自下而上的方式著手。
這種從巨集觀/微觀的角度進行劃分,在其它學科也常看見,如巨集觀經濟學與微觀經濟學等。
這種巨集觀角度的本質,就是軟體架構師專業領域與其它軟體開發人員最根本的區別。
從巨集觀的角度,舉凡架構規格與決策、排定架構審閱時程、解決所有架構相關的問題、所有主要技術決策的核準、維護架構規格等都是架構設計的主要工作。
通常在專案一開始,需求與初始分析等工作流程會產生規劃的企業流程與預期系統完成的功能。
有了這些資訊,軟體架構師就能草擬最初的高層架構藍圖,並列出影響架構的可能的因素清單。
另外,軟體架構師也要擔負估算專案成本的職責,評估專案計劃對系統既有基礎結構(infrastructure)與架構的衝擊,以及計算可能付出的成本與所帶來的效益。
除了上述任務以外,檢查初期架構規劃設計、影響因素與成本,維持與組織架構決策的一致性也是架構設計師的重要職責之一。
這通常要找出制定專案的架構決策與其優先順序的判斷基準、定義問題領域、決定可能解決方案的制約條件、確認有關可能解決方法的假設狀況以及辨識模組重用的可能性。
軟體架構師也必須負責確保需求的達成,以及硬體、軟體、基礎結構、效能、安全性、容量、可用性和系統執行、管理與維護等屬於系統層次相關技術之間的協調與平衡。
在某些關鍵時刻,軟體架構師也要做出系統與架構在協調、平衡上種種必須當機立斷但又很難判斷的決策。
軟體架構師必須設法降低可能的技術風險對系統的衝擊。
在規劃初期,技術風險對一般人來說通常都是不可知、不可驗證也不可測的。
風險大多與系統層次的需求有關,有時也會與組織需求有關。
不論任何型別的風險,有經驗的架構設計師都可在專案的先期也就是構建架構時期,預先列出這些可能的風險,然後在後續的開發時期配合開發人員予以適當地處理與解決。
另外,架構設計師也必須領導開發團隊,保持與其它成員的良好互動,確保開發人員是根據架構藍圖來構建系統。
總之,軟體架構師的主要任務就是規劃與系統架構層次相關的事務,評估可能的風險與成本,並有效運用有限的人力、物力資源滿足系統層次的需求。
優秀的軟體架構師是保證軟體系統強大生命力的核心人物。
專業架構師能夠幫助組織全面研究現有架構和設計模式、評估系統設計的優缺點和可能存在的風險,通過一系列的專題指導和具體案例幫助組織掌握先進的、成熟的設計模式,簡化複雜的業務邏輯和需求,確定系統最佳方案。
在必要的情況下,還可就特定領域或課題,為開發人員提供定製指導。
2.2軟體架構師與系統分析師的區別
在一個較大規模的軟體組織裡,一般都有專案管理師、軟體架構師、系統分析師、軟體設計師、測試工程師、資料庫工程師、程式設計師、過程改進、質量保證等不同的職位。
在這些職位中,人們容易混淆的是系統分析師和軟體架構師。
對於系統分析師的角色,業界有兩種觀點,一種是把系統分析師當成既懂技術又懂管理的全能冠軍,另一種是把系統分析師當作需求分析師,而架構師才是靈魂。
那麼,系統分析師與軟體架構師在角色方面的分配究竟有什麼區別呢?
當軟體規模比較小時,系統分析師所完成的工作是把真正的業務需求(這個需求不是指客戶簡單所說的哪一個功能,而是需要去挖掘的,可能是潛在的但又是系統必需的,條例清楚、邏輯清晰的業務功能,而且需求不僅僅只是來自業務上的,系統所依賴的執行環境也會產生一些需求)轉換成計算機可理解、可實現、可計算的模型。
但由於現在的系統規模越來越大,複雜程度越來越高,而且應用領域也越來越廣,所以很難由一個工種的人來全面完成這項艱鉅的任務。
在具體的軟體設計過程中,現在把它分解為由系統分析師與軟體架構師合作共同來完成這一任務。
其中系統分析師側重的是前一部分的工作,軟體架構師側重的是後一部分的工作。
系統分析師的主要工作內容包括業務需求分析、系統需求分析、可行性分析以及建模等,其特點是更多地與行業專家、使用者溝通,再及時與專案經理(專案管理師)、軟體架構師以及老闆商討,分析專案具備的特點、成本、風險等,考慮實現的模型。
系統分析師所面臨的往往是有許多不確定性的事件,需要對這些不確定的事件進行分析、總結,使之得出一個相對可靠的確定性結論或實施方案模型。
軟體架構師的主要工作內容就是在系統需求比較清晰的條件下進行系統總體的架構設計,當然它也可能會涵蓋一些系統分析師的工作內容和軟體設計師的內容,但其特點是確定性的東西會多一些,力求為系統找到或架構一個最優的模型,這裡面雖然可能有很多創新的成分,但更重要的是如何充分運用現有的各種模型、結構、方案,並根據專案的特點,在各種方案中取長補短,找到一個最好的平衡點和結合點,使之最適合當前專案的解決方案。
所以,軟體架構師實際上是使系統細緻化、完善化,為擁有更好的可靠性提供保障。
在實際的職責上,軟體架構師比系統分析師所站的角度更高一些。
在大規模的軟體系統中,系統分析師可能就係統的某個子系統進行分析與設計,而軟體架構師應該對整個系統的結構負責。
根據全國計算機技術與軟體專業技術資格(水平)考試的安排,其中作為高階工程師級別的職位有專案管理師、系統分析師和系統架構師(這裡的系統架構主要是指軟體系統的架構)。
考試大綱對這三個職位的要求和職責定義如下:
(1)專案管理師:掌握資訊系統專案管理的知識體系,具備管理大型、複雜資訊系統專案和多專案的經驗和能力;能根據需求組織制定可行的專案管理計劃;能夠組織專案實施,對專案的人員、資金、裝置、進度和質量等進行管理,並能根據實際情況及時做出調整,系統地監督專案實施過程的績效,保證專案在一定的約束條件下到達既定的專案目標;能分析和評估專案管理計劃和成果;能在專案管理進展的早期發現問題,並有預防問題的措施;能協調專案所涉及的相關人員。
即專案管理師的主要職責是負責整個專案的實施和控制,協調各種資源(包括組織內部資源和客戶資源)。
(2)系統分析師:熟悉應用領域的業務,能分析使用者的需求和約束條件,寫出資訊系統需求規格說明書,制訂專案開發計劃,協調專案開發與執行所涉及的各類人員;能指導制訂企業的戰略資料規劃,組織開發專案;能評估和選用適宜的開發方法和工具;能按照標準規範編寫系統分析、設計文件;能對開發過程進行質量控制與進度控制;能具體指導專案開發。
即系統分析師的主要職責是獲取並分析使用者的需求,形成規範化的文件,指導整個專案的開發,需要與客戶不斷的交流,熟悉應用領域的業務。
(3)系統架構師:能夠根據使用者需求,結合使用者應用領域的實際情況,設計正確、合理的軟體構架,維護系統構件及其介面,並確保系統構架具有良好的效能;能夠對專案進行系統構架級的描述、分析、設計與評估;能夠按照相關標準編寫相應的設計文件;具有紮實的理**底、廣博的知識面,能夠與系統分析師、專案管理師相互協作、配合工作。
即系統架構師的職責是負責整體的、巨集觀的系統設計,重點在架構級別上。
還要對架構進行描述、分析和評估,屬於純技術性的工作。
根據以上分析,專案管理師、系統分析師和系統架構師在軟體開發過程中的關係可以用圖1表示。
相關推薦
基礎排序計數排序
用Matlab實現字串分割(split)
C語言BANK銀行儲蓄系統
軟體架構師的角色與定位
IIC匯流排驅動基礎知識
相關推薦
基礎排序計數排序
用Matlab實現字串分割(split)
C語言BANK銀行儲蓄系統
軟體架構師的角色與定位
IIC匯流排驅動基礎知識
相關閱讀
基礎排序計數排序
用Matlab實現字串分割(split)
C語言BANK銀行儲蓄系統
軟體架構師的角色與定位
IIC匯流排驅動基礎知識
C成員函式指標
topic
科技
教育
python
linux
社會
數碼
java
c++
遊戲
演算法
資料庫
健康
文化
mysql
汽車
娛樂
科學
財經
資料結構
C語言
職場
php
C
oracle
c#
作業系統
工作
體育
sql
網路
延伸文章資訊
- 1什麼是架構師(Architect)以及要如何養成? - 數位時代
雖然這裡主要講的是建構優化雲端服務的軟體架構師,但是大同小異,尤其在非技術的部分,例如溝通、架構、抽象分析、決策等能力,則多半也適用於其他 ...
- 2軟體架構師工作的職責 - 三度漢語網
軟體架構師需要分析產品需求,起草並維護架構設計文件,並負責驗證架構設計的符合性。下面是小編為您精心整理的。 1. 職責:. - 在充分調研和理解客戶業務需求的基礎 ...
- 3系統架構師- 維基百科,自由的百科全書
系統架構師(System Architect,簡稱SA或SAr),是在信息系統研發中,負責依據需求來確定主要的技術選擇、設計系統的主體框架結構,並負責搭建實施的人。
- 4軟體架構師職責
軟體架構師職責 · 1 負責公司系統的架構設計、研發工作; · 2 承擔從業務向技術轉換的橋梁作用; · 3 協助項目經理制定項目計劃和控制項目進度; · 4 負責輔助 ...
- 5軟體架構師的角色與定位 - w3c學習教程
軟體工程師和程式設計師所考慮的是單個構件的功能,而軟體架構師必須從 ... 另外,軟體架構師也要擔負估算專案成本的職責,評估專案計劃對系統既有 ...