濟南軟件開(kāi)發(fā)—模型驅動軟件開(kāi)發(fā)

2015-09-29 10:44:15
作爲面(miàn)向(xiàng)對(duì)象的程序員、習慣于構件開(kāi)發(fā)的程序員,對(duì)于模型驅動軟件開(kāi)發(fā)的認識經(jīng)曆了幾個步驟。
    首先,爲了适應用戶不同的業務組合,很多軟件中都(dōu)有的運行選項。當我們依據自己的需要對(duì)選項進(jìn)行組合後(hòu),將(jiāng)得到不同的界面(miàn)和業務規則。比較常見的有:報表、對(duì)于數據的校驗、流程等。
    接著(zhe)WEB頁面(miàn)進(jìn)入了我的視野。利用諸如:JSP、PHP、ASP甚至CGI等技術來生成(chéng)活動的界面(miàn)。而太多的這(zhè)些Pages都(dōu)是用腳本生成(chéng)的。當我們改變腳本的時候,在浏覽器端的畫面(miàn)也随之改變。
    XML是一個更加接近于這(zhè)種(zhǒng)思想的東西。簡單的說格式化的數據+如何顯示,構成(chéng)了XML。而XML本身隻是數據而已,它并不是一個軟件。但你利用它中間的定義就(jiù)應該得到同樣(yàng)的顯示。這(zhè)不能(néng)不說是标準的威力。同時我也看到,同樣(yàng)的數據改變其中的XSL、DTD等,我們看到將(jiāng)是數據的另一種(zhǒng)表達形式。作爲數據的XSL、DTD等的改變引起(qǐ)了顯示内容和形式的改變。
    每種(zhǒng)腳本都(dōu)有自己的解釋程序。把他們當作驅動引擎,腳本當做自定義的模型。當腳本變化的時候,程序的運行也將(jiāng)随之改變。
    其實我們現在所進(jìn)行的軟件開(kāi)發(fā)都(dōu)可以看做是一種(zhǒng)模型。軟件開(kāi)發(fā)經(jīng)曆了靜态庫à動态庫à構件技術。從其中可以看到的是,軟件的發(fā)展是在不斷地提升靈活性和提升系統的可伸縮性。在靜态庫的時代,代碼是在編譯時被(bèi)裝載的,動态庫是程序在開(kāi)始運行時被(bèi)裝載的。而構件卻是在需要時被(bèi)加載的,這(zhè)種(zhǒng)加載不一定是由你的程序代碼來實現的。
    中間語言成(chéng)了一種(zhǒng)趨勢, Java是先驅者。先將(jiāng)原代碼編譯成(chéng)中間語言,然後(hòu)用解釋引擎去解釋。中間語言就(jiù)是一種(zhǒng)動态的模型,它在運行期間被(bèi)解釋引擎解釋。MS.Net步其後(hòu)塵。所有的.Net語言都(dōu)被(bèi)先編譯成(chéng)一種(zhǒng)公共的中間語言。然後(hòu)在系統運行期間來解釋中間語言代碼。這(zhè)樣(yàng)做壞處是顯然的:運行速度降低了。這(zhè)樣(yàng)的做法又有什麼(me)好(hǎo)處呢?首先想到的應該是平台的跨越。Java就(jiù)是一個例證。同時讓程序員擺脫了具體平台的束縛,專心于業務的實現。
這(zhè)隻是對(duì)于開(kāi)發(fā)人員的好(hǎo)處。但我們可以看到,模型的不斷提升,其結果是讓開(kāi)發(fā)人員更加接近于想要表達的業務邏輯。而運行期間的動态模型更是增加了其中的靈活性,更少的代碼改變換來更多的對(duì)業務的專注。
軟件開(kāi)發(fā)中的原型法和逐步逼近真實的思路是非常有用的。系統分析人員爲了得到用戶的真實想法,更符合實際業務的邏輯,首先做出一個原型出來,通過(guò)改進(jìn)這(zhè)個原型最終達到滿足用戶需要的系統。
    雖然面(miàn)向(xiàng)對(duì)象的設計從一開(kāi)始以對(duì)象的方式來思考,但用戶的業務流程卻是需要經(jīng)過(guò)多輪的磨合才能(néng)真正去理解的。
    如果一開(kāi)始我們就(jiù)提供給用戶一個模型定義工具,讓用戶自己去定義自己的業務。這(zhè)樣(yàng),當用戶可以修改這(zhè)個模型的時候也就(jiù)是業務人員真正參與軟件開(kāi)發(fā)時代的到來。那麼(me)建模工具就(jiù)要符合用戶的思維習慣,用現實世界中的概念去建立軟件。
    面(miàn)向(xiàng)對(duì)象、UML建模等能(néng)幫助我們去理解模型驅動軟件的開(kāi)發(fā)。但模型驅動的軟件開(kāi)發(fā)并不是OOD、OOA。在這(zhè)個世界裡(lǐ),我們看到的是實體。實體和對(duì)象并不一樣(yàng)。實體可以是一個對(duì)象、一個構件、一個系統。而實體在更多的時候被(bèi)理解爲諸如:報表、物料單、生産計劃、客戶、銷售情況等。
    UML是幫助我們的系統分析人員進(jìn)行軟件開(kāi)發(fā)設計的,它更多的是在貼近代碼這(zhè)個層面(miàn)。但是複雜的圖形與文字說明并沒(méi)有減少用戶對(duì)軟件的神秘和抵觸心理。暫且不說用戶需要去學(xué)習UML,至少在中國(guó)能(néng)看懂UML圖的系統分析員就(jiù)不多。以一個軟件專業人士的眼光去理解用戶的業務需求,這(zhè)本身是有問題的。而你與用戶去談物料單該如何處理的時候,他會(huì)顯示出非常高的積極性。因爲在他看來,他的工作就(jiù)是處理物料單,處理報表等。
    模型就(jiù)是要幫助用戶去設計自己的系統。它是軟件中的虛拟業務與現實業務之間的映射器。模型中通過(guò)對(duì)實體、規則、業務等的表達實現了以用戶的思維方式去理解軟件中的業務操作。