999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向代碼質量提升的軟件工程能力素質培養

2022-07-14 12:55:58陳立前尹良澤毛新軍
軟件導刊 2022年7期
關鍵詞:高質量規范質量

陳立前,董 威,尹良澤,毛新軍

(國防科技大學計算機學院,湖南長沙 410073)

0 引言

軟件工程以提高軟件生產率和軟件質量為目標,隨著人們對軟件的正確性、可靠性、安全性等可信需求日益迫切,軟件質量尤其是代碼質量得到了越來越多的關注和重視。尤其是,對于大型軟件項目而言,開發人員多、代碼規模大,如果沒有高質量的代碼作為基石,很難產出高質量的軟件產品。任正非在其簽發的華為總裁辦2019 年一號文件《全面提升軟件工程能力與實踐,打造可信的高質量產品》中明確指出:“我們要從最基礎的編碼質量做起,視高質量代碼為尊嚴和個人聲譽。代碼就像是高樓大廈的一磚一瓦,沒有高質量的代碼,可信的產品就是空中樓閣?!庇纱丝梢姡a質量對于當前IT 企業界打造高質量產品的重要性日益凸顯。

對于軟件工程人才培養,代碼質量教育是軟件工程能力素質培養的一個重要方面,編寫高質量的代碼也成為軟件工程師必備的職業素養。但是,在軟件工程課程教學過程尤其是軟件項目實踐過程中,學生主要關注軟件系統功能設計與實現,而往往忽視了代碼質量。究其原因在于:學生對高質量代碼的重要性認識不夠,“代碼之美”感受不多,缺乏體驗;學生在課程規定的時限內,會盡量實現和完善更多的軟件功能以體現工作量,但因開發經驗不足而導致實現的代碼存在不規范、可讀性差等問題,代碼質量沒有保證;學生排查軟件缺陷經驗不足、能力弱。

為了在人才培養中有效應對這些問題,圍繞學生讀代碼、寫代碼、評代碼、改代碼4 個環節,從高質量開源軟件代碼閱讀、編程規范學習與規范編程、代碼測試分析能力訓練3 個方面,設計相應的教學活動,以形成面向代碼質量提升的軟件工程能力素質培養體系,構建面向代碼質量評價與提升的支撐技術和工具集。

1 相關工作

代碼質量一直是軟件工程學術界和工業界關注的重要主題,也是軟件工程教育的重要方面。

在軟件工程教育方面,軟件質量是軟件工程教育知識體系(Software Engineering Education Knowledge,SEEK)的重要知識領域之一。文獻[5]指出由于軟件工程缺失導致軟件開發項目中軟件質量和生產率方面的問題越來越多,由此設計一種面向軟件過程和軟件質量教育的軟件工程相關技能、知識與訓練框架;文獻[2]指出當前代碼質量教育方面的不足,提出將代碼壞味檢測工具引入程序設計課程實踐教學以提高代碼質量教育水平;文獻[6]指出軟件工程課程實踐教學中學生缺乏大規模和高質量軟件開發經驗以及高質量軟件設計開發能力不足的問題,提出基于高質量開源軟件的閱讀與維護以培養軟件工程能力;文獻[7]探討程序設計教學中程序設計風格養成的重要性,以及如何在課程教學中引導學生重視并養成良好的程序設計風格,同時介紹一種將程序源代碼轉化為圖形以實現代碼質量可視化評判的方法,旨在支持教師根據標準圖形模式對學生的代碼質量進行評判。

在工業界代碼質量管理方面,文獻[1]分析企業代碼管理方面的建設與管理現狀,對代碼質量管理的組織管理、工具技術、技術規范、人員培養和流程管理等方面進行探討,并提出一些實踐建議;文獻[8]總結如何實現代碼整潔和干凈的經驗規則;文獻[9]從代碼風格統一問題、編程語言安全問題、編譯工具告警開關以及告警消除的監控問題等方面,根據能力成熟度集成模型的軟件質量過程和國際標準化組織的軟件質量模型對各類規則進行梳理,開展代碼質量檢測實踐。

在代碼質量相關學術研究方面,文獻[10]分析開源軟件代碼質量問題和軟件開發人員代碼質量現狀,并研究了面向開源軟件的代碼質量問題與軟件缺陷之間的關系;文獻[11]針對源代碼分析注釋的質量評價,提出一種綜合考慮客觀質量屬性和主觀質量屬性的質量評價框架,以支持對源代碼分析注釋進行更全面的質量評價。

