濟(jì)南軟件開發(fā)—模型驅(qū)動軟件開發(fā)

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