Visual Studio DSL工具特定領域開發(fā)指南

出版時間:2008-6  出版社:機械工業(yè)出版社  作者:(美)庫克?斯蒂夫 等著,Visual Studio架構師套件開發(fā)團隊 譯  頁數(shù):384  譯者:Visual Studio架構師套件團隊  
Tag標簽:無  

內(nèi)容概要

本書是微軟DSL工具的軟件開發(fā)指南。本書主要講解特定領域開發(fā)(DSD)、創(chuàng)建和使用DSL、域模型定義、界面表示、創(chuàng)建/刪除/更新行為、序列化、約束與驗證、生成工件、部署DSL、DSL高級定制功能以及設計DSL。本書不僅介紹特定領域開發(fā)和模型驅動開發(fā)等概念,還注重理論與實例相結合,用一個具體DSL應用實例貫穿全書,來詳細介紹如何使用DSL工具開發(fā)用戶自己的特定領域語言,從而實現(xiàn)真正的模型驅動軟件開發(fā)。    本書適合使用DSL工具的軟件開發(fā)人員和對DSL感興趣的讀者參考。

作者簡介

Steve Cook微軟公司企業(yè)框架和工具組的一名軟件架構師。在加入微軟之前,他是IBM的一名杰出工程師,在推出UML 2.0規(guī)范的過程中,他是IBM公司的代表。作為英國計算機協(xié)會的一名院士,他在早期參與了面向對象編程的推廣。

書籍目錄