相比已有工作,本文主要從軟件工程教育的角度,關注學生代碼質量意識的養成以及代碼質量評價與提升能力的系統性訓練與能力素質培養,教學實施過程涵蓋讀、寫、評、改代碼等多個訓練環節。

2 面向代碼質量提升的培養模式

代碼質量直接關系到軟件項目的產品質量、效益、成本、生命周期等,同時對軟件開發組織的生產效率與團隊協作效率都有重要影響。目前,研究人員已提出了很多不同的度量指標,從不同的角度衡量代碼質量。從定性角度,評價代碼質量的指標一般包括可信性、可維護性、可讀性、可移植性、可重用性等;從定量角度,可從缺陷數、缺陷密度、代碼復雜度等方面進行度量。軟件開發人員可以通過遵循編程規范、人工審查代碼、測試與代碼分析、重構代碼等方式提高代碼質量。

從軟件工程人才培養角度看,代碼質量提升的訓練過程要與軟件工程專業的教學目標、核心課程、知識領域和知識點等有機結合,將訓練環節與正常的教學活動融為一體,確保學生在達到軟件工程相關規范和培養方案要求的基礎上,進一步顯著提升代碼質量能力和素養。為此,在具體教學實施過程中,圍繞代碼質量提升,以軟件工程教育知識體系SEEK為指導,與軟件工程專業培養方案中專業核心課程的各種教學活動相結合,結合課堂教學與課外實踐,形成一體化實施過程,以達成代碼質量能力素質訓練不斷線。上述過程總體如圖1所示。

Fig.1 Training process and teaching practice for code quality competency圖1 代碼質量能力素質培養過程與教學實施

具體教學實施時,首先讓學生認識到代碼質量的重要性,可通過典型案例、思政教育、當前IT 企業發展現實需求等對學生進行引導。在此基礎上,結合軟件工程教育知識體系SEEK,讓學生了解代碼質量的屬性、度量方法和質量提升方法,增強學生的代碼質量意識。進一步地,通過閱讀和剖析優質代碼,快速建立學生對高質量代碼的感性認識。并且,讓學生在軟件開發項目實踐過程中,運用代碼質量相關知識,進行高代碼質量的編程實現。在這一過程中,組織對學生代碼質量進行評分,給出評價意見。最后,讓學生依據評價意見,修改代碼。

從實踐角度看,上述教學實施涉及學生讀代碼、寫代碼、評代碼、改代碼4 個階段的綜合能力。對每個環節的主要關注點考慮如下:

(1)在讀代碼環節,通過梳理優質代碼案例,引導學生進行總結與抽象提煉,然后結合軟件工程教育知識體系SEEK 中的相關知識點,加深學生對背后原理的理解,提升其代碼質量鑒賞能力。最終,形成結合泛讀、精讀、標注的代碼閱讀與代碼之美欣賞能力培養體系。

(2)在寫代碼環節,讓學生學習編程規范相關的國軍標、行業標準等,引導學生養成良好的編程風格。在軟件項目實踐開發過程中,讓學生遵從軟件架構與軟件設計原則,遵循相關編程規范,編寫出規范、安全魯棒、可讀性強的代碼。

(3)在評代碼環節,形成代碼規范性自動檢查與代碼質量評分方法,構建相關輔助支撐工具集,給出量化評分。進一步地,訓練學生應用軟件測試、靜態代碼分析技術與工具自動檢測代碼缺陷的能力。

(4)在改代碼環節,讓學生根據評代碼環節給出的評價意見,依托Git 等版本管理平臺,修改甚至重構代碼,并讓學生親自比較和感受修改前后版本的代碼質量差異。

3 面向代碼質量提升的教學實施

本文將重點圍繞高質量開源代碼閱讀、規范編程、代碼測試與分析3 個方面,介紹如何開展面向代碼質量提升的教學實施。在此基礎上,介紹面向代碼質量評價與提升的輔助支撐工具集以及教學實施效果。

3.1 高質量開源軟件代碼閱讀

