架構設計和概要設計

2021-06-20 19:50:27 字數 2683 閱讀 3992

初步再來**下架構設計和概要設計的區別和邊界問題。先談下架構設計:

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

功能性架構包括了全域性用例設計,這個本身是用例分析和設計的乙個延續,而全域性用例分析建議的思路仍然是業務流程,業務用例建模到系統用例建模的過程。全域性用例分析清楚後可以開始考慮子系統和模組的劃分,形成系統的功能架構圖,當然在劃分過程中一定要考慮到通過crud矩陣等分析方法來分析模組如何劃分合理,如何保證模組本身高內聚和松耦合。

在全域性用例分析完成後涉及到資料模型的設計,資料建模仍然從業務驅動,從最初的業務物件和單據入手,到最終的資料概念模型和邏輯模型等。架構設計中全域性資料模型不一定覆蓋所有的資料物件和資料表;但是核心的主資料,核心業務單據資料一定要覆蓋到,模型到的層次到邏輯模型即可。如果用物件導向的分析方法,這裡需要出的是uml建模中的概念模型和邏輯模型,體現核心物件和類,核心物件和類之間的關係。

將全域性用例分析和資料模型建立融合在一起,可以看到這兩者結合起來會形成乙個系統完成的領域模型層。一直認為領域模型思路應該引入架構設計,只有領域模型才是真正關注功能性架構,而不用馬上關注到具體的技術分層和技術實現。

前面兩者做完後可以看到乙個大系統被分解為了多個子系統或模組,那麼接著要考慮的就是模組間的整合架構,分析完整合架構模組間的介面基本就出來了。介面設計應該是架構設計的另外乙個核心內容。要明白架構設計乙個重要作用就是架構設計完成後各個模組可以並行開始概要設計,詳細設計和開發工作。只要大家都遵循架構設計約定的介面規則即可以了。

整合架構考慮完另外乙個核心內容就是公共可復用元件的抽取和識別,包括了功能元件和技術元件,需要識別出來哪些是可復用的,如何進行復用。對於復用層次本身又包括了資料層復用,邏輯層元件復用,介面層ui元件的復用等。復用是架構價值體現的的另外乙個關鍵點。

這些都做完後,接著乙個步驟應該在架構設計階段做的就是對架構輸出成功進行模擬驗證,前面完成了分解動作,必須通過模擬驗證來看看後續分解內容能否很好的整合和組裝。很多時候我們做架構設計的時候往往不做這塊內容,導致架構設計一些內容變成空中樓閣,無法落地。

再回來看技術架構設計,首先談下靜態部分的內容。這裡面就包括了軟體開發的分層架構,開發框架等內容,包括開發規範約定,技術平台和語言的選擇,使用的規約等都需要考慮。很多時候我們看到談架構的時候說到的三層或多層架構,僅僅是完整架構設計裡面很小的一部分內容。

除了分層架構外,接著考慮的就是各種非功能性需要,我們在架構上需要如何設計。這裡面包括了事務,快取,異常,日誌,安全,效能,可用性,容錯能力等。這些逐個點都要在架構設計中說清楚如何考慮,由於這些本身就屬於乙個應用系統中技術平台要考慮的內容,因此應該設計為較為公用的技術元件供上層的業務元件使用。要明白很多時候為何談到aop或可插拔架構,只有這樣去考慮問題,才會考慮真正的功能性架構設計和功能實現和非功能性技術架構這塊充分解耦,實現進一步的靈活裝配。

再回到架構設計檢視層面,還需要考慮的就是整個應用系統的部署架構,部署架構本身也包括了邏輯檢視和物理檢視,應用最終開發出來了如何進行部署,這涉及到了it基礎架構方面的細化,也需要考慮清楚。

概要設計

