• 沒有找到結果。

第三章 系統架構概論

第二節 系統架構

本研究能夠將程式中物件導向的相關資料抽離出來,轉換成視覺化的 點、線、面,將程式中抽象的流程經由主題地圖來呈現,具體建構出一個展 示程式結構的主題地圖。因為藉由主題地圖實作呈現,可以有效組織管理大 量資訊,建立最佳知識導覽介面與機制。本研究最終呈現是建構出一標準 化、規格化之知識地圖技術架構,圖 3.2.6 為程式主題地圖示意圖。

本節說明如何建構知識管理主題地圖之系統架構,建構一個主題地圖有 三個主要流程,第一、取得建構主題地圖的資料,本研究是將每個軟體專案

些資料來建構主題地圖。

圖 3.2.1 說明本研究之系統架構。我們執行一個軟體專案的過程中,會 經過系統分析、系統設計、程式撰寫、程式除錯與測試的流程,這些流程所 產生的產物是一些文件與許多程式的原始碼。這些程式的原始碼經由一些工 具分析擷取出我們要的資訊後,我們將我們要的資訊存在資料庫中。透過資 料探勘技術找出我們感興趣的資料,將這些資料重新整理後建構成主題地圖 供使用者查詢、瀏覽。

測試 程式除錯 程式撰寫

資料庫

資料探勘 程式資訊

使用者查詢 主題地圖 知識擷取 資料擷取

資料原始碼

圖 3.2.1 系統架構圖

圖 3.2.2 是從資料流的角度來表示本研究之流程,原始資料是程式中的 原始碼,我們將原始碼簡化成特定的文字格式,一般文字格式可以方便我們 容易處理這些資料,為了未來存取方便性我們將這些資料存至資料庫中。將 這些資料存至資料庫後,利用資料探勘技術將其中的知識分析擷取出來,在 將結果再存回至資料庫中。為了將最後的結果展示成主題地圖,我們將資料 轉換成 XML 的格式,使主題地圖的工具軟體可以讀取並顯示出主題地圖。

程式原始碼 資料前處理 (簡化成一般 文字格式)

轉換 XML 格式

主題地圖呈現 資料探勘

資料存至資料庫

圖 3.2.2 系統資料流表示圖

主題地圖採用 XTM 做為實作標籤語言,所以也俱有 XML 的特性與優點,

XML 為 W3C 所制定的標準,是一種開放式標準,所以可應用於許多相關的技 術來使用之,例如 XSL、DOM、DTD…等等,未來因應不同用途需求,需要使 用不同的主題地圖工具時,使用 XML 的資料格式可以方便我們不需再修改資 料格式可再重複使用。

在 UML 九種圖形中塑造物件導向系統時,有一個很重要的圖形,那就是 類別圖,類別在物件導向程式中是一個最基本的元素,透過類別圖可以將類 別、介面、合作以及上述元素之間的關係顯示出來。物件導向中五個常用的 關係為類別繼承(class inheritance)、類別實體化(class

instantiation)、方法呼叫(function invocation)、方法重製(function overriding)、隱性呼叫(implicit invocation) 。本研究著重在方法呼叫,

透過自動化的系統來分析出物件導向程式中類別方法與其他類別方法之間 的呼叫對應關係,發覺哪些關係是較常被使用到的,而這些重用樣式正是我 們比較有興趣的。

在我們分析的程式原始碼中,有兩種資料格式:一種是定義檔,附檔名 為.H。另一種是程式邏輯檔,副檔名為.C 或是.CPP。

原始的定義檔.H 中包含有下列幾項資料:

A. 註解:使用//或是/* */ 將文字說明包含進來,這部份的文字 說明對瞭解程式結構並無太大意義,所以在資料選取過程時就 會將這部份的資料去除。

其中一個目的是方便軟體工程師在修改程式時只要修正定義

B. 定義:使用#if、#endif、#define 等,這些識別文字與.H 中 的定義意義相同,只是提供軟體工程師能夠更容易維護程式而

