我們團隊 (HSDc.) 從今年 (2009) 初就定下了策略目標,其中一項主軸就是內部要開發出小而巧又實用的軟體相關產品。 農曆年後,經過一個下午的 Meeting,腦力激盪得到的共識就是開發一個可以協助 程式 Coding 人員,利用視覺化的 UML 循序圖 (sequence diagram),來呈現出程式碼在某一個情境下,物件相互之間動態連結關係的工具。 嗯,就暫且命名為 "Sequence Generator" 好了。

主要功能就是兩個: 一為從程式碼的某一個類別 (Class)的 method 開始 (進入起點, entry point),然後可以定義呼叫物件遞迴 (recursive)的深度層次(例如深至 5 層),按下按鍵,即可產出物件合作的循序圖; 另一個功能就是從循序圖轉出到程式碼 (當然,要先規範好類別圖)。 如此可以輔助類別圖的轉換,將如 a.method1() 呼叫 b.method2() 的關係,給呈現在程式碼的結構內。
HSDc Seq. generator - Use Case 圖

目前同類型的 UML 工具中,EA (Enterprise Architect) 是提供 "Run-time" 的環境,可以從程式碼產出到循序圖,但反之不行。 而且主要的問題是,要將 EA 設定成可以執行 .NET or J2EE 的環境,相當麻煩,要對 command-line 的指令執行模式相當熟悉才行。

另一個功能最強大,截至目前為止我認為最好用的是 Borland Together。 它是以靜態處理的方式 (這也是目前我們產品的作法,不需要建立動態的環境),而得以實現上述兩種功能。 只是,1. 它可不便宜,一套開發工具可要 10餘萬以上;2. 從循序圖產出的程式碼無法成功經過編譯 (compile),而這也是我們現在要努力的目標 ─ 可以達成部份實作且成功經過編譯。

目前我們預定是先開發出 Plugn 在 EA (Enterprise Architect) 的環境,所以會以 Addon 的形式包裝在 EA。 價格絕對是相當低價,連 EA 的一半價格 (絕對不到 NT$5000) 都還不到。 支援的程式碼最少是 C#, VB.NET 與 Java。 未來也不排除支援 C++ 甚至 PHP 等。

整個開發的框架大致已建立起來,也已經完成了一個小小的雛型 (可以從 C# 程式碼轉循序圖)。 而且,我們也針對該工具產品 (它也是一個問題領域, problem domain) 建構了物件模型,並且使之與 EA Plugin 的 APIs 隔離,所以相對來說,要移轉 (migrate) 到如 RSA or Free UML 工具 (前提要有提供可擴充的 API 介面),所花的 Effort 就不會太重了。
HSDc Seq. generator - 開發Class 圖

預計再過兩個月,應該會提供出 beta 版本,供有興趣的程式人員下載測試,並可請提供諸多寶貴的意見。

底下是目前開發中的幾個畫面 (screenshot)...


EA 的 Plugin 畫面:
HSDc Seq. generator - Plugin in EA.

產出循序圖的操作選項:
HSDc Seq. generator - 操作畫面

依據程式碼所產出的循序圖:
HSDc Seq. generator - 程式碼轉出的 Seq. 圖

內部開發 (Seq. Generator)的循序圖:
HSDc Seq. generator - 開發 Seq. 圖