fbpx
维基百科

雙向工程

雙向工程(Round-trip engineering)簡稱RTE,是同步二個或多個相關軟體工件(例如程式碼、模型、組態檔案及文件)的软件开发工具機能[1]。要進行雙向工程的原因是因為相同的資料會出現在多份工件上,若只更新了其中一份工件的資料,另外工件中的對應資料沒有更新,就會有各工件不一致的問題。

雙向工程和傳統的软件工程作法有緊密的關係,例如順向工程(從已有的規格產生程式碼及軟體)、逆向工程(從已有的軟體產生程式碼及規格)及代码重构(瞭解程式碼並且修改)。常有人將雙向工程錯誤的定義為同時支援順向工程及逆向工程而已。雙向工程的主要特點可以是在一個已有軟體工件有變更時,同時的同步其他對應的工件,其作法是逐步的在其他工件中加入對應原工作修改的內容。順向工程可以視為是一種已有規格的特殊雙向工程,逆向工程則是可以視為是已有軟體的特殊雙向工程。許多reengineering的工作也可以視為是雙向工程,用之前逆向工程得到的規格,其中進行修改,再修改軟體,和規格同步。

雙向工程的另一個特點是自動偵測工件中的不一致,自動更新工件。若以這個定義來看,雙向工程就和順向工程及逆向工程不同了,順向工程及逆向工程可能是人工進行的,也可能是自動的(例如分析規格,自動產生程式碼)。自動更新的過程可以是即時的,也可以是在有需求時更新。若是即時的雙向工程,在工件變更之後其他工作的對應部份也都會自動更新。若是在有需求時更新的雙向工程,工件的作者們可能是同時變更這些工件,其中某個時間比較工件,識別不一致之處,選擇要保留的內容,並且避免可能出現的衝突。

雙向工程支援迭代式的開發流程。在模型和工件同步後,可以選擇繼續修改程式,或是修改模型。可以進行任意次數、任意方向的同步。

雙向工程的例子 编辑

最常見的雙向工程例子可能是在UML(统一建模语言)模型以及其對應程式碼之間的同步。許多商用軟體以及研究用的原型工具支援這類的雙向工程,例如Rational Rose英语Rational RoseMicro Focus Together英语Micro Focus Together、ESS-Model、BlueJ英语BlueJ及Fujaba等,Fujaba軟體的文件中有提到軟體可以識別设计模式[2]。一般而言,針對UML的類別圖,可以支援一定程度的雙向工程,不過像是關聯(association)及組合(containment)等UML概念,在許多程式語言中沒有直接對應的表示方式,因此限制了直接建立對應程式碼的能力,也影響程式碼分析的準確度(例如,不容易識別出程式中的組合概念)。2005年在Microsoft Visual Studio上的一本書中,有指出RTE工具的常見問題,其中一個是所留下的模型會和原有的模型不同,只有透過在工具中的許多標示後,才能讓兩者同步[3]。UML有關行為的部份對雙向工程的挑戰更大。

另一種比較可以追蹤的雙向工程是在框架应用程序接口(API)下的雙向工程,有模型描述應用程式應用API的方式,會和應用程式的程式碼同步。此應用下,API規定了所有應用程式應用此框架的方式,可以準確及完整的偵測API的使用情式,並且合成實現此用法的程式。此領域的雙向工程軟體中,有二個主要的軟體,是框架定義建模語言英语framework-specific modeling languageSpring Roo英语Spring Roo

对象管理组织(OMG)的模型驱动架构(MDA)中,要在不同模型之間維持一致,並且在模型和程式碼中維持一致,雙向工程是其中的關鍵。对象管理组织提出了QVT英语QVT(查詢/瀏覽/轉換)標準來處理MDA中要求的模型轉換。到目前為止,只實現了標準中的部份內容。

軟體工程中的例子 编辑

统一建模语言(UML)為基礎的雙向工程需要三個基本的軟體開發元素[來源請求]

  • 程式碼編輯器
  • 針對屬性及方法的UML編輯器
  • UML結構的視覺化表示

以下是一個以網站為基礎的開源簡易雙向工程工具[來源請求]

  • JavaScript Class Creator[4]:可以整合JavaScript物件的雙向工程。可以用圖形函式庫JointJS產生统一建模语言的圖[5]。而Javascript原始碼的編輯可以用ACE編輯器達成[6]

參考資料 编辑

  1. ^ Gentle, Anne. Conversation and Community: The Social Web for Documentation 2nd. XML Press. 2012. ISBN 978-1937434106. 
  2. ^ Stephan Diehl. Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer Science & Business Media. 2007: 63. ISBN 978-3-540-46505-8. 
  3. ^ Andrew Filev; Tony Loton; Kevin McNeish; Ben Schoellmann; John Slater; Chaur G. Wu. Professional UML Using Visual Studio .Net. John Wiley & Sons. 2005: 181. ISBN 978-0-7645-5875-7. 
  4. ^ JavaScript Class Creator (页面存档备份,存于互联网档案馆), GitHub.
  5. ^ JointJS (页面存档备份,存于互联网档案馆), GitHub.
  6. ^ ACE (页面存档备份,存于互联网档案馆).