鑒于軟件工程課程施教初期,學生尚缺乏大規模高質量軟件開發經驗,設置相應的教學環節,讓學生閱讀具有一定規模的高質量開源軟件的源代碼,通過盡早接觸優秀的高質量軟件以增強學生質量意識。在這一過程中,設計相應的教學活動,對學生如何高效閱讀代碼進行引導和階段性檢查。主要分為代碼泛讀、代碼精讀、代碼標注、撰寫并分享代碼閱讀報告4 個階段。代碼泛讀的主要目標是讓學生在較短時間內快速掌握該軟件的功能和概要設計,包括軟件體系架構、模塊劃分等。代碼精讀則是在學生已經基本掌握軟件整體架構的基礎上,進一步體會軟件的詳細設計、代碼規范、實現方法和技巧等。代碼標注是讓學生對開源軟件中的關鍵模塊及其關鍵代碼文件、關鍵數據結構、關鍵函數等進行標注,通過代碼注釋等方式描述代碼的主要功能、實現原理等,旨在培養和提升學生對開源軟件代碼的理解、分析和描述能力。撰寫并分享代碼閱讀報告,是讓學生對整個代碼閱讀過程和積累的素材進行總結、分析和分享,包括軟件體系架構圖、模塊劃分圖、代碼規范、收獲和體會等,旨在讓學生加深對代碼質量的系統性理解和共鳴。

在具體施教過程中,選擇應用軟件“小米便簽”、開源數據庫軟件Redis、Facebook 重構的高效底層組件庫Folly、設計模式示例代碼庫java-design-patterns 等規模適中的高質量開源軟件作為學生閱讀的目標軟件。這些軟件覆蓋軟件類型不同,采用編程語言不同,學生可以根據自己的基礎和興趣,通過分組形式,選擇合適的軟件進行代碼閱讀。在該過程中,讓學生熟悉和運用優秀的代碼閱讀工具Source Insight、Understand 等,以及代碼標注工具Codepedia等。

經過代碼閱讀階段性訓練,觀察到學生對較大規模高質量軟件有了一定的感性認識,對如何開展高質量軟件設計和編碼實現也有了一定的認識和嘗試,軟件設計與編碼能力得到增強,為后期系統學習軟件工程的方法和技術以及開展軟件項目實踐打下了良好基礎。

3.2 規范編程及其評估

在程序設計、軟件工程等相關課程學習中,讓學生遵守編程規范、養成良好的編程風格至關重要。養成一種良好的編程習慣,可以讓學生受益終生。目前,已有許多優秀程序員總結出了很多經驗性的且非常實用的編程規則,形成了行之有效的編程規范。這些編程規范,一方面能夠減少編程出錯概率,另一方面能夠在保證程序正確性的前提下使程序結構清晰、邏輯簡明、易讀易懂。一些編程規范已成為國際、國內標準,有些已成為IT 企業內部必須遵守的編程規范。如MISRA(汽車工業軟件可靠性聯合會)發布的針對汽車工業軟件安全性的C 語言編程規范MISRA-C,已成為C 語言安全規范的事實標準。Google 公司制定了公司內部使用的編程規范,包括《Google C++編程風格指南》《Google Java 編程風格指南》等。在國內,國軍標《GJB5369 航天型號軟件C 語言安全子集》,已成為國內航天領域的C 語言編程標準,同時也是目前國內軍工行業代碼規則審查的主要參照依據。此外,代碼質量與其整潔度成正比,讓學生學習代碼整潔之道,尤其是一系列行之有效的整潔代碼操作實踐,寫出優雅、整潔、易懂的代碼,這也是軟件工程實踐過程中的重要一環。

具體施教過程中,結合學生未來職業發展和任職崗位需求,介紹編碼規范要求和編程風格建議。具體而言,從如下幾個方面對學生進行引導,幫助他們遵守編程規范、養成良好的編程習慣。

(1)結合軟件工程教育知識體系中相關知識單元和知識點,介紹編程規范關注的方面和規范化原因。編程規范關注的方面通常包括標志符命名、代碼布局(如縮緊、空格、空行等)、代碼注釋、控制結構、數據結構、模塊設計等。從認識編程規則背后原理方面,以編程規則“避免對浮點數作‘相等’或‘不相等’判斷”為例,該規則在MISRA C、國軍標GJB5369-2005 等編程規范中都是強制類型編程規則,究其規范化原因,需要教師從機器表示的角度,講解機器浮點數與數學實數的差異,以讓學生明白制定該規則背后的原因,從而產生認同感。總而言之,良好的編程風格能極大提高程序代碼質量,包括程序的可讀性、可維護性、健壯性和可重用性等。

(2)引導學生運用代碼規范化工具或編程風格檢查工具。給學生推薦Uncrustify、GNU Indent 等代碼規范化工具,以及Cpplint、CheckStyle 等編程風格檢查工具,讓學生檢查自己編寫代碼的規范性。讓學生掌握如何應用自動化的工具對程序代碼進行規范化,可以快速增強學生對于代碼規范性的體驗和成就感。

