第一章 緒論
系統架構設計師(System Architecture Designer)是項目開發活動中的關鍵角色之一。系統架構是系統的一種整體的高層次的結構表示,是系統的骨架和根基,其決定了系統的健壯性和生命周期的長短。
1.1 系統架構概述
1946年第一臺計算機:ENIAC,電子數字積分器和計算機。由運算器、控制器、存儲器、輸入和輸出設備五部分組成。
馮~諾依曼針對 ENIAC 的不足,提出了 EDVAC ,離散變量自動電子計算機,采用二進制,控制計算機運行的程序存放在存儲器中,可以自動按順序執行指令。
1.1.1 系統架構的定義及發展歷程
定義
架構:是體現在組件中的一個系統的基本組織、它們彼此的關系與環境的關系及指導它的設計和發展的原則。
系統:是組織起來完成某一特定功能或一組功能的組件集。系統這個術語包括了單獨的應用程序、傳統意義上的系統、子系統、系統之系統、產品線、整個企業及感興趣的其他集合。系統用于完成其環境中的一個或多個任務。
環境或者上下文決定了對這個系統的開發、運作、政策以及會對系統造成其他影響的環境和設置。
任務是由一個或者多個利益相關者通過系統達到一些目標的系統的一個用途或操作。
通俗地說,系統架構(SystemArchitecture):是系統的一種整體的高層次的結構表示,是系統的骨架和根基,支撐和鏈接各個部分,包括組件、連接件、約束規范以及指導這些內容設計與演化的原理,它是刻畫系統整體抽象結構的一種手段。
架構設計的作用:主要包括以下幾點:
解決相對復雜的需求分析問題;
解決非功能屬性在系統占據重要位置的設計問題;
解決生命周期長、擴展性需求高的系統整體結構問題
解決系統基于組件需要的集成問題:
解決業務流程再造難的問題。
系統架構設計是成熟系統開發過程中的一個重要環節,它不僅是連接用戶需求和系統進一步設計與實現的橋梁,也是系統早期階段質量保證的關鍵步驟。
發展歷程
1)基礎研究階段(1968-1994年)
“軟件架構”首次提出。
模塊化思想推動了軟件架構的快速發展。
模塊化應遵循以下規則:
- 最高模塊化內聚;
- 最低耦合;
- 模塊大小適度;
- 模塊調用鏈深度(嵌套層次)不可過多;
- 接口簡單、精煉(扇入扇出數不宜太大),具有信息隱蔽能力;
- 盡可能地復用已有模塊;
2)概念體系和核心技術形成階段(1999-2000年)
首次對“軟件架構”進行了定義。
{elements,forms,rationale}=sofware,使之成為后續軟件架構概念發展的基礎。
1995年起,軟件架構研究領域開始進入快速發展階段。
2000年,IEEE 1471-2000標準的發布了第一次定義了軟件架構的形式化標準,組件化。
組件具有可組裝性和可插拔性。
3)理論體系完善與發展階段(1996年至今)
隨著組件架構理論的建立,與之相關的:軟件架構描述與表示、軟件架構分析、設計與測試、軟件架構發現、演化與重用、基于軟件架構開發方法、軟件架構風格、動態軟件架構等。
4)普及應用階段(2000年至今)
軟件架構是軟件生命周期中的重要產物,影響軟件開發的各個階段:
需求階段、設計階段、實現階段、維護階段。
1.1.2 軟件架構的常用分類及建模方法
1.軟件架構的常用分類
1)分層架構
- 表現層(PresentationLayer):用戶界面,負責視覺和用戶互動。
- 業務層(BusinessLayer):實現業務邏輯。
- 持久層(Persistence Layer):提供數據,SQL語句就放在這一層。
- 數據庫(DatabaseLayer):保存數據。
2)事件驅動架構 - 事件隊列(EventQueue):接收事件的入口。
- 分發器(Event Mediator):將不同的事件分發到不同的業務邏輯單元。
- 事件通道(EventChannel):分發器與處理器之間的聯系渠道。
- 事件處理器(EventProcessor):實現業務邏輯,處理完成后會發出事件,觸發下一步操作。
3)微核架構
微核架構(Microkernel Architecture)又稱為插件架構(Plug-in Architecture),是指軟件的內核相對較小,主要功能和業務邏輯都通過插件實現。
內核(Core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信應該減少到最低,避免出現互相依賴的問題。
4)微服務架構
微服務架構(Microservices Architecture)是服務導向架構(Service-Oriented Architecture,SOA)的升級。每一個服務就是一個獨立的部署單元(Separatcly Deployed Unit)。這些單元都是分布式的,互相解耦,通過遠程通信協議(比如REST、SOAP)聯系。
5)云架構
包括處理單元、虛擬中間件。
(1)處理單元:實現業務邏輯。
(2)虛擬中間件:負責通信、保持會話控制(seesions)、數據復制、分布式處理和處理單元的部署。
虛擬中間件: - 消總中間件(Messaging Grid):管理用戶請求和會話控制(sessions),當一個請求進來以后,它決定分配給哪一個處理單元。
- 數據中間件(Data Grid):將數據復制到每一個處理單元,即數據同步。保證每個處理單元都得到同樣的數據。
- 處理中間件(Processing Grid):可選,如果一個請求涉及不同類型的處理單元,該中向件負責協調處理單元。
- 部署中間件(DcploymentManager):負責處理單元的啟動和蘭閉,監控負載和響應時PDF間,當負載增加,就新啟動處理單元,負載減少,就關閉處理單元。
2.系統架構的常用建模方法
結構模型、框架模型、動態模型和過程模型。
1.1.3 軟件架構的應用場景
不再是單一架構風格設計與開發。
1.1.4 軟件架構的發展未來
架構發展的主線可以歸納為 模塊化變成/面向對象編程、構件技術、面向服務開發技術和云技術。
1.2 系統架構設計師概述
1.2.1 架構設計師的定義、職責和任務
1.架構設計師的定義
架構設計師是系統或產品線的設計責任人,是一個負責理解和管理并最終確認和評估非功能性系統需求(如軟件的可維護性、性能、復用性、可靠性、有效性和可測試性等),給出開發規范,搭建系統實現的核心構架,對整個軟件架構、關鍵構件和接口進行總體設計并澄清關鍵技術細節的高級技術人員。
2.架構設計師的職責
不僅是技術指導,同時也必須有領導能力。
3.架構設計師的任務與組成
(1)領導與協調整個項目中的技術活動(分析、設計和實施等)。
(2)推動主要的技術決策并最終表達為系統架構。
(3)確定系統架構,并促使其架構設計的文檔化(包括需求、設計、實施和部署等“視圖”)。
1.2.2 架構設計師應具備的專業素質
1.掌握業務領域的知識。
2.掌握技術知識。
3.掌握設計技能。
4.具備編程技能。
5.具備溝通能力。
6.具備決策能力。
7.知道組織策略。
8.應是談判專家。
1.2.3 架構設計師的知識架構
- 戰略規劃能力。
- 業務流程建模能力。
- 信息數據架構能力。
- 技術架構設計和實現能力。
- 應用系統架構的解決和實現能力。
- 基礎 IT 知識及基礎設施、資源調配的能力。
- 信息安全技術支持與管理保障能力。
- IT 審計、治理與基本需求的分析和獲取能力。
- 面向軟件系統可靠性與系統生命周期的質量保障服務能力。
10.對新技術與新概念的理解、掌握和分析能力。
系統架構設計師必須是開發團隊的技術引導者,同時也是綜合性特強的人才。
1.3 如何成為一名好的系統結構設計師
六個角色特質:
- 領導者
- 開發者
- 系統綜合者
- 具備企業家思維
- 具備戰略技術專家的權衡思維與戰術思維
- 具備良好的溝通能力
工程師階段
1~3年,積累基礎知識,包括編程語言、基本數據結構、開發環境、操作系統、數據庫以及相關軟件開發流程等。
高級工程師階段
3~5年,知識深度轉變,由 HOW 到 WHY;理論支持,熟悉前人總結出來的成熟的設計經驗。
技術專家階段
4~8年,“某個領域的專家”,高級工程師主要在已有的架構框架下完成設計,技術專家需要修改、擴展和優化架構。
系統架構設計師(初級)
5~8年,“獨立完成一個系統的架構設計”,技術專家基于經驗進行架構設計,初級架構設計師熟悉其原理。
初級架構設計師要形成自己的“架構設計方法論”。
系統架構設計師(中級)
8~10年,“能夠完成復雜系統的架構設計”,高性能、可擴展、海量存儲等復雜系統。關鍵在于“技術深度和技術理論的積累”。
系統架構設計師(高級)
10年以上,“創造新的架構模式”,開創新的技術潮流。
文章目錄
- 第一章 緒論
- 1.1 系統架構概述
- 1.1.1 系統架構的定義及發展歷程
- 定義
- 發展歷程
- 1.1.2 軟件架構的常用分類及建模方法
- 1.軟件架構的常用分類
- 2.系統架構的常用建模方法
- 1.1.3 軟件架構的應用場景
- 1.1.4 軟件架構的發展未來
- 1.2 系統架構設計師概述
- 1.2.1 架構設計師的定義、職責和任務
- 1.架構設計師的定義
- 2.架構設計師的職責
- 3.架構設計師的任務與組成
- 1.2.2 架構設計師應具備的專業素質
- 1.2.3 架構設計師的知識架構
- 1.3 如何成為一名好的系統結構設計師