譯者序序前言作者簡介第1章  特定領域的開發(fā)  1.1  簡介  1.2  特定領域開發(fā)  1.3  舉例    1.3.1  軟件定義電路    1.3.2  嵌入式系統(tǒng)    1.3.3  設備界面    1.3.4  軟件開發(fā)過程定制  1.4  優(yōu)點  1.5  語言  1.6  文本DSL  1.7  圖形DSL    1.7.1  表示結構的規(guī)范    1.7.2  表示行為的規(guī)范  1.8  圖形DSL的相關內(nèi)容    1.8.1  符號    1.8.2  域模型    1.8.3  生成    1.8.4  序列化    1.8.5  工具集成    1.8.6  綜合應用  1.9   Visual Studio中的DSL  1.10  定制化陷阱  1.11  UML  1.12  小結第2章  創(chuàng)建和使用DSL  2.1  簡介  2.2  過程:DSL的遞增開發(fā)    2.2.1  通用化應用程序:定位變化部分,發(fā)現(xiàn)DSL    2.2.2  自頂向下和自底向上    2.2.3  開發(fā)DSL:從草圖到域模型    2.2.4  域模型和表示是分離的    2.2.5  改善DSL    2.2.6  由DSL驅動框架    2.2.7  使用DSL    2.2.8  DSL的發(fā)展    2.2.9  解析式框架  2.3  在Visual Studio中創(chuàng)建DSL    2.3.1  在Visual Studio中創(chuàng)建一個DSL authoring解決方案    2.3.2  嘗試使用DSL解決方案    2.3.3  定義:DSL    2.3.4  生成設計器代碼    2.3.5  向DSL中添加內(nèi)容    2.3.6  約束    2.3.7  定制DSL資源管理器窗口    2.3.8  定制屬性窗口    2.3.9  設計器自定義代碼    2.3.10  DSL文件的序列化格式    2.3.11  由DSL驅動的應用程序    2.3.12  部署  2.4  第二個DSL例子:工程定義DSL  2.5  DSL工具的架構    2.5.1  生成的代碼    2.5.2  DSL工具的架構分層    2.5.3  框架程序集    2.5.4  DSL項目的內(nèi)容    2.5.5  DslPackage項目的內(nèi)容  2.6  小結第3章  域模型定義  3.1  簡介  3.2  域模型設計器  3.3  駐留內(nèi)存中的Store  3.4  域類  3.5  域關系    3.5.1  嵌入關系    3.5.2  重數(shù)    3.5.3  引用關系    3.5.4  關系的派生  3.6  生成不包含任何形狀的設計器“  3.7  生成的代碼  3.8  更多關于域類的討論  3.9  更多關于域屬性的討論    3.9.1  自動計算的屬性    3.9.2  DomainPropertyInfo  3.10  更多關于域關系和角色的討論    3.10.1  訪問鏈接    3.10.2  更多關于關系派生的討論    3.10.3  DomainRelationshipInfo和DomainRoleInfo  3.11  更多關于Store的話題    3.11.1  查找元素    3.11.2  分區(qū)(Partitions)    3.11.3  規(guī)則    3.11.4  DomainModelInfo  3.12  小結第4章  界面表示  4.1  簡介  4.2  圖形符號概述  4.3  圖和編輯器    4.3.1  圖表    4.3.2  編輯器    4.3.3  設計器    4.3.4  自定義編輯器  4.4  形狀    4.4.1  形狀分類    4.4.2  形狀映射  4.5  連接器    4.5.1  連接器解析和外觀    4.5.2  連接器和繼承    4.5.3  連接器映射    4.5.4  高級連接器映射  4.6  裝飾器    4.6.1  裝飾器的類型    4.6.2  定位    4.6.3  裝飾器映射  4.7  在代碼中自定義圖形符號    4.7.1  多行文本裝飾器    4.7.2  圖像形狀變量    4.7.3  設置背景圖片    4.7.4  設置自定義連接點    4.7.5  更改連接器的路線樣式  4.8  瀏覽器    4.8.1  默認外觀    4.8.2  更改窗口圖標和標簽    4.8.3  自定義的節(jié)點外觀    4.8.4  隱藏節(jié)點    4.8.5  通過代碼自定義瀏覽器  4.9  屬性窗口    4.9.1  默認的屬性窗口外觀    4.9.2  類別、名稱和說明    4.9.3  隱藏屬性和使屬性只讀    4.9.4  屬性的傳遞    4.9.5  通過代碼自定義屬性窗口  4.10  小結第5章  創(chuàng)建、刪除和更新行為  5.1  簡介  5.2  元素的創(chuàng)建    5.2.1  工具箱    5.2.2  元素合并指令    5.2.3  自定義元素合并指令    5.2.4  Re-Parenting與元素合并指令    5.2.5  自定義元素工具原型  5.3  連接構造器    5.3.1  多個源角色和目標角色的指令    5.3.2  多鏈接的連接指令    5.3.3  自定義連接構造器  5.4  元素的刪除    5.4.1  默認的刪除傳播規(guī)則    5.4.2  控制刪除傳播    5.4.3  自定義刪除傳播  5.5  小結第6章  序列化  6.1  簡介  6.2  保存和加載模型和圖表  6.3  模型的XML文件格式  6.4  元素和屬性  6.5  關系  6.6  交叉引用    6.6.1  使用Guid作為引用    6.6.2  使用qualified name作為引用    6.6.3  對鏈接引用  6.7  圖表的XML文件格式  6.8  版本控制和遷移  6.9  XML模式文件  6.10  自定義序列化    6.10.1  修改XML元素名稱    6.10.2  ElementData    6.10.3  實現(xiàn)你自己的序列化器  6.11  生成的序列化代碼    6.11.1  自定義的序列化代碼    6.11.2  自定義對模式文件的影響  6.12  小結第7章  約束與驗證  7.1  簡介  7.2  選擇硬約束還是軟約束  7.3  DSL工具中的軟約束    7.3.1  驗證方法    7.3.2  啟用驗證    7.3.3  觸發(fā)驗證    7.3.4  定制驗證類別    7.3.5  驗證行為的繼承    7.3.6  驗證輸出    7.3.7  在Visual Studio IDE之外使用驗證    7.3.8  針對外部數(shù)據(jù)的驗證  7.4  DSL工具中的硬約束  7.5  規(guī)則  7.6  硬、軟約束相結合  7.7  小結第8章  生成工件  8.1  簡介  8.2  工件生成方式    8.2.1  擴展樣式表轉換語言(XSLT)    8.2.2  使用特定領域API    8.2.3  一種基于模板的方法  8.3  復雜關系和同步  8.4  模板化過程    8.4.1  第一個模板    8.4.2  與生成代碼相關的模型數(shù)據(jù)    8.4.3  開始創(chuàng)建模板庫  8.5  文本模板的語法    8.5.1  指令    8.5.2  自定義指令    8.5.3  控制塊的類型  8.6  實際應用中的大規(guī)模工件生成問題  8.7  高級自定義功能    8.7.1  文本模板的架構    8.7.2  自定義宿主    8.7.3  自定義指令處理器    8.7.4  自定義業(yè)務流程  8.8  小結第9章  部署DSL  9.1  簡介  9.2  安裝一個設計器所需要的文件  9.3  創(chuàng)建一個安裝項目  9.4  安裝項目內(nèi)容  9.5  自定義安裝程序    9.5.1  自定義InstallerDefinition.dslsetup    9.5.2  自定義settings.ini    9.5.3  自定義Strings.wxl    9.5.4  自定義Product.ico  9.6  dslsemp文件的格式    9.6.1      9.6.2      9.6.3      9.6.4      9.6.5      9.6.6      9.6.7      9.6.8    9.7  更新安裝文件  9.8  包加載鍵  9.9  為生成代碼部署文本模板    9.9.1  在Debugging項目中創(chuàng)建項目模板    9.9.2  使用文本模板包含文件    9.9.3  在VS項模板中包含文本模板  9.10  小結第10章  DSL高級定制功能  10.1  簡介  10.2  定制工具    10.2.1  部分類    10.2.2  雙重派生——The Generation Gap    10.2.3  自定義構造函數(shù)    10.2.4  自定義開關    10.2.5  自定義重載  10.3  對更改的響應    10.3.1  屬性值變化處理“On Value Changed/Changing”    10.3.2  計算域屬性    10.3.3  自定義存儲域屬性    10.3.4  值變化通知    10.3.5  把模型更改傳遞給形狀:On AssociatedPropertyChanged    10.3.6  規(guī)則    10.3.7  Store事件    10.3.8  .NET事件處理程序    10.3.9  事件重載    10.3.10  邊界規(guī)則    10.3.11  更改傳遞技術和約束技術的小結  10.4  DSL外殼程序體系架構  10.5  如何增加菜單命令    10.5.1  為每個命令增加一個命令標識    10.5.2  增量菜單資源索引    10.5.3  添加命令到命令集    10.5.4  定義命令處理程序    10.5.5  命令處理程序的較好實現(xiàn)    10.5.6  編譯運行    10.5.7  為標準的命令提供處理器  10.6  在另一個界面中構建DSL圖  10.7  實現(xiàn)復制粘貼    10.7.1  復制方法    10.7.2  粘貼方法    10.7.3  注冊菜單處理程序  10.8  形狀容器    10.8.1  子形狀    10.8.2  使用內(nèi)嵌子形狀的DSL    10.8.3  使用規(guī)則實現(xiàn)形狀包含  10.9  小結第11章  設計DSL  11.1  簡介  11.2  識別可變性    11.2.1  自底向上還是自頂向下    11.2.2  特征樹    11.2.3  特征樹與DSL  11.3  開發(fā)域模型    11.3.1  擬訂域快照    11.3.2  從快照中獲得的域模型  11.4  開發(fā)標記法    11.4.1  項目定義標記法    11.4.2  問題狀態(tài)標記法    11.4.3  常見的標記法  11.5  定義驗證約束    11.5.1  內(nèi)部一致性    11.5.2  外部數(shù)據(jù)及模型的一致性  11.6  開發(fā)和演化框架    11.6.1  比較生成型和解釋型    11.6.2  演化一個通用框架    11.6.3  從DSL驅動生成框架  11.7  測試    11.7.1  驗證約束    11.7.2  生成器模板    11.7.3  生成的代碼    11.7.4  規(guī)則    11.7.5  語言定義  11.8  改進DSL  11.9  什么是一個好的DSL    11.9.1  適當?shù)臉擞浄ǎ赫齽t表達式的一個例子    11.9.2  候選的標記法    11.9.3  圖不是語法樹  11.10  小結  11.11  總結

