架構設計包括了功能性架構和技術架構設計兩個部分的內容,功能性架構解決業務流程和功能問題,而技術架構解決非功能性需求等問題。兩種架構都包括了動態和靜態兩個方面的內容,對於功能性架構中動態部分爲業務流程驅動全局用例,用例驅動的用例實現等;對於技術架構中動態部分爲架構運行機制,而靜態部分爲框架,分層等方面的內容。 功能性架構包括了全局用例設計,這個自己是用例分析和設計的一個延續,而全局用例分析建議的思路仍然是業務流程,業務用例建模到系統用例建模的過程。全局用例分析清楚後能夠開始考慮子系統和模塊的劃分,造成系統的功能架構圖,固然在劃分過程當中必定要考慮到經過CRUD矩陣等分析方法來分析模塊如何劃分合理,如何保證模塊自己高內聚和鬆耦合。 在全局用例分析完成後涉及到數據模型的設計,數據建模仍然從業務驅動,從最初的業務對象和單據入手,到最終的數據概念模型和邏輯模型等。架構設計中全局數據模型不必定覆蓋全部的數據對象和數據表;可是核心的主數據,核心業務單據數據必定要覆蓋到,模型到的層次到邏輯模型便可。若是用面向對象的分析方法,這裏須要出的是UML建模中的概念模型和邏輯模型,體現核心對象和類,核心對象和類之間的關係。 將全局用例分析和數據模型創建融合在一塊兒,能夠看到這二者結合起來會造成一個系統完成的領域模型層。一直認爲領域模型思路應該引入架構設計,只有領域模型纔是真正關注功能性架構,而不用立刻關注到具體的技術分層和技術實現。 前面二者作完後能夠看到一個大系統被分解爲了多個子系統或模塊,那麼接着要考慮的就是模塊間的集成架構,分析完集成架構模塊間的接口基本就出來了。接口設計應該是架構設計的另一個核心內容。要明白架構設計一個重要做用就是架構設計完成後各個模塊能夠並行開始概要設計,詳細設計和開發工做。只要你們都遵循架構設計約定的接口規則便可以了。 集成架構考慮完另一個核心內容就是公共可複用組件的抽取和識別,包括了功能組件和技術組件,須要識別出來哪些是可複用的,如何進行復用。對於複用層次自己又包括了數據層複用,邏輯層組件複用,界面層UI組件的複用等。複用是架構價值體現的的另一個關鍵點。 這些都作完後,接着一個步驟應該在架構設計階段作的就是對架構輸出成功進行模擬驗證,前面完成了分解動做,必須經過模擬驗證來看看後續分解內容可否很好的集成和組裝。不少時候咱們作架構設計的時候每每不作這塊內容,致使架構設計一些內容變成空中樓閣,沒法落地。 再回來看技術架構設計,首先談下靜態部分的內容。這裏面就包括了軟件開發的分層架構,開發框架等內容,包括開發規範約定,技術平臺和語言的選擇,使用的規約等都須要考慮。不少時候咱們看到談架構的時候說到的三層或多層架構,僅僅是完整架構設計裏面很小的一部份內容。 除了分層架構外,接着考慮的就是各類非功能性須要,咱們在架構上須要如何設計。這裏麪包括了事務,緩存,異常,日誌,安全,性能,可用性,容錯能力等。這些逐個點都要在架構設計中說清楚如何考慮,因爲這些自己就屬於一個應用系統中技術平臺要考慮的內容,所以應該設計爲較爲公用的技術組件供上層的業務組件使用。要明白不少時候爲什麼談到AOP或可插拔架構,只有這樣去考慮問題,纔會考慮真正的功能性架構設計和功能實現和非功能性技術架構這塊充分解耦,實現進一步的靈活裝配。 再回到架構設計視圖層面,還須要考慮的就是整個應用系統的部署架構,部署架構自己也包括了邏輯視圖和物理視圖,應用最終開發出來瞭如何進行部署,這涉及到了IT基礎架構方面的細化,也須要考慮清楚。