一種基于模型的系統(tǒng)設(shè)計及信息流可視化仿真系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于軟件開發(fā)及仿真領(lǐng)域,具體涉及一種基于模型的系統(tǒng)設(shè)計及信息流可視化仿真系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的飛速發(fā)展和人類需求的不斷提高,軟件的功能越來越復(fù)雜,對軟件的安全性和穩(wěn)定性要求也日益嚴格。而市場的競爭和不同客戶的個性化需求又使軟件的開發(fā)周期不斷縮短,這給軟件的開發(fā)和測試工作提出了嚴格要求。目前軟件研制主要包括需求分析、軟件開發(fā)和軟件測試三個階段。在軟件開發(fā)階段需要編寫大量的源代碼,但是,傳統(tǒng)的手工編碼方式不僅費時費力,而且代碼的可靠性不能保證,開發(fā)人員需要將大量的精力投入到枯燥的代碼編寫中而不是軟件的構(gòu)架設(shè)計和邏輯設(shè)計上,這大大降低了軟件的開發(fā)效率。
[0003]目前,提高開發(fā)階段效率的途徑是使用代碼重復(fù)利用技術(shù)和代碼自動生成技術(shù),現(xiàn)有的代碼重用和自動生成技術(shù)的使用門檻較高,非專業(yè)人士難以操作而且在使用時需要大量的人工配置和干預(yù)。在系統(tǒng)測試階段,目前的情況是幾乎所有的系統(tǒng)集成測試都是黑盒測試(即只知道輸出結(jié)果是否正確,對代碼的運行路卻徑一無所知),在測試過程中無法直接獲取程序的運行路徑,也無法直接獲得程序運行過程中的一些信息。所以,一旦出現(xiàn)測試結(jié)果跟期望值不符合情況,就要花費大量的時間來確定錯誤的位置,這大大增加了修復(fù)軟件缺陷所需的時間。同時,由于傳統(tǒng)測試只能測出結(jié)果是否正確,對于運行路徑錯誤而結(jié)果卻碰巧正確的情況無法辨別,會給軟件的正確性埋下隱患。此外,軟件開發(fā)環(huán)境和測試環(huán)境的分離也增加了軟件研制的時間成本。
[0004]然而,結(jié)合軟件工程的設(shè)計思想,從模型的角度考慮,模型具有直觀、可重用等優(yōu)點。在軟件開發(fā)領(lǐng)域,系統(tǒng)模型是由不同的構(gòu)件模型件組成,構(gòu)件模型是指一些能完成某一單元功能的代碼的集合,通過將不同的構(gòu)件模型拼接、組合、設(shè)置相關(guān)參數(shù),就可以像搭積木一樣搭建出一個系統(tǒng)模型。之后,在有序的規(guī)范操作下,系統(tǒng)模型可以被翻譯為可運行的仿真代碼。
[0005]—個系統(tǒng)模型需要包含不同的構(gòu)件模型,同時一個構(gòu)件模型也可以被包含在不同的系統(tǒng)模型中,這為構(gòu)件的復(fù)用(即代碼的重復(fù)利用)提供了條件。以模型作為系統(tǒng)的表現(xiàn)方式,不僅直觀,而且還可以作為系統(tǒng)運行時顯示信息的載體,這有利于在系統(tǒng)集成測試中定位錯誤,此外,基于模型的系統(tǒng)設(shè)計可以使開發(fā)人員把主要盡力投入在系統(tǒng)的設(shè)計上而不是枯燥的代碼編寫中,提高了設(shè)計出的軟件的質(zhì)量。
【發(fā)明內(nèi)容】
[0006]針對現(xiàn)有軟件研制過程中存在的不足以及模型表達方法的優(yōu)勢,本發(fā)明旨在提供一種基于模型的系統(tǒng)設(shè)計及信息流可視化仿真系統(tǒng)及方法,將有利于提高軟件開發(fā)和軟件測試工作的效率及質(zhì)量。
[0007]為實現(xiàn)上述技術(shù)目的,達到上述技術(shù)效果,本發(fā)明通過以下技術(shù)方案實現(xiàn):
一種基于模型的系統(tǒng)設(shè)計及信息流可視化仿真系統(tǒng),包括構(gòu)件模型庫模塊、系統(tǒng)模型搭建模塊、信息顯示模塊、仿真代碼生成模塊、代碼編譯模塊和運行控制模塊。
[0008]所述構(gòu)件模型庫模塊與所述系統(tǒng)模型搭建模塊連接,所述系統(tǒng)模型搭建模塊連接分別與所述信息顯示模塊和所述仿真代碼生成模塊連接,所述仿真代碼生成模塊與所述代碼編譯模塊連接,所述代碼編譯模塊與所述信息顯示模塊連接,所述運行控制模塊分別與所述系統(tǒng)模型搭建模塊、所述信息顯示模塊、所述仿真代碼生成模塊和所述代碼編譯模塊連接。
[0009]所述構(gòu)件模型庫模塊,其作用為:
1)管理構(gòu)件模型庫中所有的構(gòu)件模型及各個構(gòu)件模型的信息;
2)管理構(gòu)件模型的添加、修改和刪除;
3)保證所有構(gòu)件模型的正確性和安全性,為所述系統(tǒng)模型搭建模塊和所述仿真代碼生成模塊的工作提供支持。
[0010]所述系統(tǒng)模型搭建模塊,其作用為:
1)將所述構(gòu)件模型庫中的構(gòu)件模型搭建成系統(tǒng)模型,在此過程中,所述系統(tǒng)模型搭建模塊將記錄所有與搭建系統(tǒng)模型操作相關(guān)的信息,為所述仿真代碼生成模塊的工作提供支持;
2)根據(jù)所記錄的信息,對系統(tǒng)模型的正確性進行檢查,保證代碼生成工作的順利進行;
3)所述系統(tǒng)模型搭建模塊生成的系統(tǒng)模型是仿真信息顯示的載體。
[0011]所述信息顯示模塊,其作用為:
與所述系統(tǒng)模型搭建模塊一起為用戶提供一個可視化的建模界面,所述信息顯示模塊將建模和仿真過程中的所有信息按一定的規(guī)則顯示在這個建模界面上,供用戶觀看以及進行相應(yīng)的操作。
[0012]所述建模界面具備以下三個功能:
1)顯示建模的動態(tài)過程和系統(tǒng)模型的結(jié)構(gòu),其具體表現(xiàn)形式為:
所述構(gòu)件模型庫中的所有的構(gòu)件模型將以樹型的形式顯示在所述建模界面中供用戶選擇;在用戶利用所述系統(tǒng)模型搭建模塊搭建系統(tǒng)模型時,所述建模界面上可以顯示被拖移的構(gòu)件模型、組裝后的系統(tǒng)模型、構(gòu)件模型和系統(tǒng)模型相關(guān)的設(shè)置參數(shù);
2)顯示仿真信息在系統(tǒng)模型上的流動過程,其具體表現(xiàn)形式為:
所述建模界面上會顯示出已經(jīng)搭建好的系統(tǒng)模型,根據(jù)所述信息顯示模塊所讀取的仿真數(shù)據(jù),所搭建的系統(tǒng)模型上會進行實時的顯示,達到讓仿真代碼的運行路徑實時的顯示在系統(tǒng)模型上的效果;
3)幫助所述系統(tǒng)模型搭建模塊檢查系統(tǒng)模型的正確性,其具體表現(xiàn)形式為:用戶可以直觀的從所述建模界面上觀察系統(tǒng)模型的結(jié)構(gòu)是否正確,是否存在孤立的構(gòu)件模型,參數(shù)配置是否正確。
[0013]所述仿真代碼生成模塊,其作用為:
I)利用構(gòu)件模型的實現(xiàn)代碼,在所述系統(tǒng)模型搭建模塊所記錄的與搭建系統(tǒng)模型操作相關(guān)的信息的指引下,將該系統(tǒng)模型翻譯為可運行的系統(tǒng)代碼(即用構(gòu)件模型的實際C代碼代替系統(tǒng)模型中對應(yīng)構(gòu)件模型的位置,形成互不相關(guān)的代碼片,然后將構(gòu)件模型之間的拓撲結(jié)構(gòu)信息、構(gòu)件模型和系統(tǒng)模型的參數(shù)配置信息反映到所生成的代碼片中,將這些互不相關(guān)的代碼片連接成一個整體,即可運行的系統(tǒng)代碼);
2)通過掃描剛剛生成的系統(tǒng)代碼,獲取系統(tǒng)代碼中相連的構(gòu)件模型之間(即代碼片之間)函數(shù)調(diào)用的位置和相關(guān)的變量信息,并在這些位置插入探針(一些有特殊用途的輔助性代碼)來生成仿真代碼;
3)將用戶輸入的測試用例插入到所生成的仿真代碼中,生成最終的仿真代碼。
[0014]所述代碼編譯模塊,其作用為:將所述仿真代碼生成模塊生成的仿真代碼編譯、鏈接成可運行仿真程序。
[0015]所述運行控制模塊,其作用為:
1)調(diào)度其他各個模塊,協(xié)調(diào)各個模塊之間的工作;
2)控制仿真程序的運行和停止;
3)獲取并存儲仿真程序中探針拋出的信息和控制仿真信息;
4)通過建模界面與用戶進行交互,接收用戶的指令。
[0016]進一步的,所述系統(tǒng)模型搭建模塊所記錄的與系搭建統(tǒng)模型操作相關(guān)的信息包括系統(tǒng)模型中所包含的構(gòu)件模型的類型、構(gòu)件模型之間的拓撲結(jié)構(gòu)關(guān)系、構(gòu)件模型和系統(tǒng)模型的參數(shù)配置信息。
[0017]進一步的,所述探針的作用是獲取仿真程序運行至此處時有關(guān)變量的信息以及控制程序在此處的運行狀態(tài),但不會對原代碼的運行邏輯和結(jié)果產(chǎn)生影響。
[0018]進一步的,所述運行控制模塊調(diào)度其他各個模塊的具體內(nèi)容包括控制所述仿真代碼生成模塊生成仿真代碼,控制所述代碼編譯模塊生成仿真程序,將探針拋出的信息和控制仿真信息傳遞給所述信息顯示模塊,并在建模界面的系統(tǒng)模型上予以顯示。
[0019]—種基于模型的系統(tǒng)設(shè)計及信息流可視化仿真方法,包括以下步驟:
步驟O)根據(jù)用戶