章節(jié)摘錄

第3章 域模型定義3.1 簡介第2章介紹了開發(fā)一個DSL需要創(chuàng)建的不同組成部分:域模型,圖形符號和工具箱,資源管理器和屬性窗口,驗證,序列化和部署。同時第2章還介紹了DSL設計器,DSL設計者可以運用這一工具來定義新語言的不同組件。本章將描述怎樣定義域模型,并從域模型生成的DSL工具的角度來解釋域模型的含義。每一個DSL的核心都是一個域模型。它定義了這一語言所代表的各種概念,這些概念的屬性,以及它們之間的關系。所有的DSL用戶都必須對這些有一定程度的了解,因為用戶在使用DSL時創(chuàng)建和操作的每一個元素都是用域模型來描述的。域模型就像DSL的語法;它定義了組成模型的要素并給出了將這些要素互相聯(lián)系在一起的規(guī)則。域模型還為語言的其他方面的建立提供了基礎。圖形符號、工具箱、資源管理器、屬性窗口、驗證、序列化和部署的定義都建立在域模型上。域模型還用來生成可用于編程的API,用戶可以用這些API來定制和擴展語言,或在模板中用這些API來生成代碼或其他文本工件。如果你熟悉面向對象設計或者面向對象編程的話,那么域建模(Domain Modeling)的基本概念對你來說就顯得非常簡單了。本章將用第2章中介紹的Issue State示例來介紹域建模中所有的基本思想。同時,為了更加細致地探討域建模中的部分細節(jié),通過對Issue State示例進行改進來介紹域建模中的一些關鍵問題。