(3)在軟件工程相關課程形成性考核中,注重代碼規范性的評分和評價。在驗收學生開發的課程實踐軟件項目時,除考察軟件功能方面的工作量外,還需考察代碼質量尤其是代碼規范性。通過對代碼規范性進行評分,可有效激勵學生更主動、更自覺地學習和遵循良好的編程規范和軟件設計準則。在該過程中,教師可以借助代碼質量檢查工具SonarQube 等自動化工具,對學生代碼規范性和代碼質量進行量化評估。

3.3 軟件測試與代碼分析能力訓練

代碼缺陷是影響軟件代碼內在質量的重要因素。為了發現代碼中存在的缺陷,軟件測試與源代碼靜態分析是目前工業界常用方法。對于國防、航天等領域的安全關鍵軟件,軟件開發過程中尤其重視這方面的開發活動。因此,從課程學習開始,培養軟件工程專業學員在這些方面的能力和素質,對于學生未來的職業發展具有重要意義。

目前,開源的軟件測試工具已經較為成熟,并具有一定的技術先進性,因此在軟件工程相關課程中,選取一系列有針對性的測試工具用于技術講授和軟件項目實踐。對于單元測試,采用Junit 工具定義測試用例;對于組合測試,采用PICT 工具生成高效測試用例結合;對于白盒測試,采用CFG Generator 生成程序控制結構,以支持路徑測試;針對性能測試,采用JMeter 進行高效測試;對于Web 軟件,采用Selenium 進行測試;對于測試覆蓋率分析,采用CodeCover 進行分析和對測試進行評價。

程序靜態分析技術門檻相對較高,其理論具有一定復雜性,使用起來需要對漏報、誤報等予以更多考慮。當前,IT 工業界正在積極引入程序靜態分析技術和工具,但目前具備相關知識能力的人才相對缺乏。為此,在軟件工程課程中適當將程序分析技術和工具引入教學中。讓學生熟悉包括CppCheck、FindBugs、PMD 等在內的基于缺陷模式和簡單控制流數據流的分析工具,以及Infer、Clang、FramaC 等基于程序語義的分析工具。此外,為了讓學生結合實際軟件缺陷熟悉靜態分析技術和工具,讓學生針對國際主流的Juliet Test Suite 等缺陷代碼基準測試集以及CVE 漏洞庫,應用在這些工具開展實驗,以加深學生對軟件缺陷和漏洞的認識。

通過上述訓練,學生對代碼缺陷及其檢測技術有了更深入的理解。在此基礎上,要求學生將這些方法與工具應用于學生自己編寫的軟件工程實踐項目的源代碼上,并對檢測出來的代碼缺陷進行調試和修復,以提升其軟件項目的代碼質量。

3.4 面向代碼質量評價與提升的輔助支撐工具集

在教學實施過程中,積累了一系列以開源軟件工具為主體的面向代碼質量評價與提升的輔助支撐工具集,包括代碼閱讀工具、代碼標注工具、代碼規范化工具、編程風格檢查工具、代碼質量評估工具、軟件測試工具、靜態程序分析工具等,可滿足面向代碼質量評價與提升的軟件工程能力素質培養需求。具體而言,面向代碼質量評價與提升的輔助支撐工具集如圖2 所示。軟件工程相關課程的授課教師可以讓學生選擇并利用其中的工具以提升其代碼閱讀能力、規范編程能力、代碼測試與分析能力、代碼質量評估能力等,最終提升其軟件工程代碼質量綜合能力素質。

Fig.2 Supporting tools for code quality assessment and improvement training圖2 面向代碼質量評價與提升的輔助支撐工具集

3.5 實施效果

開展上述面向代碼質量提升的教學實施以來,學生在經過相關訓練和階段性考核后,學生的代碼質量意識以及在課程實踐項目中編寫的代碼質量有了極大提升。具體而言,通過對高質量開源項目代碼的閱讀標注與特征分析,從學生撰寫的代碼閱讀報告中,可以感覺到學生建立了對高質量代碼的感性認識,并對其重要性產生了認同感;通過規范編程訓練與檢查、學生代碼質量評分與評價等環節,學生掌握了如何運用代碼質量評價與提升相關方法與工具解決實際代碼質量問題,在課程實踐項目中能夠編寫出規范、可讀性強的代碼;通過在課程項目實踐中訓練學生應用軟件測試、代碼分析方法與工具,使得學生能夠更早接觸實際工程中代碼質量控制所使用的一些工具及流程,學生代碼缺陷檢測和定位能力得到了加強。同時,學生對軟件缺陷的調試和修復也有了新的認識。此外,通過后期反饋了解到,代碼質量評價與提升訓練對學生后期綜合實踐、畢業設計等環節的軟件開發也起到了積極促進作用。

