出版時間:2008-6 出版社:機(jī)械工業(yè)出版社 作者:(美)庫克?斯蒂夫 等著,Visual Studio架構(gòu)師套件開發(fā)團(tuán)隊(duì) 譯 頁數(shù):384 譯者:Visual Studio架構(gòu)師套件團(tuán)隊(duì)
Tag標(biāo)簽:無
內(nèi)容概要
本書是微軟DSL工具的軟件開發(fā)指南。本書主要講解特定領(lǐng)域開發(fā)(DSD)、創(chuàng)建和使用DSL、域模型定義、界面表示、創(chuàng)建/刪除/更新行為、序列化、約束與驗(yàn)證、生成工件、部署DSL、DSL高級定制功能以及設(shè)計DSL。本書不僅介紹特定領(lǐng)域開發(fā)和模型驅(qū)動開發(fā)等概念,還注重理論與實(shí)例相結(jié)合,用一個具體DSL應(yīng)用實(shí)例貫穿全書,來詳細(xì)介紹如何使用DSL工具開發(fā)用戶自己的特定領(lǐng)域語言,從而實(shí)現(xiàn)真正的模型驅(qū)動軟件開發(fā)。 本書適合使用DSL工具的軟件開發(fā)人員和對DSL感興趣的讀者參考。
作者簡介
Steve Cook微軟公司企業(yè)框架和工具組的一名軟件架構(gòu)師。在加入微軟之前,他是IBM的一名杰出工程師,在推出UML 2.0規(guī)范的過程中,他是IBM公司的代表。作為英國計算機(jī)協(xié)會的一名院士,他在早期參與了面向?qū)ο缶幊痰耐茝V。
書籍目錄
譯者序序前言作者簡介第1章 特定領(lǐng)域的開發(fā) 1.1 簡介 1.2 特定領(lǐng)域開發(fā) 1.3 舉例 1.3.1 軟件定義電路 1.3.2 嵌入式系統(tǒng) 1.3.3 設(shè)備界面 1.3.4 軟件開發(fā)過程定制 1.4 優(yōu)點(diǎn) 1.5 語言 1.6 文本DSL 1.7 圖形DSL 1.7.1 表示結(jié)構(gòu)的規(guī)范 1.7.2 表示行為的規(guī)范 1.8 圖形DSL的相關(guān)內(nèi)容 1.8.1 符號 1.8.2 域模型 1.8.3 生成 1.8.4 序列化 1.8.5 工具集成 1.8.6 綜合應(yīng)用 1.9 Visual Studio中的DSL 1.10 定制化陷阱 1.11 UML 1.12 小結(jié)第2章 創(chuàng)建和使用DSL 2.1 簡介 2.2 過程:DSL的遞增開發(fā) 2.2.1 通用化應(yīng)用程序:定位變化部分,發(fā)現(xiàn)DSL 2.2.2 自頂向下和自底向上 2.2.3 開發(fā)DSL:從草圖到域模型 2.2.4 域模型和表示是分離的 2.2.5 改善DSL 2.2.6 由DSL驅(qū)動框架 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 生成設(shè)計器代碼 2.3.5 向DSL中添加內(nèi)容 2.3.6 約束 2.3.7 定制DSL資源管理器窗口 2.3.8 定制屬性窗口 2.3.9 設(shè)計器自定義代碼 2.3.10 DSL文件的序列化格式 2.3.11 由DSL驅(qū)動的應(yīng)用程序 2.3.12 部署 2.4 第二個DSL例子:工程定義DSL 2.5 DSL工具的架構(gòu) 2.5.1 生成的代碼 2.5.2 DSL工具的架構(gòu)分層 2.5.3 框架程序集 2.5.4 DSL項(xiàng)目的內(nèi)容 2.5.5 DslPackage項(xiàng)目的內(nèi)容 2.6 小結(jié)第3章 域模型定義 3.1 簡介 3.2 域模型設(shè)計器 3.3 駐留內(nèi)存中的Store 3.4 域類 3.5 域關(guān)系 3.5.1 嵌入關(guān)系 3.5.2 重數(shù) 3.5.3 引用關(guān)系 3.5.4 關(guān)系的派生 3.6 生成不包含任何形狀的設(shè)計器“ 3.7 生成的代碼 3.8 更多關(guān)于域類的討論 3.9 更多關(guān)于域?qū)傩缘挠懻? 3.9.1 自動計算的屬性 3.9.2 DomainPropertyInfo 3.10 更多關(guān)于域關(guān)系和角色的討論 3.10.1 訪問鏈接 3.10.2 更多關(guān)于關(guān)系派生的討論 3.10.3 DomainRelationshipInfo和DomainRoleInfo 3.11 更多關(guān)于Store的話題 3.11.1 查找元素 3.11.2 分區(qū)(Partitions) 3.11.3 規(guī)則 3.11.4 DomainModelInfo 3.12 小結(jié)第4章 界面表示 4.1 簡介 4.2 圖形符號概述 4.3 圖和編輯器 4.3.1 圖表 4.3.2 編輯器 4.3.3 設(shè)計器 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 設(shè)置背景圖片 4.7.4 設(shè)置自定義連接點(diǎn) 4.7.5 更改連接器的路線樣式 4.8 瀏覽器 4.8.1 默認(rèn)外觀 4.8.2 更改窗口圖標(biāo)和標(biāo)簽 4.8.3 自定義的節(jié)點(diǎn)外觀 4.8.4 隱藏節(jié)點(diǎn) 4.8.5 通過代碼自定義瀏覽器 4.9 屬性窗口 4.9.1 默認(rèn)的屬性窗口外觀 4.9.2 類別、名稱和說明 4.9.3 隱藏屬性和使屬性只讀 4.9.4 屬性的傳遞 4.9.5 通過代碼自定義屬性窗口 4.10 小結(jié)第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 連接構(gòu)造器 5.3.1 多個源角色和目標(biāo)角色的指令 5.3.2 多鏈接的連接指令 5.3.3 自定義連接構(gòu)造器 5.4 元素的刪除 5.4.1 默認(rèn)的刪除傳播規(guī)則 5.4.2 控制刪除傳播 5.4.3 自定義刪除傳播 5.5 小結(jié)第6章 序列化 6.1 簡介 6.2 保存和加載模型和圖表 6.3 模型的XML文件格式 6.4 元素和屬性 6.5 關(guān)系 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 實(shí)現(xiàn)你自己的序列化器 6.11 生成的序列化代碼 6.11.1 自定義的序列化代碼 6.11.2 自定義對模式文件的影響 6.12 小結(jié)第7章 約束與驗(yàn)證 7.1 簡介 7.2 選擇硬約束還是軟約束 7.3 DSL工具中的軟約束 7.3.1 驗(yàn)證方法 7.3.2 啟用驗(yàn)證 7.3.3 觸發(fā)驗(yàn)證 7.3.4 定制驗(yàn)證類別 7.3.5 驗(yàn)證行為的繼承 7.3.6 驗(yàn)證輸出 7.3.7 在Visual Studio IDE之外使用驗(yàn)證 7.3.8 針對外部數(shù)據(jù)的驗(yàn)證 7.4 DSL工具中的硬約束 7.5 規(guī)則 7.6 硬、軟約束相結(jié)合 7.7 小結(jié)第8章 生成工件 8.1 簡介 8.2 工件生成方式 8.2.1 擴(kuò)展樣式表轉(zhuǎn)換語言(XSLT) 8.2.2 使用特定領(lǐng)域API 8.2.3 一種基于模板的方法 8.3 復(fù)雜關(guān)系和同步 8.4 模板化過程 8.4.1 第一個模板 8.4.2 與生成代碼相關(guān)的模型數(shù)據(jù) 8.4.3 開始創(chuàng)建模板庫 8.5 文本模板的語法 8.5.1 指令 8.5.2 自定義指令 8.5.3 控制塊的類型 8.6 實(shí)際應(yīng)用中的大規(guī)模工件生成問題 8.7 高級自定義功能 8.7.1 文本模板的架構(gòu) 8.7.2 自定義宿主 8.7.3 自定義指令處理器 8.7.4 自定義業(yè)務(wù)流程 8.8 小結(jié)第9章 部署DSL 9.1 簡介 9.2 安裝一個設(shè)計器所需要的文件 9.3 創(chuàng)建一個安裝項(xiàng)目 9.4 安裝項(xiàng)目內(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項(xiàng)目中創(chuàng)建項(xiàng)目模板 9.9.2 使用文本模板包含文件 9.9.3 在VS項(xiàng)模板中包含文本模板 9.10 小結(jié)第10章 DSL高級定制功能 10.1 簡介 10.2 定制工具 10.2.1 部分類 10.2.2 雙重派生——The Generation Gap 10.2.3 自定義構(gòu)造函數(shù) 10.2.4 自定義開關(guān) 10.2.5 自定義重載 10.3 對更改的響應(yīng) 10.3.1 屬性值變化處理“On Value Changed/Changing” 10.3.2 計算域?qū)傩? 10.3.3 自定義存儲域?qū)傩? 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 更改傳遞技術(shù)和約束技術(shù)的小結(jié) 10.4 DSL外殼程序體系架構(gòu) 10.5 如何增加菜單命令 10.5.1 為每個命令增加一個命令標(biāo)識 10.5.2 增量菜單資源索引 10.5.3 添加命令到命令集 10.5.4 定義命令處理程序 10.5.5 命令處理程序的較好實(shí)現(xiàn) 10.5.6 編譯運(yùn)行 10.5.7 為標(biāo)準(zhǔn)的命令提供處理器 10.6 在另一個界面中構(gòu)建DSL圖 10.7 實(shí)現(xiàn)復(fù)制粘貼 10.7.1 復(fù)制方法 10.7.2 粘貼方法 10.7.3 注冊菜單處理程序 10.8 形狀容器 10.8.1 子形狀 10.8.2 使用內(nèi)嵌子形狀的DSL 10.8.3 使用規(guī)則實(shí)現(xiàn)形狀包含 10.9 小結(jié)第11章 設(shè)計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ā)標(biāo)記法 11.4.1 項(xiàng)目定義標(biāo)記法 11.4.2 問題狀態(tài)標(biāo)記法 11.4.3 常見的標(biāo)記法 11.5 定義驗(yàn)證約束 11.5.1 內(nèi)部一致性 11.5.2 外部數(shù)據(jù)及模型的一致性 11.6 開發(fā)和演化框架 11.6.1 比較生成型和解釋型 11.6.2 演化一個通用框架 11.6.3 從DSL驅(qū)動生成框架 11.7 測試 11.7.1 驗(yàn)證約束 11.7.2 生成器模板 11.7.3 生成的代碼 11.7.4 規(guī)則 11.7.5 語言定義 11.8 改進(jìn)DSL 11.9 什么是一個好的DSL 11.9.1 適當(dāng)?shù)臉?biāo)記法:正則表達(dá)式的一個例子 11.9.2 候選的標(biāo)記法 11.9.3 圖不是語法樹 11.10 小結(jié) 11.11 總結(jié)
章節(jié)摘錄
第3章 域模型定義3.1 簡介第2章介紹了開發(fā)一個DSL需要創(chuàng)建的不同組成部分:域模型,圖形符號和工具箱,資源管理器和屬性窗口,驗(yàn)證,序列化和部署。同時第2章還介紹了DSL設(shè)計器,DSL設(shè)計者可以運(yùn)用這一工具來定義新語言的不同組件。本章將描述怎樣定義域模型,并從域模型生成的DSL工具的角度來解釋域模型的含義。每一個DSL的核心都是一個域模型。它定義了這一語言所代表的各種概念,這些概念的屬性,以及它們之間的關(guān)系。所有的DSL用戶都必須對這些有一定程度的了解,因?yàn)橛脩粼谑褂肈SL時創(chuàng)建和操作的每一個元素都是用域模型來描述的。域模型就像DSL的語法;它定義了組成模型的要素并給出了將這些要素互相聯(lián)系在一起的規(guī)則。域模型還為語言的其他方面的建立提供了基礎(chǔ)。圖形符號、工具箱、資源管理器、屬性窗口、驗(yàn)證、序列化和部署的定義都建立在域模型上。域模型還用來生成可用于編程的API,用戶可以用這些API來定制和擴(kuò)展語言,或在模板中用這些API來生成代碼或其他文本工件。如果你熟悉面向?qū)ο笤O(shè)計或者面向?qū)ο缶幊痰脑?,那么域建模(Domain Modeling)的基本概念對你來說就顯得非常簡單了。本章將用第2章中介紹的Issue State示例來介紹域建模中所有的基本思想。同時,為了更加細(xì)致地探討域建模中的部分細(xì)節(jié),通過對Issue State示例進(jìn)行改進(jìn)來介紹域建模中的一些關(guān)鍵問題。
編輯推薦
《Visual Studio DSL工具特定領(lǐng)域開發(fā)指南》深入地探討了以下內(nèi)容: 判斷DSL是否適合您。對DSL和其他模型驅(qū)動的開發(fā)方法進(jìn)行對比。DSL的定義、調(diào)優(yōu)和演化:模型、界面表示、創(chuàng)建、更新、序列化、限制條件、驗(yàn)證以及其他內(nèi)容。在編寫很少代碼、甚至不編寫代碼的情況下,為新定義的DSL生成可視化設(shè)計器。利用簡單的文本模板,為您的模型生成應(yīng)用程序代碼,極大地提高生產(chǎn)效率。自動生成配置文件、資源和其他工件??焖俸唵蔚卦诓煌M織中部署可視化設(shè)計器。為特定的過程需求定制可視化設(shè)計器。作為一種為某些特定(橫向或縱向)領(lǐng)域而定制的語言,特定領(lǐng)域語言(DSL)正在軟件工程師和架構(gòu)師之間孕育一個不斷增長的興奮因子。DSL給軟件的創(chuàng)建和演化帶來了新的敏捷性。與標(biāo)準(zhǔn)的程序代碼相比,DSL使得設(shè)計考慮的不同方面都能夠以更加貼近系統(tǒng)需求的形式表示出來,從而極大地減少大規(guī)模項(xiàng)目和生產(chǎn)線的開發(fā)成本。在這本具有突破性的著作中,4名杰出的專家向讀者介紹了DSL的使用方式,以及在您的環(huán)境中怎樣最好地利用它們。通過閱讀《Visual Studio DSL工具特定領(lǐng)域開發(fā)指南》,首先您可以掌握可應(yīng)用于所有平臺的DSL概念和技術(shù)。然后,您將學(xué)會怎樣通過微軟公司新推出的功能強(qiáng)大的DSL工具(這個工具集正是由《Visual Studio DSL工具特定領(lǐng)域開發(fā)指南》作者所設(shè)計的)來創(chuàng)建和使用DSL,以及怎樣定義DSL并用Visual Studio內(nèi)建的建模技術(shù)來生成可視化設(shè)計器。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Visual Studio DSL工具特定領(lǐng)域開發(fā)指南 PDF格式下載