雙向工程, round, trip, engineering, 簡稱rte, 是同步二個或多個相關軟體工件, 例如程式碼, 模型, 組態檔案及文件, 的软件开发工具機能, 要進行的原因是因為相同的資料會出現在多份工件上, 若只更新了其中一份工件的資料, 另外工件中的對應資料沒有更新, 就會有各工件不一致的問題, 和傳統的软件工程作法有緊密的關係, 例如順向工程, 從已有的規格產生程式碼及軟體, 逆向工程, 從已有的軟體產生程式碼及規格, 及代码重构, 瞭解程式碼並且修改, 常有人將錯誤的定義為同時支援順向工程及逆向. 雙向工程 Round trip engineering 簡稱RTE 是同步二個或多個相關軟體工件 例如程式碼 模型 組態檔案及文件 的软件开发工具機能 1 要進行雙向工程的原因是因為相同的資料會出現在多份工件上 若只更新了其中一份工件的資料 另外工件中的對應資料沒有更新 就會有各工件不一致的問題 雙向工程和傳統的软件工程作法有緊密的關係 例如順向工程 從已有的規格產生程式碼及軟體 逆向工程 從已有的軟體產生程式碼及規格 及代码重构 瞭解程式碼並且修改 常有人將雙向工程錯誤的定義為同時支援順向工程及逆向工程而已 雙向工程的主要特點可以是在一個已有軟體工件有變更時 同時的同步其他對應的工件 其作法是逐步的在其他工件中加入對應原工作修改的內容 順向工程可以視為是一種已有規格的特殊雙向工程 逆向工程則是可以視為是已有軟體的特殊雙向工程 許多reengineering的工作也可以視為是雙向工程 用之前逆向工程得到的規格 其中進行修改 再修改軟體 和規格同步 雙向工程的另一個特點是自動偵測工件中的不一致 自動更新工件 若以這個定義來看 雙向工程就和順向工程及逆向工程不同了 順向工程及逆向工程可能是人工進行的 也可能是自動的 例如分析規格 自動產生程式碼 自動更新的過程可以是即時的 也可以是在有需求時更新 若是即時的雙向工程 在工件變更之後其他工作的對應部份也都會自動更新 若是在有需求時更新的雙向工程 工件的作者們可能是同時變更這些工件 其中某個時間比較工件 識別不一致之處 選擇要保留的內容 並且避免可能出現的衝突 雙向工程支援迭代式的開發流程 在模型和工件同步後 可以選擇繼續修改程式 或是修改模型 可以進行任意次數 任意方向的同步 雙向工程的例子 编辑最常見的雙向工程例子可能是在UML 统一建模语言 模型以及其對應程式碼之間的同步 許多商用軟體以及研究用的原型工具支援這類的雙向工程 例如Rational Rose 英语 Rational Rose Micro Focus Together 英语 Micro Focus Together ESS Model BlueJ 英语 BlueJ 及Fujaba等 Fujaba軟體的文件中有提到軟體可以識別设计模式 2 一般而言 針對UML的類別圖 可以支援一定程度的雙向工程 不過像是關聯 association 及組合 containment 等UML概念 在許多程式語言中沒有直接對應的表示方式 因此限制了直接建立對應程式碼的能力 也影響程式碼分析的準確度 例如 不容易識別出程式中的組合概念 2005年在Microsoft Visual Studio上的一本書中 有指出RTE工具的常見問題 其中一個是所留下的模型會和原有的模型不同 只有透過在工具中的許多標示後 才能讓兩者同步 3 UML有關行為的部份對雙向工程的挑戰更大 另一種比較可以追蹤的雙向工程是在框架应用程序接口 API 下的雙向工程 有模型描述應用程式應用API的方式 會和應用程式的程式碼同步 此應用下 API規定了所有應用程式應用此框架的方式 可以準確及完整的偵測API的使用情式 並且合成實現此用法的程式 此領域的雙向工程軟體中 有二個主要的軟體 是框架定義建模語言 英语 framework specific modeling language 及Spring Roo 英语 Spring Roo 在对象管理组织 OMG 的模型驱动架构 MDA 中 要在不同模型之間維持一致 並且在模型和程式碼中維持一致 雙向工程是其中的關鍵 对象管理组织提出了QVT 英语 QVT 查詢 瀏覽 轉換 標準來處理MDA中要求的模型轉換 到目前為止 只實現了標準中的部份內容 軟體工程中的例子 编辑以统一建模语言 UML 為基礎的雙向工程需要三個基本的軟體開發元素 來源請求 程式碼編輯器 針對屬性及方法的UML編輯器 UML結構的視覺化表示以下是一個以網站為基礎的開源簡易雙向工程工具 來源請求 JavaScript Class Creator 4 可以整合JavaScript物件的雙向工程 可以用圖形函式庫JointJS產生统一建模语言的圖 5 而Javascript原始碼的編輯可以用ACE編輯器達成 6 參考資料 编辑 Gentle Anne Conversation and Community The Social Web for Documentation 2nd XML Press 2012 ISBN 978 1937434106 Stephan Diehl Software Visualization Visualizing the Structure Behaviour and Evolution of Software Springer Science amp Business Media 2007 63 ISBN 978 3 540 46505 8 Andrew Filev Tony Loton Kevin McNeish Ben Schoellmann John Slater Chaur G Wu Professional UML Using Visual Studio Net John Wiley amp Sons 2005 181 ISBN 978 0 7645 5875 7 JavaScript Class Creator 页面存档备份 存于互联网档案馆 GitHub JointJS 页面存档备份 存于互联网档案馆 GitHub ACE 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 雙向工程 amp oldid 70903753, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。