4 結語

隨著軟件技術的發展和IT 企業界對軟件產品質量的要求越來越高,代碼質量已成為衡量軟件開發者能力水平的重要因素,也是軟件開發組織能力水平的重要體現。因此,在培養高水平軟件工程人才過程中,如何培養學生的代碼質量意識、能力、素養需要得到重視,這對于我國未來軟件產業發展至關重要。通過多年的軟件工程教學實踐,圍繞讀代碼、寫代碼、評代碼、改代碼4 個環節,從高質量開源軟件代碼閱讀、規范編程、代碼測試分析等方面對學生進行訓練,使學生建立對高質量代碼的感性認識,具備規范編程,以及運用測試及代碼分析相關技術和工具評價與提升代碼質量的能力,取得了較好的教學效果。

在后續工作中,將對開源社區中高質量開源軟件項目作進一步梳理,增加多樣性;增加更為豐富的、更全面的代碼質量評價方式,全方位對學生編寫的代碼進行代碼質量度量,并增強數據可視化效果;豐富案例、教材等教學資源,并推廣到更多的教學實踐中,為培養具有高代碼質量能力素質的軟件工程人才發揮更大作用。

猜你喜歡
高質量規范質量
來稿規范
來稿規范
堅持以高質量發展統攬全局
當代陜西(2022年5期)2022-04-19 12:10:12
“質量”知識鞏固
PDCA法在除顫儀規范操作中的應用
來稿規范
高質量項目 高質量發展
當代陜西(2021年1期)2021-02-01 07:18:02
質量守恒定律考什么
牢牢把握高質量發展這個根本要求
當代陜西(2020年20期)2020-11-27 01:43:10
做夢導致睡眠質量差嗎
主站蜘蛛池模板: 9久久伊人精品综合| 久久久久久久久亚洲精品| 国产欧美视频在线| 久久中文字幕2021精品| 国产a在视频线精品视频下载| 国产本道久久一区二区三区| 热99精品视频| 超清人妻系列无码专区| 综合天天色| 久久午夜夜伦鲁鲁片不卡| P尤物久久99国产综合精品| 制服丝袜无码每日更新| 成人小视频网| 欧美不卡视频在线| 国产玖玖视频| 久久久久国产精品免费免费不卡| 日韩毛片在线视频| 亚洲精品无码不卡在线播放| 国产中文一区二区苍井空| 欧美日韩中文国产| 国语少妇高潮| 成人福利一区二区视频在线| 国产黑丝一区| 国产1区2区在线观看| 久久国产精品嫖妓| 精品三级在线| 最新日韩AV网址在线观看| 亚洲日韩精品伊甸| 在线亚洲精品自拍| 午夜精品久久久久久久无码软件| 91久久偷偷做嫩草影院| 日韩东京热无码人妻| 人人澡人人爽欧美一区| 免费国产黄线在线观看| 香蕉精品在线| 久久精品人人做人人| 国产啪在线| 国产色网站| 最新无码专区超级碰碰碰| 人人妻人人澡人人爽欧美一区| 波多野结衣一区二区三区88| 黄色网址手机国内免费在线观看| 婷婷亚洲最大| 国产在线一二三区| 国产福利在线观看精品| 欧美亚洲一区二区三区导航 | 精品少妇人妻无码久久| 中文字幕va| 亚洲最大综合网| 中文字幕乱码二三区免费| 日韩天堂网| 综合亚洲色图| 久久久久久久蜜桃| 97人人模人人爽人人喊小说| 欧美 国产 人人视频| 日本高清有码人妻| 综合人妻久久一区二区精品 | 欧美国产日本高清不卡| 国产成人你懂的在线观看| 国产午夜福利在线小视频| a级毛片免费网站| 久草视频一区| 亚洲欧州色色免费AV| 亚洲AV无码乱码在线观看代蜜桃| 8090成人午夜精品| 成人伊人色一区二区三区| 成人av专区精品无码国产| 91精品国产无线乱码在线| 亚洲精品高清视频| 久久福利网| 欧洲日本亚洲中文字幕| 国产av一码二码三码无码| 亚洲精品日产精品乱码不卡| 亚洲国产成人精品青青草原| www精品久久| 日韩视频福利| 国产成人a在线观看视频| 亚洲视屏在线观看| 欧美中文字幕第一页线路一| 亚洲中文无码h在线观看| 久热re国产手机在线观看| 亚洲最猛黑人xxxx黑人猛交|