系統架構設計師-第0章-學習路線
第0章-學習路線
架構設計師的定義、職責和任務
架構師的定義
架構設計師是系統開發的主體角色,他們通過執行一系列活動來實施架構設計。架構設計通過生成過程形成最終的產品架構,架構設計師的成果是創建架構。從圖1可以看出,系統開發中架構設計師是整個系統的核心.

架構設計師是負責系統架構的人、團隊或組織。架構設計師是系統或產品線的設計責任人,是一個負責理解和管理并最終確認和 評估非功能性系統需求(如軟件的可維護性、性能、復用性、可靠性、有效性和可測試性等), 給出開發規范,搭建系統實現的核心構架,對整個軟件架構、關鍵構件和接口進行總體設計并 澄清關鍵技術細節的高級技術人員。
架構設計師的職責
架構設計師的職責應該是技術領導,這意味著架構設計師除了擁有專門技能外,還必須擁有領導能力。首先,領導能力既體現在組織中的職位上,也體現在架構設計師展現的品質上。 在組織中的職位方面,架構設計師是項目中的技術領導,應該擁有進行技術決策的權威。項目經理更關注管理資源、進度和成本方面的項目計劃,架構設計師和項目經理代表了這個項目的公共角色。在架構設計師展現的品質方面,領導力也可以在與其他團隊成員的交流中展現出來, 架構設計師應該為他人樹立榜樣并在制定方向方面表現出自信。成功的架構設計師是以人為導 向的,都應在指導并培養他們團隊的成員上花時間,以保證團隊成員能夠在后續項目的開發中能夠完整地理解架構設計師的設計思路。其次,擁有專門技能主要體現在除了必須非常清楚項目的總體目標和實施方法外,還應是特定的開發平臺、語言、工具的大師,對常見應用場景能及時給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估該開發團隊實現特定的功能需求目標的資源代價。架構設計師必須非常關注交付的實際結果,并必須賦予項目在技術方面的驅動力,還必須能夠進行決策并確保這些決策被傳達、理解并始終被執行。
架構設計師的任務與組成
架構設計師在項目中的主要任務可概述如下。
- 領導與協調整個項目中的技術活動(分析、設計和實施等)。
- 推動主要的技術決策并最終表達為系統架構。
- 確定系統架構,并促使其架構設計的文檔化,這里的文檔化應包括需求、設計、實施和部署等“視圖”。
從技術角度看,架構設計師的職責就是抽象設計、非功能設計和關鍵技術設計等三大任務。
架構設計師角色可以由一個人或一個團隊來履行。在角色和人之間是存在差異的,如一個 人可能會履行多個角色。由于架構設計師需要非常廣泛的技能,所以架構設計師角色通常由多個人履行。這種方式允許技能分布于多個人,每個人都能充分運用他自己的經驗。特別是在理 解業務領域和掌握各個方面技術所必須的技能上,往往由幾個人才能很好地覆蓋。
這個團隊是擁有共同目標和執行目標,擁有使他們可以相互負責的方法,同時技能相互補 充的一小部分人。
如果架構設計師角色由一個團隊履行,擁有一個首席架構設計師角色非常重要,他不僅具有先知先明的能力、還是架構團隊的單點協調人。沒有這個協調人,架構團隊的成員要創造出內聚的架構或做出決策是困難的。
優秀的架構設計師應知道他的優勢和弱勢。無論架構設計師的角色是否由一個團隊來履行, 架構設計師都應有好幾個可信顧問的支持,這樣架構設計師不僅可以了解其弱點,還可以通過獲取必要的技能或與他人一起合作來彌補其知識的缺陷,進而彌補這些弱點。最優秀的架構通常由一個團隊而不是個人創建,這僅僅因為當有多人參與進來時,使見識更廣和更深。
架構設計師應具備的專業素質
架構設計師作為項目的技術領導,他應熟悉業務領域知識并熟練掌握軟件開發知識。一個優秀的架構設計師通常可以做到在軟件開發知識和業務領域知識之間的平衡。因此,架構設計師應該具備以下專業知識。
- 掌握業務領域的知識
領域是從事于某一行業的人理解并歸納的一組概念和術語知識或者活動范疇。當架構設計師理解軟件開發但不理解業務模型時,可能會開發出一個不能滿足用戶需求而只能反映該架構設計師所熟悉內容的解決方案,因此,熟悉業務也使得架構設計師能夠預見可 能發生的改變。由于架構受其部署環境(包括業務領域)影響很大,對業務領域的正確認識可 使架構設計師能夠在可能改變的區域和穩定性方面做出更全面的決策。 - 掌握技術知識
由于架構設計的某些方面明確需要技術知識,所以一個架構設計師應該擁有一定程度的技術水平。然而架構設計師不必是一個技術專家,它必須關注技術的重要因素,而不是細節。架構設計師需要理解像JavaEE或.NET這類平臺上的可用關鍵框架,但是不必理解訪問這些平臺可用的每個應用程序接口(API)的細節。由于技術的發展相當快速,架構設計師必須跟得上這 些技術的發展。 - 掌握設計技能
設計過程是架構設計的核心內容,架構是關鍵設計決策的具體化,因此,架構設計師應該擁 有很強的設計技能。關鍵設計決策指關鍵結構設計決策、特定模型的選擇和指導規格說明書等。為了保證系統的結構完整性,這些元素被代表性的廣泛應用并對系統取得成功產生深遠的影響。因此,這樣的元素應該由擁有相當技能的人識別出來。設計能力不可能在短時間內獲得,而是多 年經驗積累的結果,因此,一個優秀的架勢設計師是要經過多年工作實踐才能成為技術領導。 - 具備編程技能
項目中的開發人員是架構設計師必須與之打交道的最重要的團隊成員,而項目的最終產品是可執行代碼,只有架構設計師承認開發人員的工作價值時,在架構設計師和開發人員之間的溝通才是有效的,尤其是在項目開發后期的缺陷更改時,雙方的溝通尤為重要。因此,架構設計師應該具有一定的編程技能,即使他們在項目中不必編寫代碼,也必須跟上技術的更新。優秀的架構設計師通常會有組織地參與開發并應該編寫一定量的代碼,如果架構設計師參與代碼 實現,開發組織會從架構設計師那兒獲得見識,這些見識可以直接有益于架構的專業知識本身。架構設計師還可以通過查看他們決策和設計的第一手結果,對開發流程給出反饋。 - 具備溝通能力
與架構設計師相關的所有軟技能中,溝通最重要。架構設計師應該具備有效的口頭和書面表達能力。有效的溝通可使開發組織能夠充分理解架構設計師的思想,同時開發組織也能夠及時將架構設計實現中遇到的問題及時反饋給架構設計師。有效的溝通是項目成功的基礎。
架構設計師能夠有效地與利益相關方溝通,對于理解他們的需求及與他們就架構達成并保持一致是非常重要的。架構設計師不是簡單地將信息傳達給團隊,還要激勵團隊,架構設計師負責傳達系統愿望,以便這個愿望為大家共享,而不是只有架構設計師理解并相信。 - 具備決策能力
決策是架構設計師必須具備的能力,尤其是在很多不很明確的情況下,而且沒有充足的時間研究所有可能性時,架構設計師不能果斷決策會延誤項目,失去信任。優秀的架構設計師應承認這種情況,即使在決策時咨詢其他人并營造共同參與決策的環境,進行適當的決策仍然是架構設計師的職責,而這些決策并不總是正確的,但是架構設計師必須學會糾正這些錯誤決策。 - 知道組織策略
成功的架構設計師并不僅僅關心技術,他們還應對政治敏感并知道其在組織中的權利,他們利用這些知識與恰當的人進行溝通,并確保項目在適當的周期中獲得支持。 - 應是談判專家
架構設計師需要與許多利益相關者進行交流,其中的一些交流需要談判技巧。架構設計師應特別關注的一點是在項目中盡可能早地把風險降到最低,這對穩定架構所花費的時間有直接影響。因為風險與需求有關,消除風險的一個途徑是通過精煉需求以使這種風險不再出現,因此,必須回退需求以便利益相關者和架構設計師達成一致。這種情形要求架構設計師是一位有效的談判專家,能夠清晰明白地表明各種折中方案的后果。
架構設計師的知識結構
架構設計師綜合的知識能力結構主要包括10個方面。
- 戰略規劃能力。
- 業務流程建模能力。
- 信息數據架構能力。
- 技術架構設計和實現能力。
- 應用系統架構的解決和實現能力。
- 基礎IT知識及基礎設施、資源調配的能力。
- 信息安全技術支持與管理保障能力。
- IT審計、治理與基本需求的分析和獲取能力。
- 面向軟件系統可靠性與系統生命周期的質量保障服務能力。
- 對新技術與新概念的理解、掌握和分析能力。
系統架構設計師必須是開發團隊的技術引導者。他們應具有很強的系統思維能力,在項目中需要能夠從大量互相沖突的系統方法和工具中,判斷出哪些是有效的或者是無效的,并在關鍵時刻能夠做出科學的決策。這樣,就要求架構設計師應當是一個思維敏捷、經驗豐富、技術水平高超、受過良好教育的善于學習與溝通且決策能力強的人。他必須廣泛了解各種技術并精通一種特定技術,至少了解計算機通用技術以便確定哪種技術最優,或組織團隊開展技術評估。 優秀的架構設計師能考慮并評估所有可用來解決問題的總體技術方案。架構設計師需要擁有良好的書面和口頭溝通技巧, 一般通過可視化模型和小組討論進行溝通并指導團隊,從而確保開發人員按照架構建造系統。
因此,系統架構設計師應該是一種綜合性特強的人才,其知識維度可以滿足多層次、多方 面的能力。多層次是指架構設計師應在技術領域的深度上掌握更多的基礎知識,即必須在體系 結構、計算機軟硬件與網絡基礎知識、系統工程、信息系統、嵌入式系統、軟件安全與可靠性等知識層面上受過良好教育并擁有自學習能力;還須在架構設計方法、架構模式、開發流程以 及各種模型等方面有豐富的經驗,廣泛了解各種產品和技術并精通一種特定領域的架構設計方 法。多方面是指架構設計師應在業務領域以及管理、商務、財務和法律等方面具備一定背景知 識并熟悉相關政策,這與系統架構設計師的多角色特點是緊密相關的。
架構設計師學習路線圖

