業(yè)務(wù)架構(gòu)平臺(tái)的自舉問題
Posted on 2011-02-11 14:02 canonical 閱讀(1571) 評(píng)論(0) 編輯 收藏 所屬分類: 設(shè)計(jì)理論 業(yè)務(wù)架構(gòu)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)要比普通業(yè)務(wù)系統(tǒng)困難很多。一個(gè)核心難點(diǎn)在于如何建立普遍有效的應(yīng)用程序模型,如何控制各種偶然性的業(yè)務(wù)需求對(duì)系統(tǒng)整體架構(gòu)的沖擊。大多數(shù)現(xiàn)有的業(yè)務(wù)架構(gòu)平臺(tái)都是提供了一個(gè)龐大的萬能性產(chǎn)品,它預(yù)料到了所有可能在業(yè)務(wù)系統(tǒng)開發(fā)中出現(xiàn)的可能性,并提供了相應(yīng)的處理手段。業(yè)務(wù)系統(tǒng)開發(fā)人員的能力被限定在業(yè)務(wù)架構(gòu)平臺(tái)所允許的范圍之內(nèi)。如果業(yè)務(wù)架構(gòu)平臺(tái)的復(fù)雜度為A+,則我們最多只能用它來開發(fā)復(fù)雜度為A的業(yè)務(wù)系統(tǒng)。一個(gè)典型的特征就是使用業(yè)務(wù)架構(gòu)平臺(tái)的功能配置非常簡(jiǎn)單,但是要開發(fā)相應(yīng)的功能特性則非常困難,而且必須采用與業(yè)務(wù)系統(tǒng)開發(fā)完全不同的技術(shù)手段和開發(fā)方式。
采用業(yè)務(wù)架構(gòu)平臺(tái)來開發(fā)業(yè)務(wù)系統(tǒng),即使看似開發(fā)工作量小,最終產(chǎn)生的各類配置代碼量也可能會(huì)大大超過普通手工編程產(chǎn)生的代碼量,這意味著平臺(tái)封裝了業(yè)務(wù)內(nèi)在的復(fù)雜性,還是意味著平臺(tái)引入了不必要的復(fù)雜性?很多業(yè)務(wù)架構(gòu)平臺(tái)的賣點(diǎn)都是零代碼的應(yīng)用開發(fā),低水平的開發(fā)人員也可以主導(dǎo)的開發(fā),但是為什么高水平的程序員不能借助于這些開發(fā)平臺(tái)極大的提高生產(chǎn)率?
一般的業(yè)務(wù)架構(gòu)平臺(tái)無法回答以下問題:
1) 業(yè)務(wù)系統(tǒng)可以通過使用設(shè)計(jì)工具來重用業(yè)務(wù)架構(gòu)平臺(tái)已經(jīng)實(shí)現(xiàn)的功能,但是業(yè)務(wù)系統(tǒng)內(nèi)部大量相似的模型配置如何才能夠被重用?
2) 特定的業(yè)務(wù)領(lǐng)域中存在著大量特殊的業(yè)務(wù)規(guī)則,例如“審批串行進(jìn)行,每一步都允許回退到上一步,而且允許選擇跳轉(zhuǎn)到任意后一步”。這些規(guī)則如何才能夠被引入設(shè)計(jì)工具,簡(jiǎn)化配置過程?
3) 已經(jīng)開發(fā)好的業(yè)務(wù)系統(tǒng)作為產(chǎn)品來銷售的時(shí)候,如何應(yīng)對(duì)具體客戶的定制化?如果按照客戶要求修改配置,則以后業(yè)務(wù)系統(tǒng)自身是否還能夠?qū)崿F(xiàn)版本升級(jí)?
Witrix平臺(tái)提供的基本開發(fā)模型為
App = Biz aop-extends Generator<DSL>
在這一圖景下,我們就可以回答以上三個(gè)問題:
1) 業(yè)務(wù)模型通過領(lǐng)域特定語言(DSL)來表達(dá),因此可以使用語言中通用的繼承或者組件抽象機(jī)制來實(shí)現(xiàn)模型重用。
2) 推理機(jī)對(duì)于所有推理規(guī)則一視同仁,特殊的業(yè)務(wù)規(guī)則與通用的業(yè)務(wù)規(guī)則一樣都可以參與推理過程,并且一般情況下特殊的業(yè)務(wù)規(guī)則更能夠大幅簡(jiǎn)化系統(tǒng)實(shí)現(xiàn)結(jié)構(gòu)。
3) 相對(duì)于原始模型的修改被獨(dú)立出來,然后應(yīng)用面向切面(AOP)技術(shù)將這些特定代碼織入到原始模型中。原始模型與差異修改相互分離,因此原始模型可以隨時(shí)升級(jí)。
Witrix平臺(tái)所強(qiáng)調(diào)的不是強(qiáng)大的功能,而是一切表象之后的數(shù)學(xué)規(guī)律。Witrix平臺(tái)通過少數(shù)基本原理的反復(fù)應(yīng)用來構(gòu)造軟件系統(tǒng),它本身就是采用平臺(tái)技術(shù)構(gòu)造的產(chǎn)物。我們用復(fù)雜度為A的工具制造復(fù)雜度為A+的產(chǎn)品,然后進(jìn)一步以這個(gè)復(fù)雜度為A+的產(chǎn)品為工具來構(gòu)造復(fù)雜度為A++的產(chǎn)品。
采用業(yè)務(wù)架構(gòu)平臺(tái)來開發(fā)業(yè)務(wù)系統(tǒng),即使看似開發(fā)工作量小,最終產(chǎn)生的各類配置代碼量也可能會(huì)大大超過普通手工編程產(chǎn)生的代碼量,這意味著平臺(tái)封裝了業(yè)務(wù)內(nèi)在的復(fù)雜性,還是意味著平臺(tái)引入了不必要的復(fù)雜性?很多業(yè)務(wù)架構(gòu)平臺(tái)的賣點(diǎn)都是零代碼的應(yīng)用開發(fā),低水平的開發(fā)人員也可以主導(dǎo)的開發(fā),但是為什么高水平的程序員不能借助于這些開發(fā)平臺(tái)極大的提高生產(chǎn)率?
一般的業(yè)務(wù)架構(gòu)平臺(tái)無法回答以下問題:
1) 業(yè)務(wù)系統(tǒng)可以通過使用設(shè)計(jì)工具來重用業(yè)務(wù)架構(gòu)平臺(tái)已經(jīng)實(shí)現(xiàn)的功能,但是業(yè)務(wù)系統(tǒng)內(nèi)部大量相似的模型配置如何才能夠被重用?
2) 特定的業(yè)務(wù)領(lǐng)域中存在著大量特殊的業(yè)務(wù)規(guī)則,例如“審批串行進(jìn)行,每一步都允許回退到上一步,而且允許選擇跳轉(zhuǎn)到任意后一步”。這些規(guī)則如何才能夠被引入設(shè)計(jì)工具,簡(jiǎn)化配置過程?
3) 已經(jīng)開發(fā)好的業(yè)務(wù)系統(tǒng)作為產(chǎn)品來銷售的時(shí)候,如何應(yīng)對(duì)具體客戶的定制化?如果按照客戶要求修改配置,則以后業(yè)務(wù)系統(tǒng)自身是否還能夠?qū)崿F(xiàn)版本升級(jí)?
Witrix平臺(tái)提供的基本開發(fā)模型為
App = Biz aop-extends Generator<DSL>
在這一圖景下,我們就可以回答以上三個(gè)問題:
1) 業(yè)務(wù)模型通過領(lǐng)域特定語言(DSL)來表達(dá),因此可以使用語言中通用的繼承或者組件抽象機(jī)制來實(shí)現(xiàn)模型重用。
2) 推理機(jī)對(duì)于所有推理規(guī)則一視同仁,特殊的業(yè)務(wù)規(guī)則與通用的業(yè)務(wù)規(guī)則一樣都可以參與推理過程,并且一般情況下特殊的業(yè)務(wù)規(guī)則更能夠大幅簡(jiǎn)化系統(tǒng)實(shí)現(xiàn)結(jié)構(gòu)。
3) 相對(duì)于原始模型的修改被獨(dú)立出來,然后應(yīng)用面向切面(AOP)技術(shù)將這些特定代碼織入到原始模型中。原始模型與差異修改相互分離,因此原始模型可以隨時(shí)升級(jí)。
Witrix平臺(tái)所強(qiáng)調(diào)的不是強(qiáng)大的功能,而是一切表象之后的數(shù)學(xué)規(guī)律。Witrix平臺(tái)通過少數(shù)基本原理的反復(fù)應(yīng)用來構(gòu)造軟件系統(tǒng),它本身就是采用平臺(tái)技術(shù)構(gòu)造的產(chǎn)物。我們用復(fù)雜度為A的工具制造復(fù)雜度為A+的產(chǎn)品,然后進(jìn)一步以這個(gè)復(fù)雜度為A+的產(chǎn)品為工具來構(gòu)造復(fù)雜度為A++的產(chǎn)品。