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