《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種文件轉(zhuǎn)換器的設計與實現(xiàn)
一種文件轉(zhuǎn)換器的設計與實現(xiàn)
2015年微型機與應用第7期
秦奕青
(北京信息科技大學,,北京 100101)
摘要: 隨著計算機技術的飛速發(fā)展,,數(shù)據(jù)和信息以各種文件格式被組織并存儲在計算機系統(tǒng)中,。為了提高對數(shù)據(jù)和信息的共享效率,需要進行文件格式轉(zhuǎn)換,,支持不同軟件的處理和應用需要。采用經(jīng)典的軟件開發(fā)方法和技術,,設計和實現(xiàn)一種文件格式轉(zhuǎn)換器,,支持將一種專用的文本格式文件轉(zhuǎn)換到關系數(shù)據(jù)庫文件。
Abstract:
Key words :

  摘  要: 隨著計算機技術的飛速發(fā)展,,數(shù)據(jù)和信息以各種文件格式被組織并存儲在計算機系統(tǒng)中,。為了提高對數(shù)據(jù)和信息的共享效率,需要進行文件格式轉(zhuǎn)換,支持不同軟件的處理和應用需要,。采用經(jīng)典的軟件開發(fā)方法和技術,,設計和實現(xiàn)一種文件格式轉(zhuǎn)換器,支持將一種專用的文本格式文件轉(zhuǎn)換到關系數(shù)據(jù)庫文件,。

  關鍵詞: 軟件開發(fā),;文件轉(zhuǎn)換器自頂向下,;自底向上

1 ARFF-DB轉(zhuǎn)換器的應用背景

  ARFF-DB轉(zhuǎn)換器的應用背景來自于機器學習領域的Weka系統(tǒng)[1],。Weka把ARFF格式的文本文件轉(zhuǎn)換為數(shù)據(jù)庫的記錄格式,形成由實例(Instance)和屬性(Attribute)組成的關系,,再通過機器學習,,發(fā)現(xiàn)規(guī)則或者概念。

  ARFF(Attribute-Relation File Format)是Weka使用的數(shù)據(jù)文件輸入格式,,其樣例如下,。

  %1.Title:Iris Plants Database

  %

  %2.Sources:

  %(a)Creator:R.A.Fisher

  %(b)Donor:Michael Marshall(MARSHALL%[email protected]

  %(c)Date:July,1988

  %

  @RELATION iris

  @ATTRIBUTE sepallength NUMERIC

  @ATTRIBUTE sepalwidth NUMERIC

  @ATTRIBUTE petallength NUMERIC

  @ATTRIBUTE petalwidth NUMERIC

  @ATTRIBUTE class{Iris-setosa,,Iris-versicolor,,Iris-virginica}

  @DATA

  5.1,3.5,,1.4,,0.2,Iris-setosa

  4.9,,3.0,,1.4,0.2,,Iris-setosa

  4.7,,3.2,1.3,,0.2,,Iris-setosa

  4.6,3.1,,1.5,,0.2,Iris-setosa

  5.0,,3.6,,1.4,0.2,,Iris-setosa

  5.4,,3.9,1.7,0.4,,Iris-setosa

  4.6,,3.4,1.4,,0.3,,Iris-setosa

  5.0,3.4,,1.5,,0.2,Iris-setosa

  4.4,,2.9,,1.4,0.2,,Iris-setosa

  4.9,,3.1,1.5,,0.1,,Iris-setosa

  文件由兩部分組成,第一部分被稱作文件頭(header),,第二部分被稱作數(shù)據(jù)(data)。Header部分是由@RELATION和@ATTRIBUTE組成,,其中,,@RELATION聲明了數(shù)據(jù)實例所在的關系名稱,例如:iris(鳶尾花),;@ATTRIBUTE聲明了數(shù)據(jù)中屬性的名稱及其類型,,例如:屬性名sepallength(花萼長度),屬性的類型是numeric(數(shù)值型),。屬性類型除了numeric,,還包括real、integer,、nominal,、string和date,其中,,real和integer均被視為numeric,;nominal型屬性值屬于離散值,可以通過枚舉方式給出所有屬性值(例如:class屬性,,其值在{}中列出,,屬于名詞型屬性,具有離散特性);date屬性值應符合ISO-8601,,格式為YYYY-MM-DD,。Data部分由@DATA導出,每個實例的相關屬性值為一行,,上例中每個實例的屬性值均與@ATTRIBUTE部分定義的屬性一一對應,,還可以由其他表示實例屬性值的方法[1]表示。本例中給出了10個實例數(shù)據(jù),,每個實例都有5個屬性值,。更多ARFF文件格式的內(nèi)容請參見參考文獻[1]。

2 軟件開發(fā)方法

  隨著軟件開發(fā)需求的增加,,各種軟件開發(fā)方法和技術層出不窮,。各類驅(qū)動式[2]、敏捷編程[3]軟件開發(fā)方法不僅被廣泛應用,,而且其變體和擴展也被深入研究[4-5],,以期提高軟件開發(fā)效率和軟件質(zhì)量。在開發(fā)文件轉(zhuǎn)換器中,,同樣使用了用例驅(qū)動開發(fā)方法實現(xiàn)主界面,、基于GUI的開發(fā)方法實現(xiàn)程序主題框架。盡管如此,,開發(fā)使用的核心和基本方法仍然是經(jīng)典的逐步求精軟件開發(fā)方法,,需求分析和設計主要采用自頂向下方法,實現(xiàn)階段則采用自底向上方法,。

  自頂向下的程序設計思想,,就是在系統(tǒng)分析與設計中,采用不斷分解的方式,,把一個大問題逐步分解為若干個小問題,,直到所有的小問題都只具有簡單的邏輯功能,可以用程序語言直接實現(xiàn),,而不需要再分解,。

  自頂向下的程序設計思想既可以采用自頂向下的實現(xiàn)方法,也可以采用自底向上的實現(xiàn)方法,。自頂向下的實現(xiàn)方法指在程序?qū)崿F(xiàn)時,,先實現(xiàn)上層功能較復雜的程序邏輯功能,其中所需要的下層功能較簡單的程序邏輯功能可以以一個空體代替(即stub),。自底向上的程序?qū)崿F(xiàn)方法指在程序?qū)崿F(xiàn)時,,按照分析的結(jié)果,先從下層代表簡單小問題的邏輯開始實現(xiàn),,逐步向上,,依次實現(xiàn)由各個小問題模塊支撐的較大問題模塊,,直至整個程序功能實現(xiàn)。

  在ARFF-DB轉(zhuǎn)換器實現(xiàn)中,,采用自頂向下的分析和設計方法,、自底向上的程序?qū)崿F(xiàn)方法,這種分析和解決問題的方式,,符合人們的思維和實踐習慣,。

