女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

支持靜態(tài)分析的高級(jí)程序可視化簡(jiǎn)化了開(kāi)發(fā)過(guò)程

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Paul Anderson ? 2022-06-19 07:13 ? 次閱讀

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

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

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

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

程序結(jié)構(gòu)

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

類型層次結(jié)構(gòu)

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

包括樹(shù)

C 和 C++ 程序通常會(huì)大量使用預(yù)處理器。如果做得好,這可以使程序易于理解,但通常它會(huì)插入一個(gè)阻礙理解的層。不規(guī)范地使用預(yù)處理器可能會(huì)導(dǎo)致依賴?yán)p結(jié),從而導(dǎo)致構(gòu)建問(wèn)題并損害可重用性潛力。因此,能夠查看哪些文件包含在哪里可以幫助工程師解開(kāi)復(fù)雜的依賴關(guān)系。

調(diào)用圖

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

新的調(diào)用圖技術(shù)和工具

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

自上而下的視圖

調(diào)用圖的自上而下視圖有助于回答用戶問(wèn)題,例如“該程序的高級(jí)組件是什么,它們的屬性和關(guān)系是什么?”

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

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

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

在左側(cè)窗口中,用戶選擇了從組件find到組件gnulib的邊。此聚合邊緣匯總的函數(shù)調(diào)用顯示在右側(cè)的窗格中。右側(cè)窗口說(shuō)明當(dāng)用戶放大查看單個(gè)功能時(shí)會(huì)顯示更多細(xì)節(jié)。此縮放級(jí)別進(jìn)一步說(shuō)明了一個(gè)重要特性:開(kāi)發(fā)人員能夠?qū)⒁晥D與代碼本身相關(guān)聯(lián)非常重要。因此,選擇其中一個(gè)函數(shù)會(huì)導(dǎo)致顯示該函數(shù)的源代碼。

自下而上的視圖

通常,開(kāi)發(fā)人員會(huì)希望采用自下而上的方法。這有助于用戶回答諸如“這個(gè)過(guò)程做什么,它如何適應(yīng)程序的結(jié)構(gòu),以及它是如何被調(diào)用的?”之類的問(wèn)題。

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

指標(biāo)層

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

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

pYYBAGKsRdGAFkNLAAYAA9dSzX4298.png