計算機系統基礎知識
系統架構師首先需要深入理解計算機系統的基本構成和工作原理。這包括硬件、操作系統、網絡等方面的知識。此外,對于分布式系統、并行計算等概念也需要有深入的理解。
信息系統基礎知識
在深入理解了計算機系統的基礎上,系統架構師需要掌握信息系統的基本概念、設計原則和開發方法。這包括對數據庫系統、Web技術、應用服務器等技術的了解。
信息安全技術基礎知識
隨著信息系統的普及,信息安全問題日益突出。系統架構師需要具備信息安全的基本知識,了解常見的安全威脅和防護措施,能夠設計出安全可靠的系統架構。
軟件工程基礎知識
軟件工程是系統架構設計的重要基礎。系統架構師需要了解軟件開發生命周期、軟件開發過程模型、軟件質量保證等方面的知識,能夠運用軟件工程的方法和技術進行系統設計和開發。
數據庫設計基礎知識
數據庫是信息系統的核心組成部分,系統架構師需要掌握數據庫設計的基本原則和方法,了解關系型數據庫和非關系型數據庫的區別和聯系,能夠根據實際需求進行合理的數據庫設計。
系統架構設計基礎知識
系統架構設計是系統架構師的核心職責。需要掌握各種常見的系統架構設計方法和技術,包括分層架構、事件驅動架構、微服務架構等。此外,還需要了解各種架構風格和模式,能夠根據實際需求選擇合適的架構方案。
系統質量屬性與架構評估
系統質量屬性是衡量系統性能的重要指標,系統架構師需要了解常見的系統質量屬性和評估方法,能夠對設計的系統架構進行全面的評估和優化。
軟件架構的演化和維護
隨著業務需求和技術環境的變化,軟件架構也需要不斷地演化和維護。系統架構師需要了解如何進行軟件架構的演化和維護,包括架構重構、持續集成和持續交付等方面的知識。
軟件可靠性基礎知識
軟件可靠性是衡量軟件質量的重要指標之一。系統架構師需要了解軟件可靠性的基本概念和評估方法,能夠設計出高可靠性的軟件架構。
未來信息綜合技術
隨著技術的發展,新的信息技術不斷涌現。系統架構師需要關注未來的信息技術趨勢,了解云計算、人工智能、物聯網等新興技術,能夠將這些技術應用到實際的系統架構設計中。
大數據系統架構設計理論與實踐
大數據技術的興起使得數據成為重要的生產要素。系統架構師需要掌握大數據系統架構設計的基本原理和方法,了解大數據處理流程和常見的大數據技術,能夠設計出高效、可擴展的大數據系統架構。
安全架構設計理論與實踐
安全是信息系統的重要保障。系統架構師需要深入理解安全架構設計的基本原理和方法,了解常見的安全威脅和防護措施,能夠設計出安全可靠的系統架構。同時,還需要了解如何進行安全測試和風險評估,確保系統的安全性。
通信系統架構設計理論與實踐
通信是信息系統的重要基礎。系統架構師需要了解通信系統架構設計的基本原理和方法,了解各種通信協議和技術,能夠設計出高效、可靠的通信系統架構。
嵌入式系統架構設計理論與實踐
嵌入式系統是現代智能設備的重要組成部分。系統架構師需要掌握嵌入式系統架構設計的基本原理和方法,了解常見的嵌入式系統技術和開發流程,能夠設計出高效、可靠的嵌入式系統架構。

架構設計師是系統開發的主體角色,他們通過執行一系列活動來實施架構設計。架構設計通過生成過程形成最終的產品架構,架構設計師的成果是創建架構。從圖1可以看出,系統開發中架構設計師是整個系統的核心.
浙公網安備 33010602011771號