免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
DSM:Domain-Specific Modeling (轉(zhuǎn)與 板橋里人)

DSM:Domain-Specific Modeling

板橋里人 http://www.jdon.com 2006/5/1(轉(zhuǎn)載請保留)

 

  當(dāng)DSL(Domain-Specific Languages)誕生時,不少人比較激動,歡呼一個新的語言時代到臨。其實(shí),這不是計算機(jī)領(lǐng)域的新語言,而是一種新的建模語言。

  DSL是一種專門供領(lǐng)域建模專家(也就是系統(tǒng)分析師)使用的語言,這些領(lǐng)域?qū)<也煌诔绦蚋呤郑麄冇幸惶鬃约赫J(rèn)知世界和表達(dá)世界的思維和方式(如UML),因此,他們不感興趣于軟件設(shè)計細(xì)節(jié),希望軟件能夠按照他們分析設(shè)計的結(jié)果去運(yùn)行和執(zhí)行就可以了。

  其實(shí),現(xiàn)如今在Java和.NET分治天下軟件語言之時,不可能再有對和Java等同樣層次的新語言的新需求, 因?yàn)榇蠹叶家呀?jīng)經(jīng)歷過優(yōu)美動人的語言故事,新語言陷阱是每個人理性的認(rèn)識。因此,聰明的專家發(fā)現(xiàn),DSL特征不是發(fā)明新輪子,而是提供一種面向領(lǐng)域建模方便的工具語言,類似UML,但UML不能再勝任這樣的工作(見UML和Java的阻抗),MDA有待進(jìn)一步完善提高,建模專家需要的是DSM(Domain-Specific Modeling)。

提高開發(fā)生產(chǎn)效率

  按照軟件生產(chǎn)效率研究(Software Productivity Research), Java的平均生產(chǎn)率僅比BASIC高20%, C++不會好過Java,當(dāng)今Java和.NET語言紛爭帶給程序員很多選擇的痛苦,我們把更多注意力關(guān)注在對象、組件和框架(objects, components, and frameworks)等概念上,但是開發(fā)效率并沒有比20年前有顯著增長,從匯編語言到BASIC是400%的增長,在當(dāng)前21世紀(jì),我們應(yīng)該怎樣完成這樣的跳躍式發(fā)展?

UML能否勝任?

  象UML這樣傳統(tǒng)的建模語言并不能提高軟件生產(chǎn)率,你需要在兩處維護(hù)信息系統(tǒng):語言代碼和UML模型,為保持一致來回奔命,我們知道,java/C++/BASIC都將被編譯器編譯成匯編語言,可是有人看到過這樣情形:開發(fā)者手工更改編譯器并且試圖使C++代碼和匯編代碼保持一致?可是這種現(xiàn)象會發(fā)生在UML模型和語言代碼之間。

  當(dāng)然,UML有其優(yōu)點(diǎn):作為能夠迅速被讀懂的虛擬符號,UML世界現(xiàn)在吵吵嚷嚷,一半人發(fā)現(xiàn)UML并不能表達(dá)他們在建模時需要的一些概念,因此要求將入一些新的東西進(jìn)入UML核心標(biāo)準(zhǔn);可是還有另外一些人則認(rèn)為UML太復(fù)雜,應(yīng)該從UML核心元素中減去一些元素。當(dāng)UML試圖適合所有的人時,它就不能大力提高其抽象層次了。

  這是目前基于UML的大多數(shù)MDA工具發(fā)生尷尬現(xiàn)象。MDA工具制造商發(fā)現(xiàn)它們僅僅能夠比手工編碼提高生產(chǎn)效率(study)35%,遠(yuǎn)沒有我們希望的400%革命性跳躍。

什么是DSM?

  只有提高抽象層次,將軟件直接面向建模專家或系統(tǒng)分析師,然后運(yùn)用自動化代碼生成技術(shù),這樣才能高質(zhì)量大幅度快速開發(fā)出軟件系統(tǒng),在OOPSLA(領(lǐng)先的軟件工程會議),大家認(rèn)為DSM可能是一種解決方案。Bill Gates 和 Grady Booch也發(fā)表過同樣觀點(diǎn)。

  DSM意味Domain-Specific Modeling領(lǐng)域定義建模,通過使用領(lǐng)域概念直接指定解決方案,DSM提高了超越程序代碼之上的抽象層次,最終軟件產(chǎn)品將從高層次的設(shè)計中直接自動產(chǎn)生,這樣一個自動過程是可以實(shí)現(xiàn)的,因?yàn)?語言和代碼產(chǎn)生器可以滿足某一個公司或領(lǐng)域的需求,建模專家使用定義這個自動機(jī)器,而程序員只管使用即可。

  實(shí)踐經(jīng)驗(yàn)已經(jīng)證明:DSM比現(xiàn)有方式(包括基于UML的MDA)效率提高5-10倍,正如Booch說的那樣: ”當(dāng)建模概念可以直接映射到領(lǐng)域Domain,而不是計算機(jī)具體技術(shù)概念時,MDA的價值已經(jīng)完成“,這句話的意思是: MDA已經(jīng)證明我們可以直接從領(lǐng)域?qū)<褼omain觀點(diǎn)直接建模,而不必拘束于具體的計算機(jī)技術(shù)概念,或者說:直接由有經(jīng)驗(yàn)的系統(tǒng)分析師/建模專家分析設(shè)計進(jìn)而生產(chǎn)出軟件系統(tǒng)已經(jīng)被MDA證明是可行的了,MDA的價值也就在于此,
