国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

類型轉(zhuǎn)換類規(guī)則問題淺析

2017-06-06 23:08:00印玲宋力立
電腦知識與技術(shù) 2017年9期

印玲 宋力立

摘要:論文闡述了類型轉(zhuǎn)換所要遵守的規(guī)則,介紹此類問題的表現(xiàn)形式、種類,規(guī)則檢查時(shí)的分析要點(diǎn),并列舉了一則航天型號軟件中所發(fā)生的案例來說明類型轉(zhuǎn)換可能產(chǎn)生數(shù)值誤差,以及引發(fā)的代碼質(zhì)量問題。論文可用于指導(dǎo)航天型號軟件代碼規(guī)則檢查。

關(guān)鍵詞:編碼規(guī)范;規(guī)則檢查;類型轉(zhuǎn)換

1.背景

軟件編碼規(guī)范是程序在編寫過程中必須遵守的規(guī)則標(biāo)準(zhǔn),實(shí)施什么樣的編碼規(guī)程取決于很多因素,航天型號項(xiàng)目所采用的編碼規(guī)程最重要的就是軟件的可靠性和安全性,編碼規(guī)程使得開發(fā)人員在編程時(shí)和測試人員在測試時(shí)有章可循,減少因編程語言的因素而導(dǎo)致的錯(cuò)誤,降低存在隱患的語言特征可能導(dǎo)致的風(fēng)險(xiǎn),提高軟件質(zhì)量。

2.代碼規(guī)則檢查方法

軟件靜態(tài)測試包括代碼審查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量和代碼規(guī)則檢查等,是指不運(yùn)行被測程序本身,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、控制流、數(shù)據(jù)流、接口和表達(dá)式等來測試程序代碼的正確性。其中代碼規(guī)則檢查根據(jù)各項(xiàng)標(biāo)準(zhǔn),從代碼的安全性、可移植性、可維護(hù)性、可測試性等方面,分析查找出程序的欠缺和不足以及錯(cuò)誤之處,發(fā)現(xiàn)違背程序編寫標(biāo)準(zhǔn)的問題,找出程序中不安全、不明確和有歧義的模塊,例如語言使用規(guī)則變量命名檢查、類型檢查、函數(shù)的聲明和定義中使用的標(biāo)識符不匹配,在函數(shù)體內(nèi)使用外部變量聲明,不允許的遞歸、未使用過變量的變量、數(shù)組的初始化不完整等。

代碼規(guī)則一般分為強(qiáng)制項(xiàng)規(guī)則和建議項(xiàng)規(guī)則,可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進(jìn)行。根據(jù)測試方面的經(jīng)驗(yàn)可以得出,在測試過程中,靜態(tài)測試比動態(tài)測試更有效率,以最小的代價(jià)更多更快速地找到問題,通常能夠發(fā)現(xiàn)不少于70%的編碼設(shè)計(jì)缺陷和程序邏輯問題。代碼檢查非常的耗費(fèi)時(shí)間,很大程度上依賴于測試人員的知識儲備、經(jīng)驗(yàn)積累以及細(xì)心程度,而代碼規(guī)則檢查則依據(jù)相關(guān)標(biāo)準(zhǔn)和規(guī)范,一般由測試工具執(zhí)行生成檢查報(bào)告,常用工具包括QAC/QA C+、Testbed、logiscope等,這些工具可以很好地和軟件開發(fā)工具以及測試工具集成在一起,程序員在編程過程可以同時(shí)完成編程規(guī)則的檢查,測試人員在測試過程中能更全面檢查出違反編程規(guī)則的代碼。航天型號軟件通常采用的標(biāo)準(zhǔn)有GJB2725A、航天型號軟件c語言安全子集、探月工程探測器系統(tǒng)C語言編程規(guī)范等,可以極大的提高測試效率,減少錯(cuò)誤的出現(xiàn)概率,確保軟件研制質(zhì)量和可靠性,提高軟件研制工程化水平。

3.類型轉(zhuǎn)換規(guī)則

代碼規(guī)則檢查中一項(xiàng)重要的規(guī)則就是關(guān)于類型轉(zhuǎn)換方面的要求,類型轉(zhuǎn)換包括隱式類型轉(zhuǎn)換、強(qiáng)制轉(zhuǎn)換、用戶定義的轉(zhuǎn)換和使用幫助程序類的轉(zhuǎn)換。隱式轉(zhuǎn)換是一種安全類型的轉(zhuǎn)換,不會導(dǎo)致數(shù)據(jù)丟失,如果要存儲的值無需截?cái)嗷蛩纳嵛迦思纯蛇m應(yīng)變量,則可進(jìn)行隱式轉(zhuǎn)換,不需要任何特殊的語法。強(qiáng)制轉(zhuǎn)換是顯示地通知編譯器需要類型轉(zhuǎn)換,要使用強(qiáng)制轉(zhuǎn)換運(yùn)算符,必須使用強(qiáng)制轉(zhuǎn)換的情況是在轉(zhuǎn)換中可能丟失信息或者其他原因轉(zhuǎn)換可能不成功。另外,編程人員可以自定義一些特殊的方法來執(zhí)行用戶定義的轉(zhuǎn)換,從而使不具有基類一派生類關(guān)系的定義類型之間可以顯式和隱式轉(zhuǎn)換。

程序員在軟件編寫時(shí)經(jīng)常會使用類型轉(zhuǎn)換,類型轉(zhuǎn)換一方面提高了編程的靈活性,另一方面,也帶來了一定的安全隱患,使用不恰當(dāng)會導(dǎo)致軟件異常。因此類型轉(zhuǎn)換一般遵守以下幾條原則:禁止將類型長度較小的指針強(qiáng)制轉(zhuǎn)換為類型長度較大的指針、禁止對指針變量使用強(qiáng)制類型轉(zhuǎn)換賦值、有符號和無符號之間不得隱式轉(zhuǎn)換、寬類型不得向窄類型隱式轉(zhuǎn)換、整型和浮點(diǎn)類型之間不得隱式轉(zhuǎn)換、函數(shù)參數(shù)不得隱式轉(zhuǎn)換、函數(shù)的返回表達(dá)式不得隱式轉(zhuǎn)換、復(fù)雜表達(dá)式不得隱式轉(zhuǎn)換等。

秦皇岛市| 庆安县| 尼勒克县| 盐源县| 太仓市| 阿合奇县| 紫阳县| 临武县| 江安县| 武夷山市| 明光市| 措美县| 疏勒县| 永安市| 蕉岭县| 怀柔区| 淅川县| 永泰县| 调兵山市| 金华市| 汉沽区| 买车| 西安市| 乳源| 墨竹工卡县| 抚顺市| 岫岩| 佛冈县| 德兴市| 安吉县| 西畴县| 抚宁县| 开阳县| 乡宁县| 邵阳县| 敦煌市| 深水埗区| 刚察县| 井研县| 招远市| 右玉县|