編輯推薦

《Visual Studio DSL工具特定領域開發(fā)指南》深入地探討了以下內(nèi)容: 判斷DSL是否適合您。對DSL和其他模型驅動的開發(fā)方法進行對比。DSL的定義、調(diào)優(yōu)和演化:模型、界面表示、創(chuàng)建、更新、序列化、限制條件、驗證以及其他內(nèi)容。在編寫很少代碼、甚至不編寫代碼的情況下,為新定義的DSL生成可視化設計器。利用簡單的文本模板,為您的模型生成應用程序代碼,極大地提高生產(chǎn)效率。自動生成配置文件、資源和其他工件??焖俸唵蔚卦诓煌M織中部署可視化設計器。為特定的過程需求定制可視化設計器。作為一種為某些特定(橫向或縱向)領域而定制的語言,特定領域語言(DSL)正在軟件工程師和架構師之間孕育一個不斷增長的興奮因子。DSL給軟件的創(chuàng)建和演化帶來了新的敏捷性。與標準的程序代碼相比,DSL使得設計考慮的不同方面都能夠以更加貼近系統(tǒng)需求的形式表示出來,從而極大地減少大規(guī)模項目和生產(chǎn)線的開發(fā)成本。在這本具有突破性的著作中,4名杰出的專家向讀者介紹了DSL的使用方式,以及在您的環(huán)境中怎樣最好地利用它們。通過閱讀《Visual Studio DSL工具特定領域開發(fā)指南》,首先您可以掌握可應用于所有平臺的DSL概念和技術。然后,您將學會怎樣通過微軟公司新推出的功能強大的DSL工具(這個工具集正是由《Visual Studio DSL工具特定領域開發(fā)指南》作者所設計的)來創(chuàng)建和使用DSL,以及怎樣定義DSL并用Visual Studio內(nèi)建的建模技術來生成可視化設計器。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    Visual Studio DSL工具特定領域開發(fā)指南 PDF格式下載


用戶評論 (總計5條)

 
 

  •   查到的唯一一本介紹DSL的書,結合MSDN看挺好的。
  •   這就是我想要的,DSL,市場上不多見,但我認為以后是一個發(fā)展方向來的,一定要學。
  •   內(nèi)容中規(guī)中矩,沒有讀下去的欲望,可以在網(wǎng)上查查也有足夠收獲
  •   沒啥說的,唯一一本中文的
  •   書有點像盜版的,太失望了。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7