双向工程

✍ dations ◷ 2025-05-19 08:01:23 #双向工程

双向工程(Round-trip engineering)简称RTE,是同步二个或多个相关软件工件(例如程式码、模型、组态档案及文件)的软件开发工具机能。要进行双向工程的原因是因为相同的资料会出现在多份工件上,若只更新了其中一份工件的资料,另外工件中的对应资料没有更新,就会有各工件不一致的问题。

双向工程和传统的软件工程作法有紧密的关系,例如顺向工程(从已有的规格产生程式码及软件)、逆向工程(从已有的软件产生程式码及规格)及代码重构(了解程式码并且修改)。常有人将双向工程错误的定义为同时支援顺向工程及逆向工程而已。双向工程的主要特点可以是在一个已有软件工件有变更时,同时的同步其他对应的工件,其作法是逐步的在其他工件中加入对应原工作修改的内容。顺向工程可以视为是一种已有规格的特殊双向工程,逆向工程则是可以视为是已有软件的特殊双向工程。许多reengineering的工作也可以视为是双向工程,用之前逆向工程得到的规格,其中进行修改,再修改软件,和规格同步。

双向工程的另一个特点是自动侦测工件中的不一致,自动更新工件。若以这个定义来看,双向工程就和顺向工程及逆向工程不同了,顺向工程及逆向工程可能是人工进行的,也可能是自动的(例如分析规格,自动产生程式码)。自动更新的过程可以是即时的,也可以是在有需求时更新。若是即时的双向工程,在工件变更之后其他工作的对应部分也都会自动更新。若是在有需求时更新的双向工程,工件的作者们可能是同时变更这些工件,其中某个时间比较工件,识别不一致之处,选择要保留的内容,并且避免可能出现的冲突。

双向工程支援迭代式的开发流程。在模型和工件同步后,可以选择继续修改程式,或是修改模型。可以进行任意次数、任意方向的同步。

最常见的双向工程例子可能是在UML(统一建模语言)模型以及其对应程式码之间的同步。许多商用软件以及研究用的原型工具支援这类的双向工程,例如Rational Rose(英语:Rational Rose)、Micro Focus Together(英语:Micro Focus Together)、ESS-Model、BlueJ(英语:BlueJ)及Fujaba等,Fujaba软件的文件中有提到软件可以识别设计模式。一般而言,针对UML的类别图,可以支援一定程度的双向工程,不过像是关联(association)及组合(containment)等UML概念,在许多编程语言中没有直接对应的表示方式,因此限制了直接建立对应程式码的能力,也影响程式码分析的准确度(例如,不容易识别出程式中的组合概念)。2005年在Microsoft Visual Studio上的一本书中,有指出RTE工具的常见问题,其中一个是所留下的模型会和原有的模型不同,只有透过在工具中的许多标示后,才能让两者同步。UML有关行为的部分对双向工程的挑战更大。

另一种比较可以追踪的双向工程是在框架应用程序接口(API)下的双向工程,有模型描述应用程序应用API的方式,会和应用程序的程式码同步。此应用下,API规定了所有应用程序应用此框架的方式,可以准确及完整的侦测API的使用情式,并且合成实现此用法的程式。此领域的双向工程软件中,有二个主要的软件,是框架定义建模语言(英语:framework-specific modeling language)及Spring Roo(英语:Spring Roo)。

在对象管理组织(OMG)的模型驱动架构(MDA)中,要在不同模型之间维持一致,并且在模型和程式码中维持一致,双向工程是其中的关键。对象管理组织提出了QVT(英语:QVT)(查询/浏览/转换)标准来处理MDA中要求的模型转换。到目前为止,只实现了标准中的部分内容。

以统一建模语言(UML)为基础的双向工程需要三个基本的软件开发元素

以下是一个以网站为基础的开源简易双向工程工具:

相关

  • 高安市高安市是中国江西省宜春市下辖的一个县级市。地处江西省中部偏西北,毗邻南昌市。汉高祖六年(公元前201年)置建成县,为高安建县之始。西汉元始四年(公元4年)改称多聚县。东汉建武元
  • 圣奥斯定堂 (巴黎)坐标:48°52′34″N 2°19′8″E / 48.87611°N 2.31889°E / 48.87611; 2.31889圣奥斯定堂(Église Saint-Augustin de Paris)是法国巴黎第八区的一座天主教堂,长100米,高60米,是
  • 格雷戈里·普雷奥蒂亚萨格雷戈里·普雷奥蒂亚萨(罗马尼亚语:Grigore Preoteasa;1915年8月25日-1957年11月4日),曾化名萨乌(Sau)、索勒尔(Sorel),罗马尼亚共产党中央政治执行委员会候补委员、中央书记处书记,罗
  • 伊沙克·贝尔福迪 伊沙克·贝尔福迪(إسحاق بلفوضيل‎,Ishak Belfodil,1992年1月12日-),是一名阿尔及利亚足球运动员,现在效力于德甲球队贺芬咸。贝尔福迪出生于阿尔及利亚穆斯塔加
  • 欧迪办公欧迪办公(英语:Office Depot, Inc.)是一家美国办公用品公司。1986年创建于佛罗里达州博卡拉顿。1988年在纳斯达克交易所上市。2015年2月4日,其竞争对手史泰博以股票加现金共计
  • 国际团体围棋比赛优胜国列表国际团体围棋比赛优胜国列表。
  • 明希豪森三难困境明希豪森三难困境(英语:Münchhausen trilemma)是知识论中的一个思想实验,用以表明包含逻辑学和数学在内任何对真理的论证都是不可能的。当论证某一陈述时,这一论证的前提亦需要
  • 班洪事件1933年英属缅甸的缅甸公司(英语:Burma Corporation Limited)为了开发炉房银矿(炉房是一个银矿地名,面积约15平方公里,地处班老、永邦部落的交界处。
  • 谁在一垒?《谁在一垒?》(Who's on First?)是一个由美国喜剧拍档亚伯特与卡斯提洛(英语:Abbott and Costello)演出的喜剧段子。喜剧的内容是两人在谈论一支棒球队的成员,由于棒球队成员的名字很特别,两人的对话可以同时被解释为问句和答句,使得谈话的双方发生诸多误会。例如棒球队一垒手的名字是“谁”,因此问题和回答同样是“谁在一垒”。《时代》杂志在1999年将这个桥段评选为20世纪最佳喜剧桥段。这支棒球队名单如下:这个喜剧桥段里并没有右外野手的名字,而在同名棋盘游戏中,他的名字被设定为“没有人
  • 李楷固李楷固(?-?),又称武楷固,武周时代的契丹族将领,被武则天封为燕国公。696年,契丹松漠都督李尽忠和他的内兄孙万荣杀营州都督赵文翙反周,李楷固当时是李尽忠的部下。697年,李尽忠病死、孙万荣兵败被杀,李楷固和副将骆务整一起投降了武周。朝廷大臣因为李楷固、骆务整二人曾经屡胜周军,想把他们处死。宰相狄仁杰介入,说服了武则天宽恕并重用了李楷固、骆务整。李楷固平定了继续反抗武周的契丹人,不过,在天门岭之战中,败于粟末靺鞨的大祚荣。700年,武则天封李楷固为燕国公,赐姓武。据推测在705年,唐中宗发动神龙之变复辟