學習架構設計

beifengwang發表於2013-10-30
功能性架構解決業務流程和功能問題,而技術架構解決非功能性需求等問題。兩種架構都包括了動態和靜態兩個方面的內容,對於功能性架構中動態區域性為業務流程驅動全域性用例,用例驅動的用例實現等;對於技術架構中動態區域性為架構執行機制,而靜態區域性為框架,分層等方面的內容。架構設計包括了功能性架構和技術架構設計兩個部分的內容。

功能性架構包括了全域性用例設計,這個自身是用例分析和設計的一個延續,而全域性用例分析建議的思路仍然是業務流程,業務用例建模到系統用例建模的過程。全域性用例分析清楚後可以開始考慮子系統和模組的劃分,形成系統的功能架構圖,當然在劃分過程中一定要考慮到透過CRUD矩陣等分析方法來分析模組如何劃分合理,如何保證模組自身高內聚和松耦合。全域性用例分析完成後涉及到資料模型的設計,資料建模仍然從業務驅動,從最初的業務物件和單據入手,最終的資料概念模型和邏輯模型等。架構設計中全域性資料模型不一定覆蓋所有的資料物件和資料表;但是核心的主資料,核心業務單據資料一定要覆蓋到模型到層次到邏輯模型即可。如果用物件導向的分析方法,這裡需要出的UML建模中的概念模型和邏輯模型,體現核心物件和類,核心物件和類之間的關係。將全域性用例分析和資料模型建立融合在一起,可以看到這兩者結合起來會形成一個系統完成的領域模型層。一直認為領域模型思路應該引入架構設計,只有領域模型才是真正關注功能性架構,而不用馬上關注到具體的技術分層和技術實現。前面兩者做完後可以看到一個大系統被分解為了多個子系統或模組,那麼接著要考慮的就是模組間的整合架構,分析完整合架構模組間的介面基本就出來了介面設計應該是架構設計的另外一個核心內容。要明白架構設計一個重要作用就是架構設計完成後各個模組可以並行開始概要設計,詳細設計和開發工作。只要大家都遵循架構設計約定的介面規則即可以了整合架構考慮完另外一個核心內容就是公共可複用元件的抽取和識別,包括了功能元件和技術元件,需要識別進去哪些是可複用的如何進行復用。對於複用層次自身又包括了資料層複用,邏輯層元件複用,介面層UI元件的複用等。複用是架構價值體現的另外一個關鍵點。這些都做完後,接著一個步驟應該在架構設計階段做的就是對架構輸出勝利進行模擬驗證,前面完成了分解動作,必需透過模擬驗證來看看後續分解內容能否很好的整合和組裝。很多時候我做架構設計的時候往往不做這塊內容,導致架構設計一些內容變成空中樓閣,無法落地。

再回來看技術架構設計,首先談下靜態部分的內容。這裡面就包括了軟體開發的分層架構,開發框架等內容,包括開發規範約定,技術平臺和語言的選擇,使用的規約等都需要考慮。很多時候我看到談架構的時候說到三層或多層架構,僅僅是完整架構設計裡面很小的一部分內容。除了分層架構外,接著考慮的就是各種非功能性需要,架構上需要如何設計。這裡麵包括了事務,快取,異常,日誌,平安,效能,可用性,容錯能力等。這些逐個點都要在架構設計中說清楚如何考慮,由於這些自身就屬於一個應用系統中技術平臺要考慮的內容,因此應該設計為較為公用的技術元件供上層的業務元件使用。要明白很多時候為何談到AOP或可插拔架構,只有這樣去考慮問題,才會考慮真正的功能性架構設計和功能實現和非功能性技術架構這塊充分解耦,實現進一步的靈活裝配。再回到架構設計檢視層面,還需要考慮的就是整個應用系統的佈置架構,佈置架構自身也包括了邏輯檢視和物理檢視,應用最終開發進去了如何進行安排,這涉及到IT基礎架構方面的細化,也需要考慮清楚。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29212814/viewspace-775326/,如需轉載,請註明出處,否則將追究法律責任。

相關文章