開發(fā)技巧-模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟_第1頁
開發(fā)技巧-模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟_第2頁
開發(fā)技巧-模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟_第3頁
開發(fā)技巧-模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟_第4頁
開發(fā)技巧-模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、開發(fā)技巧:模型驅(qū)動(dòng)軟件開發(fā)實(shí)戰(zhàn)步驟 發(fā)布時(shí)間:2006.06.12 06:24     來源:jdon    作者:板橋里人 有人說:今年是AJAX年,AJAX作為軟件系統(tǒng)表現(xiàn)層實(shí)現(xiàn)技術(shù),怎么能和改變軟件開發(fā)方式的模型驅(qū)動(dòng)開發(fā)模式相比呢?DSM、Together 2006等都在2006不斷亮相,因此,說2006年是領(lǐng)域模型年一點(diǎn)也不過分,因?yàn)檫@是一個(gè)軟件新舊時(shí)代的開始之年,數(shù)據(jù)庫時(shí)代已經(jīng)過去。領(lǐng)域模型時(shí)代已經(jīng)來臨! 過去,當(dāng)我們面對(duì)一個(gè)新的業(yè)務(wù)需求時(shí),我們總是從先建立數(shù)據(jù)表結(jié)構(gòu)開始,這種面向數(shù)據(jù)表的分析設(shè)計(jì)方法已經(jīng)

2、逐步被面向模型的分析設(shè)計(jì)方法替代。 使用數(shù)據(jù)表分析需求,無法涵括項(xiàng)目的全部需求設(shè)計(jì),例如系統(tǒng)的狀態(tài)無法統(tǒng)一設(shè)計(jì),最終導(dǎo)致每個(gè)程序員都可以直接操控系統(tǒng)的狀態(tài),導(dǎo)致整個(gè)系統(tǒng)狀態(tài)運(yùn)行混亂;使用數(shù)據(jù)表分析,還非常容易將實(shí)體表和關(guān)系混合在一起,造成分析者視覺混亂,無法正確分析出系統(tǒng)的真正基本實(shí)體;使用數(shù)據(jù)表分析還會(huì)導(dǎo)致軟件系統(tǒng)以數(shù)據(jù)庫為中心的編碼架構(gòu),進(jìn)而產(chǎn)生傳統(tǒng)過程化編程風(fēng)格,難于維護(hù)和拓展,甚至性能低下,將系統(tǒng)負(fù)載都集中在數(shù)據(jù)庫服務(wù)器端,走上傳統(tǒng)的大型機(jī)集中式計(jì)算模式,而不是分布式計(jì)算模式;使用數(shù)據(jù)表分析還會(huì)喪失多層結(jié)構(gòu)引以為豪的中間層,回復(fù)到過去的兩層結(jié)構(gòu),更談不上設(shè)計(jì)模式應(yīng)用了。 領(lǐng)域建模提倡的

3、面向模型的分析設(shè)計(jì)方法,系統(tǒng)一開始我們就首先確立領(lǐng)域模型Domain Model,以及它們之間的關(guān)系,進(jìn)而可以交由程序員分別實(shí)現(xiàn)表現(xiàn)層、業(yè)務(wù)服務(wù)層和持久層,通過使用Jdon Framework(以下簡稱JF)等模型驅(qū)動(dòng)框架,結(jié)合FDD等模型驅(qū)動(dòng)的工程方法,從而正確無誤地、且快速高質(zhì)量地完成一個(gè)軟件開發(fā)過程。 下面我們從分析、設(shè)計(jì)和開發(fā)幾個(gè)環(huán)節(jié)說明一下時(shí)下流行的最新軟件開發(fā)模式:MDA步驟· Models 建模· Abstraction 抽象細(xì)化。落實(shí)細(xì)節(jié)。· Platform 平臺(tái)架構(gòu)選擇,J2EE還是.NET,J2EE中選擇如何架構(gòu),下面案例我們是選擇Strut

4、s+JdonFramework+Hibernate架構(gòu)平臺(tái),所以,目前JF屬于整個(gè)模型驅(qū)動(dòng)開發(fā)環(huán)節(jié)中Platform部分。· Model transformation 模型傳遞,將模型設(shè)計(jì)傳遞為java的類代碼。· The MDA value proposition DSM(Domain-Specific Modeling)是在上述MDA基礎(chǔ)上,加強(qiáng)平臺(tái)定義映射和模型映射靈活性和自住性,不象MDA工具,一出廠這個(gè)工具就確定死了平臺(tái)和技術(shù)細(xì)節(jié)。 MDA工具和DSM將模型驅(qū)動(dòng)軟件開發(fā)過程自動(dòng)化,但是實(shí)際中,更多人工手工介入,下面展示這個(gè)過程。論壇系統(tǒng)的模型驅(qū)動(dòng)開發(fā) 首先,我們使

