0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

支持靜態(tài)分析的高級程序可視化簡化了開發(fā)過程

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Paul Anderson ? 2022-06-19 07:13 ? 次閱讀

長期以來,圖片往往比文字更能幫助開發(fā)人員理解復雜的程序和審查代碼,因此在軟件開發(fā)中程序可視化的使用很普遍。UML 和其他主要圖形形式的設計符號現(xiàn)在被廣泛接受為溝通軟件設計各個方面的最佳標準機制。一些基于模型的設計工具可以直接從圖形表示中生成代碼。在非正式的范圍內,開發(fā)人員經(jīng)常畫出流程圖或調用圖來告知自己或其他人軟件的重要方面。

UML 圖都非常適合設計,但在開發(fā)過程的后期使用以幫助開發(fā)人員理解現(xiàn)有代碼時存在兩個重要缺點。首先,作為設計抽象,它們(正確地)省略了一些實現(xiàn)細節(jié),但如果目標是理解完成的軟件,這些細節(jié)通常很重要。其次,設計圖在實現(xiàn)方面經(jīng)常是陳舊的,導致對實際存在的系統(tǒng)的描述不準確或不完整。

非正式的可視化往往是短暫的,很少進入程序文檔的正式記錄。

很多時候,開發(fā)人員必須使用的唯一工件就是代碼本身。不幸的是,代碼可視化工具在歷史上一直存在圖表混亂和難以擴展到大型程序等問題。然而,正在出現(xiàn)的新工具正在開始解決這些問題。這些工具的主要優(yōu)勢是它們能夠直接從代碼本身生成有用的可視化。因此,它們保證是準確和最新的。

程序結構

程序由許多不同類型的組件之間的龐大而復雜的依賴網(wǎng)絡組成。試圖同時顯示所有這些的可視化將太笨重而無用。事實上,沒有單一的理想可視化。相反,對特定任務最有用的可視化是與執(zhí)行該任務的工程師使用的心智模型相對應的可視化。一些更有用的程序結構如下:

類型層次結構

開發(fā)人員通常發(fā)現(xiàn)了解數(shù)據(jù)類型相互關聯(lián)的各種方式非常有用。標準的 UML 類圖以一種非常容易理解的形式表示類層次結構,其關聯(lián)和包含關系處于比代碼更高的抽象級別。雖然從設計的角度來看這很好,但程序員通常會發(fā)現(xiàn)查看類型之間的具體關系更有幫助。

包括樹

C 和 C++ 程序通常會大量使用預處理器。如果做得好,這可以使程序易于理解,但通常它會插入一個阻礙理解的層。不規(guī)范地使用預處理器可能會導致依賴纏結,從而導致構建問題并損害可重用性潛力。因此,能夠查看哪些文件包含在哪里可以幫助工程師解開復雜的依賴關系。

調用圖

調用圖,其中每個節(jié)點代表一個子程序,每條邊表示對另一個子程序的一個或多個調用,通常被認為是最有助于可視化的程序結構。子程序是方便開發(fā)人員推理的單元,調用關系很好地捕獲了數(shù)據(jù)和控制流。即使是一個小程序的調用圖也可以有數(shù)百個節(jié)點和數(shù)千條邊,因此人們早就認識到一次可視化整個調用圖基本上是沒有用的。相反,研究人員專注于將調用圖可視化為更小、更容易消化的部分。

新的調用圖技術和工具

由于調用圖在程序理解中的重要性以及可視化它們所涉及的挑戰(zhàn),它們一直是許多研究的主題。特別是,已經(jīng)開發(fā)出新技術來幫助控制調用圖的復雜性。本節(jié)介紹了在提供高級可視化功能的靜態(tài)分析工具中實現(xiàn)的一些機制。

自上而下的視圖

調用圖的自上而下視圖有助于回答用戶問題,例如“該程序的高級組件是什么,它們的屬性和關系是什么?”

為了在程序理解的背景下解決這個問題,工具設計者從諸如谷歌地圖之類的地理地圖程序中汲取靈感。隨著用戶放大,更多細節(jié)開始顯現(xiàn):首先是城市,然后是城鎮(zhèn)、村莊,最后是個別建筑物。顯示的細節(jié)級別與縮放級別相關聯(lián)。

程序由組件組成,這些組件本身又由較小的組件組成,依此類推,形成層次結構;雖然直接調用關系是在低級子程序之間,但它可以投射到包含這些子程序的高級組件。在調用圖的自上而下視圖中,最高級別的項目是目錄。這些可以包含子目錄和文件的某種組合,然后這些文件將包含子程序。因此,從一個框到另一個框的邊僅表示包含在第一個框內的子程序調用了包含在第二個框內的子程序。

事實證明,這種方法在幫助開發(fā)人員更深入地了解程序方面非常有效。

在左側窗口中,用戶選擇了從組件find到組件gnulib的邊。此聚合邊緣匯總的函數(shù)調用顯示在右側的窗格中。右側窗口說明當用戶放大查看單個功能時會顯示更多細節(jié)。此縮放級別進一步說明了一個重要特性:開發(fā)人員能夠將視圖與代碼本身相關聯(lián)非常重要。因此,選擇其中一個函數(shù)會導致顯示該函數(shù)的源代碼。

自下而上的視圖

通常,開發(fā)人員會希望采用自下而上的方法。這有助于用戶回答諸如“這個過程做什么,它如何適應程序的結構,以及它是如何被調用的?”之類的問題。

例如,假設某個程序在特定功能中崩潰。為了找到崩潰的原因并計劃修復,開發(fā)人員可能會首先關注該單個函數(shù),然后探索其附近的其他函數(shù),以查看它調用和調用的其他函數(shù)。以前在白板上手動完成,一個工具可以自動處理繪圖和布局的苦差事。

指標層

通過添加層來顯示各種指標的價值,可以增加可視化的實用性。圖 1 顯示了一個示例。這顯示了一個特別有用的可視化 - 樹狀圖。在樹狀圖中,節(jié)點的面積與度量標準成正比——通常是對項目大小進行編碼的度量標準。然后將子節(jié)點平鋪在頂級節(jié)點內。通常不顯示邊緣。在這個例子中,每個項目的顏色強度編碼了靜態(tài)分析工具發(fā)出的代碼漏洞警告的數(shù)量。

圖 1:中型程序(大約 200 KLOC)的樹形圖。顏色的強度表示在每個部件中檢測到的靜態(tài)分析警告的數(shù)量。

pYYBAGKsRdGAFkNLAAYAA9dSzX4298.png

從這個角度來看,很容易挑選出風險最大的程序組件。樹形圖對于顯示深度嵌套的結構非常有效,并且也非常適合前面討論的縮放范例,其中更多細節(jié)在更高的放大倍率下顯示。

當開發(fā)人員以交互方式使用它們來平移和放大和縮小,甚至添加和刪除節(jié)點和邊緣時,這些可視化是最有用的。如果沒有足夠的響應,與這樣的界面交互可能會非常令人沮喪。顯示數(shù)百個節(jié)點和數(shù)千條邊可能是一個挑戰(zhàn)。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19038

    瀏覽量

    228468
  • C++
    C++
    +關注

    關注

    21

    文章

    2090

    瀏覽量

    73405
收藏 人收藏

    評論

    相關推薦

    汽車異構硬件平臺開發(fā)如何進行靜態(tài)代碼分析

    先進的靜態(tài)代碼分析工具,其新版本中引入的多CCT功能為開發(fā)人員提供了強大的支持,該功能不僅簡化了多編譯器環(huán)境下的代碼
    的頭像 發(fā)表于 10-09 16:15 ?390次閱讀
    汽車異構硬件平臺<b class='flag-5'>開發(fā)</b>如何進行<b class='flag-5'>靜態(tài)</b>代碼<b class='flag-5'>分析</b>

    ARM控制器與Node-Red:獲取氣象網(wǎng)站數(shù)據(jù)

    在當今工業(yè)物聯(lián)網(wǎng)(IoT)蓬勃發(fā)展的背景下,企業(yè)和開發(fā)者們不斷尋求更智能的方式來管理和控制工業(yè)設備。Node-Red作為一種強大的可視化編程工具,簡化了物聯(lián)網(wǎng)應用程序
    的頭像 發(fā)表于 09-21 10:40 ?204次閱讀
    ARM控制器與Node-Red:獲取氣象網(wǎng)站數(shù)據(jù)

    Node-Red可視化編程:簡化開發(fā)的創(chuàng)新之選

    Node-Red 是構建物聯(lián)網(wǎng) (IOT Internet of Things) 應用程序的一個強大工具,其重點是簡化代碼塊的“連接 ” 以執(zhí)行任務。它使用可視化編程方法,允許開發(fā)人員
    的頭像 發(fā)表于 09-21 10:37 ?155次閱讀
    Node-Red<b class='flag-5'>可視化</b>編程:<b class='flag-5'>簡化開發(fā)</b>的創(chuàng)新之選

    江蘇蘇州高校大學智能制造實驗室數(shù)字孿生可視化系統(tǒng)平臺建設項目驗收

    江蘇蘇州高校大學數(shù)字孿生可視化項目主要包括數(shù)字孿生模型構建、數(shù)據(jù)采集與傳輸、可視化界面設計、系統(tǒng)平臺開發(fā)與測試等多個方面。在技術上,巨蟹數(shù)科數(shù)字孿生可視化項目采用了先進的數(shù)字孿生技術、
    的頭像 發(fā)表于 08-05 18:02 ?199次閱讀

    物聯(lián)網(wǎng)時代,為什么需要可視化數(shù)據(jù)大屏

    在互聯(lián)網(wǎng)和大數(shù)據(jù)時代,工業(yè)領域日益增長的數(shù)據(jù)量越來越離不開數(shù)據(jù)分析支持,可視化數(shù)據(jù)大屏便是集中數(shù)據(jù)并展示出來的重要平臺,能夠將各個工廠、車間、設備的數(shù)據(jù)集中并實現(xiàn)可視化分析,讓管理層
    的頭像 發(fā)表于 06-18 13:53 ?263次閱讀
    物聯(lián)網(wǎng)時代,為什么需要<b class='flag-5'>可視化</b>數(shù)據(jù)大屏

    態(tài)勢數(shù)據(jù)可視化技術有哪些

    智慧華盛恒輝態(tài)勢數(shù)據(jù)可視化技術是一種將數(shù)據(jù)以圖形、圖像、動畫等視覺形式展現(xiàn)出來的技術,特別是在處理和分析態(tài)勢數(shù)據(jù)時,該技術能夠將復雜的數(shù)據(jù)轉化為直觀、易于理解的視覺表現(xiàn)。以下是態(tài)勢數(shù)據(jù)可視化技術
    的頭像 發(fā)表于 06-11 15:47 ?304次閱讀

    上位機可視化界面編程軟件有哪些

    上位機可視化界面編程軟件是一類用于開發(fā)圖形用戶界面(GUI)的軟件工具,它們通常提供了豐富的界面元素、易于使用的編程接口和強大的功能。這些軟件可以幫助開發(fā)者快速構建出美觀、易用且功能豐富的應用
    的頭像 發(fā)表于 06-06 10:48 ?1875次閱讀

    c語言怎么做可視化界面

    C語言是一種通用的編程語言,廣泛應用于系統(tǒng)編程、嵌入式開發(fā)等領域。雖然C語言本身并不支持直接創(chuàng)建可視化界面,但通過結合一些圖形庫和工具,我們可以為C語言程序
    的頭像 發(fā)表于 06-06 10:46 ?1742次閱讀

    大屏數(shù)據(jù)可視化的作用和意義

    大屏數(shù)據(jù)可視化則是將這些數(shù)據(jù)以更加直觀、易懂的方式展現(xiàn)出來,幫助用戶快速做出決策、發(fā)現(xiàn)問題、分析趨勢,具有重要的作用和意義。 大屏數(shù)據(jù)可視化的作用體現(xiàn)在以下幾個方面: 1.信息呈現(xiàn)與傳達:通過大屏幕數(shù)據(jù)
    的頭像 發(fā)表于 06-03 17:56 ?542次閱讀

    FUXA基于Web的過程可視化軟件案例

    FUXA——基于Web的過程可視化軟件
    發(fā)表于 04-24 18:32 ?0次下載

    態(tài)勢數(shù)據(jù)可視化技術有哪些

    智慧華盛恒輝態(tài)勢數(shù)據(jù)可視化技術是一種將復雜、動態(tài)的態(tài)勢數(shù)據(jù)以直觀、易于理解的方式展現(xiàn)出來的技術手段。以下是幾種主要的態(tài)勢數(shù)據(jù)可視化技術: 網(wǎng)絡安全態(tài)勢指標可視化分析系統(tǒng)及方法,針對安全態(tài)勢指標不準
    的頭像 發(fā)表于 04-22 15:17 ?338次閱讀

    Stages—研發(fā)過程可視化建模和管理平臺

    Stages是美國UL Solutions旗下UL Method Park GmbH的產(chǎn)品,用于幫助企業(yè)定義、管理、發(fā)布、控制、優(yōu)化其研發(fā)過程,同時使其研發(fā)過程符合CMMI、ASPICE
    的頭像 發(fā)表于 02-05 14:36 ?329次閱讀
    Stages—研<b class='flag-5'>發(fā)過程</b><b class='flag-5'>可視化</b>建模和管理平臺

    低代碼可視化開發(fā) 快速構建工業(yè)物聯(lián)網(wǎng)云平臺

    代碼開發(fā)。 什么是低代碼? 低代碼(Low Code)是一種可視化的軟件開發(fā)方法,通過最少的手動編碼可以更快地交付應用程序。低代碼平臺的圖形用戶界面和拖放功能可自動執(zhí)行
    的頭像 發(fā)表于 01-22 16:46 ?897次閱讀
    低代碼<b class='flag-5'>可視化開發(fā)</b> 快速構建工業(yè)物聯(lián)網(wǎng)云平臺

    ASIC芯片開發(fā)過程

    電子發(fā)燒友網(wǎng)站提供《ASIC芯片開發(fā)過程.ppt》資料免費下載
    發(fā)表于 12-25 10:04 ?1次下載

    一鍵生成可視化圖表/大屏 這13款數(shù)據(jù)可視化工具很強大

    前言 數(shù)字經(jīng)濟時代,我們每天正在處理海量數(shù)據(jù),對數(shù)據(jù)可視化軟件的需求變得突出,它可以幫助人們通過模式、趨勢、儀表板、圖表等視覺輔助工具理解數(shù)據(jù)的重要性。 如果遇到數(shù)據(jù)集需要分析處理,但是你不又知道
    的頭像 發(fā)表于 12-19 17:27 ?4801次閱讀
    一鍵生成<b class='flag-5'>可視化</b>圖表/大屏 這13款數(shù)據(jù)<b class='flag-5'>可視化</b>工具很強大