程式碼與循序圖的正反向工程
先瞭解一個重點:靜態程式碼結構並無法直接對應循序圖 (對應的是類別圖)。
兩種方法可以產出循序圖:
- 動態產出:設定 run-time 環境,實際執行應用程式,再由 UML 工具至系統內追蹤解析。
- 靜態產出:直接掃瞄程式碼,解析物件之間的參考 (reference)。
動態產出循序圖的優缺點:
- 優點:
- 不需要程式原始碼,只要具有能直接執行的應用程式 (如 .NET DLL 執行檔)即可。
- 可以確實捕捉單一程序內,物件之間的呼叫情形。
- 缺點:
- 需要事先設定好可以執行該應用程式的 run-time 環境。設定相當複雜繁瑣 (一般需為命令列模式),且不同的程式語言 (如 C#NET, Java, PHP …等)均須各自設定不同的 run-time 執行環境。
- 只能呈現單一執行路徑內的物件互動。意即,無法呈現如 If…Then…Else 或 Exception 等多種條件或替代路徑。
靜態產出循序圖的優缺點:
- 優點:
- 不需要設定繁瑣的 run-time 執行環境,操作相當簡潔。
- 可以指定所掃瞄的程式碼深度 (層次)。
- 可以同時呈現多重的條件或替代路徑的物件呼叫互動情形。
- 缺點:
- 需要有原始程式碼,以提供靜態掃瞄的來源依據。
- 轉換工具的實作邏輯並無明確的轉換 (transform)規則;相對來說,需要考量到程式語言個別的機制與語法,故轉換工具的實作難度相對提高。
※ 延伸參考
o 程式碼與 UML 類別_循序圖 的關係探討 (1)。
o 程式碼與 UML 類別_循序圖 的關係探討 (2)。