蔡萬豪
摘要:隨著計算機(jī)技術(shù)的蓬勃發(fā)展,對應(yīng)的計算機(jī)軟件系統(tǒng)也變得越來越復(fù)雜,這樣也使得軟件系統(tǒng)的可靠性難以得到保證。軟件的可靠性對程序的運行起到著重要的作用,因此應(yīng)該采取一種措施來保證較高的可靠性。本文簡單地闡述了軟件開發(fā)過程中可能出現(xiàn)的可靠性問題與相應(yīng)的應(yīng)對措施,以減少系統(tǒng)運行期間產(chǎn)生不必要的損失。
關(guān)鍵詞:軟件開發(fā);程序;可靠性;技術(shù)分析
1.引言
計算機(jī)系統(tǒng)是有硬件和軟件組成,因此計算機(jī)系統(tǒng)的可靠性是由硬件可靠性和軟件可靠性綜合決定。軟件可靠性通常是指軟件在一定的條件時間完成預(yù)期功能的能力。軟件可靠性問題歸咎于在軟件開發(fā)過程中的一些人為不當(dāng)措施所導(dǎo)致。用來衡量軟件可靠性的概率度量稱為可靠度,對于人們來說,軟件的可靠度越高越好,若軟件可靠度較低,總會給用戶的使用帶來極大的影響。
軟件可靠性與硬件可靠性降低的因素有所不同。硬件可靠性降低往往是因為硬件設(shè)備由于外界的物理因素和硬件隨時間推移的耗損導(dǎo)致的。而軟件可靠性是由軟件的開發(fā)過程導(dǎo)致的。軟件可靠性降低帶來的危害比較大,往嚴(yán)重的說,可靠性降低是有可能帶來像國家機(jī)密泄露、核泄漏同等危害事件。因此應(yīng)該有一種措施來保證較高的可靠性,軟件可靠性測試是一種保證可靠性的方法之一,其中包括軟件設(shè)計可靠性目標(biāo)的確定、軟件可靠性測試的計劃與執(zhí)行和軟件可靠性測試結(jié)果的分析與反饋。通過這種嚴(yán)密的測試可以發(fā)現(xiàn)軟件產(chǎn)品存在的隱患,因此可以有效降低失效率,避免因軟件可靠性降低所導(dǎo)致的不必要的損失!
因此,從查閱的相關(guān)資料指出,計算機(jī)的可靠性與軟件開發(fā)過程具有密切關(guān)系。本文主要闡述在軟件開發(fā)的過程中如何通過一些方法使得計算機(jī)軟件及整個計算機(jī)系統(tǒng)的可靠性有所提高。
2.軟件開發(fā)過程
2.1相關(guān)定義
軟件開發(fā)定義:基于對人們的種種需求,程序員們會將這些需求盡可能的程序化,通過代碼的形式將其實現(xiàn),這個過程就是所謂的軟件開發(fā)。軟件開發(fā)一般包括以下6個基本步驟:軟件的需求分析、軟件的概要設(shè)計、軟件的詳細(xì)設(shè)計,軟件的編碼實現(xiàn)、軟件產(chǎn)品的測試和最終的交付使用。
軟件可靠性定義:軟件可靠性是軟件產(chǎn)品在規(guī)定的條件下和規(guī)定的時間區(qū)間完成規(guī)定功能的能力。規(guī)定的條件是指直接與軟件運行相關(guān)的使用該軟件的計算機(jī)系統(tǒng)的狀態(tài)和軟件的輸入條件,或統(tǒng)稱為軟件運行時的外部輸入條件;規(guī)定的時間區(qū)間是指軟件的實際運行時間區(qū)間;規(guī)定功能是指為提供給定的服務(wù),軟件產(chǎn)品所必須具備的功能。
2.2開發(fā)過程
(1)需求分析
需求分析是軟件開發(fā)整個流程中最為困難的一個步驟。其需要經(jīng)過系統(tǒng)對用戶進(jìn)行需求的提取,根據(jù)需求建立合適的邏輯模型,再進(jìn)行需求的驗證。在此步驟中還需編寫《軟件產(chǎn)品需求規(guī)格說明書》作為軟件開發(fā)過程各項工作的基礎(chǔ)。在說明書編制過程中,就可能有降低計算機(jī)可靠性事件發(fā)生的風(fēng)險,在需求分析的過程中,一定會有與相關(guān)人員的意見產(chǎn)生矛盾的情況出現(xiàn),若不能理性地考慮哪方意見更加合理,就會對日后軟件的可靠性產(chǎn)生極大的影響。
(2)概要設(shè)計
在進(jìn)行詳細(xì)設(shè)計之前,設(shè)計者需要對所要開發(fā)的軟件系統(tǒng)必要的概要設(shè)計,即系統(tǒng)設(shè)計。概要設(shè)計的內(nèi)容包括軟件系統(tǒng)的處理流程、軟件系統(tǒng)的組織結(jié)構(gòu)、軟件邏輯模塊劃分、軟件的功能分配、相應(yīng)的數(shù)據(jù)結(jié)構(gòu)與接口設(shè)計、軟件運行和出錯處理設(shè)計等,為后續(xù)的軟件詳細(xì)設(shè)計提供基礎(chǔ)。
(3)詳細(xì)設(shè)計
詳細(xì)設(shè)計就是針對系統(tǒng)的各個部分進(jìn)行設(shè)計,并對此部分進(jìn)行精確描述,以至于設(shè)計人員可以用具體的代碼將其實現(xiàn)。詳細(xì)設(shè)計就好比是樹的每一片葉子,精確描述就像是葉子上的葉脈清晰可見。在高中信息技術(shù)課本中的“模塊設(shè)計”也是運用這一思想實現(xiàn)的。與概要設(shè)計相似的是也要編寫《詳細(xì)設(shè)計規(guī)格說明書》。在高中學(xué)習(xí)Visual Basic語言時,經(jīng)常會碰到一些由于未考慮特殊情況而導(dǎo)致程序出錯的問題,在軟件開發(fā)設(shè)計時也會有這樣的麻煩,從而導(dǎo)致軟件的可靠性降低。
(4)編碼實現(xiàn)
編碼過程就像字面那樣理解,就是將經(jīng)過上述步驟的需求通過計算機(jī)能實現(xiàn)的語言進(jìn)行編碼,從而在計算機(jī)上將需求實現(xiàn)。不過在此選擇何種語言是至關(guān)重要的,目前常用的計算機(jī)語言有java、c、c++、c#、vb.net、ruby、python、vba、javascrip等,每種語言的編程風(fēng)格也是不同的,因此,就會出現(xiàn)對于同一需求使用不同編程語言下,所得到軟件產(chǎn)品的可靠度有所不同,這就要求開發(fā)者要充分了解計算機(jī)編程語言、開發(fā)工具的特性,才能選擇較好的軟件開發(fā)工具和編程語言,進(jìn)而保證軟件產(chǎn)品的可靠性。
(5)軟件測試
軟件測試是為了發(fā)現(xiàn)蘊含在軟件開發(fā)過程中的一些安全隱患。在開展軟件測試時需用到實際的測試用例,即根據(jù)軟件設(shè)計前的規(guī)格說明與測試軟件的工具,并利用特定的測試用例去運行程序,以發(fā)現(xiàn)程序錯誤。若測試無誤,便編寫《測試分析報告》。一般來說,測試這一環(huán)節(jié)是保證軟件可靠性最關(guān)鍵的一步。經(jīng)過測試之后的軟件可靠性會提高,這還是得取決于軟件系統(tǒng)的復(fù)雜程度,過于復(fù)雜的程序,測試的工程量較大,可能會有測試用例使用錯誤的事情發(fā)生,導(dǎo)致軟件的可靠度降低。
(6)交付使用
顧名思義,當(dāng)一款軟件經(jīng)過上述步驟被設(shè)計出來后,就會由開發(fā)商交付給用戶,供其使用。但是交付并不意味著已經(jīng)結(jié)束對這款軟件的開發(fā)。對于軟件產(chǎn)品的文件工作,有些文件的編寫工作是需要在程序開發(fā)的若干個階段中持續(xù)進(jìn)行,而且開發(fā)者們還要對軟件進(jìn)行維護(hù),發(fā)現(xiàn)其中尚未被發(fā)現(xiàn)、解決的漏洞,以用來提高軟件的可靠性。
3.軟件可靠性問題與可靠性方法
與軟件可靠性相對的就是硬件的可靠性,造成硬件可靠性較低是由于外界的物理因素和硬件隨時間推移而耗損導(dǎo)致的。借用經(jīng)典的浴盆曲線來說,可以將硬件的失效分為三個時期“早期”“穩(wěn)定期”“損耗期”,“早期”失效率高的原因是硬件從廠家生產(chǎn)出來時原來的零部件存在缺陷或者就是零部件或整體受到了外界像撞擊類似的物理因素的影響,使其迅速失效,導(dǎo)致硬件可靠性降低;“耗損期”失效率高的原因便是隨著時間的推移硬件本身就在耗損,達(dá)到一定程度后就失效了,從而導(dǎo)致硬件可靠性降低。而軟件原本就不是什么物質(zhì)實體,它只是一堆代碼,因此軟件可靠性就不會像硬件可靠性那樣有著浴盆曲線。經(jīng)過上述的軟件開發(fā)的過程之后,漏洞暫時并未被發(fā)現(xiàn),軟件具有較好的可靠性,一旦漏洞被發(fā)現(xiàn),這時軟件的可靠性就會降低,失效率升高,若開發(fā)商對漏洞進(jìn)行修復(fù),失效率又會下降,這就是軟件的“測試期”;軟件進(jìn)入“穩(wěn)定期”后,每次對軟件的升級均會造成失效率攀升,但最終又會降低,原因就是漏洞被不斷修復(fù);軟件可靠性也有“衰退期”,當(dāng)人們不再使用此軟件后,潛在的漏洞得不到修復(fù),這也就會使軟件實際的失效率不斷升高,導(dǎo)致軟件實際的可靠性下降。
3.1軟件可靠性問題分析
3.1.1需求分析階段
(1)在進(jìn)行需求陳述的時候,客戶并不能很明確地表達(dá)出自己的需求;
(2)客戶的需求在項目實施過程中不斷地發(fā)生變化,導(dǎo)致可靠性降低。
3.1.2軟件設(shè)計階段
(1)軟件設(shè)計體系死板
在進(jìn)行軟件開發(fā)的過程中,軟件設(shè)計體系有時過于死板,體系難以改變,改變單一模塊卻會牽動其他的很多模塊,導(dǎo)致軟件其他模塊同時發(fā)生連鎖變動。
(2)軟件設(shè)計的脆弱性
軟件設(shè)計容易遭到破壞。在設(shè)計過程中新增加的功能會破壞之前的許多功能,使得設(shè)計整體的可靠性遭到破壞。
(3)不必要的復(fù)雜性
在設(shè)計階段,很容易產(chǎn)生過度設(shè)計的現(xiàn)象,導(dǎo)致大量人力物力的浪費。
3.1.3代碼編寫階段
(1)各個程序員之間各自為營,缺乏合作;
(2)部分工作人員對代碼掌握不熟練,沒能夠達(dá)到設(shè)計要求;
(3)設(shè)計人員之間的工作因缺乏溝通容易產(chǎn)生不必要的重復(fù),在設(shè)計階段容易產(chǎn)生晦澀的表達(dá),不易理解。
3.1.4測試階段
(1)在測試階段,員工的態(tài)度不夠積極;
(2)軟件實際測試是會受到諸如人力、財力、物力和技術(shù)所限制,如人員分配壓力導(dǎo)致人手不夠,這會導(dǎo)致軟件測試的局限。
3.2軟件可靠性技術(shù)分析
3.2.1需求分析階段
(1)在項目開始的初期,就要充分了解客戶的需求,確定明確的,向顧客敘述出項目的遠(yuǎn)景,包括一些給客戶帶來的好處、出現(xiàn)的可能風(fēng)險、一些系統(tǒng)所帶的獨有功能,然后讓讀者閱讀,保證雙方理解的一致性。
(2)向客戶方要求出明確的設(shè)計過程,并且為每個開發(fā)階段設(shè)定自己的轉(zhuǎn)折點,超過轉(zhuǎn)折點即不允許再改變;在設(shè)計即將完成的階段里,不允許非正式改變。
3.2.2軟件設(shè)計階段
(1)在設(shè)計階段邀請專家參與設(shè)計過程,以保證軟件系統(tǒng)的業(yè)務(wù)構(gòu)架;
(2)在軟件設(shè)計階段,充分考慮開發(fā)的前瞻性;提前分配資源,讓測試人員提前參與。
3.2.3代碼編寫階段
(1)讓軟件開發(fā)人員互相評審,熟悉不同的工作,從而避免缺乏合作的缺陷;
(2)定期進(jìn)行能力檢測,加強(qiáng)開發(fā)人員的知識培訓(xùn)與知識共享,提高開發(fā)人員水平;
(3)避免直接復(fù)制粘貼代碼,一定要堅持設(shè)計回溯,對冗余的代碼及時重構(gòu),設(shè)計人員互相監(jiān)督檢查;
(4)制定統(tǒng)一規(guī)范,保證從代碼到軟件外觀整體風(fēng)格的統(tǒng)一。
3.2.4測試階段
(1)從員工內(nèi)心加強(qiáng)重視測試的觀念,但是又不可完全依賴測試區(qū)發(fā)現(xiàn)問題;
(2)當(dāng)認(rèn)識到軟件測試存在局限性,因此一定要結(jié)合實際情況進(jìn)行分階段測試,采用自動化測試手段,增強(qiáng)缺陷發(fā)現(xiàn)能力;
(3)建立完善的缺陷跟蹤流程。
4.結(jié)論
我國科技進(jìn)步日新月異,我國的各種設(shè)備與產(chǎn)品也朝著高科技化,復(fù)雜化的道路上前進(jìn)。但需要在這樣的大好前景下能注重細(xì)節(jié),注重軟件開發(fā)的每一步過程,注重軟件可靠性,不要因為細(xì)節(jié)不足的問題而馬失前蹄,造成不該的損失。
參考文獻(xiàn):
[1]周端,李小霞,徐陽揚.計算機(jī)系統(tǒng)可靠性設(shè)計研究[J].計算機(jī)與數(shù)字工程,2005,33(4):110-112.
[2]謝悅平,王新川.計算機(jī)系統(tǒng)可靠性問題的研究[J].河北科技大學(xué)學(xué)報,2001,22(3):10-13.
[3]高曉寧.計算機(jī)軟件可靠性分析及抗不可靠性方法[J].航空計算技術(shù),2003,33(3):73-75.
[4]李永征.淺析計算機(jī)軟件可靠性的測試方法[J].軟件,2014(2):90-92.
[5]王潤芳,孫防,李鵬.淺析計算機(jī)軟件可靠性設(shè)計[J].才智,2011(36):26-27.
[6]劉磊.計算機(jī)軟件可靠性測試的具體措施分析[J].計算機(jī)光盤軟件與應(yīng)用,2012(16):72-72.