【新東網技術大咖帶您走進軟件架構設計】軟件架構設計那點事兒
發(fā)布時間: 2016-11-18 12:04:02
文/鄭實 通信研發(fā)部
新東網自2001年成立以來,掌握大數據、云計算、通信、物聯網及區(qū)塊鏈等信息技術,擁有一支逾16年經驗的強大IT團隊。為沉淀企業(yè)技術實力,繼續(xù)發(fā)揮行業(yè)優(yōu)勢,《東網快訊》特邀新東網技術大咖帶您走進這些先進信息技術,揭秘新東網16年來的技術成果,每周五發(fā)布。
計算系統(tǒng)的軟件構架是指該系統(tǒng)的一個或多個結構,它由軟件組件、組件的外部可見特性以及這些組件之間的關系組成。
系統(tǒng)架構設計一般分為三個階段
第一階段:架構分析即架構準備階段
本階段是架構實踐中最常見的短板,這一階段的目的是分析業(yè)務需求和約束背后的衍生需求、發(fā)現遺漏需求、確定關鍵功能、確定關鍵質量、權衡質量屬性之間的矛盾關系。
系統(tǒng)架構設計失敗的原因,最常見的有以下幾個:
1. 遺漏至關重要的架構影響因素(失敗率約50%);
2. 不能馴服頻繁變化的需求(失敗率約40%);
3. 不能覆蓋架構各方面(失敗率約30%);
4. 不能驗證架構并作出調整(失敗率約40%);
這些導致業(yè)主方得不到真正滿足他們需求的系統(tǒng),因此我們在架構準備階段要確定系統(tǒng)關鍵質量和關鍵功能。
確定關鍵質量有以下五大原則:
1. 考慮多方涉眾
業(yè)主方不僅關注功能,同時也需要質量。業(yè)主方關注的質量可能包括易用性、性能、持續(xù)可用性、穩(wěn)定性和健壯性等。業(yè)主方不一定是最終用戶,比如電信網上營業(yè)廳系統(tǒng)的客戶是電信公司,但最終用戶可能是終端用戶或系統(tǒng)配置員,他們所關注的質量屬性可能并不一致。
2. 檢查性思維
隨時檢查各個質量屬性,判定每一項是否確實算得上“關鍵質量”,從而防止遺漏關鍵需求。
3. 識別矛盾+劃定優(yōu)先級;
4. 嚴格程度符合領域與規(guī)模特點;
5. 關鍵質量屬性個數根據項目、產品、平臺不同而不同。
確定關鍵功能要區(qū)分出核心功能、必做功能、高風險功能、獨特功能。關鍵功能子集的確定不存在所謂的標準答案,關鍵功能所占比例應靈活確定,大概占20%~30%。
第二階段:架構分割即概要架構階段
本階段是大型系統(tǒng)成敗關鍵,根據重大需求,確定概要架構。概要架構要滿足“架構=組件+交互”的基本定義,對高層組件的“職責”進行籠統(tǒng)界定,并給出高層組件的相互關系,不應涉及接口細節(jié)。實際上,架構設計的驅動力是“功能+質量+約束”,概要架構階段根據重大需求、特殊需求、高風險需求形成穩(wěn)定的高層架構設計成果。
概要架構可分為3個步驟:
1. 基于關鍵功能(而不是對所有功能)、借助魯棒圖(而不是序列圖)進行初步設計;
2. 綜合初步設計確定高層分割;
3. 考慮非功能性需求做出相應決策,非功能性需求包括可用性、安全性、性能、易用性、可修改性、可測試性等,架構設計更應該關注非功能性需求,考慮非功能性需求要趁早。
第三階段:架構劃分即細化架構階段
本階段是團隊大規(guī)模并行開發(fā)基礎階段,要細化架構設計,關注不同視圖。在概念架構階段輸出系統(tǒng)解決方案,但是方案并不等同于架構。方案是“項目+需求+架構”的總覽,方案包含一定的架構內容,但是架構設計的工作還遠未完成,還需細化架構。
細化架構與概念架構是存在差異的。
在細化架構中,接口占據非常核心的地位,而概念架構并不關心明確的接口定義(只有抽象的組件和抽象的交互機制)。
細化架構重視通過子系統(tǒng)和模塊來分割整個系統(tǒng),并且子系統(tǒng)往往有明確的接口;而概念架構中只有抽象的組件,這些組件沒有接口。
細化架構基于接口編程、消息機制或遠程方法調用進行實在的交互;而概念架構的交互是“概念化”的,如“A層使用B層服務”。
細化架構包括邏輯架構、物理架構、運行架構、開發(fā)架構、數據架構。
最后在架構設計過程中要持續(xù)貫穿關注非功能需求,包括可用性、安全性、性能、易用性、可修改性、可測試性等,架構設計應該關注非功能性需求,更要提前關注非功能性需求。它是一個系統(tǒng)是否可用、好用的關鍵,也是一個系統(tǒng)架構設計是否成功的關鍵。