雙向工程

雙向工程 （ Round - trip engineering ） 簡稱RTE ， 是同步二個或多個相關軟體工件 （ 例如程式碼 、 模型 、 組態檔案及文件 ） 的軟件開發工具機能 。 要進行雙向工程的原因是因爲相同的資料會出現在多份工件上 ， 若只更新了其中一份工件的資料 ， 另外工件中的對應資料沒有更新 ， 就會有各工件不一致的問題 。 雙向工程和傳統的軟件工程作法有緊密的關係 ， 例如順向工程 （ 從已有的規格產生程式碼及軟體 ） 、 逆向工程 （ 從已有的軟體產生程式碼及規格 ） 及代碼重構 （ 瞭解程式碼並且修改 ） 。 常有人將雙向工程錯誤的定義爲同時支援順向工程及逆向工程而已 。 雙向工程的主要特點可以是在一個已有軟體工件有變更時 ， 同時的同步其他對應的工件 ， 其作法是逐步的在其他工件中加入對應原工作修改的內容 。 順向工程可以視爲是一種已有規格的特殊雙向工程 ， 逆向工程則是可以視爲是已有軟體的特殊雙向工程 。 許多reengineering的工作也可以視爲是雙向工程 ， 用之前逆向工程得到的規格 ， 其中進行修改 ， 再修改軟體 ， 和規格同步 。 雙向工程的另一個特點是自動偵測工件中的不一致 ， 自動更新工件 。 若以這個定義來看 ， 雙向工程就和順向工程及逆向工程不同了 ， 順向工程及逆向工程可能是人工進行的 ， 也可能是自動的 （ 例如分析規格 ， 自動產生程式碼 ） 。 自動更新的過程可以是即時的 ， 也可以是在有需求時更新 。 若是即時的雙向工程 ， 在工件變更之後其他工作的對應部份也都會自動更新 。 若是在有需求時更新的雙向工程 ， 工件的作者們可能是同時變更這些工件 ， 其中某個時間比較工件 ， 識別不一致之處 ， 選擇要保留的內容 ， 並且避免可能出現的衝突 。 雙向工程支援迭代式的開發流程 。 在模型和工件同步後 ， 可以選擇繼續修改程式 ， 或是修改模型 。 可以進行任意次數 、 任意方向的同步 。