3 系統(tǒng)分析與設計

  按照軟件工程的觀點,程序開發(fā)過程最基本的步驟包括:系統(tǒng)分析,、系統(tǒng)設計和系統(tǒng)實現(xiàn),。本文按照這一步驟進行ARFF-DB轉(zhuǎn)換器設計與開發(fā)。

  3.1 系統(tǒng)基本功能分析

  系統(tǒng)分析是通過分析系統(tǒng)的功能,,搞清系統(tǒng)“做什么”,。最簡單、最基本的一種分析方法就是通過說明目標系統(tǒng)的輸入I(input),、處理P(process)和輸出O(output),,反映系統(tǒng)的功能。通過分析,,ARFF-DB轉(zhuǎn)換器的IPO如圖1所示,。

001.jpg

  3.2 系統(tǒng)功能設計:自頂向下,逐步求精

  系統(tǒng)設計考慮如何實現(xiàn)系統(tǒng)分析中明確的系統(tǒng)功能,,即:系統(tǒng)“如何做”才能實現(xiàn)ARFF文件到DB文件的轉(zhuǎn)換,。要使用自頂向下的設計方法,把大問題分解為小問題,,直到每個小問題都有了明確的解決方案,,設計過程即告完成。因為自頂向下的設計過程會把大問題,、較大問題逐步分解為較小的、更接近系統(tǒng)實現(xiàn)的問題,,所以這個過程也被稱為逐步求精,。

  在系統(tǒng)分析的IPO中,要從輸入的ARFF文件處理“文件解析”模塊開始考慮,。首先,,系統(tǒng)讀入一個ARFF文件;然后對ARFF文件的內(nèi)容進行解析,,把@RELATION中的關系名字,、@ATTRIBUTE中的屬性名字和類型作為創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)的依據(jù),能夠把@DATA中的每一行實例數(shù)據(jù)作為一個記錄添加到數(shù)據(jù)庫文件中,?!拔募馕觥焙拖鄳妮敵霾糠志褪菍攲拥摹稗D(zhuǎn)換處理”向下的一步求精,。進一步向下求精出“形成文件對象”子模塊。

  “文件解析”子模塊的輸出,,將其轉(zhuǎn)換為相應的數(shù)據(jù)庫,,需要以解析的三個結(jié)果為輸入,創(chuàng)建數(shù)據(jù)庫表,,并將實例數(shù)據(jù)作為記錄寫到數(shù)據(jù)庫中,,然后得到相應的數(shù)據(jù)庫文件。這一部分可以定義為“創(chuàng)建數(shù)據(jù)庫”子模塊,。它也是對頂層的“轉(zhuǎn)換處理”向下的一步求精,。同樣地,對于“創(chuàng)建數(shù)據(jù)庫表”子模塊,,可以進一步向下求精地設計為“建立數(shù)據(jù)庫連接”和“訪問數(shù)據(jù)庫”,。

  綜上所述,通過自頂向下的逐步求精設計過程后,,得到的設計結(jié)果如圖2所示,。

002.jpg

  到此為止,自頂向下的設計基本上將“轉(zhuǎn)換處理”的問題逐步求精,、分解到可以通過程序直接處理的若干子問題,。然后將根據(jù)這個設計結(jié)果,使用具體的程序設計語言和工具來實現(xiàn)ARFF-DB轉(zhuǎn)換器,。