從這個(gè)角度來(lái)看,很容易挑選出風(fēng)險(xiǎn)最大的程序組件。樹(shù)形圖對(duì)于顯示深度嵌套的結(jié)構(gòu)非常有效,并且也非常適合前面討論的縮放范例,其中更多細(xì)節(jié)在更高的放大倍率下顯示。

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

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    19802

    瀏覽量

    233521
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74777
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是什么

    可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是物聯(lián)網(wǎng)技術(shù)與組態(tài)技術(shù)相結(jié)合的產(chǎn)物,是通過(guò)提供豐富的圖形化組件和可視化元素,讓用戶能夠以直觀、便捷的方式對(duì)物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行監(jiān)控、分析和管理的平臺(tái)。以下是其具體介紹: 定義 組態(tài)
    的頭像 發(fā)表于 04-21 10:40 ?190次閱讀

    VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)

    ,光可以在TIR(全反射)作用下傳播,并與光導(dǎo)表面上不同類型的光柵結(jié)構(gòu)相結(jié)合,以耦合光進(jìn)出。在VirtualLab Fusion中,k-Layout可視化工具提供了一種在k域中強(qiáng)大的圖解方法,用于分析
    發(fā)表于 02-21 08:53

    DevEco Studio構(gòu)建分析工具Build Analyzer 為原生鴻蒙應(yīng)用開(kāi)發(fā)提速

    不同構(gòu)建階段的性能差異,進(jìn)一步優(yōu)化構(gòu)建流程。 Build Analyzer作為一款強(qiáng)大的構(gòu)建分析工具,為原生鴻蒙應(yīng)用開(kāi)發(fā)者提供了從任務(wù)追蹤到性能優(yōu)化的全方位支持。通過(guò)其細(xì)粒度的分析和直
    發(fā)表于 02-17 18:06

    七款經(jīng)久不衰的數(shù)據(jù)可視化工具!

    。 Apache Superset:Superset 是由 Airbnb 開(kāi)發(fā)并捐贈(zèng)給 Apache 基金會(huì)的開(kāi)源數(shù)據(jù)可視化工具。它支持多種數(shù)據(jù)源,并提供豐富的可視化效果和實(shí)時(shí)
    發(fā)表于 01-19 15:24

    什么是大屏數(shù)據(jù)可視化?特點(diǎn)有哪些?

    大屏數(shù)據(jù)可視化是指通過(guò)大屏幕展示大量數(shù)據(jù)和信息,以直觀、可視化的方式幫助用戶理解和分析數(shù)據(jù)。這種展示方式通常用于展示復(fù)雜的數(shù)據(jù)集、實(shí)時(shí)監(jiān)控系統(tǒng)、企業(yè)管理儀表盤等。以下是關(guān)于 大屏數(shù)據(jù)可視化
    的頭像 發(fā)表于 12-16 16:59 ?599次閱讀

    智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

    博達(dá)可視化大屏設(shè)計(jì)平臺(tái)在智慧能源領(lǐng)域的價(jià)值體現(xiàn)在實(shí)時(shí)監(jiān)控、數(shù)據(jù)可視化、決策支持和效率提升等方面。借助該平臺(tái),企業(yè)可以輕松搭建智慧能源類可視化大屏,更加精確和高效地管理生產(chǎn)和生活,實(shí)現(xiàn)能
    的頭像 發(fā)表于 11-29 10:00 ?830次閱讀
    智慧能源<b class='flag-5'>可視化</b>監(jiān)管平臺(tái)——助力<b class='flag-5'>可視化</b>能源數(shù)據(jù)管理

    智慧樓宇可視化的優(yōu)點(diǎn)

    智慧樓宇可視化是指通過(guò)數(shù)據(jù)可視化技術(shù)來(lái)展示和分析樓宇的各種數(shù)據(jù),為樓宇管理者和用戶提供直觀、清晰的信息展示和決策支持。以下是智慧樓宇可視化
    的頭像 發(fā)表于 11-19 14:25 ?415次閱讀

    焊接過(guò)程可視化的應(yīng)用前景有哪些

    檢測(cè)。隨著智能制造的快速發(fā)展,焊接過(guò)程可視化技術(shù)逐漸興起,為焊接質(zhì)量控制帶來(lái)了全新的解決方案,今天一起了解焊接過(guò)程可視化的應(yīng)用前景有哪些。 焊接過(guò)
    的頭像 發(fā)表于 11-07 15:33 ?446次閱讀
    焊接<b class='flag-5'>過(guò)程</b><b class='flag-5'>可視化</b>的應(yīng)用前景有哪些

    實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā)工具:鴻道Intewell Developer介紹

    鴻道Intewell Developer是鴻道Intewell操作系統(tǒng)的實(shí)時(shí)應(yīng)用開(kāi)發(fā)環(huán)境,擁有可視化的操作界面,提供規(guī)范、統(tǒng)一、集中的配置入口,提供項(xiàng)目管理、編程開(kāi)發(fā)環(huán)境、目標(biāo)機(jī)配置管理等功能,規(guī)范、
    的頭像 發(fā)表于 11-04 14:51 ?555次閱讀
    實(shí)時(shí)操作系統(tǒng)<b class='flag-5'>開(kāi)發(fā)</b>工具:鴻道Intewell Developer介紹

    汽車異構(gòu)硬件平臺(tái)開(kāi)發(fā)如何進(jìn)行靜態(tài)代碼分析

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

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

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

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

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

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

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

    上位機(jī)可視化界面編程軟件有哪些

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

    c語(yǔ)言怎么做可視化界面

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