Booch等人寄希望于使用DSM替代MDA。

  由建模專家定義有關(guān)領(lǐng)域和組件的代碼產(chǎn)生器,這樣做的結(jié)果要好于大多數(shù)開發(fā)者手工開發(fā)。從MDA教訓(xùn)來看,大家認(rèn)識到:不可能有“一種尺寸適合所有身材”的代碼產(chǎn)生方案,不必象MDA那樣疲于往來返工,DSM所做的正如將代碼編譯成匯編語言的編譯器所做的。

DSM工作原理

  首先,每個行業(yè)都有一些經(jīng)驗(yàn)豐富行業(yè)專家,俗成系統(tǒng)分析師,他們對業(yè)務(wù)系統(tǒng)非常熟悉,但是不太了解軟件技術(shù),由這些專家定義一個包含域概念和規(guī)則的域定義語言(domain-specific language),并且定義這些域概念和規(guī)則映射到代碼產(chǎn)生器的映射;實(shí)際上這些建模專家所要表達(dá)的就是:我們的需求應(yīng)該看上去是怎樣?我是怎么寫代碼的。

  然后,其他開發(fā)者就使用建模語言根據(jù)前面定義的規(guī)則制作模型,最后,代碼將自動產(chǎn)生,因?yàn)榻<覅⑴c了定義代碼生產(chǎn)器,這樣最后產(chǎn)生的代碼質(zhì)量要高于正常程序員手工完成的代碼質(zhì)量。更重要的是,制作模型將比手工寫代碼更快。

與MDA區(qū)別

  DSM與MDA主要區(qū)別是:MDA工具商自己定義代碼產(chǎn)生器,這些代碼產(chǎn)生器第一次看非常好,但是以后就變樣走味了,難以適應(yīng)需求的變化。.

  DSM中,由你控制DSL和代碼產(chǎn)生器,這些工具可以被調(diào)整以適應(yīng)你自己的系統(tǒng),作為開發(fā)者,你只需要定義DSL和實(shí)現(xiàn)自己的代碼產(chǎn)生器,所有這一切都是由你來定義控制,正所謂定制性強(qiáng)。

DSL案例

  TSS上最近的文章“Improving Developer Productivity with Lightweight Domain Specific Modeling”演示了如何使用DSM實(shí)現(xiàn)輕量建模的過程,共分五步:

  1. ArgoUML 能夠用作定義DSL模型,開發(fā)人員能夠設(shè)計DSL模型適合問題域。

  2. 將 ArgoUML模型轉(zhuǎn)為Eclipse模型格式的Ecore.

  3. 使用Eclipse的插件JET模板定義代碼如何產(chǎn)生。

  4. Ecore模型輸入到模板定義中,然后再定義Ecore模型中的模型元素和帶有Merlin的JET模板之間映射。

  5. 最后結(jié)果是產(chǎn)生最終代碼。

參考文章:
Domain-Specific Modeling for Full Code Generation

Creating a Domain-Specific Modeling Language for an Existing Framework

UML和Java的阻抗

Improving Developer Productivity with Lightweight Domain Specific Modeling

Why DSM?

Ruby On Rails 與Jdon Framework架構(gòu)比較

使用Jdon Framework進(jìn)行模型驅(qū)動軟件開發(fā)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
博客園 - 明天會更好 - MDA(模型驅(qū)動架構(gòu))
大數(shù)據(jù)治理系列,第二部分: 元數(shù)據(jù)集成體系結(jié)構(gòu)
PowerDesigner 在MDA 領(lǐng)域的應(yīng)用
MDA是什么
Model to Text工具Acceleo使用教程——背景知識
月光軟件站 - 編程文檔 - Java - 模型驅(qū)動開發(fā)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服