系統(tǒng)架構(gòu)中的拆分與集成

引言

有一個(gè)認(rèn)可度比較高的對(duì)于軟件系統(tǒng)架構(gòu)的定義:職責(zé)明確的模塊或者組件、關(guān)聯(lián)關(guān)系、約束和指導(dǎo)原則。如下圖所示:


架構(gòu)定義

當(dāng)我們通過需求分析得到了業(yè)務(wù)的實(shí)例化規(guī)則以及領(lǐng)域模型之后,接下來就是進(jìn)行系統(tǒng)的架構(gòu),按照上面對(duì)架構(gòu)的定義,其中比較重要的步驟就是對(duì)系統(tǒng)進(jìn)行拆分與集成。

拆分的好處

將系統(tǒng)拆細(xì)之后主要可以簡化認(rèn)知增加復(fù)用。

簡化認(rèn)知:將系統(tǒng)拆細(xì)后一次只需要理解少量的概念,在一個(gè)特定的范圍內(nèi)工作。在工作中與其他域的同事進(jìn)行合作的時(shí)候很難的地方就是概念的理解,面對(duì)一個(gè)新的名稱或者同一個(gè)名稱的不同用法(解釋)時(shí)往往難以短時(shí)間理解,因此在系統(tǒng)設(shè)計(jì)中沒有必要不要輕易的新增概念。

增加復(fù)用:當(dāng)把系統(tǒng)拆細(xì)之后,每個(gè)子系統(tǒng)都有自己特定的問題域,可以屏蔽一些特定的依賴(隔離了變化),因此可以增加復(fù)用度。

拆分的粒度

在目前的工作中,根據(jù)粒度的不同從大到小可以拆分成應(yīng)用、模塊(jar包)、包、類等幾種。

子域與應(yīng)用

拆分的原則與過程

拆分最重要的原則是:領(lǐng)域體現(xiàn)的業(yè)務(wù)能力,也就是說拆分出來的子系統(tǒng)有沒有可能成為一個(gè)獨(dú)立的業(yè)務(wù)。這里獨(dú)立的業(yè)務(wù)更多針對(duì)的是應(yīng)用級(jí)別的,當(dāng)然也可以暫時(shí)把子域放到一個(gè)應(yīng)用中,不過需要具備獨(dú)立出來的條件。就目前工作中較少遇到可以獨(dú)立應(yīng)用的機(jī)會(huì)。

拆分的過程:根據(jù)業(yè)務(wù)的流程,對(duì)每個(gè)業(yè)務(wù)流程進(jìn)行分析,看該業(yè)務(wù)流程是否符合獨(dú)立業(yè)務(wù)的條件(除了在目前的業(yè)務(wù)場(chǎng)景下使用,還有沒有可能為其他業(yè)務(wù)使用)。

集成

集成是由雙方組成的,依賴方與被依賴方,作為被依賴方,也就是服務(wù)提供方,主要有兩種方式,一種是產(chǎn)品化方式,不提供業(yè)務(wù)定制化能力,提供的是標(biāo)準(zhǔn)服務(wù),例如支付寶的支付服務(wù),短信的發(fā)送服務(wù)等;另外一種是供應(yīng)商方式,根據(jù)客戶的需求來定制一些服務(wù)接口,在業(yè)務(wù)部門,一般都是供應(yīng)商模式。作為依賴方,主要考慮是否新增防腐層,防腐層的好處是依賴倒置,可以隨時(shí)替換下游,方便測(cè)試等,不過增加了模型轉(zhuǎn)換的成本。

jar包與package

在應(yīng)用內(nèi)部,一般會(huì)按照橫向的層級(jí)以及縱向的業(yè)務(wù)來劃分。

橫向的層級(jí)劃分按照領(lǐng)域驅(qū)動(dòng)分層一般如下。

分層架構(gòu)
六邊形架構(gòu)

jar包一般可以按照上面的模式來劃分,不過也可以通過package的方式來組織,只是一種邏輯的代碼組織方式,另外有一些公共的功能模塊也可以抽在這一層級(jí),例如異常、日志、注解等。

然后是領(lǐng)域模塊下面按照各個(gè)聚合來劃分縱向的業(yè)務(wù)包package。

領(lǐng)域模型結(jié)構(gòu)圖

最后是類的填充與細(xì)化,可以是契約導(dǎo)向的編碼,由外而內(nèi),因?yàn)橥獠康膱?chǎng)景是確定,內(nèi)部的模型可以通過場(chǎng)景來推到出來。

由外而內(nèi)

其他

上面基本列出了從領(lǐng)域模型到代碼劃分的大概過程,省略了很多細(xì)節(jié),不過可以作為實(shí)踐的一個(gè)指南,后面會(huì)結(jié)合一些具體的實(shí)例進(jìn)行分析。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容