2019/4/7 11:21:33
軟件(jiàn)質量保證正在越來越被人(rén)們所重視,由于軟件(jiàn)質量問題,可(kě)能(néng)會(huì)導緻嚴重經濟損失甚至災難事故的(de)發生。源代碼分(fēn)析技術(shù)是通過分(fēn)析源代碼發現其中存在的(de)代碼缺陷的(de)技術(shù),是提高(gāo)軟件(jiàn)質量最有(yǒu)效的(de)手段之一。源代碼分(fēn)析技術(shù)已經有(yǒu)20多年的(de)發展曆程,它不需設計(jì)測試用(yòng)例,不需運行(xíng)程序,因此被廣泛應用(yòng)于各行(xíng)各業(yè)。
2009年3月(yuè)19日,源代碼分(fēn)析領域的(de)先驅——美(měi)國Klocwork公司在北京裕龍國際酒店(diàn)會(huì)議廳舉辦Klocwork源代碼分(fēn)析最佳實踐研討(tǎo)會(huì)。研討(tǎo)會(huì)以“源代碼分(fēn)析讓開(kāi)發變得更敏捷”爲主題,圍繞源代碼分(fēn)析的(de)作用(yòng)以及如(rú)何将源代碼分(fēn)析融入開(kāi)發流程展開(kāi)研討(tǎo)。會(huì)議現場(chǎng), Klocwork公司的(de)高(gāo)級技術(shù)專家Mark Grice先生詳細介紹了源代碼分(fēn)析技術(shù)的(de)發展,并結合具體技術(shù)案例講解在敏捷開(kāi)發過程中,爲什(shén)麽以及如(rú)何利用(yòng)源代碼分(fēn)析技術(shù)實現效益最大(dà)化,Mark先生還講解了如(rú)何借助持續集成的(de)思想實現第一時間發現并消除代碼缺陷的(de)策略。
敏捷的(de)前提是編寫無缺陷代碼
敏捷宣言中有(yǒu)一條重要原則:首要的(de)進度測量标準是可(kě)正常運行(xíng)的(de)軟件(jiàn)。可(kě)正常運行(xíng)的(de)軟件(jiàn)是指軟件(jiàn)沒有(yǒu)下列問題:無法順利構建、不可(kě)預期的(de)行(xíng)爲、不滿足産品需求及常見的(de)編程缺陷。這一原則不隻适用(yòng)于敏捷方法,很多軟件(jiàn)開(kāi)發過程,包括CMMI和(hé)六西(xī)格瑪等嚴格的(de)開(kāi)發模型,均提倡把編寫無缺陷的(de)代碼作爲基本原則。這些過程都(dōu)采取階段内的(de)缺陷控制(zhì)措施(防止缺陷從引入階段洩漏到(dào)後續階段)。敏捷開(kāi)發過程的(de)叠代周期短,因此,必須保證能(néng)迅速識别并糾正潛在的(de)軟件(jiàn)缺陷,才能(néng)進入下一次叠代。
盡管敏捷開(kāi)發團隊普遍采用(yòng)了持續集成和(hé)回歸測試方法,可(kě)以有(yǒu)效地(dì)發現導緻構建過程或回歸測試異常中斷的(de)缺陷,但(dàn)在清除如(rú)下幾類常見的(de)編程缺陷時效果并不明(míng)顯:内存及資源管理(lǐ)錯誤、空指針問題、未初始化變量、程序數據管理(lǐ)問題、緩沖區溢出、數組越界、未經驗證的(de)用(yòng)戶輸入、存在安全漏洞的(de)代碼、并發異常以及複雜、費時的(de)維護性問題。缺陷多的(de)代碼會(huì)導緻本次叠代或者後續叠代産生風險,形成叠代不徹底或者延期
以工(gōng)具助推敏捷的(de)理(lǐ)想
雖然敏捷宣言中的(de) “個(gè)人(rén)和(hé)交流勝于過程和(hé)工(gōng)具” 原則看似并不強調工(gōng)具的(de)作用(yòng),但(dàn)敏捷開(kāi)發團隊仍然要用(yòng)很多工(gōng)具來支撐——包括軟件(jiàn)配置管理(lǐ)工(gōng)具、構建管理(lǐ)工(gōng)具、需求跟蹤工(gōng)具、測試工(gōng)具、項目管理(lǐ)工(gōng)具及其他(tā)工(gōng)具。
敏捷開(kāi)發團隊使用(yòng)的(de)大(dà)部分(fēn)測試工(gōng)具都(dōu)将重點放(fàng)在功能(néng)測試、單元測試以及構建的(de)質量控制(zhì)上(shàng),而不太強調通過審查源代碼來識别非功能(néng)性的(de)錯誤,比如(rú)編程錯誤。這是由于以前發現這些缺陷的(de)方法太繁瑣,敏捷團隊也(yě)沒有(yǒu)時間做冗長的(de)代碼審查,更不願意爲了發現一個(gè)内存洩露缺陷而進行(xíng)數天的(de)審查。即使是像單元測試這種在敏捷開(kāi)發中不可(kě)缺少(shǎo)的(de)測試,也(yě)需要創建和(hé)管理(lǐ)測試用(yòng)例才能(néng)幫助開(kāi)發人(rén)員查找缺陷。
無缺陷的(de)代碼則可(kě)保證開(kāi)發的(de)進度及敏捷性。爲實施階段内缺陷控制(zhì),編寫無缺陷代碼,需要制(zhì)定一套解決方案,使開(kāi)發人(rén)員能(néng)控制(zhì)缺陷的(de)發現和(hé)清除過程,增強開(kāi)發人(rén)員間的(de)協作,以盡早消除缺陷。
Klocwork Insight是行(xíng)業(yè)領先的(de)源代碼分(fēn)析工(gōng)具,全面支持各類編碼缺陷的(de)檢查,開(kāi)發人(rén)員可(kě)以控制(zhì)分(fēn)析的(de)過程,還能(néng)在無需進行(xíng)後續審查的(de)情況下,獲得集中式分(fēn)析的(de)準确度和(hé)效果。Klocwork Insight支持敏捷開(kāi)發的(de)主要原則,提供下面的(de)特殊功能(néng):
聯機桌面分(fēn)析 Klocwork能(néng)與客戶的(de)開(kāi)發環境集成,既可(kě)以在個(gè)人(rén)開(kāi)發環境級分(fēn)析,也(yě)可(kě)在系統集成建級分(fēn)析。與其他(tā)工(gōng)具不同,Klocwork Insight提供了聯機桌面分(fēn)析功能(néng)(專利技術(shù))。通過聯機桌面分(fēn)析,開(kāi)發人(rén)員可(kě)以在第一時間更準确的(de)發現缺陷。該功能(néng)使開(kāi)發人(rén)員可(kě)以在自己的(de)環境進行(xíng)快速的(de)本地(dì)源代碼分(fēn)析,這種分(fēn)析能(néng)夠收集系統的(de)全局信息用(yòng)于提高(gāo)分(fēn)析的(de)準确度,并爲開(kāi)發人(rén)員提供協同清除缺陷功能(néng)。
檢入無缺陷代碼 利用(yòng)Klocwork在代碼檢入代碼庫之前,通過快速的(de)代碼分(fēn)析,發現并消除缺陷,避免缺陷流入公共範圍和(hé)後續階段。這種無需設計(jì)測試用(yòng)例、無需執行(xíng)程序的(de)高(gāo)效率缺陷掃描方法,大(dà)大(dà)提高(gāo)了敏捷性。
軟件(jiàn)度量和(hé)報告 Klocwork Insight提供了100多種客觀的(de)、可(kě)操作的(de)度量,這些度量可(kě)直接從軟件(jiàn)代碼計(jì)算得到(dào)。Klocwork的(de)軟件(jiàn)度量功能(néng)可(kě)以解答關于軟件(jiàn)開(kāi)發過程的(de)關鍵性問題。例如(rú),敏捷開(kāi)發的(de)一個(gè)關鍵問題是:軟件(jiàn)缺陷是在開(kāi)發人(rén)員的(de)桌面環境上(shàng)即被發現并修複,還是洩漏到(dào)集成構建階段?Klocwork Insight在缺陷還未擴散到(dào)代碼流之前就能(néng)在桌面自動彙集所發現和(hé)修複的(de)缺陷信息。這一獨特功能(néng)使開(kāi)發團隊能(néng)更好地(dì)理(lǐ)解缺陷控制(zhì)活動。這一功能(néng)結合客戶自定義的(de)度量模型――将度量按照(zhào)人(rén)員、開(kāi)發組、地(dì)域、軟件(jiàn)組件(jiàn)或者其他(tā)任何适合于組織的(de)屬性進行(xíng)統計(jì)分(fēn)析――可(kě)以使開(kāi)發團隊在叠代初期就能(néng)識别出代碼庫裏風險最高(gāo)的(de)代碼。
重構 Klocwork Insight支持重構。重構是一種敏捷技術(shù),即在不改變軟件(jiàn)功能(néng)的(de)前提下,重新構造代碼單元以簡化設計(jì)和(hé)操作。Klocwork Insight提供了源代碼的(de)圖形化表示法,顯示構成系統的(de)組件(jiàn)、塊、子塊及它們之間的(de)關聯、依賴關系,輔助進行(xíng)代碼的(de)影響分(fēn)析。代碼的(de)架構分(fēn)析能(néng)力還可(kě)用(yòng)于進行(xíng)“假設(what if)”分(fēn)析,以構造維護性更好、可(kě)重用(yòng)、複雜度更低的(de)系統。
降低總成本 敏捷開(kāi)發團隊通常都(dōu)是工(gōng)作在需要嚴格控制(zhì)成本的(de)環境中。Klocwork Insight的(de)綜合分(fēn)析能(néng)力強,軟件(jiàn)開(kāi)發機構隻需部署一種這樣的(de)工(gōng)具,即可(kě)具備全面的(de)功能(néng),降低了成本:支持C、C++、JAVA多種語言;檢測關鍵性的(de)缺陷;檢測安全漏洞;體系架構分(fēn)析與再工(gōng)程;生成并管理(lǐ)100多種軟件(jiàn)度量。敏捷開(kāi)發團隊使用(yòng)Klocwork工(gōng)具後,還可(kě)降低在用(yòng)戶現場(chǎng)發現軟件(jiàn)缺陷的(de)風險,從而對軟件(jiàn)的(de)實際成本産生直接的(de)影響。
具有(yǒu)說服力的(de)是,Klocwork開(kāi)發團隊本身就是一個(gè)敏捷開(kāi)發團隊。Klocwork使用(yòng)Klocwork Insight對Klocwork源代碼進行(xíng)分(fēn)析,是源代碼分(fēn)析結合敏捷開(kāi)發的(de)實踐者和(hé)受益者。本次研討(tǎo)會(huì),正是結合軟件(jiàn)開(kāi)發領域的(de)先進理(lǐ)念,将Klocwork源代碼分(fēn)析的(de)應用(yòng)提升到(dào)了一個(gè)新的(de)層次,對于将Klocwork源代碼分(fēn)析融入軟件(jiàn)開(kāi)發生命周期具有(yǒu)現實意義。
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967