5、用UML用例圖來完整清晰地表達(dá)一下一個(gè)新系統(tǒng)的需求,從而才能夠保證正確地建模。 比如一個(gè)論壇的簡單需求如下: 從這個(gè)需求中,我們需要發(fā)現(xiàn)那些有一定內(nèi)容的實(shí)體對(duì)象,Actor1表示用戶角色,用例圖可以說用來表示“什么人做什么事情”,我們只要把“事情”抽象出來,作為實(shí)體對(duì)象,可能就是我們的領(lǐng)域模型(Domain Model),上圖中發(fā)言用例實(shí)際可理解為用戶發(fā)表言論,按照“什么人做什么事情”分析方法,實(shí)際是“用戶”(什么人) “發(fā)表”(做) “言論”(事情),我們可以總結(jié)這里的“事情“是”言論“,”言論“作為實(shí)體對(duì)象,也就是Message(消息 帖子)。 "發(fā)言"實(shí)際就是模型Me

6、ssage的創(chuàng)建,有創(chuàng)建必有修改,增刪改查CRUD功能必會(huì)有。 “回復(fù)”實(shí)際也是Message對(duì)象的創(chuàng)建,只不過有父子關(guān)系罷了。使用同樣的方法可以從“瀏覽論壇”中分析出 Forum(論壇)這個(gè)領(lǐng)域?qū)ο蟆?Forum和Message之間類關(guān)系應(yīng)該是1:N的關(guān)聯(lián),我們使用如下類圖表達(dá)我們的模型: Forum和Message提取過程是建模Modeling過程,有了模型類圖;通過Abstraction細(xì)化過程,有了模型初始化以及細(xì)化。 通過Model transformation 過程,有了的模型類的java代碼:package sample.forum.modelpublic class Forum

7、 private String forumId; private String name; private Collection messages; /表示和Message的1:N關(guān)系(one-to-many) .  package sample.forum.modelpublic class Message private String messageId; private String name; private Forum forum; /表示和Forum的N:1關(guān)系(many-to-one) . 有了這兩個(gè)模型類,圍繞模型的業(yè)務(wù)服務(wù)接口也便誕生,如圍繞Forum的ForumS

8、ervice和圍繞Message的MessageService:package sample.forum.servicepublic interface ForumService void createForum(EventModel em); void updateForum(EventModel em); void deleteForum(EventModel em); Forum getForum(String forumId); .   自此,我們有了領(lǐng)域模型類和業(yè)務(wù)服務(wù)類,使用過JF的人就會(huì)發(fā)現(xiàn),Jdon框架也正是需要這兩種類的確立,下面就可以使用JF快速完成Forum和M

9、essage的增刪改查以及批量查詢兩個(gè)基本功能了,見Step By Step 開發(fā)JdonFramework應(yīng)用主要步驟。倉庫系統(tǒng)的模型驅(qū)動(dòng)開發(fā) 下面再以ERP中倉庫管理系統(tǒng)開發(fā)為例簡要說明模型驅(qū)動(dòng)開發(fā)過程,倉庫簡單用例如下: 我們?cè)僖浴笆裁慈俗鍪裁词虑椤眮矸治鰝}庫的用例功能,“成品入庫”如何分解為“什么人做什么事情”?我們可以這樣理解:倉庫員(什么人)+ 錄入(做) + 庫單(什么事情),這樣,我們提煉出實(shí)體對(duì)象“庫單”;進(jìn)而從“商品資料維護(hù)”功能可以提煉出“商品”模型。 “成品入庫”實(shí)際是“庫單”的新增,必然有“庫單”的增刪改查CRUD功能需求。 我們建立兩個(gè)模型的類圖如下: 有了類圖,通

10、過模型細(xì)化和落實(shí),我們可以有Product等三個(gè)模型代碼類,進(jìn)而圍繞這三個(gè)模型的業(yè)務(wù)Service接口也會(huì)產(chǎn)生,通過使用JF的CRUD和批量查詢,我們可以快速完成倉庫系統(tǒng)的基本功能。見Step By Step 開發(fā)JdonFramework應(yīng)用主要步驟。總結(jié) 以上通過兩個(gè)簡單案例說明領(lǐng)域模型的簡單提煉過程,當(dāng)然實(shí)際項(xiàng)目中,遠(yuǎn)沒有如此簡單,而且也不只是模型的CRUD功能,但是我們可以通過四色圖分析方法來抓住復(fù)雜系統(tǒng)中的模型和業(yè)務(wù)服務(wù)功能,一般四色圖的MI是使用業(yè)務(wù)服務(wù)Service實(shí)現(xiàn);Description是一個(gè)域模型。 JiveJdon3.0是按照模型驅(qū)動(dòng)架構(gòu)思路開發(fā)的一個(gè)復(fù)雜軟件系統(tǒng)。 如圖所示:模型和業(yè)務(wù)服務(wù)是在一個(gè)系統(tǒng)架構(gòu)之前建立的,所以沒有面向模型的領(lǐng)域建模分析方法,就沒有Domain Model,就沒有模型對(duì)象,就沒有中間業(yè)務(wù)層,沒有中間層,就沒有設(shè)計(jì)模式的使用空間。同時(shí),沒有模型對(duì)象,就沒有表現(xiàn)層的邊界對(duì)象(如Struts的ActionForm);也就沒有模型對(duì)象的持久化(使用H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論