4 程序設計與實現(xiàn)

  根據(jù)系統(tǒng)分析和設計結(jié)果,,開始進行系統(tǒng)的程序?qū)崿F(xiàn),這時的問題就是程序設計語言和開發(fā)工具(平臺)的選擇,。因為筆者對Java語言較熟悉,,所以使用Java作為程序設計語言,選用jdk1.6.0_02,。數(shù)據(jù)庫系統(tǒng)使用MySQL[6],。另外,對于開發(fā)平臺和工具,,這里使用的是命令行,,編輯器使用textpad。

  4.1 程序組織和結(jié)構(gòu)設計

  轉(zhuǎn)換器程序使用了包的結(jié)構(gòu),。程序的結(jié)構(gòu)由包和其中的類形成,,用樹的形式表示如表1。

005.jpg

  4.2 界面的程序設計與實現(xiàn)

  ARFF-DB轉(zhuǎn)換器的主界面效果如圖3所示,。

003.jpg

  4.3 ARFF文件及其解析的設計與實現(xiàn)

  依據(jù)系統(tǒng)分析和設計的結(jié)果,,程序設計實現(xiàn)了ARFF文件的封裝和讀入。程序定義ARFFFile類,,用于封裝ARFF文件,,并支持對arff方法文件的讀入,。設計ARFFFileAnanlysis類,定義analyze方法,,用于實現(xiàn)ARFF文本的解析邏輯,。

  4.4 數(shù)據(jù)庫的創(chuàng)建與讀寫

  在“文件解析”的過程中,輸入ARFF文件,,輸出中給出數(shù)據(jù)庫的相關信息,,包括數(shù)據(jù)庫關系名稱、數(shù)據(jù)庫屬性名稱和屬性值類型,、數(shù)據(jù)庫關系中的記錄,。轉(zhuǎn)換器設計實現(xiàn)了ArffDbCreator類,把解析出的數(shù)據(jù)關系名稱和數(shù)據(jù)屬性名稱以及值類型作為輸入,,創(chuàng)建數(shù)據(jù)庫,,輸出得到一個數(shù)據(jù)庫表;然后,,將數(shù)據(jù)記錄信息讀入到該數(shù)據(jù)庫表中,,并通過讀出記錄,測試數(shù)據(jù)庫的建立和讀寫操作是否成功,。這部分功能的實現(xiàn)主要涉及到從Java通過JDBC連接,,訪問相應的數(shù)據(jù)庫。

  4.5 主邏輯設計,、實現(xiàn)以及程序的整合

  本文在實現(xiàn)階段采用自底向上的實現(xiàn)方法,,即首先實現(xiàn)下層的程序邏輯(子功能),然后再通過整合各個子功能,,實現(xiàn)較高層次的程序邏輯,,直至實現(xiàn)程序的整體邏輯功能。

  目前已經(jīng)設計實現(xiàn)了“文件解析”邏輯和“數(shù)據(jù)庫創(chuàng)建及寫入”邏輯,,現(xiàn)在要設計一個程序主邏輯,,以便將上述兩個底層邏輯整合到一起,完成轉(zhuǎn)換器程序的整體功能,,即:從ARFF文件到數(shù)據(jù)庫表的轉(zhuǎn)換,。

  主邏輯設計主要考慮的是用戶使用“轉(zhuǎn)換器”系統(tǒng)的方式以及要求的系統(tǒng)功能。這里,,用戶使用的是GUI,,通過GUI設定的菜單進行功能選擇,。這個過程可以通過用例及用例圖來描述[5],。如圖4所示。

004.jpg

5 總結(jié)

  ARFF-DB轉(zhuǎn)換器實現(xiàn)了從ARFF文件到數(shù)據(jù)庫文件的基本轉(zhuǎn)換功能,。本文采用自頂向下方法完成了ARFF-DB轉(zhuǎn)換器的系統(tǒng)分析和設計,,采用自底向上方法完成了程序?qū)崿F(xiàn),。今后要對處理arff文件中的殘缺值問題給出更好的解決方案。還要在ARFF-DB轉(zhuǎn)換器基礎上實現(xiàn)DB-ARFF轉(zhuǎn)換器,,使得轉(zhuǎn)換器功能更完善,。

參考文獻

  [1] WITTEN I H, FRANK E.數(shù)據(jù)挖掘:實用機器學習技術[M].北京:機械工業(yè)出版社,,2007.

  [2] 彭順順,,周傳生.基于數(shù)據(jù)驅(qū)動的圖形界面開發(fā)方案[J].微型機與應用,2013,,32(19):1-3.

  [3] 王剛,,程建平.面向業(yè)務的敏捷界面定制構(gòu)件的設計[J].微型機與應用,2012,,31(7):11-13.

  [4] 王飛,,郭淵博,郝耀輝,,等.面向用例安全關鍵系統(tǒng)開發(fā)方法研究[J].計算機應用與軟件,,2013,30(8):134-138.

  [5] 謝東強.敏捷軟件開發(fā)的雙迭代模型[J].計算機應用與軟件,,2012,,29(6):176-178.

  [6] LARMAN C.UML和模式應用[M].北京:北京機械工業(yè)出版社,2006.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。