TWI448965B - 解析程式碼的方法 - Google Patents
解析程式碼的方法 Download PDFInfo
- Publication number
- TWI448965B TWI448965B TW100120953A TW100120953A TWI448965B TW I448965 B TWI448965 B TW I448965B TW 100120953 A TW100120953 A TW 100120953A TW 100120953 A TW100120953 A TW 100120953A TW I448965 B TWI448965 B TW I448965B
- Authority
- TW
- Taiwan
- Prior art keywords
- activities
- state
- activity
- code
- parsing
- Prior art date
Links
Description
本發明是有關於一種系統分析方法,且特別是有關於一種解析程式碼的方法。
一般而言,一個大型的軟體專案通常會包括數個程式碼檔案,使用者倘若要瞭解整個專案的流程,勢必要瀏覽過這些程式碼檔案。然而,由於軟體專案過於龐大,使用者並無法快速地知道整個軟體專案的架構。並且,當使用者針對想要深入瞭解的內容往往會礙於程式碼過於繁雜而不知從何處著手。另外,在開發大型軟體專案時,當有新手加入專案時,亦會因為程式碼過於龐大與複雜而使得上手速度低落。
本發明提供一種解析程式碼的方法,可協助使用者快速理解大型軟體系統的整體架構。
具體而言,本發明提出一種解析程式碼的方法,適用於電子裝置。在此方法中,讀取應用程式專案的資訊設定檔,而在資訊設定檔中搜尋多個活動,其中每一個活動會對應至一個程式碼檔案。並且,依據程式碼檔案中的意圖物件,判斷各個活動的傳遞對象。然後,建立各個活動的生命週期,並且依據這些活動各自的傳遞對象,在這些活動的生命週期之間建立連結關係。
在本發明之一實施例中,在上述讀取應用程式專案的資訊設定檔的步驟之後,在資訊設定檔中搜尋程式進入點,此程式進入點為其中一個活動。
在本發明之一實施例中,解析程式碼的方法更包括在程式碼檔案中搜尋意圖物件。倘若程式碼檔案包括意圖物件,則依據程式碼檔案中的意圖物件,判斷各個活動的傳遞對象。倘若程式碼檔案不包括意圖物件,則搜尋程式碼檔案在資訊設定檔中所對應之活動的意圖過濾器,以依據意圖過濾器來判斷此活動的傳遞對象。
在本發明之一實施例中,解析程式碼的方法更包括建立一分類表格,以在分類表格中記錄所搜尋到的活動與每個活動的傳遞對象。另外,在資訊設定檔中搜尋活動的步驟,可在這些活動各自對應的程式碼檔案中搜尋意圖物件的傳遞參數,並將傳遞參數記錄至分類表格。
在本發明之一實施例中,上述依據這些活動各自的傳遞對象,在這些活動的生命狀態之間建立連結關係的步驟中,可先依據這些活動的執行順序,定義這些活動之間的狀態變化,再依據每個活動的傳遞對象以及狀態變化,建立這些活動的生命狀態之間的連結關係。
在本發明之一實施例中,上述生命週期包括多個生命狀態,這些生命狀態至少包括暫停狀態、重新開始狀態以及繼續狀態。而上述依據這些活動的執行順序,定義這些活動之間的狀態變化的步驟,可尋找這些活動中的程式進入點,以定義程式進入點是由暫停狀態指向另一活動的重新開始狀態。並且,定義傳遞對象為程式進入點的活動是由繼續狀態指向程式進入點的暫停狀態。而其餘活動則定義為由重新開始狀態指向另一活動的重新開始狀態。
在本發明之一實施例中,上述依據這些活動各自的傳遞對象,在這些活動的生命週期之間建立連結關係的步驟,可產生狀態圖,以在其中狀態圖包括各活動的生命狀態,並且記錄每個活動呼叫另一活動時的狀態變化。
在本發明之一實施例中,解析程式碼的方法更包括讀取這些活動各自對應的程式碼檔案,以依序搜尋並記錄程式碼檔案中所有的函式。據此,便可依據所記錄的函式及函式的執行順序,來建立流程圖。
基於上述,本發明可將應用程式專案中的各個活動列出,並依據各活動的傳遞對象在這些活動之間建立連結關係,以便於快速地知道各活動之間的傳遞關係以及狀態變化,進而提升使用者理解程式內容的效率。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
目前工程師在解析一個大型的軟體系統時往往會因為程式碼過於複雜而無法快速理解整體架構。為此,本發明提出一種解析程式碼的方法,讓工程師可以透過基本的運作流程介面快速了解整體程式架構。為了使本發明之內容更為明瞭,以下特舉實施例作為本發明確實能夠據以實施的範例。
圖1是依照本發明第一實施例所繪示的解析程式碼的方法流程圖。在本實施例中,解析程式碼的方法可應用至具有處理單元的電子裝置,以由處理單元來執行解析程式碼的方法各步驟。
請參照圖1,在步驟S105中,讀取應用程式專案的資訊設定檔。在此,應用程式專案中至少包括資訊設定檔與程式碼檔案。以Android應用程式專案而言,資訊設定檔例如為可標記擴展語言(Extensible Markup Language,XML)檔案,用以記錄檔案目錄結構。而程式碼檔案例如為JAVA程式碼檔案。
接著,在步驟S110中,在資訊設定檔中搜尋多個活動(activity)。上述活動可以視為是一種使用者介面程式(user interface program),用以提供使用者一個互動式的介面功能。而資訊設定檔中包括活動標籤(activity tag),因此,可藉由搜尋活動標籤來獲得資訊設定檔中所記錄的所有活動。其中,每一個活動對應至一個程式碼檔案。例如,在資訊設定檔的清單(manifest)標籤中搜尋一關鍵字串“package”來得知此應用程式專案所存放之目錄所在,以在此目錄下依據搜尋到之各活動的名稱來尋找對應的程式碼檔案。
舉例來說,圖2是依照本發明第一實施例所繪示資訊設定檔的代碼示意圖。在本實施例中僅列出資訊設定檔(例如,AndroidManifest.xml)的部分代碼。請參照圖2,藉由關鍵字串“activity android:name”可搜尋到兩筆活動,即活動Bmi與活動Report。並且由關鍵字串“package”可以得知此應用程式專案所存放之目錄為com/demo/android/bmi。由於資訊設定檔包含兩筆活動,因此在應用程式專案中則包括兩個程式碼檔案,例如Bmi.java與Report.java。
之後,在步驟S115中,依據各個活動所對應的程式碼檔案中的意圖物件,判斷各個活動的傳遞對象。具體而言,可在各程式碼檔案中搜尋意圖物件,藉以判斷各活動會將意圖傳遞至哪一個活動。倘若程式碼檔案具有意圖物件,則依據程式碼檔案中的意圖物件,判斷活動的傳遞對象。倘若程式碼檔案不包括意圖物件,則搜尋程式碼檔案在資訊設定檔中所對應之活動的意圖過濾器(intent filter),以依據意圖過濾器來判斷活動的傳遞對象。
一般而言,意圖的使用可以分為顯性(explicit)與隱性(implicit)兩種模式。顯性模式為清楚地指定發起方與接收方,可藉由搜尋程式碼檔案是否具有意圖物件(例如setClass或setComponent)來判斷。以intent.setClass(A.this,B.class)而言,其代表意圖欲從活動A傳遞至活動B。而隱性模式則是利用資訊設定檔中的配置即可由平台來決定意圖的傳遞對象。
在得知每一個活動的傳遞對象之後,在步驟S120中,建立每一個活動的生命週期。生命週期包括多個生命狀態。以Android系統而言,一個活動的生命週期包括底下生命狀態:建立(Create)狀態、開始(Start)狀態、重新開始(Restart)狀態、繼續(Resume)狀態、暫停(Pause)狀態、停止(Stop)狀態以及銷毀(Destroy)狀態。而在本實施例中,為了讓使用者能夠清楚地理解,因此在建立各活動的生命週期時,可以不用建立出全部的生命狀態,而僅建立暫停狀態、重新開始狀態以及繼續狀態即可。或者,可提供選項讓使用者選擇欲建立的生命狀態為何。
最後,在步驟S125中,依據各活動的傳遞對象,在這些活動的生命週期之間建立連結關係。而為了便於理解,可產生一狀態圖,以在狀態圖中繪製各個活動的生命狀態,並且在這些生命狀態之間建立連結關係。也就是說,由狀態圖記錄每一個活動呼叫另一個活動時的狀態變化。舉例來說,可先依據這些活動的執行順序,定義這些活動之間的狀態變化,再依據各個活動的傳遞對象以及狀態變化,建立這些活動的生命狀態之間的連結關係。
進一步地說,在這些活動中尋找程式進入點,以定義程式進入點是由暫停狀態指向其中另一活動的重新開始狀態。以圖2為例,搜尋關鍵字串“android.intent.action.MAIN”而得知程式進入點為活動Bmi。因此,定義活動Bmi的暫停狀態會指向活動Bmi的傳遞對象的重新開始狀態。並且,將傳遞對象為程式進入點的活動定義為由繼續狀態指向程式進入點的暫停狀態。而其餘活動則定義為由重新開始狀態指向另一活動的重新開始狀態。
在定義生命週期之間的狀態變化之後,再依據每一個活動的傳遞對象以及狀態變化,建立這些活動之間的狀態的連結關係。而為了便於建立狀態圖,可建立一分類表格,以在分類表格中記錄所搜尋到的活動與各個活動的傳遞對象。之後,依據分類表格來產生狀態圖。並且,還可進一步在各活動所對應的程式碼檔案中搜尋意圖物件的傳遞參數,並且將傳遞參數記錄至分類表格。
舉例來說,圖3是依照本發明第一實施例所繪示的分類表格的示意圖。請參照圖3,以圖2為例,依據所搜尋到之活動的數量來建立2×2的分類表格300,以列(row)代表來源活動,以行(column)代表目的活動。
在圖2中,根據關鍵字串“android.intent.action.MAIN”可以知道活動Bmi為程式進入點。此時,在欄位310中記錄“Main”,以代表活動Bmi為程式進入點。接著,讀取活動Bmi對應的程式碼檔案(例如Bmi.java),再以“intent.setClass”作為關鍵字串而在Bmi.java找到“intent.setClass(Bmi.this,Report.class)”,進而知道活動Bmi會將意圖傳遞到活動Report。並且,進一步在Bmi.java搜尋關鍵字串“bundle.putString”而來找到活動Bmi要傳遞到活動Report的參數“KEY_HEIGHT”與“KEY_WEIGHT”。此時,將參數“KEY_HEIGHT”與“KEY_WEIGHT”記錄至欄位320中,以代表活動Bmi會將“KEY_HEIGHT”與“KEY_WEIGHT”兩筆參數傳遞至活動Report。
之後,依序讀取下一個活動(活動Report)所對應的程式碼檔案(例如Report.java),而在Report.java中搜尋關鍵字串“intent.setClass”。由於活動Report並不會傳遞參數至活動Bmi,因而無法在其程式碼檔案中搜尋到關鍵字串“intent.setClass”。據此,可先返回讀取資訊設定檔,依據關鍵字串“intent-filter”搜尋活動Report是否包括意圖過濾器。以圖2而言,活動Report亦不包括意圖過濾器,因此,返回讀取活動Report所對應的程式碼檔案,搜尋關鍵字串“backMain”而得知活動Report會返回至作為程式進入點的活動Bmi。此時,將“backMain”記錄於分類表格300的欄位330中。
在將相關資訊填入至分類表格300之後,便可依據分類表格300來繪製狀態圖。
圖4是依照本發明第一實施例所繪示的生命週期狀態圖的示意圖。在本實施例中,活動Bmi僅繪示出生命週期中的暫停狀態、停止狀態以及銷毀狀態。而活動Report僅繪示出生命週期中的重新開始狀態、開始狀態以及繼續狀態。
請參照圖3及圖4,依據分類表格300可以知道,程式進入點為活動Bmi,其定義為由暫停狀態指向其中傳遞對象的重新開始狀態。另外,傳遞對象為程式進入點的活動Report,其定義為由繼續狀態指向程式進入點的暫停狀態。故,自活動Bmi的暫停狀態建立一連結指向活動Report的重新開始狀態,而活動Report則是由其繼續狀態建立一連結指向活動Bmi的暫停狀態。
圖5是依照本發明第二實施例所繪示的生命週期狀態變化的示意圖。在本實施例中,假設資訊設定檔中包括活動A、活動B及活動C,活動A、活動B及活動C所對應的程式碼檔案分別為A.java、B.java及C.java。
在資訊設定檔中,以關鍵字串“activity”進行搜尋可獲得活動A、活動B及活動C。此時,建立3×3的分類表格500。接著,依據關鍵字串“android.intent.action.MAIN”可以得知活動A為程式進入點,而在欄位510中填入“Main”,以代表活動A為程式進入點。然後,在活動A所對應的程式碼檔案A.java中依據關鍵字串“intent.setClass”而得知活動A會在某個狀況之下傳遞意圖給活動B,而在另一個狀態之下傳遞意圖給活動C。例如,搜尋到intent.setClass(A.this,B.class))與intent.setClass(A.this,C.class)。再藉由尋找關鍵字串“bundle.putString”而得知活動A會傳遞參數“A-1”至活動B,活動A會傳遞參數“A-2”至活動C。據此,在欄位520中填入“A-1”,在欄位530中填入“A-2”。
而在活動B所對應的程式碼檔案B.java中搜尋到“intent.setClass(B.this,C.class)”,而得知活動B的傳遞對象為活動C,且由關鍵字串“bundle.putString”得知傳遞的參數為“B-1”,而在欄位540中填入“B-1”。
另外,在活動C所對應的程式碼檔案C.java中搜尋到“intent.setClass(C.this,A.class),而得知活動C的傳遞對象為活動A,且由由關鍵字串“bundle.putString”得知傳遞的參數為“C-1”,而在欄位550中填入“C-1”。
之後,依據分類表格500來繪製狀態圖。圖6是依照本發明第二實施例所繪示的生命週期狀態圖的示意圖。在本實施例中,活動A僅繪示出生命週期中的暫停狀態、停止狀態以及銷毀狀態。而活動B及活動C僅繪示出生命週期中的重新開始狀態、開始狀態以及繼續狀態。
請參照圖5及圖6,依據分類表格500可以知道,程式進入點為活動A,其定義為由暫停狀態指向其中傳遞對象的重新開始狀態。另外,傳遞對象為程式進入點的活動C,其定義為由繼續狀態指向程式進入點的暫停狀態。而活動B則定義為由其重新開始狀態指向另一活動(傳遞對象)的重新開始狀態。故,自活動A的暫停狀態分別建立一連結指向活動B及活動C的重新開始狀態。活動B是由其重新開始狀態建立一連結指向活動C的重新開始狀態。而活動C則是由其繼續狀態建立一連結指向活動A的暫停狀態。
由圖6可以知道,此應用程式專案有兩種狀況。其中一狀況為,當活動A被暫停由活動C執行時,活動C此刻會由重新開始狀態開始執行,而當活動C執行完便會轉跳回活動A先前的暫停狀態。另一狀況為,由活動A轉跳至活動B,再由活動B轉跳至活動C,並且由活動C轉跳回活動A。
另外,還可讀取各活動對應的程式碼檔案,依序搜尋並記錄程式碼檔案中所有的函式,以依據所記錄的這些函式及這些函式的執行順序,建立一流程圖。舉例來說,圖7是依照本發明第二實施例所繪示程式碼流程解析的示意圖。請參照圖7,假設活動A、活動B及活動C是依照其在資訊設定檔中所出現的順序來繪製此圖。其中,可點選其中任一活動的方塊以展開其程式碼。例如,將活動B展開,則會顯示出活動B對應的程式碼檔案中所包括之函式的流程圖。而點選函式所對應的方塊還可顯示出其子流程圖(未繪示)。並且,還可以在每一個函式於流程圖中所對應的方塊建立一鏈結以連接至對應的函式,以在使用者點選流程圖中的函式方塊時,開啟對應的函式的程式碼(未繪示)。
值得一提的是,可提供一種電腦程式產品,其係包含程式指令用以執行上述解析程式碼的方法,此電腦程式產品基本上是由多數個程式碼片段所組成的(例如建立組織圖程式碼片段、簽核表單程式碼片段、設定程式碼片段、以及部署程式碼片段),並且這些程式碼片段在載入電子裝置中並執行之後,即可由處理單元來完成上述解析程式碼的方法各步驟。
綜上所述,透過上述實施例可將應用程式專案中的各個活動列出,並依據各活動的傳遞對象在這些活動之間建立連結關係,以便於快速地知道各活動之間的傳遞關係以及狀態變化,以及得知各活動所欲傳遞之參數。並且,還可以階層方式解析程式碼而建立一程式碼流程圖,以供使用者展開流程中的任一步驟,進一步理解每一個細部流程的程式架構。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
300、500...分類表格
310~330、510~550...欄位
S105~S125...本發明第一實施例之解析程式碼的方法各步驟
圖1是依照本發明第一實施例所繪示的解析程式碼的方法流程圖。
圖2是依照本發明第一實施例所繪示資訊設定檔的代碼示意圖。
圖3是依照本發明第一實施例所繪示的分類表格的示意圖。
圖4是依照本發明第一實施例所繪示的生命週期狀態圖的示意圖。
圖5是依照本發明第二實施例所繪示的生命週期狀態變化的示意圖。
圖6是依照本發明第二實施例所繪示的生命週期狀態圖的示意圖。
圖7是依照本發明第二實施例所繪示程式碼流程解析的示意圖。
S105~S125...本發明第一實施例之解析程式碼的方法各步驟
Claims (9)
- 一種解析程式碼的方法,適用於一電子裝置,而該方法包括:讀取一應用程式專案的一資訊設定檔;在該資訊設定檔中搜尋多個活動,其中每一該些活動對應至一程式碼檔案;依據該程式碼檔案中的一意圖物件,判斷每一該些活動的傳遞對象;建立每一該些活動的一生命週期;以及依據該些活動各自的傳遞對象,在該些活動的生命週期之間建立一連結關係。
- 如申請專利範圍第1項所述之解析程式碼的方法,其中在讀取該應用程式專案的該資訊設定檔的步驟之後,更包括:在該資訊設定檔中搜尋一程式進入點,其中該程式進入點為該些活動其中之一。
- 如申請專利範圍第1項所述之解析程式碼的方法,更包括:在該程式碼檔案中搜尋該意圖物件;倘若該程式碼檔案包括該意圖物件,則依據該程式碼檔案中的該意圖物件,判斷每一該些活動的傳遞對象;以及倘若該程式碼檔案不包括該意圖物件,則搜尋該程式碼檔案在該資訊設定檔中所對應的該些活動其中之一的一意圖過濾器,以依據該意圖過濾器來判斷該活動的傳遞對象。
- 如申請專利範圍第1項所述之解析程式碼的方法,更包括:建立一分類表格,以在該分類表格中記錄所搜尋到的該些活動與每一該些活動的傳遞對象。
- 如申請專利範圍第4項所述之解析程式碼的方法,其中在該資訊設定檔中搜尋該些活動的步驟之後,更包括:在該些活動各自對應的該程式碼檔案中搜尋該意圖物件的一傳遞參數;以及將該傳遞參數記錄至該分類表格。
- 如申請專利範圍第1項所述之解析程式碼的方法,其中依據該些活動各自的傳遞對象,在該些活動的生命狀態之間建立該連結關係的步驟包括:依據該些活動的一執行順序,定義該些活動之間的一狀態變化;以及依據每一該些活動的傳遞對象以及該狀態變化,建立該些活動的生命狀態之間的該連結關係。
- 如申請專利範圍第6項所述之解析程式碼的方法,其中該生命週期包括多個生命狀態,該些生命狀態至少包括一暫停狀態、一重新開始狀態以及一繼續狀態,而依據該些活動的該執行順序,定義該些活動之間的該狀態變化的步驟包括:尋找該些活動中的一程式進入點,以定義該程式進入點是由該暫停狀態指向該些活動其中另一的該重新開始狀態;定義該傳遞對象為該程式進入點的活動是由該繼續狀態指向該程式進入點的該暫停狀態;以及定義其餘該些活動是由該重新開始狀態指向該些活動其中之另一的該重新開始狀態。
- 如申請專利範圍第7項所述之解析程式碼的方法,其中依據該些活動各自的傳遞對象,在該些活動的生命週期之間建立該連結關係的步驟包括:產生一狀態圖,其中該狀態圖包括每一該些活動的該些生命狀態,並且記錄該些活動其中之一呼叫該些活動其中另一時的該狀態變化。
- 如申請專利範圍第1項所述之解析程式碼的方法,更包括:讀取該些活動各自對應的該程式碼檔案;依序搜尋並記錄該程式碼檔案中所有的函式;以及依據所記錄的該些函式及該些函式的一執行順序,建立一流程圖。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100120953A TWI448965B (zh) | 2011-06-15 | 2011-06-15 | 解析程式碼的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100120953A TWI448965B (zh) | 2011-06-15 | 2011-06-15 | 解析程式碼的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201250586A TW201250586A (en) | 2012-12-16 |
TWI448965B true TWI448965B (zh) | 2014-08-11 |
Family
ID=48139298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100120953A TWI448965B (zh) | 2011-06-15 | 2011-06-15 | 解析程式碼的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI448965B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826256A (en) * | 1991-10-22 | 1998-10-20 | Lucent Technologies Inc. | Apparatus and methods for source code discovery |
TWI254866B (en) * | 2004-04-19 | 2006-05-11 | Mitsubishi Electric Corp | Program construction device and program construction method |
US20090007087A1 (en) * | 2006-02-20 | 2009-01-01 | Fujitsu Limited | Program analyzing method, program analyzing apparatus and program analyzing program |
-
2011
- 2011-06-15 TW TW100120953A patent/TWI448965B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826256A (en) * | 1991-10-22 | 1998-10-20 | Lucent Technologies Inc. | Apparatus and methods for source code discovery |
TWI254866B (en) * | 2004-04-19 | 2006-05-11 | Mitsubishi Electric Corp | Program construction device and program construction method |
US20090007087A1 (en) * | 2006-02-20 | 2009-01-01 | Fujitsu Limited | Program analyzing method, program analyzing apparatus and program analyzing program |
Also Published As
Publication number | Publication date |
---|---|
TW201250586A (en) | 2012-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11544257B2 (en) | Interactive table-based query construction using contextual forms | |
US10621068B2 (en) | Software code debugger for quick detection of error root causes | |
Kouzis-Loukas | Learning scrapy | |
US9348736B2 (en) | System, method, and computer readable medium for universal software testing | |
US20190155802A1 (en) | Supplementing events displayed in a table format | |
Clifford et al. | Tracking provenance in a virtual data grid | |
US9021442B2 (en) | Dynamic scenario testing of web application | |
US9524279B2 (en) | Help document animated visualization | |
US9471213B2 (en) | Chaining applications | |
US20090228871A1 (en) | Managing generation of security tests | |
JP7096762B2 (ja) | コントロールを使用して汎用プログラムを構成する技法 | |
US9135591B1 (en) | Analysis and assessment of software library projects | |
US11820020B2 (en) | Robotic process automation supporting hierarchical representation of recordings | |
US20230052190A1 (en) | Repeating pattern detection within usage recordings of robotic process automation to facilitate representation thereof | |
US11055209B2 (en) | Application analysis with flexible post-processing | |
Oliveira | pytest Quick Start Guide: Write better Python code with simple and maintainable tests | |
TWI448965B (zh) | 解析程式碼的方法 | |
US9727635B2 (en) | Combined code searching and automatic code navigation | |
JP2009009362A (ja) | プログラムの変数管理システム | |
JP5296128B2 (ja) | 構造化文書管理装置、方法およびプログラム | |
Acuña | Understanding legacy workflows through runtime trace analysis | |
CN116737216A (zh) | 技术资源的管理方法、装置、设备、存储介质和程序产品 | |
US9208151B2 (en) | Method, program, and system for specification verification | |
CN114003234A (zh) | 小程序局部编译方法、装置、设备及计算机可读存储介质 | |
CN115858392A (zh) | 一种基于内存读取与软件建模的AndroidTest方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |