融入開發流程 源代碼分析讓開發變得更敏捷
作者:程鴻
美國Klocwork公司在北京裕龍國際酒店會議廳舉辦Klocwork源代碼分析最佳實踐研討會。研討會以“源代碼分析讓開發變得更敏捷”為主題,圍繞源代碼分析的作用以及如何將源代碼分析融入開發流程展開研討。
軟件質量保證正在越來越被人們所重視,由于軟件質量問題,可能會導致嚴重經濟損失甚至災難事故的發生。源代碼分析技術是通過分析源代碼發現其中存在的代碼缺陷的技術,是提高軟件質量最有效的手段之一。源代碼分析技術已經有20多年的發展歷程,它不需設計測試用例,不需運行程序,因此被廣泛應用于各行各業。
2009年3月19日,源代碼分析領域的先驅——美國Klocwork公司在北京裕龍國際酒店會議廳舉辦Klocwork源代碼分析***實踐研討會。研討會以“源代碼分析讓開發變得更敏捷”為主題,圍繞源代碼分析的作用以及如何將源代碼分析融入開發流程展開研討。會議現場, Klocwork公司的高級技術專家Mark Grice先生詳細介紹了源代碼分析技術的發展,并結合具體技術案例講解在敏捷開發過程中,為什么以及如何利用源代碼分析技術實現效益***化,Mark先生還講解了如何借助持續集成的思想實現***時間發現并消除代碼缺陷的策略。
敏捷的前提是編寫無缺陷代碼
敏捷宣言中有一條重要原則:首要的進度測量標準是可正常運行的軟件。可正常運行的軟件是指軟件沒有下列問題:無法順利構建、不可預期的行為、不滿足產品需求及常見的編程缺陷。這一原則不只適用于敏捷方法,很多軟件開發過程,包括CMMI和六西格瑪等嚴格的開發模型,均提倡把編寫無缺陷的代碼作為基本原則。這些過程都采取階段內的缺陷控制措施(防止缺陷從引入階段泄漏到后續階段)。敏捷開發過程的迭代周期短,因此,必須保證能迅速識別并糾正潛在的軟件缺陷,才能進入下一次迭代。
盡管敏捷開發團隊普遍采用了持續集成和回歸測試方法,可以有效地發現導致構建過程或回歸測試異常中斷的缺陷,但在清除如下幾類常見的編程缺陷時效果并不明顯:內存及資源管理錯誤、空指針問題、未初始化變量、程序數據管理問題、緩沖區溢出、數組越界、未經驗證的用戶輸入、存在安全漏洞的代碼、并發異常以及復雜、費時的維護性問題。缺陷多的代碼會導致本次迭代或者后續迭代產生風險,形成迭代不徹底或者延期。
#p#以工具助推敏捷的理想
雖然敏捷宣言中的 “個人和交流勝于過程和工具” 原則看似并不強調工具的作用,但敏捷開發團隊仍然要用很多工具來支撐——包括軟件配置管理工具、構建管理工具、需求跟蹤工具、測試工具、項目管理工具及其他工具。
敏捷開發團隊使用的大部分測試工具都將重點放在功能測試、單元測試以及構建的質量控制上,而不太強調通過審查源代碼來識別非功能性的錯誤,比如編程錯誤。這是由于以前發現這些缺陷的方法太繁瑣,敏捷團隊也沒有時間做冗長的代碼審查,更不愿意為了發現一個內存泄露缺陷而進行數天的審查。即使是像單元測試這種在敏捷開發中不可缺少的測試,也需要創建和管理測試用例才能幫助開發人員查找缺陷。
無缺陷的代碼則可保證開發的進度及敏捷性。為實施階段內缺陷控制,編寫無缺陷代碼,需要制定一套解決方案,使開發人員能控制缺陷的發現和清除過程,增強開發人員間的協作,以盡早消除缺陷。
Klocwork Insight是行業領先的源代碼分析工具,全面支持各類編碼缺陷的檢查,開發人員可以控制分析的過程,還能在無需進行后續審查的情況下,獲得集中式分析的準確度和效果。Klocwork Insight支持敏捷開發的主要原則,提供下面的特殊功能:
聯機桌面分析 Klocwork能與客戶的開發環境集成,既可以在個人開發環境級分析,也可在系統集成建級分析。與其他工具不同,Klocwork Insight提供了聯機桌面分析功能(專利技術)。通過聯機桌面分析,開發人員可以在***時間更準確的發現缺陷。該功能使開發人員可以在自己的環境進行快速的本地源代碼分析,這種分析能夠收集系統的全局信息用于提高分析的準確度,并為開發人員提供協同清除缺陷功能。
檢入無缺陷代碼 利用Klocwork在代碼檢入代碼庫之前,通過快速的代碼分析,發現并消除缺陷,避免缺陷流入公共范圍和后續階段。這種無需設計測試用例、無需執行程序的高效率缺陷掃描方法,大大提高了敏捷性。
#p#軟件度量和報告 Klocwork Insight提供了100多種客觀的、可操作的度量,這些度量可直接從軟件代碼計算得到。Klocwork的軟件度量功能可以解答關于軟件開發過程的關鍵性問題。例如,敏捷開發的一個關鍵問題是:軟件缺陷是在開發人員的桌面環境上即被發現并修復,還是泄漏到集成構建階段?Klocwork Insight在缺陷還未擴散到代碼流之前就能在桌面自動匯集所發現和修復的缺陷信息。這一獨特功能使開發團隊能更好地理解缺陷控制活動。這一功能結合客戶自定義的度量模型――將度量按照人員、開發組、地域、軟件組件或者其他任何適合于組織的屬性進行統計分析――可以使開發團隊在迭代初期就能識別出代碼庫里風險***的代碼。
重構 Klocwork Insight支持重構。重構是一種敏捷技術,即在不改變軟件功能的前提下,重新構造代碼單元以簡化設計和操作。Klocwork Insight提供了源代碼的圖形化表示法,顯示構成系統的組件、塊、子塊及它們之間的關聯、依賴關系,輔助進行代碼的影響分析。代碼的架構分析能力還可用于進行“假設(what if)”分析,以構造維護性更好、可重用、復雜度更低的系統。
降低總成本 敏捷開發團隊通常都是工作在需要嚴格控制成本的環境中。Klocwork Insight的綜合分析能力強,軟件開發機構只需部署一種這樣的工具,即可具備全面的功能,降低了成本:支持C、C++、JAVA多種語言;檢測關鍵性的缺陷;檢測安全漏洞;體系架構分析與再工程;生成并管理100多種軟件度量。敏捷開發團隊使用Klocwork工具后,還可降低在用戶現場發現軟件缺陷的風險,從而對軟件的實際成本產生直接的影響。
具有說服力的是,Klocwork開發團隊本身就是一個敏捷開發團隊。Klocwork使用Klocwork Insight對Klocwork源代碼進行分析,是源代碼分析結合敏捷開發的實踐者和受益者。本次研討會,正是結合軟件開發領域的先進理念,將Klocwork源代碼分析的應用提升到了一個新的層次,對于將Klocwork源代碼分析融入軟件開發生命周期具有現實意義。
2009年3月19日,源代碼分析領域的先驅——美國Klocwork公司在北京裕龍國際酒店會議廳舉辦Klocwork源代碼分析***實踐研討會。研討會以“源代碼分析讓開發變得更敏捷”為主題,圍繞源代碼分析的作用以及如何將源代碼分析融入開發流程展開研討。會議現場, Klocwork公司的高級技術專家Mark Grice先生詳細介紹了源代碼分析技術的發展,并結合具體技術案例講解在敏捷開發過程中,為什么以及如何利用源代碼分析技術實現效益***化,Mark先生還講解了如何借助持續集成的思想實現***時間發現并消除代碼缺陷的策略。
敏捷的前提是編寫無缺陷代碼
敏捷宣言中有一條重要原則:首要的進度測量標準是可正常運行的軟件。可正常運行的軟件是指軟件沒有下列問題:無法順利構建、不可預期的行為、不滿足產品需求及常見的編程缺陷。這一原則不只適用于敏捷方法,很多軟件開發過程,包括CMMI和六西格瑪等嚴格的開發模型,均提倡把編寫無缺陷的代碼作為基本原則。這些過程都采取階段內的缺陷控制措施(防止缺陷從引入階段泄漏到后續階段)。敏捷開發過程的迭代周期短,因此,必須保證能迅速識別并糾正潛在的軟件缺陷,才能進入下一次迭代。
盡管敏捷開發團隊普遍采用了持續集成和回歸測試方法,可以有效地發現導致構建過程或回歸測試異常中斷的缺陷,但在清除如下幾類常見的編程缺陷時效果并不明顯:內存及資源管理錯誤、空指針問題、未初始化變量、程序數據管理問題、緩沖區溢出、數組越界、未經驗證的用戶輸入、存在安全漏洞的代碼、并發異常以及復雜、費時的維護性問題。缺陷多的代碼會導致本次迭代或者后續迭代產生風險,形成迭代不徹底或者延期。
#p#以工具助推敏捷的理想
雖然敏捷宣言中的 “個人和交流勝于過程和工具” 原則看似并不強調工具的作用,但敏捷開發團隊仍然要用很多工具來支撐——包括軟件配置管理工具、構建管理工具、需求跟蹤工具、測試工具、項目管理工具及其他工具。
敏捷開發團隊使用的大部分測試工具都將重點放在功能測試、單元測試以及構建的質量控制上,而不太強調通過審查源代碼來識別非功能性的錯誤,比如編程錯誤。這是由于以前發現這些缺陷的方法太繁瑣,敏捷團隊也沒有時間做冗長的代碼審查,更不愿意為了發現一個內存泄露缺陷而進行數天的審查。即使是像單元測試這種在敏捷開發中不可缺少的測試,也需要創建和管理測試用例才能幫助開發人員查找缺陷。
無缺陷的代碼則可保證開發的進度及敏捷性。為實施階段內缺陷控制,編寫無缺陷代碼,需要制定一套解決方案,使開發人員能控制缺陷的發現和清除過程,增強開發人員間的協作,以盡早消除缺陷。
Klocwork Insight是行業領先的源代碼分析工具,全面支持各類編碼缺陷的檢查,開發人員可以控制分析的過程,還能在無需進行后續審查的情況下,獲得集中式分析的準確度和效果。Klocwork Insight支持敏捷開發的主要原則,提供下面的特殊功能:
聯機桌面分析 Klocwork能與客戶的開發環境集成,既可以在個人開發環境級分析,也可在系統集成建級分析。與其他工具不同,Klocwork Insight提供了聯機桌面分析功能(專利技術)。通過聯機桌面分析,開發人員可以在***時間更準確的發現缺陷。該功能使開發人員可以在自己的環境進行快速的本地源代碼分析,這種分析能夠收集系統的全局信息用于提高分析的準確度,并為開發人員提供協同清除缺陷功能。
檢入無缺陷代碼 利用Klocwork在代碼檢入代碼庫之前,通過快速的代碼分析,發現并消除缺陷,避免缺陷流入公共范圍和后續階段。這種無需設計測試用例、無需執行程序的高效率缺陷掃描方法,大大提高了敏捷性。
#p#軟件度量和報告 Klocwork Insight提供了100多種客觀的、可操作的度量,這些度量可直接從軟件代碼計算得到。Klocwork的軟件度量功能可以解答關于軟件開發過程的關鍵性問題。例如,敏捷開發的一個關鍵問題是:軟件缺陷是在開發人員的桌面環境上即被發現并修復,還是泄漏到集成構建階段?Klocwork Insight在缺陷還未擴散到代碼流之前就能在桌面自動匯集所發現和修復的缺陷信息。這一獨特功能使開發團隊能更好地理解缺陷控制活動。這一功能結合客戶自定義的度量模型――將度量按照人員、開發組、地域、軟件組件或者其他任何適合于組織的屬性進行統計分析――可以使開發團隊在迭代初期就能識別出代碼庫里風險***的代碼。
重構 Klocwork Insight支持重構。重構是一種敏捷技術,即在不改變軟件功能的前提下,重新構造代碼單元以簡化設計和操作。Klocwork Insight提供了源代碼的圖形化表示法,顯示構成系統的組件、塊、子塊及它們之間的關聯、依賴關系,輔助進行代碼的影響分析。代碼的架構分析能力還可用于進行“假設(what if)”分析,以構造維護性更好、可重用、復雜度更低的系統。
降低總成本 敏捷開發團隊通常都是工作在需要嚴格控制成本的環境中。Klocwork Insight的綜合分析能力強,軟件開發機構只需部署一種這樣的工具,即可具備全面的功能,降低了成本:支持C、C++、JAVA多種語言;檢測關鍵性的缺陷;檢測安全漏洞;體系架構分析與再工程;生成并管理100多種軟件度量。敏捷開發團隊使用Klocwork工具后,還可降低在用戶現場發現軟件缺陷的風險,從而對軟件的實際成本產生直接的影響。
具有說服力的是,Klocwork開發團隊本身就是一個敏捷開發團隊。Klocwork使用Klocwork Insight對Klocwork源代碼進行分析,是源代碼分析結合敏捷開發的實踐者和受益者。本次研討會,正是結合軟件開發領域的先進理念,將Klocwork源代碼分析的應用提升到了一個新的層次,對于將Klocwork源代碼分析融入軟件開發生命周期具有現實意義。
責任編輯:佚名
來源:
51CTO.com