標籤:style blog http color 使用 ar 資料 問題 sp
Atitit.研發管理--提升效率--軟體開發方法DSM總結o99
1. 什麼是DSM? 1
2. DSM使用的語言DSL 2
3. 模型的優點 2
4. DSM 跟與MDA區別 2
5. MDA的實現 3
6. 參考 4
1. 什麼是DSM?
只有提高抽象層次,將軟體直接面向建模專家或系統分析師,然後運用自動化代碼產生技術,這樣才能高品質大幅度快速開發出軟體系統,在OOPSLA(領先的軟體工程會議),大家認為DSM可能是一種解決方案。Bill Gates 和 Grady Booch也發表過同樣觀點。
DSM意味Domain-Specific Modeling領域定義建模,通過使用領域概念直接指定解決方案,DSM提高了超越程式碼之上的抽象層次,最終軟體產品將從高層次的設計中直接自動產生,這樣一個自動過程是可以實現的,因為 語言和代碼產生器可以滿足某一個公司或領域的需求,建模專家使用定義這個自動機器,而程式員只管使用即可。
實踐經驗已經證明:DSM比現有方式(包括基於UML的MDA)效率提高5-10倍,正如Booch說的那樣: ”當建模概念可以直接映射到領域Domain,而不是電腦具體技術概念時,MDA的價值已經完成“,這句話的意思是: MDA已經證明我們可以直接從領域專家Domain觀點直接建模,而不必拘束於具體的電腦技術概念,或者說:直接由有經驗的系統分析師/建模專家分析設計進而生產出軟體系統已經被MDA證明是可行的了,MDA的價值也就在於此,
Booch等人寄希望於使用DSM替代MDA。
由建模專家定義有關領域和組件的代碼產生器,這樣做的結果要好於大多數開發人員手工開發。從MDA教訓來看,大家認識到:不可能有“一種尺寸適合所有身材”的代碼產生方案,不必象MDA那樣疲於往來返工,DSM所做的正如將代碼編譯成組合語言的編譯器所做的。
作者:: 老哇的爪子 Attilax 艾龍, EMAIL:[email protected]
轉載請註明來源: http://blog.csdn.net/attilax
2. DSM使用的語言DSL
domain-specific languages (領域 建模語言)。
使用 XML 在應用組件中傳遞資料,使用 SQL 存取資料,使用 WSDL 來說明面向 Web 應用的組件的介面等等,但是它們中沒有一個直接針對終端使用者所面對的業務問題。
DSL 被設計為直接面向它所要解決的問題領域。在某種程度上,它能夠代替編碼,資料交換,配置等工作,我們常把這類語言稱為建模語言
Anno+html>>>uml
3. 模型的優點
模型受歡迎是因為它能夠很好地表述問題從而避免陷入技術細節中。當技術變得越來越複雜的時候,模型是提高生產力的必須手段。
模型的另一個好處是可以讓程式 員和問題領域的專家使用同樣的表述方法,這有助於團隊成員間的溝通。
我們也可以把使用模型看作彌合技術和業務之間縫隙的方法。
4. DSM 跟與MDA區別
DSM規避了MDA發展中的難題,不苛求在PIM這個層面完全表達模型的細節。如果不限定領域的話,現有的模型描述語言以及約束描述如OCL,模型轉換語言QVT等都不能滿足一方面表達能力足夠,描述精確,一方面又足夠抽象,同時還能夠簡單易用的要求。這種情況下,DSM不失為一個好辦法。
DSM與MDA主要區別是:MDA工具商自己定義代碼產生器,這些代碼產生器第一次看非常好,但是以後就變樣走味了,難以適應需求的變化。.
DSM中,由你控制DSL和代碼產生器,這些工具可以被調整以適應你自己的系統,作為開發人員,你只需要定義DSL和實現自己的代碼產生器,所有這一切都是由你來定義控制,正所謂定製性強
5. MDA的實現
系統商務邏輯和實現技術的分離,我們都認為它是支援 MDA 的,比如 VSTS
不管白貓黑貓,抓到老鼠就是好貓。對軟體開發人員以及各種涉眾而言,只要實現了商務邏輯和底層技術平台的分離,能夠保證當年辛苦辛苦建模的成果不隨著技術平台的變化而像西西弗斯推石頭上山那樣一遍一遍不可避免地重來,它就是 MDA (其實不叫 MDA 也沒啥 :D )。
圖 3 基於 MDA 的開發過程
3 所示,對應傳統的需求-分析-設計-開發-測試-交付過程,基於 MDA 的開發過程由模型和模型之間的轉換組成。最終的應用程式也可看做模型,它是對應最終實現平台(如機器碼)的 PSM
微軟的 VSTS 中,提供了定義領特定領域語言 DSL ( Domain Specific Language ),也就是我們上面所說的領域元模型,的方便的環境,並支援從基於 DSL 的模型到程式碼的產生以及雙向工程。微軟是典型的背叛標準者,把 MDA 的思想全盤接受,換個名字,然後決然拋棄了 MDA 的核心標準 UML 和 MOF J 。同時,微軟又是絕對的現實主義者,他從切實提高開發效率出發,提供至少在目前階段更容易被開發人員所接受的 MDA 開發支援。我認為,從這個意義上說, VSTS 是廣義的 MDA 工具。
其他很多工具,由於商業宣傳等因素,只要和模型轉換、代碼產生等掛上鉤的,往往也聲稱自己是 MDA 工具。這些都可以理解,也沒有必要較真。按照上文我們分析的,只要實現或者部分實現了商務邏輯和技術細節的分離,都可以說是廣義的 MDA 工具,比如基於 Velocity 面向特定平台如 J2EE 的代碼產生工具 XDoclet 、 Middlegen 等。
6. DSL案例
TSS上最近的文章“Improving Developer Productivity with Lightweight Domain Specific Modeling”示範了如何使用DSM實現輕量建模的過程,共分五步:
ArgoUML 能夠用作定義DSL模型,開發人員能夠設計DSL模型適合問題域。
將 ArgoUML模型轉為Eclipse模型格式的Ecore.
使用Eclipse的外掛程式JET模板定義代碼如何產生。
Ecore模型輸入到模板定義中,然後再定義Ecore模型中的模型元素和帶有Merlin的JET模板之間映射。
最後結果是產生最終代碼。
7. 參考
模型驅動架構(MDA,Model Driven Architecture)淺述 - - 部落格頻道 - CSDN.NET.htm
什麼是DSM_百度知道.htm
DSM與MDA - 阿Ben的日誌 - 網易部落格.htm
[摘譯] 面向領域建模 - 研究與實踐:智慧城市、雲端運算、物聯網和軟體工程 - 部落格頻道 - CSDN.NET.htm
Atitit.研發管理--提升效率--軟體開發方法DSM總結o99