5 系統實作與呈現
5.5 XTM檔案匯出
由於程式原始碼剖析引擎擷取出的資訊是存入資料庫,為了呈現視覺化的主 題地圖,需將相關的資訊轉換為 XTM 的格式,以利資料交換的便利性,所以加 入了 XTM 檔案匯出的功能。
5.5.1 使用者介面
XTM 檔案匯出的使用者介面如下圖 5.4,使用者依輸入的系統(或模組)名 稱,匯出相關的主題(Topic)、關聯(Association)及資源(Occurrence)等資訊,匯出 的 XTM 格式,可參考附錄 C:XTM 檔案範例。
圖 5.4 XTM 匯出之使用者介面
5.5.2 XTM 檔案格式
本系統主要為探討資料庫應用程式之程式碼與資料表之間,依據 XTM 的語 法,定義了兩個主題類別程式碼及資料表,對應到每個實體的程式碼及資料表主 題,定義新增(INSERT)、修改(UPDATE)及刪除(DELETE)等三個關聯類別,分別 代表實體的程式碼與資料表之間的關係為新增、修改及刪除,另定義了欄位關聯 類別,表示實體資料表與其欄位之間的關係。若程式原始碼第一行有定義相關的 參考資源,例如 RefData~表示有程式碼的說明文字,RefURL~則表示參考到一個 程式碼說明的連結網頁。以下摘錄部份的 XTM 檔案說明,詳細的 XTM 範例如 附錄 C 所示。
5.5.2.1 定義主題類別(Topic Type)
<topic id="Source">
<baseName>
<baseNameString>程式碼</baseNameString>
</baseName>
</topic>
<topic id="Table">
<baseName>
<baseNameString>資料表</baseNameString>
</baseName>
</topic>
上例中定義兩個主題類別,分別為「程式碼」及「資料表」,分別表示主題
「原始碼」及主題「資料表」的類別。
5.5.2.2 定義主題(Topic)
<topic id="calendar_new.aspx.vb">
<instanceOf>
<topicRef xlink:href="#Source"/>
</instanceOf>
<baseName>
<baseNameString>calendar_new.aspx.vb</baseNameString>
</baseName>
</topic>
上例中表示主題「原始碼(calendar_new.aspx.vb)」的主題類別為「程式碼 (Source)」。
5.5.2.3 定義關聯類別(Association Type)
<topic id="INSERT">
<baseName>
<baseNameString>新增</baseNameString>
</baseName>
</topic>
<topic id="UPDATE">
<baseName>
<baseNameString>修改</baseNameString>
</baseName>
</topic>
<topic id="DELETE">
<baseName>
<baseNameString>刪除</baseNameString>
</baseName>
</topic>
<topic id="Field">
<baseName>
<baseNameString>欄位</baseNameString>
</baseName>
</topic>
上例中定義三個關聯類別,分別為「新增」、「修改」及「刪除」。分別表示 主題「程式碼」與主題「資料表」之間的關聯。另一個關聯類別-欄位,表示主 題「資料表」與主題「欄位」之間的關聯。
5.5.2.4 定義關聯角色類別(Association Role Type)
<topic id="locate">
<baseName>
<baseNameString>位於</baseNameString>
</baseName>
</topic>
<topic id="exist">
<baseName>
<baseNameString>存在</baseNameString>
</baseName>
</topic>
上例中定義了兩個關聯角色類別,分別為「位於」與「存在」。分別表示欄
位「位於(locate)」程式碼及「存在(exist)」於資料表。
5.5.2.5 定義關聯 (Association)
<association>
<instanceOf>
<topicRef xlink:href="#DELETE"/>
</instanceOf>
<member>
<roleSpec>
<topicRef xlink:href="#locate"/>
</roleSpec>
<topicRef xlink:href="#calendar_search_list.aspx.vb"/>
</member>
<member>
<roleSpec>
<topicRef xlink:href="#exist"/>
</roleSpec>
<topicRef xlink:href="#CALENDAR_NEW"/>
</member>
</association>
上例中表示關聯類別為「新增」(INSERT),其有兩個成員,第一個成員的 角色為「位於」(locate),參考到的主題是「原始碼(calendar_search_list.aspx.vb)」
一;第二個成員的角色為「存在」(exist),參考到的主題是「資料表 (CALENDAR_NEW)」。
5.5.2.6 定義資源類別(Occurrence Type)
<topic id="Note">
<baseName>
<baseNameString>程式碼說明</baseNameString>
</baseName>
</topic>
<topic id="NoteURL">
<baseName>
<baseNameString>程式碼說明連結</baseNameString>
</baseName>
</topic>
上例中定義了兩個資源類別,為「程式碼說明」及「程式碼說明連結」。分
別表示「程式碼說明」及「程式碼說明連結」的類別。
5.5.2.7 定義資源 (Occurrence)
<topic id="NT_mssql_modify.aspx">
<instanceOf>
<topicRef xlink:href="#mssql_modify.aspx"/>
</instanceOf>
<baseName>
<baseNameString>mssql_modify.aspx(程式碼說明)</baseNameString>
</baseName>
<occurrence>
<instanceOf>
<topicRef xlink:href="#NoteURL"/>
</instanceOf>
<resourceRef xlink:href="http://localost/SourceCodeDescription.aspx"/>
</occurrence>
</topic>
若程式碼中有定義程式碼說明標籤(RefData~)及程式碼說明連結標籤 (RefURL~),則會產生如上例中資源的相關標籤,上例中表示「資源
(NT_mssql_modify.aspx)」參考到主題「原始碼(mssql_modify.aspx)」,有一個
「mssql_modify.aspx(程式碼說明)」參考到「外部參考資源(NoteURL)」,即一個 外部的連結(http://localost/SourceCodeDescription.aspx)。