為方法名稱,再由兩個大括號{}包含進來類別方法的所有邏輯 程式,我們可以由類別名稱與"::"符號後面的文字得到該類 別方法的名稱,再由兩個大括號中所包含的資料可分析出該類 別方法有哪些變數與呼叫了哪些方法或是呼叫其他類別哪些 方法。本研究要分析程式中的類別方法與類別方法呼叫哪些類 別方法之間的關係,所以會將類別方法中的變數去除,只抽離 類別方法呼叫哪些類別方法,這些資料我們會先轉成一般文字 檔後,再存在資料庫中當成我們的分析資料。

我們將類別中的方法資料存成一般的文字檔,文字格式裏包含檔案名 稱、類別名稱、該類別中的所有方法。其中檔案名稱是指我們在哪一個檔案 分析出該類別資訊。一般的文字檔的文字格式如圖 3.2.3。

檔案名稱 Classes 類別名稱 Functions

類別中的所有方法,文字格式 類別::方法

圖 3.2.3 輸出程式中類別與方法資訊的文字格式

我們將類別方法呼叫哪些類別方法的資料存成一般的文字檔,文字格式 裏包含呼叫類別方法與所有被呼叫類別方法。一般的文字檔的文字格式如圖 3.2.4。

呼叫類別方法,文字格式 類別::方法

| 被呼叫類別方法一,文字格式 類別::方法

| 被呼叫類別方法二,文字格式 類別::方法

| …

圖 3.2.4 程式中類別方法呼叫類別方法的資料文字格式

我們會將解析出來的一般文字檔的資料存在資料庫,第一個資料表應該

叫的方法與被呼叫的類別,被呼叫的方法,所以此資料表應有四個欄位,呼

<?xml version="1.0" encoding="iso-8859-1" ?>

<topicmap xmlns:xlink="http://www.w3.org/1999/xlink/namespace">

<topic id="class-類別名稱">

<topic id="classmethod-類別名稱::類別方法">

<topname>

<assoc type="classmethod-類別名稱::類別方法">

<assocrl anchrole="class">

class-類別名稱

</assocrl>

<assocrl anchrole="method">

method-類別名稱::類別方法 </assocrl>

</assoc>

</topicmap>

圖 3.2.5 資料庫轉成主題地圖的 XML 格式

本研究是將物件導向程式原始碼解析出來程式的類別與程式類別的方 法,並找出其中的關係。所以我們將這些資料區分成類別層與方法層。類別 層是從所有程式碼中分析出的所有類別,每個類別在主題地圖中是一個獨立 的主題。方法層是類別中的所有方法,每個類別方法在主題地圖也是獨立的 主題。類別與方法彼此之間的相互關係我們使用相關概念來連接,圖 3.2.6 表示此程式主圖地圖的概念。

類別層

主題 相關概念

方法層

圖 3.2.6 主題地圖示意圖

本研究軟硬體環境如下:

CPU:Intel Pentium III 1066MHz RAM:384MB

HDD:20GB

開發工具:Microsoft Visual Studio .NET 2003

我們將原始碼擷取出的資料使用資料探勘技術探勘後,將探勘的結果存 在資料庫中。從資料庫中經由查詢的方式把我們所要的知識取出來,使用主 題地圖的方式展示,最後提供主題地圖給使用者查詢、使用這些知識。

圖 3.2.7 說明我們將原始資料(程式原始碼)從一個一個檔案中讀出,分 析出其中的類別與方法,這些物件導向中的類別、類別中的方法、方法與方 法的關係就是程式中的知識,再將這些知識使用主題地圖的方式展示出來。

主題地圖 程式中的知識

方法 類別

資料原始碼

圖 3.2.7 系統架構之構面圖

本研究採用多層架構來建構系統,分別敘述如下:

A. 資料庫:資料庫可為本機資料庫或是透過網路存取的資料庫,儲存 相關資訊,例如:程式類別與方法、呼叫類別方法與被呼叫類別方 法之間的關聯等。

B. 應用層:透過資料探勘與軟體工程的結合,分析每個軟體專案中的 知識與流程,未來將提供給使用者快速查詢、瀏覽這些資訊。

C. 顯示層:利用主題地圖的技術,建立使用介面供使用者操作查詢,

並使用主題地圖視覺化技術來呈現結果。

相關文件