葛昆
摘要:計(jì)算機(jī)軟件在不同行業(yè)的設(shè)計(jì)過(guò)程中需要選取不同的編程架構(gòu),而軟件測(cè)試過(guò)程中直接關(guān)系到計(jì)算機(jī)軟件的各類問(wèn)題。對(duì)國(guó)內(nèi)外相關(guān)的軟件測(cè)試的文獻(xiàn)進(jìn)行分析,對(duì)多項(xiàng)研究成果進(jìn)行研究得出軟件測(cè)試相關(guān)的兩類問(wèn)題:1)由于軟件(編程語(yǔ)言的選?。┒a(chǎn)生的差異性問(wèn)題與后期測(cè)試方法有直接關(guān)系;2)由于行業(yè)及文化差異造成的編程規(guī)范等問(wèn)題關(guān)系后期代碼規(guī)范化;并且證明在計(jì)算機(jī)軟件設(shè)計(jì)過(guò)程中,代碼的實(shí)現(xiàn)與實(shí)際算法模型的選取有直接關(guān)系。
關(guān)鍵詞:計(jì)算機(jī)軟件;編程語(yǔ)言;測(cè)試;算法模型;編程規(guī)范
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)17-0092-03
1 概述
計(jì)算機(jī)軟件已廣泛應(yīng)用于科學(xué)與工程的各個(gè)行業(yè),如在核工業(yè)、醫(yī)藥及軍事等領(lǐng)域的關(guān)鍵決策中起著重要的作用。例如,在核武器模擬中,由于其不能進(jìn)行現(xiàn)場(chǎng)試驗(yàn)?zāi)M,因此使用代碼來(lái)確定各關(guān)鍵參數(shù)更改對(duì)爆炸結(jié)果的影響;氣候模型的制定對(duì)氣候進(jìn)行預(yù)測(cè)并評(píng)估氣候變化等有著直接的影響。此外,計(jì)算機(jī)在科學(xué)研究中作為研究結(jié)果的論證工具之一,直接關(guān)系著科研結(jié)果是否準(zhǔn)確。在科學(xué)研究中所涉及的各類科研軟件,由于其復(fù)雜性以及需要各類專業(yè)領(lǐng)域知識(shí),科學(xué)家們通常自己開(kāi)發(fā)這些程序或者與開(kāi)發(fā)密切相關(guān),但非專業(yè)化的開(kāi)發(fā)人員在實(shí)際軟件工程的設(shè)計(jì)中,由于缺乏專業(yè)的編程知識(shí),往往會(huì)對(duì)科研軟件最終質(zhì)量產(chǎn)生影響。
軟件測(cè)試作為軟件開(kāi)發(fā)質(zhì)量的有效控制手段,直接關(guān)系著科研成果是否準(zhǔn)確。軟件測(cè)試是一個(gè)受到影響的活動(dòng),由于缺乏對(duì)軟件的系統(tǒng)測(cè)試,微妙的故障仍然未被發(fā)現(xiàn),這些微妙的故障可能導(dǎo)致程序輸出更改,而不會(huì)導(dǎo)致程序崩潰。諸如一次性錯(cuò)誤的軟件故障導(dǎo)致了地震數(shù)據(jù)處理程序的精度損失,軟件故障影響了坐標(biāo)測(cè)量機(jī)(CMM)的性能;此外,由于軟件故障,科學(xué)家們已經(jīng)被迫收回已發(fā)表的科研成果。往往是由于在代碼實(shí)現(xiàn)過(guò)程中產(chǎn)生的微笑的故障往往會(huì)直接造成研究人員對(duì)自己的研究成果產(chǎn)生懷疑。
本文以科學(xué)軟件開(kāi)發(fā)過(guò)程中所涉及的編程語(yǔ)言以及體系架構(gòu)的選取進(jìn)行分析研究。這是由于科學(xué)軟件往往均是專業(yè)性較強(qiáng)、業(yè)務(wù)范圍專一的計(jì)算機(jī)軟件實(shí)現(xiàn);為了開(kāi)發(fā)科學(xué)軟件,科學(xué)家首先開(kāi)發(fā)離散模型,然后將這些離散化的模型轉(zhuǎn)換為使用編程語(yǔ)言進(jìn)行編碼的算法。在所有這些階段都可以引入故障??茖W(xué)軟件的開(kāi)發(fā)者通常進(jìn)行驗(yàn)證,以確保正確建模感興趣的物理現(xiàn)象進(jìn)行科學(xué)模型[1]。他們使用數(shù)學(xué)分析進(jìn)行驗(yàn)證,以確保計(jì)算模型是否能正確運(yùn)行;但科學(xué)軟件開(kāi)發(fā)人員很少進(jìn)行系統(tǒng)測(cè)試來(lái)識(shí)別代碼中的故障。Farrell等[2]人顯示執(zhí)行代碼驗(yàn)證以識(shí)別代碼與離散模型之間的差異的重要性。有時(shí)這種缺乏系統(tǒng)的測(cè)試是由這個(gè)軟件提出的特殊測(cè)試挑戰(zhàn)引起的[3]。
系統(tǒng)文獻(xiàn)綜述(SLR,Systematic Literature Review)是“評(píng)估和解釋與特定研究問(wèn)題或主題領(lǐng)域或感興趣現(xiàn)象相關(guān)的所有可用研究的手段”,執(zhí)行SLR的目標(biāo)是有條不紊地審查和收集特定研究問(wèn)題的研究結(jié)果,并幫助從業(yè)者制定循證指南。軟件工程研究人員在各種軟件工程領(lǐng)域采用SLR。Walia等人[4]采用SLR來(lái)識(shí)別和分類軟件需求錯(cuò)誤。 Engston等人[5]針對(duì)回歸測(cè)試選擇技術(shù)的實(shí)證評(píng)估進(jìn)行了SLR評(píng)估,目的是“在聯(lián)合行業(yè)—學(xué)術(shù)研究項(xiàng)目中尋求進(jìn)一步研究的依據(jù)”。本文采用SLR的目的是確定科學(xué)軟件測(cè)試過(guò)程中存在的問(wèn)題,主要存在兩類挑戰(zhàn):第一類是由于軟件本身的特征造成的挑戰(zhàn),例如缺少oracle工程師為系統(tǒng)提供服務(wù);第二類與軟件工程師發(fā)揮主導(dǎo)作用的應(yīng)用軟件開(kāi)發(fā)不同,是由科學(xué)家和/或科學(xué)家開(kāi)發(fā)的科學(xué)軟件在科學(xué)軟件開(kāi)發(fā)項(xiàng)目中發(fā)揮主導(dǎo)作用而發(fā)生的挑戰(zhàn)。
2 SLR過(guò)程介紹
本章節(jié)按照文獻(xiàn)[6]中所提的SLR過(guò)程指導(dǎo)為依據(jù),根據(jù)實(shí)際軟件工程經(jīng)驗(yàn),SLR相關(guān)流程主要包含三個(gè)階段:1)用戶規(guī)劃SLR;2)SLR評(píng)審;3)形成評(píng)審報(bào)告。以下描述每個(gè)階段所執(zhí)行的任務(wù)。
2.1 用戶規(guī)劃SLR
1)問(wèn)題
SLR主要目標(biāo)是確定測(cè)試科學(xué)軟件時(shí)面臨的具體挑戰(zhàn),應(yīng)對(duì)挑戰(zhàn)以及未解決的挑戰(zhàn),本文通過(guò)以下研究問(wèn)題,以達(dá)到最終研究目標(biāo):
RQ1:文獻(xiàn)中如何定義的科學(xué)軟件?
RQ2:科學(xué)軟件或其開(kāi)發(fā)中是否存在特殊的困難或缺陷測(cè)試?
RQ3:可以使用現(xiàn)有的測(cè)試方法來(lái)有效地測(cè)試科學(xué)軟件嗎?
RQ4:現(xiàn)有技術(shù)無(wú)法滿足目標(biāo)測(cè)試?
2)方案制定
審查協(xié)議規(guī)定了用于執(zhí)行SLR的方法,在進(jìn)行SLR之前定義評(píng)估協(xié)議可以降低研發(fā)人員的主觀性。此外,審查協(xié)議規(guī)定了源程序選擇、搜索過(guò)程、質(zhì)量評(píng)估標(biāo)準(zhǔn)和數(shù)據(jù)提取策略等。
2.2 SLR評(píng)審
1)確定相關(guān)研究
軟件質(zhì)量評(píng)估問(wèn)題包括如下內(nèi)容:
A:該學(xué)習(xí)目標(biāo)是否清楚地表達(dá)出來(lái)?
B:評(píng)估是否符合其既定目標(biāo)和目的?
C:樣本設(shè)計(jì)/案例/文件的目標(biāo)選擇是否已定義?
D:提供足夠的證據(jù)來(lái)支持約束?
E:學(xué)習(xí)可以復(fù)制嗎?
定性研究的相關(guān)質(zhì)量評(píng)估如表1中所示:
2)數(shù)據(jù)提取與質(zhì)量評(píng)估
我們使用從各類研究中提取數(shù)據(jù),許多初級(jí)研究沒(méi)有回答數(shù)據(jù)提取形式中的所有問(wèn)題。我們提取了使用數(shù)據(jù)提取形式的初級(jí)研究提供的重要信息。
2.3 形成評(píng)審報(bào)告
通過(guò)對(duì)國(guó)內(nèi)外相關(guān)的研究報(bào)告進(jìn)行選取、分類,分別對(duì)2.1中所提的四個(gè)問(wèn)題進(jìn)行回答、統(tǒng)計(jì),按照文獻(xiàn)[6]中形成最終審查報(bào)告。
3 實(shí)驗(yàn)過(guò)程
3.1 問(wèn)題提出
在實(shí)際的科學(xué)軟件研發(fā)過(guò)程中,需要前期對(duì)軟件需求分析進(jìn)行多層次分析,首先需要明確所研發(fā)軟件對(duì)象的具體含義,如科學(xué)軟件的定義為:科學(xué)軟件是具有大計(jì)算組件的軟件,并為決策支持提供數(shù)據(jù),通常包含如下兩類解釋:
1)為實(shí)現(xiàn)科學(xué)目標(biāo)而編寫的最終用戶應(yīng)用軟件(如氣候模型);
2)支持編寫表達(dá)科學(xué)模型的代碼和執(zhí)行科學(xué)代碼的工具(例如,MATLAB [7])。
而在實(shí)際科研過(guò)程中,科學(xué)軟件定義根據(jù)不同的研究對(duì)象又賦予了不同的含義,Carver等人給出了基于正交分類[8]的科學(xué)軟件定義,即以科研過(guò)程為目標(biāo)撰寫的研究軟件或者為真實(shí)用戶編寫的業(yè)務(wù)軟件(例如氣候軟件等)。
本文根據(jù)科學(xué)軟件的實(shí)際研制過(guò)程中存在的問(wèn)題進(jìn)行歸納驗(yàn)證,主要驗(yàn)證以下兩個(gè)問(wèn)題:1)由于測(cè)試科學(xué)軟件的特點(diǎn)而產(chǎn)生的軟件問(wèn)題;2)由于業(yè)務(wù)決策人員和軟件工程師之間的文化差異而產(chǎn)生的挑戰(zhàn),具體描述如下:
1)測(cè)試由于科學(xué)軟件的特點(diǎn)而產(chǎn)生的挑戰(zhàn):在科學(xué)軟件測(cè)試過(guò)程中所產(chǎn)生的問(wèn)題,問(wèn)題具體可按照實(shí)際業(yè)務(wù)流程進(jìn)行進(jìn)一步的分類歸納;
2)測(cè)試由于科學(xué)家業(yè)務(wù)決策者和軟件工程人員之間的文化差異而產(chǎn)生的挑戰(zhàn):在業(yè)務(wù)化較強(qiáng)的科學(xué)軟件研發(fā)過(guò)程中,軟件工程人員要以業(yè)務(wù)決策人員作為主導(dǎo),各個(gè)階段均需要業(yè)務(wù)決策人員進(jìn)行確認(rèn),避免后期在功能上出現(xiàn)較大的偏差。
3.2 測(cè)試過(guò)程
本文通過(guò)對(duì)以上所提問(wèn)題進(jìn)行測(cè)試,通過(guò)單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試對(duì)科學(xué)軟件研制“編程語(yǔ)言”選擇進(jìn)行測(cè)試方法選擇分析。如圖1所示為根據(jù)本文所提的應(yīng)用中所采用的測(cè)試方法的占用率統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果分析可見(jiàn)單元測(cè)試是業(yè)界使用最多的測(cè)試方法。
如圖2所示為各個(gè)應(yīng)用所采用的測(cè)試方法的數(shù)量的統(tǒng)計(jì)比率,結(jié)果顯示在多項(xiàng)實(shí)際研究中所使用的測(cè)試方法(測(cè)試手段)均小于4種,其中統(tǒng)計(jì)結(jié)果有67%的應(yīng)用僅僅使用一種測(cè)試方法:
3.3 結(jié)果分析
文獻(xiàn)[9]給出了表1中RQ4的答案,分析了oracle問(wèn)題作為解決的關(guān)鍵問(wèn)題和需要進(jìn)行有效的測(cè)試研究。
根據(jù)對(duì)現(xiàn)有國(guó)內(nèi)外中各類軟件所需開(kāi)發(fā)語(yǔ)言的研究分析,總結(jié)得出如表2所示的各類應(yīng)用軟件的編程語(yǔ)言統(tǒng)計(jì)分析[10-17]。
4 結(jié)論
本文對(duì)國(guó)內(nèi)外相關(guān)的軟件編程語(yǔ)言選取的文獻(xiàn)進(jìn)行了分析研究,確定了測(cè)試科學(xué)軟件時(shí)面臨的具體挑戰(zhàn),如何應(yīng)對(duì)挑戰(zhàn)以及未解決的挑戰(zhàn),并通過(guò)以下四方面進(jìn)行了總結(jié)。
1)如何在計(jì)算機(jī)科學(xué)中界定科學(xué)軟件?所謂科學(xué)軟件被定義為具有大計(jì)算組件的軟件,此外,科學(xué)軟件通常由科學(xué)家和軟件開(kāi)發(fā)人員組成的多學(xué)科小組進(jìn)行開(kāi)發(fā);
2)科學(xué)軟件或其開(kāi)發(fā)難題有哪些特殊或缺陷?在科學(xué)軟件測(cè)試中確定了兩大類挑戰(zhàn):①測(cè)試由于科學(xué)軟件特征而產(chǎn)生的挑戰(zhàn);②科學(xué)家與軟件工程界之間文化差異所產(chǎn)生的挑戰(zhàn);
3)使用現(xiàn)有的測(cè)試方法來(lái)有效測(cè)試科學(xué)軟件嗎?研究報(bào)告描述了科學(xué)軟件開(kāi)發(fā)中不同層次的抽象測(cè)試,如單元測(cè)試,系統(tǒng)測(cè)試和集成測(cè)試。很少有研究報(bào)告使用單元測(cè)試框架,許多研究報(bào)告說(shuō)使用偽oracle或?qū)嶒?yàn)結(jié)果來(lái)減輕缺乏一個(gè)oracle的問(wèn)題;
4)是否存在現(xiàn)有技術(shù)無(wú)法滿足的挑戰(zhàn)?科學(xué)軟件對(duì)測(cè)試構(gòu)成特殊挑戰(zhàn),通過(guò)應(yīng)用軟件工程師通常使用的測(cè)試技術(shù)可以克服這些挑戰(zhàn)中的一些挑戰(zhàn),而科學(xué)家&開(kāi)發(fā)人員需要將這些測(cè)試技術(shù)納入其軟件開(kāi)發(fā)過(guò)程,由于科學(xué)軟件的特點(diǎn)。有些挑戰(zhàn)是獨(dú)一無(wú)二的,軟件工程師在開(kāi)發(fā)科學(xué)軟件的測(cè)試技術(shù)時(shí),需要考慮這些特殊挑戰(zhàn)。
參考文獻(xiàn):
[1]Murphy C, Raunak M S, King A, et al.Kaiser, G, Lee I, Sokolsky O, Clarke L., Osterweil, L., On effective testing of health care simulation software. In: Proceedings of the 3rd Workshop on Software Chen S, Imbriano C, Engineering in Health Care. SEHC 11. ACM, New York, NY, USA, 2011:40–47.
[2]Farrell P E, Piggott M D, Gorman G J, et al.C. R., Bond, T. M., Automated continuous verification for numerical simulation[C]. Geoscientific Model Development,2011, 4(2): 435–449.
[3]Easterbrook S M. Climate change: a grand software challenge. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research[C]. FoSER 10. ACM, New York, NY, USA,2010:99–104.
[4]Walia G S, Carver J C.A systematic literature review to identify and classify software requirement errors[J]. Information and Software Technology ,2009,51 (7): 1087-1109.
[5]Engstr¨om E, Runeson P, Skoglund M, A systematic review on regression test selection techniques[J]. Information and Software Technology,2010, 52 (1): 14 – 30.
[6]Kitchenham, B., Procedures for performing systematic reviews. Technical report, Keele University and NICTA,2004.
[7]Eddins S L, Automated software testing for matlab. Computing in Science & Engineering,2009, 11 (6): 48–55.
[8]Carver, Jeffrey R B D H, Hochstein L What scientists and engineers think they know about software engineering: A survey[C]. Tech. Rep. SAND2011-2196, Sandia National Laboratories,2011.
[9]Kelly D, Smith S, Meng N. Sept.-Oct. 2011. Software engineering for scientists[J]. Computing in Science & Engineering,2011, 13 (5): 7 –11.
[10]惲健. 基于計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)的Java編程語(yǔ)言探究[J]. 電腦編程技巧與維護(hù),2016(16):26-27.
[11]宋秀琴,侯殿坤. JAVA編程語(yǔ)言在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用[J]. 數(shù)字技術(shù)與應(yīng)用,2016(6):80.
[12] 田萍,竇國(guó)強(qiáng). 計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中編程語(yǔ)言的合理選擇[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2014(23):60-61.
[13]張彤. 計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)中編程語(yǔ)言的選擇研究[J]. 電子技術(shù)與軟件工程,2015(21):57.
[14]孫天斌. 計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)中編程語(yǔ)言的選擇[J]. 電子技術(shù)與軟件工程,2017(3):60-61.
[15]王茂源. 煤巷錨桿支護(hù)設(shè)計(jì)混合智能系統(tǒng)研究[D].北京:中國(guó)礦業(yè)大學(xué)(北京),2016.
[16]李開(kāi)元. 探究計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)過(guò)程中不同編程語(yǔ)言的影響[J]. 信息化建設(shè),2015(6):48.