一種基于模型化工具Simulink的軟件重構(gòu)方法
【專利摘要】本發(fā)明公開了一種基于模型化工具Simulink的軟件重構(gòu)方法,包含以下步驟:步驟1、定義一個抽象模板,用于定義整個框架;步驟2、定義子結(jié)構(gòu),繼承抽象模板,來完成操作的具體實現(xiàn);步驟3、根據(jù)操作的邏輯結(jié)構(gòu)在Simulink中建立模型,并利用RTW組件將模型轉(zhuǎn)換為嵌入式的C代碼。使用模型作為軟件重構(gòu)過程中的一個可執(zhí)行規(guī)范,比傳統(tǒng)重構(gòu)方法可讀性和可重用性大大增強。自動生成的C代碼可以匹配特定的硬件平臺,代碼可靠性不再受開發(fā)人員能力限制,比傳統(tǒng)代手工編碼更可靠,因而可以在嵌入式領(lǐng)域推廣應(yīng)用。
【專利說明】—種基于模型化工具Simul ink的軟件重構(gòu)方法
【背景技術(shù)】
[0001]本發(fā)明涉及一種軟件開發(fā)方法,特別涉及通過采用Simlink模型化工具對軟件進行重構(gòu)的方法。
[0002]【背景技術(shù)】
[0003]現(xiàn)代計算機軟件越來越復(fù)雜,對開發(fā)軟件所使用的技術(shù)要求也越來越高。開發(fā)人員往往通過對系統(tǒng)原型進行擴展,增加功能來適應(yīng)軟件需求的變化,在這一過程中就需要采用軟件重構(gòu)技術(shù)。傳統(tǒng)的重構(gòu)方法一般是修改數(shù)據(jù)類型,提取接口,直接對代碼結(jié)構(gòu)進行改造,且需要手工編碼,受開發(fā)人員能力的限制。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)的不足,本發(fā)明的發(fā)明目的在于提供一種基于模型化工具Simulink的軟件重構(gòu)方法,通過利用Simulink工具建立模型,并對模型進行操作,同時生成C語言代碼,完成軟件的重構(gòu)。
[0005]本發(fā)明的發(fā)明目的通過以下技術(shù)方案實現(xiàn):
[0006]—種基于模型化工具Simulink的軟件重構(gòu)方法,包含以下步驟:
[0007]步驟1、定義一個抽象模板,用于定義整個框架;
[0008]步驟2、定義子結(jié)構(gòu),繼承抽象模板,來完成操作的具體實現(xiàn);
[0009]步驟3、根據(jù)操作的邏輯結(jié)構(gòu)在Simulink中建立模型,利用Simulink的RTW組件將模型轉(zhuǎn)換為嵌入式的C代碼;
[0010]其中抽象模板及子結(jié)構(gòu)中均設(shè)有指針指向基本方法和模板方法,基本方法由子類去實現(xiàn),模板方法實現(xiàn)基本方法的調(diào)度。
[0011 ] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于利用Simulink工具建立模型,可以精確地描述用戶需求,創(chuàng)建一個可執(zhí)行、可跟蹤的技術(shù)規(guī)范。在對軟件的重構(gòu)過程中,可以對模型進行需求的追蹤和測試,能夠及時發(fā)現(xiàn)問題和缺點,并根據(jù)具體實現(xiàn)條件對模型進行細化或重新劃分,生成滿足需求的模型,最后利用Simulink的RTW組件將模型轉(zhuǎn)換為嵌入式的C代碼。
[0012]使用模型作為軟件重構(gòu)過程中的一個可執(zhí)行規(guī)范,比傳統(tǒng)重構(gòu)方法可讀性和可重用性大大增強。自動生成的C代碼可以匹配特定的硬件平臺,代碼可靠性不再受開發(fā)人員能力限制,比傳統(tǒng)代手工編碼更可靠,因而可以在嵌入式領(lǐng)域推廣應(yīng)用。
【專利附圖】
【附圖說明】
[0013]圖1為本發(fā)明的系統(tǒng)結(jié)構(gòu)圖;
[0014]圖2為抽象模塊的結(jié)構(gòu)體模型;
[0015]圖3為子結(jié)構(gòu)的結(jié)構(gòu)體模型。
[0016]具體實施方法
[0017]下面結(jié)合附圖對本發(fā)明作進一步的詳細描述。[0018]Simulink是一種模型驅(qū)動的圖形化建模、控制和仿真工具,可以利用直觀的模型圖對設(shè)計進行可視化操作。此外,利用其RTW組件可以直接從圖形化模型中產(chǎn)生優(yōu)化的,可移植的標準C語言代碼。本發(fā)明是利用Simulink建立模型自動生成代碼實現(xiàn)軟件重構(gòu)的新方法。
[0019]本發(fā)明中采用了模板方法模式來設(shè)計軟件結(jié)構(gòu)。模板方法模式定義了 一個算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法結(jié)構(gòu)即可重定義該算法的某些特定步驟。模板方法模式的方法分為兩類:一種是基本方法,是由子類去實現(xiàn)的方法,并且在模板方法中被調(diào)用;另一種方法是模板方法,如TemplateMethodO,可以有一個或幾個,一般是一個具體方法,也就是一個框架,實現(xiàn)對基本方法的調(diào)度,完成固定的邏輯。在實際應(yīng)用中,通常一個設(shè)計師給出算法的輪廓和骨架,另一個給出這個算法的各個邏輯步驟?;痉椒ň褪菍崿F(xiàn)這些具體邏輯步驟的方法,基本方法又可以分為抽象方法,具體方法和鉤子方法;而模板方法則是將這些基本方法匯總起來,并按照一定的規(guī)則和順序進行調(diào)用的方法。模板方法把認為不變部分的算法封裝到父類實現(xiàn),而可變得部分則通過增加一個子類,實現(xiàn)父類的基本方法來實現(xiàn),因而子類可以通過擴展的方式增加相應(yīng)的功能,符合開閉原則。
[0020]C語言是一個面向過程的語言,本身并沒有提供面向?qū)ο蟮臋C制,但是通過合理的利用C語言的一些機制,可以簡單的模擬出面向?qū)ο蟮幕咎匦浴1景l(fā)明利用C語言中的結(jié)構(gòu)體對事物屬性進行數(shù)據(jù)抽象,并且在結(jié)構(gòu)體中加入函數(shù)指針,在使用前賦予具體的函數(shù),實現(xiàn)對行為操作的封裝;C語言的結(jié)構(gòu)體是可以嵌套的,嵌套了其他結(jié)構(gòu)體的結(jié)構(gòu)體就擁有了被嵌套的結(jié)構(gòu)體的屬性和方法,從而使得C程序中的結(jié)構(gòu)體有了簡單的基礎(chǔ)能力。因而可以將被嵌套的結(jié)構(gòu)體看作一個父類,將嵌套的結(jié)構(gòu)體看作一個子類。
[0021]本發(fā)明中定義了一個AbstractStruct來作為父類,定義整個框架;并且定義了兩個子類SubStrcutOne, SubStructTwo,分別繼承AbstractStruct,來完成操作的具體實現(xiàn)。結(jié)構(gòu)如圖1所示。
[0022]其中,p_0peration0ne和 p_0perationTwo 分別指向一個基本方法,p_Template 指向一個模板方法。
[0023]在Simulink 中建立一個 AbstructStruct 結(jié)構(gòu)體模型,生成一個 AbstructStruct類型數(shù)據(jù)AbstructStructData,如圖2所不:
[0024]使用AbstructStructData建立一個子結(jié)構(gòu)SubStructOne模型,如圖3所不:
[0025]通過RTW自動生成的代碼為:
[0026]
【權(quán)利要求】
1.一種基于模型化工具Simulink的軟件重構(gòu)方法,包含以下步驟: 步驟1、定義一個抽象模板,用于定義整個框架; 步驟2、定義子結(jié)構(gòu),繼承抽象模板,來完成操作的具體實現(xiàn); 步驟3、根據(jù)操作的邏輯結(jié)構(gòu)在Simulink中建立模型,利用Simulink的RTW組件將模型轉(zhuǎn)換為嵌入式的C代碼; 其中抽象模板及子結(jié)構(gòu)中均設(shè)有指針指向基本方法和模板方法,基本方法由子類去實現(xiàn),模板方法實現(xiàn)基本方法的調(diào)度。
【文檔編號】G06F9/44GK103995703SQ201410231815
【公開日】2014年8月20日 申請日期:2014年5月29日 優(yōu)先權(quán)日:2014年5月29日
【發(fā)明者】郭寧 申請人:中國航空無線電電子研究所