• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    軟件代碼質(zhì)量檢測(cè)實(shí)踐

    2019-09-10 07:31:45羅來(lái)財(cái)
    現(xiàn)代信息科技 2019年23期

    摘? 要:隨著軟件系統(tǒng)規(guī)模的增加,軟件代碼質(zhì)量越來(lái)越難以控制,需要借助有效的軟件工程方法和工具來(lái)應(yīng)對(duì)新的挑戰(zhàn)。本文指出軟件代碼質(zhì)量的主要問(wèn)題是代碼風(fēng)格統(tǒng)一問(wèn)題、C語(yǔ)言編碼安全問(wèn)題、GCC編譯告警監(jiān)控問(wèn)題,然后根據(jù)CMMI的軟件質(zhì)量過(guò)程和ISO的軟件質(zhì)量模型對(duì)各類(lèi)規(guī)則進(jìn)行梳理,并編寫(xiě)相應(yīng)的腳本程序靜態(tài)檢測(cè)代碼質(zhì)量,最后對(duì)檢測(cè)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析并以Web形式輸出報(bào)表。

    關(guān)鍵詞:代碼質(zhì)量;質(zhì)量模型;代碼風(fēng)格;編碼安全

    中圖分類(lèi)號(hào):TP311.1? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)23-0083-03

    Software Code Quality Inspection Practice

    LUO Laicai

    (Ruijie Networks Co.,Ltd.,F(xiàn)uzhou? 350002,China)

    Abstract:With the increase of software system scale,the quality of software code are more and more difficult to control,effective software engineering methods and tools are needed to meet new challenges. This paper points out that the main problems of code quality are code style unification,C language coding security,GCC compilation alarm monitoring. Then,according to the software quality process of CMMI and the software quality model of ISO,all kinds of rules are sorted out and corresponding script programs are written to statically check the code quality. Finally,the test data is analyzed and the report is output in the form of Web.

    Keywords:software quality;quality model;code style;coding security

    1? 代碼質(zhì)量存在的主要問(wèn)題

    在軟件開(kāi)發(fā)過(guò)程中,軟件源代碼質(zhì)量是相對(duì)難以評(píng)測(cè)的要素。盡管行業(yè)的標(biāo)準(zhǔn)組織出臺(tái)了很多相關(guān)規(guī)范,有些甚至提供了用來(lái)度量軟件質(zhì)量的工具,但實(shí)施成本過(guò)高,比較難落地。典型的瀑布開(kāi)發(fā)模型,從需求分析到架構(gòu)設(shè)計(jì),再到詳細(xì)設(shè)計(jì),然后構(gòu)造編碼,最后測(cè)試集成維護(hù),軟件質(zhì)量問(wèn)題貫穿整個(gè)開(kāi)發(fā)過(guò)程。代碼質(zhì)量是軟件質(zhì)量的一種內(nèi)部表現(xiàn),主要包括功能的適合性、可維護(hù)性等。具體到軟件開(kāi)發(fā)過(guò)程,代碼質(zhì)量問(wèn)題主要分為代碼風(fēng)格統(tǒng)一問(wèn)題、編程語(yǔ)言的安全問(wèn)題、編譯工具告警開(kāi)關(guān)以及告警消除的監(jiān)控問(wèn)題。

    開(kāi)發(fā)團(tuán)隊(duì)中不同的人有不同的代碼風(fēng)格偏好,雖然沒(méi)有絕對(duì)的對(duì)錯(cuò),但是有一條原則需要遵守:少數(shù)服從多數(shù)。執(zhí)行企業(yè)發(fā)布的編碼標(biāo)準(zhǔn)規(guī)范保持代碼風(fēng)格統(tǒng)一是改善代碼可維護(hù)性的一個(gè)重要方面。C語(yǔ)言以其靈活的類(lèi)型轉(zhuǎn)換和貼近底層機(jī)器實(shí)現(xiàn)、目標(biāo)代碼效率高的特性成為嵌入式軟件領(lǐng)域最流行的編程語(yǔ)言。隨著系統(tǒng)復(fù)雜度的不斷提高,編碼中的一些小瑕疵往往會(huì)引發(fā)嚴(yán)重的安全問(wèn)題。SEI基于長(zhǎng)期的C語(yǔ)言標(biāo)準(zhǔn)相關(guān)技術(shù)報(bào)告的研究總結(jié)了一套被普遍接受的CERT安全編碼標(biāo)準(zhǔn)規(guī)則。為了使CERT安全編碼規(guī)則落地,在軟件開(kāi)發(fā)的過(guò)程中,在編譯工程環(huán)境里集成安全編碼的靜態(tài)分析工具是有必要的。GCC的告警種類(lèi)很多,針對(duì)軟件開(kāi)發(fā)項(xiàng)目采用不同的編譯器或者不同的編譯器版本建立統(tǒng)一的告警等級(jí)狀態(tài)并生成直觀的報(bào)告信息是有必要的。

    2? 行業(yè)相關(guān)技術(shù)規(guī)范

    2.1? CMMI的軟件質(zhì)量過(guò)程

    能力成熟度模型集成(CMMI)中包含了代碼質(zhì)量改善相關(guān)的過(guò)程流程。

    CMMI的過(guò)程與產(chǎn)品質(zhì)量保證(PPQA)過(guò)程域指出,過(guò)程與產(chǎn)品質(zhì)量保證嵌入在項(xiàng)目整個(gè)生命期,向項(xiàng)目員工與各層次的管理人員提供對(duì)過(guò)程與相關(guān)工作產(chǎn)品適當(dāng)?shù)目梢暬胺答仯纱酥С指哔|(zhì)量產(chǎn)品交付。這里強(qiáng)調(diào)的內(nèi)容是,已經(jīng)計(jì)劃的過(guò)程得到實(shí)施,通過(guò)實(shí)施過(guò)程的有序開(kāi)展確保交付產(chǎn)品的質(zhì)量。另外,產(chǎn)品規(guī)定的需求是否得到滿足由單獨(dú)的驗(yàn)證過(guò)程域(VER)進(jìn)行保障。PPQA的啟示是,需要在軟件開(kāi)發(fā)的過(guò)程中分階段實(shí)時(shí)反饋質(zhì)量狀況。

    CMMI的量化項(xiàng)目管理(QPM)屬于成熟度4級(jí)過(guò)程域,其中包括選擇將用于量化管理的度量項(xiàng),使用統(tǒng)計(jì)與其

    他量化技術(shù)來(lái)監(jiān)督所選子過(guò)程的性能。統(tǒng)計(jì)與其他量化管理技術(shù)用于預(yù)測(cè)過(guò)程的性能可以用于多個(gè)層面,從對(duì)單個(gè)子過(guò)程的關(guān)注到對(duì)跨越生命周期階段、項(xiàng)目以及支持職能的分析。QPM的啟示是,需要在軟件開(kāi)發(fā)的過(guò)程中采集量化數(shù)據(jù)評(píng)估預(yù)測(cè)質(zhì)量狀況。

    2.2? ISO的軟件質(zhì)量模型

    ISO關(guān)于產(chǎn)品質(zhì)量的定義是:軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或者特征集合。由此可以看出,特征是軟件質(zhì)量狀況的反映,軟件屬性可以做評(píng)價(jià)準(zhǔn)則,定量化的度量軟件屬性可以知道軟件質(zhì)量的優(yōu)劣。ISO/IEC 250nn系列技術(shù)標(biāo)準(zhǔn)描述了軟件系統(tǒng)質(zhì)量需求和評(píng)估方法,包含的系統(tǒng)軟件質(zhì)量模型的8個(gè)一級(jí)質(zhì)量特征類(lèi)型:功能適合性、運(yùn)行效率、兼容性、易用性、可靠性、安全性、可維護(hù)性、可移植性。

    為了能夠在產(chǎn)品(軟件系統(tǒng))發(fā)布前對(duì)產(chǎn)品質(zhì)量做出比較準(zhǔn)確的判斷,需要建立質(zhì)量模型并根據(jù)質(zhì)量模型進(jìn)行度量評(píng)估。軟件質(zhì)量包括內(nèi)部質(zhì)量(過(guò)程質(zhì)量)和外部質(zhì)量(使用質(zhì)量)兩個(gè)方面,軟件內(nèi)部質(zhì)量中重要的組成部分是源代碼質(zhì)量,包括代碼風(fēng)格統(tǒng)一、編碼安全規(guī)則和編譯告警消除等。

    3? 代碼質(zhì)量檢測(cè)實(shí)踐

    3.1? 嵌入式開(kāi)發(fā)的編碼過(guò)程

    編碼過(guò)程是軟件開(kāi)發(fā)過(guò)程的一個(gè)重要方面,在嵌入式軟件開(kāi)發(fā)領(lǐng)域,絕大部分代碼還是需要程序員手工編碼、編譯、單元測(cè)試、提交代碼庫(kù)、集成編譯、集成測(cè)試。通常的編碼過(guò)程包括:

    (1)編碼人員計(jì)算機(jī)本地環(huán)境:根據(jù)設(shè)計(jì)編碼、在工程環(huán)境里編譯、單元測(cè)試調(diào)試;

    (2)企業(yè)的代碼集成服務(wù)器環(huán)境:代碼版本管理、集成編譯、集成測(cè)試調(diào)試。

    基于軟件領(lǐng)域中越早修復(fù)問(wèn)題成本越低的原理,軟件代碼質(zhì)量檢測(cè)的實(shí)施應(yīng)該盡量在計(jì)算機(jī)本地環(huán)境開(kāi)發(fā)階段進(jìn)行,但是某些全局性問(wèn)題必須在服務(wù)器環(huán)境開(kāi)發(fā)階段才可以實(shí)施,比如整個(gè)系統(tǒng)范圍的代碼重復(fù)率評(píng)測(cè)。

    3.2? 代碼質(zhì)量檢測(cè)

    靜態(tài)代碼檢查主要的作用是提高軟件的功能適合性和可維護(hù)性。其中功能適合性的提高通過(guò)實(shí)施C語(yǔ)言的CERT安全編碼標(biāo)準(zhǔn)規(guī)則檢查來(lái)達(dá)成;其中可維護(hù)性的提高通過(guò)實(shí)施企業(yè)編碼標(biāo)準(zhǔn)的檢查來(lái)達(dá)成。另外,GCC編譯器編譯告警開(kāi)關(guān)的檢查(消除告警)和代碼重復(fù)率評(píng)測(cè),也對(duì)功能適合性和可維護(hù)性有很大幫助。代碼質(zhì)量檢測(cè)的一種有效的方式是把代碼質(zhì)量規(guī)則檢查過(guò)程內(nèi)嵌到編碼過(guò)程中,讓軟件編碼人員在日常的開(kāi)發(fā)活動(dòng)中就消除質(zhì)量隱患。代碼質(zhì)量檢測(cè)的系統(tǒng)模型如圖1所示。

    圖1系統(tǒng)模型中描繪了靜態(tài)代碼檢查的主要過(guò)程,在編碼人員的本地環(huán)境編譯工程環(huán)境里嵌入腳本程序檢查編碼風(fēng)格、編碼安全、編譯告警開(kāi)關(guān);在企業(yè)的編譯服務(wù)器進(jìn)行集成編譯時(shí)重復(fù)檢查編碼風(fēng)格、編碼安全、編譯告警開(kāi)關(guān),另外還要評(píng)測(cè)代碼重復(fù)率。

    其中編碼風(fēng)格企業(yè)標(biāo)準(zhǔn)檢查,主要的目的是落實(shí)企業(yè)的編碼標(biāo)準(zhǔn),統(tǒng)一編碼風(fēng)格,提高代碼的可維護(hù)性。一份編碼標(biāo)準(zhǔn)通常包含幾十條至幾百條具體的規(guī)則,比如函數(shù)類(lèi)的規(guī)則:

    FUNC-1:一個(gè)函數(shù)的代碼規(guī)模應(yīng)控制在120行(不含空白與注釋在內(nèi))以內(nèi),不符合本條需特別給出說(shuō)明;

    其中CERT規(guī)則檢查,主要是以CERT規(guī)則為基礎(chǔ)減少因?yàn)镃語(yǔ)言的指針等功能引入的編碼問(wèn)題。CERT的C語(yǔ)言編碼安全規(guī)范列舉了幾百條具體規(guī)則,比如預(yù)處理類(lèi)的規(guī)則:

    PRE30-C:不要通過(guò)連接創(chuàng)建通用字符名稱。雖然C語(yǔ)言支持通用字符名稱,但是如果匹配通用字符名稱的序列由符號(hào)連接(比如##)生成將產(chǎn)生未定義行為。

    GCC編譯告警開(kāi)關(guān)檢查,主要監(jiān)控不同的GCC版本環(huán)境下的告警開(kāi)關(guān)和告警消除情況。以GCC 8.1為例,可配置開(kāi)關(guān)的有220多條規(guī)則,可以歸到Wall和Wextra等類(lèi)型。高質(zhì)量的軟件代碼需要消除所有的編譯告警。代碼重復(fù)率評(píng)測(cè)是在整個(gè)項(xiàng)目分支范圍內(nèi)根據(jù)局部代碼邏輯相似度排查代碼片段的重復(fù)情況。通過(guò)代碼重復(fù)率的評(píng)測(cè)和控制,可以減少需要維護(hù)的代碼量,使軟件模塊具有高內(nèi)聚低耦合特性。

    代碼分支的質(zhì)量數(shù)據(jù)經(jīng)過(guò)統(tǒng)計(jì)分析后以Web方式呈現(xiàn),可以分類(lèi)展示結(jié)果數(shù)據(jù),包括編碼標(biāo)準(zhǔn)、GCC告警、CERT安全。每一類(lèi)的結(jié)果數(shù)據(jù)又分為綜合統(tǒng)計(jì)數(shù)據(jù)和各個(gè)組件包明細(xì)數(shù)據(jù)。有了這些統(tǒng)計(jì)數(shù)據(jù),軟件項(xiàng)目管理人員就可以很方便地看出當(dāng)前的代碼質(zhì)量狀況,進(jìn)一步采取措施改善代碼質(zhì)量。

    4? 結(jié)? 論

    本文通過(guò)軟件代碼質(zhì)量檢測(cè)的分析與實(shí)踐,為代碼軟件質(zhì)量的提高找到一種有效并且容易實(shí)施的方法過(guò)程。軟件系統(tǒng)規(guī)模和復(fù)雜性的增加不可避免,同時(shí),軟件開(kāi)發(fā)效率的提高和開(kāi)發(fā)方法過(guò)程的增強(qiáng)也是大勢(shì)所趨。本文論述的根據(jù)CMMI的軟件質(zhì)量過(guò)程和ISO的軟件質(zhì)量模型進(jìn)行代碼質(zhì)量檢測(cè)實(shí)踐,可以通過(guò)較少的資源投入獲取較好的軟件代碼質(zhì)量,是一種科學(xué)有效的軟件工程方法。

    參考文獻(xiàn):

    [1] 孫洋,袁玉宇.ISO/IEC 25010質(zhì)量模型標(biāo)準(zhǔn)現(xiàn)狀 [J].信息技術(shù)與標(biāo)準(zhǔn)化,2008(11):33-36.

    [2] SEACORD R C .CERT? C Coding Standard,Second Edition,The:98 Rules for Developing Safe,Reliable,and Secure Systems,2nd Edition [M].Addison-Wesley Professional,2014.

    [3] SEACORD R C .C和C++安全編碼(英文版)(第2版) [M].北京:機(jī)械工業(yè)出版社,2013.

    作者簡(jiǎn)介:羅來(lái)財(cái)(1981.11-),男,漢族,江西玉山人,本科,中級(jí)職稱,主要研究方向:軟件開(kāi)發(fā)和軟件工程相關(guān)技術(shù)。

    新疆| 扎囊县| 开封县| 准格尔旗| 铅山县| 兴山县| 阜南县| 浏阳市| 宜兰市| 金平| 基隆市| 英山县| 石泉县| 文成县| 林州市| 和硕县| 阿克苏市| 清徐县| 阿拉善右旗| 汕尾市| 社会| 兰坪| 昌图县| 永丰县| 五大连池市| 漠河县| 阿巴嘎旗| 明星| 广德县| 泽州县| 临漳县| 博乐市| 永州市| 深圳市| 通化县| 依兰县| 个旧市| 大竹县| 长兴县| 德钦县| 寿光市|