概要設計首先要明白的是根據架構設計的內容進一步對某個模組的設計進一步細化。架構設計在系統級,而概要設計在子系統或模組級。拿建築來比喻,架構設計是把乙個建築的框架結構全部定清楚,包括地基要挖多深,核心框架和承重結構如何,每一層的結構圖如何,應該分為幾個大套間這些內容都應該定下來。每個大套間的水,電,氣等管道接入點在**等。而概要設計要做的是拿著乙個套間,來考慮這個套間內部該如何設計,如何劃分功能區域,如何將水電氣接入點進一步在房間內延伸,哪些地方需要進一步增加非承重的隔斷等。

基於以上思路我們看到在架構設計的時候,除了很少部分的核心用例我們會談到具體的用例實現完,大多數功能我們都不會談到具體的用例實現層面。而到了概要設計則需要進一步的分解我這塊模組究竟需要實現哪些功能點,具體的每個功能點究竟如何實現都必須要考慮到。

嚴格的概要設計,我們希望是到了概要設計的某個功能模組,模組所涉及到的核心的類全部會出來,類關係圖全部會出來。資料庫設計也進一步細化到該模組的資料庫物理模型。對於用例進行用例實現分析,在實現分析過程中可以看到每個類核心的public方法全部會分析識別出來。

拿著架構設計的介面,概要設計也需要進一步細化,細化出介面具體的輸入輸出和使用方法,包括模組應該使用哪些外部介面,模組本身又提供哪些介面出去都必須細化清楚。做概要設計的時候一定要清楚當前做的這個模組在整個應用系統架構中的位置,和外部的整合和互動點。

概要設計不用到詳細設計這麼細化,包括類裡面的私有方法,public方法的具體實現步驟和邏輯,偽**等。但是我們要看到概要設計裡面對於核心的業務邏輯必須要設計清楚如何實現,實現的機制和方法。很多時候我們到了概要設計畫uml的時序圖,很多時候一看沒有任何意義,全是跨層的簡單的互動和呼叫。這個應該在架構設計的架構執行機制說清楚即可。設計到多個業務類間的互動呼叫才是重點,乙個簡單的功能增刪改查,完全沒有必要畫什麼時序圖。

其次架構設計中給出了各種安全,效能,快取的設計。那麼在概要設計中出來另外乙個問題,即架構給出的各種實現方案和技術,我們在概要設計中如何選擇,如何使用。不是所有功能都需要快取,那就要說清楚哪些功能根據分析需要快取,需要快取哪些物件,快取本身的時效性如何設定等問題。

概要設計作為我們要達到乙個目的,就是不論是誰拿走概要設計來做,最終實現出來的功能模組不會走樣,功能模組最終實現出來可能有效能,易用性等方面的問題,但是整個功能實現的大框架一定是定了的。

架構設計和概要設計

初步再來 下架構設計和概要設計的區別和邊界問題。先談下架構設計 架構設計包括了功能性架構和技術架構設計兩個部分的內容,功能性架構解決業務流程和功能問題,而技術架構解決非功能性需求等問題。兩種架構都包括了動態和靜態兩個方面的內容,對於功能性架構中動態部分為業務流程驅動全域性用例,用例驅動的用例實現等 ...

架構設計 概要設計評審

1.1整理需求用例 新平台或多系統需求 要求描述 完整性概要設計應該覆蓋詳細需求設計 識別系統干係人 找到產品需求功能的使用者,可能是人 軟體 識別需求的關係 需求之間的泛化 包含 擴充套件,以便於模組的劃分 用例圖示例 用例圖教程 1.2模組劃分 要求描述 覆蓋當前所有需求 詳細需求設計上的任一需...

SOA架構設計概要

主要內容也是來自 stevey對amazon和google平台的長篇大論 我們理解的soa必然是通過介面的方式將資料與功能開放出來的,但要想要往平台方向發展,必須保證用且僅用服務介面的形式提供資料和服務 團隊間的程式模組的資訊通訊,都要通過這些介面 除此之外沒有其它的通訊方式。其他形式一概不允許 不...