調試基于模型的消息序列的系統和方法
【專利摘要】本公開涉及一種調試基于模型的消息序列的系統和方法。其中公開了一種簡化消息序列的系統。所述系統包括縮小組件和消息簡化組件。縮小組件被配置成接收誘導故障消息序列并且基于所述誘導故障消息序列提供縮小序列。縮小序列所具有的消息數量少于或者等于誘導故障消息序列所具有的消息數量。消息簡化模塊被配置成接收縮小序列并且簡化縮小序列內的消息以生成簡化的消息序列。
【專利說明】調試基于模型的消息序列的系統和方法
【背景技術】
[0001]傳統上,設備采用相當特定的功能和特征組進行操作。這種傳統設備的功能和特征對設備的類型是特定的。例如,傳統的電話使用諸如發起呼叫、接收呼叫等與電話相關的功能。在另一示例中,傳統音樂設備使用諸如跳到下一首歌曲、播放、暫停等功能。
[0002]目前的設備經常在單個設備中包括傳統設備的許多特征組。例如,智能電話可以包括涉及電話、音樂播放器、電子消息系統、視頻播放器、相機等的功能和特征。具有多種特征組導致目前的設備比傳統設備更復雜。這種復雜性使這種設備的設計和調試充滿挑戰。因此,存在這種設備的調試設計的更簡化系統的需求。
【專利附圖】
【附圖說明】
[0003]圖1為圖示了利用消息序列簡化系統的設備的框圖。
[0004]圖2為圖示了消息序列簡化系統的框圖。
[0005]圖3A為描繪了能夠與所述系統一起被使用的抽象模型200的示例的狀態圖。
[0006]圖3B為圖示了示出消息部分的誘導故障的消息序列的部分示圖。
[0007]圖4為圖示了簡化消息序列的方法的流程圖。
【具體實施方式】
[0008]現在參考附圖描述本發明,其中相同的附圖標記全文被用于指代相同的元件,并且其中圖示的結構和設備不必按比例繪制。
[0009]如今的設備可以包括移動設備、個人計算機、平板設備。設備也可以包括片上系統(SOC)和嵌入式系統,所述片上系統(SOC)和嵌入式系統包括多種功能和特征組。這些組包括電話、相機、視頻回放、多媒體等。增強這些設備的開發和設計的一種技術是利用抽象模型來測試和調試這種設備的開發。
[0010]在最簡單的形式中,抽象模型以加標記的遷移系統表示。每個遷移采用觸發遷移的消息或事件加標記。此外,遷移也可以采用遷移概率加注釋。抽象模型為實際完成系統的抽象表示。抽象模型規定各種抽象系統狀態以及每個系統狀態在所述系統因到來的消息或者事件而受到刺激時如何改變。
[0011]當消息序列導致偏離預期或者期望響應的系統輸出或行為時,一個問題被識別。這種消息序列稱為誘導故障的消息序列。然后這種誘導故障的消息序列可以被分析以識別故障的根本原因并且改正設計。然而,這種誘導故障消息序列典型地包括相當大數量的消息和高度復雜性。因此,調試這些誘導故障消息序列可能是花時間的并且困難的。
[0012]公開了包括自動縮小和簡化誘導故障消息序列技術的系統和方法。因此,提供簡化的序列以及能夠大大減少與調試設備相關聯的調試工作量(特別是人工調試的工作量)的提示。另外,簡化的序列也可以促進把調試作為目標的特定技術區域(諸如,特定工程部門)的識別,并且因此改進故障分類。
[0013]圖1為圖示了利用消息序列簡化系統100的設備50的框圖。設備50可以為設備(諸如,移動設備、個人計算機、平板設備等)的至少一部分。設備50可以包括多種功能和/或特征組。
[0014]設備50包括一個或者多個處理器52、存儲器54、輸入/輸出(I/O)組件56和消息序列簡化系統100。處理器52被配置成與存儲器54、I/O組件56和消息序列簡化系統100交互。處理器52進一步被配置成執行來自存儲器54的指令(包括序列)。
[0015]存儲器54包括用于設備操作的程序代碼、數據等。存儲器54也可以包括消息序列。I / O組件56被配置成接收設備50外部的信息并且提供來自設備50的信息。
[0016]消息序列簡化系統100接收誘導故障消息序列并且據其生成具有調試提示的簡化序列。下面提供關于這種系統操作的附加細節。誘導故障消息序列能夠被從存儲器54或者由I / O組件56接收。類似地,具有調試提示的簡化序列能夠被存儲在存儲器54中和/或被提供到I / O組件56。
[0017]提供設備50作為示例以便于理解。可以意識到的是其它適合的設備也能夠利用消息序列簡化系統。
[0018]圖2為圖示了消息序列簡化系統100的框圖,其中序列消息可以被簡化。為了生成簡化序列和調試提示,系統100自動分析輸入消息序列以縮小和簡化消息序列。簡化序列和調試提示便于改正或者修改由抽象模型表示的設備的設計。
[0019]可以意識到的是系統100的組件的至少一部分能夠作為由一個或者多個處理器可執行的機器可讀指令等在一個或者多個計算機上執行的軟件中實現。進一步,系統100的組件能夠至少部分存儲在計算機可讀介質上和/或利用計算機可讀介質。
[0020]系統100包括抽象模型102、序列縮小組件104、和消息簡化組件106。抽象模型102為設備(諸如,移動設備)的設計或者行為的模型。所述設備可以包括片上系統或者嵌入式系統,或者為片上系統或者嵌入式系統的一部分。然而,在不背離本公開的精神和范圍的情況下,抽象模型102可以表示不同于移動設備的設備(例如,包括軟件系統、硬件系統、或者任何軟件系統和硬件系統組合的設備)的設計或者行為。另外,由抽象模型102表示的設備的設計或者行為可以在軟件、硬件、固件或者任何它們的組合中實現。
[0021]抽象模型102以加標記的遷移系統表示。抽象模型102具有有限數量的狀態和遷移,并且描述了被表示或者被建模的系統當受到消息刺激時如何執行狀態遷移。由到來的消息觸發遷移。每個遷移都采用從特定狀態觸發特定遷移的消息或者事件加標記。另外,遷移能夠采用遷移概率加注釋。
[0022]抽象模型102注釋或者用于注釋誘導故障消息序列108,并且提供加注釋的消息序列109,其中每個消息采用其抽象模型102中的觸發遷移加注釋。誘導故障消息序列108為導致特定故障的消息的序列。加注釋的消息序列109為誘導故障消息序列108(但具有遷移注釋)。
[0023]抽象模型102能夠定義哪些消息序列是有效的以及哪些是無效的(即導致故障)。抽象模型102能夠被解釋為公共應用編程接口的可執行的規范。它能夠用于定義哪些消息序列是有效的以及哪些是無效的。無效的消息序列把模型102引入專用錯誤狀態并且違反規范。下面描述示例抽象模型,而系統100的描述在示例后繼續。
[0024]圖3A為描繪了能夠與所述系統100 —起使用的抽象模型200的示例的狀態圖。提供用于說明目的的抽象模型200。[0025]模型200采用第一狀態202、第二狀態204和第三狀態206繪出。到所述狀態以及在所述狀態之間的遷移以“a”和“b”示出,其中“a”和“b”為抽象消息。所述遷移響應于在特定狀態時接收的消息而發生。例如,初始或者開始的消息把所述模型遷移到第一狀態202。從這個狀態起,消息“a”導致到第三狀態206的遷移,并且消息“b”導致到第二狀態204的遷移。
[0026]消息序列為導致到模型的各種狀態或者在模型的各種狀態之間的一系列遷移的消息序列。例如,S0-a > Sl-a > S3_b > S2可以表示初始遷移到狀態1202 (SI),接著是到狀態3206 (S3)的遷移“a”,接著是到狀態2204 (S2)的遷移“b”。
[0027]回到系統100和圖2,消息序列108由抽象模型102模擬或者由縮小組件104在抽象模型102上模擬。結果為加注釋的消息序列109。縮小組件104嘗試通過最小化或者減少序列內消息的數量來縮小或者簡化消息序列109。可以意識到的是,消息的變化包括縮小組件104在未加注釋的序列(誘導故障消息序列108)上操作的變化。
[0028]縮小組件104系統地嘗試切掉部分序列108,然后采用剩余序列(稱為候選序列)測試或者重新刺激由模型102表示的系統。如果系統出現與由誘導故障消息序列108產生的相同的故障,則縮小嘗試或者候選序列被認為是成功的。如果系統沒有以與由誘導故障消息序列108產生的相同的故障作出響應,則縮小嘗試認為是不成功的。縮小組件104繼續另一縮小嘗試直到合適的終止條件被滿足。一些合適的終止條件的示例包括:到達時間期限或者直到所有可能的縮小嘗試均已被嘗試。在這一點上,提供導致與由誘導故障消息序列108產生的相同的故障的剩余序列作為縮小的或者部分簡化的序列110。在一個示例中,縮小的序列110所具有的消息數量小于初始誘導故障消息序列108中存在的消息數量的百分之十。
[0029]消息縮小組件104利用來自模型102的信息來識別子序列和候選序列,而不是任意地切掉序列。因此,避免了有效子序列和無效候選序列的測試或者評估,并且縮小的執行也相對更快。
[0030]下面利用圖3A的示例模型200提供這種序列劃分或者縮小嘗試的示例。示例誘導故障消息序列如下示出:
[0031]S0-a > Sl-b > S2_a > S2_b > Sl_b > S2_b > Sl_b > S2_a > S2,
[0032]其中“a”和“b”表示觸發遷移的消息,以及SO表示初始狀態,SI表示第一狀態202,S2表示第二狀態204,和S3表示第三狀態206。
[0033]序列能夠被劃分為前綴、子序列和后綴。前綴通過下式給出:
[0034]S0-a > SI
[0035]前綴為從開始或者初始狀態遷移到模型的正常狀態的消息。這里,SO為初始狀態,以及SI為正常狀態中的一個。
[0036]子序列為以同樣狀態開始和結束的消息序列。在這個示例中,有一些在狀態SI開始和在狀態Si結束的子序列。第一子序列通過下式示出
[0037]Sl-b > S2-a > S2_b > SI
[0038]第二子序列通過下式示出
[0039]Sl-b > S2-b > SI
[0040]后綴通過下式給出[0041]Sl-b > S2-a > S2
[0042]后綴為誘導故障消息序列末尾處的消息序列。在一個示例中,后綴為從開始和結束上述子序列的狀態繼續的消息序列。
[0043]第一簡化候選序列通過去除第一子序列和第二子序列提供:
[0044]S0-a > Sl-b > S2_a > S2
[0045]第二簡化候選序列通過去除第一子序列提供:
[0046]S0-a > Sl-b > S2_b > Sl-b > S2_a > S2
[0047]第三簡化候選序列如示出的通過去除第二子序列提供:
[0048]S0-a > Sl-b > S2_a > S2_b > Sl-b > S2_a > S2
[0049]簡化候選序列能夠由序列縮小組件104測試以確定候選序列是否與示例誘導故障消息產生相同的故障。如果這樣,成功候選序列中的一個可以提供為部分簡化或者縮小的序列。如果有多個成功候選序列,根據選擇標準選擇一個。在一個示例中,標準為簡化候選序列的長度。根據示例標準,如果成功,第一簡化候選序列將選為縮小序列。
[0050]為了便于理解,提供以上示例誘導故障消息序列。誘導故障消息序列108可能會具有相當大數量的致使任何人工簡化都不可行的消息和子序列。例如,誘導故障消息序列108可能包括多達10,000條單獨的消息。
[0051]因此,縮小組件104可以利用合適的技術識別子序列并且生成簡化候選序列。合適的技術的一個示例是德爾塔調試(delta debugging)。通常,德爾塔調試為自動地簡化和隔離誘導故障的輸入的技術。這種技術可用于在劃分之后去除子序列。在縮小消息序列109以生成縮小的序列110之后,序列110的單個消息可以進一步簡化,且調試提示可以按如下生成。
[0052]消息簡化組件106簡化消息序列內的消息。消息簡化組件106從序列縮小組件104接收縮小序列110并且提供具有提示的簡化序列。消息簡化組件106分析縮小序列110中的消息,并且考慮用于序列110內的消息的各種值。作為分析的結果,消息組件106生成與剩余消息部分相關聯的提示和簡化序列112。
[0053]所述提示標識哪個序列和/或哪些消息部分對故障是否可觀測到具有影響。
[0054]所述提示也能夠標識用于分析潛在缺陷的技術組或技術區域。例如,如果提示主要涉及功率管理消息,則簡化的序列能夠被提供到功率管理工程組以便分析。
[0055]圖3B為圖示了示出消息部分的誘導故障消息序列的部分300的示圖。所述部分300被提供作為圖示和描述消息序列中的單個消息和消息部分的示例。
[0056]所述部分300采用第一消息302和第二消息304示出。第一消息302具有從I到η的多個消息部分。第二消息304具有從I到m的多個消息部分。每個消息部分可以具有一個或者多個值,包括缺省值、禁用值等。可以看出,每個消息的消息部分的數量可能會變化。
[0057]回到圖2,消息組件106分析用于縮小序列110內的消息部分的設置值。消息組件106也可以修改消息部分的值并且采用修改的消息部分的值測試縮小序列110。
[0058]缺省值通常認為更普遍,很少可能誘導特定的故障。典型地,設置為非缺省值的消息部分發生故障。因此,可以設置為缺省值的消息部分被認為不大可能具有與所述識別故障的聯系。因此,不能設置為缺省值的消息部分被認為很可能具有與所述識別故障的聯系。[0059]另外,消息部分可以設置為禁用值,其有效禁用所述消息部分和/或相關聯的系統特征。當消息序列仍產生識別故障時被禁用的消息部分被認為不大可能具有與所述識別故障的聯系。
[0060]因此,消息組件106返回縮小消息序列,其中單個消息部分已被設置為缺省值。此夕卜,所述消息序列包括調試提示并且和初始消息序列108 —樣觸發相同的能觀測到的故障。
[0061]圖4為圖示簡化消息序列的方法400的流程圖。方法400簡化誘導故障消息序列且生成調試提示。簡化序列和調試提示便于識別特定故障的原因。
[0062]方法400始于方框402,其中對于消息序列,一個或者多個簡化候選序列被識別。消息序列為可用于事件或者消息驅動系統的消息的序列。消息序列典型地導致系統中的故障。消息序列可以包括注釋,諸如,序列中每個消息的觸發遷移、遷移概率等。
[0063]簡化候選序列可以被使用合適的技術(諸如,上述技術)從消息序列識別。消息序列的各個部分被識別,包括前綴(開始部分)、后綴(結尾部分)和一個或者多個子序列。子序列被使用合適的技術(諸如,貪婪算法)識別,以識別以特定狀態開始和結束的消息序列的部分。然后,子序列被與前綴部分和后綴部分匯編在一起,以生成一個或者多個簡化候選序列。
[0064]—個或者多個簡化候選序列在方框404測試以識別一個或者多個成功的候選序列。成功的候選序列為在a中導致或者再現初始故障的候選序列。
[0065]縮小消息序列根據一個或者多個成功的候選序列在方框406生成。一個或者多個成功的候選序列能夠被分析以確定哪些候選序列為最簡單的。在一個示例中,對于所有成功的候選序列,計算和比較與候選序列中的消息數量相對應的長度。選擇和提供具有最小長度的候選序列作為縮小消息序列。
[0066]消息部分的列表和消息部分的可能值在方框408被識別。所述消息部分為能夠被設置到可能值的單個消息的部分,諸如圖3B中所示。所述可能值可以包括缺省值、禁用值、其它值等。缺省值表示消息部分被經常或者普遍設置到的值。通常,當前設置為缺省值的消息部分不大可能為故障的直接或者近似原因。另外,如果消息部分能夠被禁用,其也不大可能為故障的原因。
[0067]因此,在方框410,消息部分被設置為缺省值,所述消息部分的部分被識別為潛在缺陷并且作為調試提示被提供。從被設置為不再現故障的缺省值的消息部分中識別一個組。消息部分也可用于從縮小消息序列識別和移除非相關消息,以生成簡化消息序列。
[0068]簡化消息序列和調試指示可用于調試與消息序列相關的系統。另外,消息序列和/或調試提示可用于識別或者分配技術區域以執行調試。
[0069]雖然這里提供的方法被圖示和描述為一系列行為或者事件,但本公開并不由這些行為或事件的圖示順序限制。例如,一些行為可以按不同順序發生和/或與不同于這里示出的和/或描述的行為或事件的其它行為或者事件同時發生。另外,不是所有圖示的行為均被需要,并且波形形狀僅僅是說明性的,以及其它波形可能非常不同于圖示的波形。另夕卜,一個或者多個這里描述的行為可以在一個或者多個單獨行為或者階段中執行。
[0070]應注意的是要求的主題可以被使用標準編程和/或工程技術實現為方法、裝置或者制造物品,以生成軟件、固件、硬件或者其任何組合,進而控制計算機實現本公開主題(例如,上面示出的系統為可用于實現本公開方法和/或其變化的電路的非限制性示例)。這里使用的術語“制造物品”旨在包括可以從任何計算機可讀設備、載體、或者介質處訪問的計算機程序。所屬領域技術人員將認識到在不背離本公開主題的范圍和精神的情況下,可以對此配置作出許多修改。
[0071]公開了一種簡化消息序列的系統。系統包括縮小組件和消息簡化組件。縮小組件被配置成接收誘導故障消息序列,并且基于所述誘導故障消息序列提供縮小序列。所述縮小序列所具有的消息數量少于或者等于初始誘導故障消息序列的消息數量。所述消息簡化組件被配置成接收縮小序列,并且簡化縮小序列內的消息以生成簡化消息序列。
[0072]公開了一種簡化消息序列的方法。從消息序列中識別一個或者多個簡化候選序列。測試所述一個或者多個簡化候選序列,以識別至少一個成功候選序列。基于所述成功候選序列生成縮小消息序列。另外,可以識別和測試縮小消息序列的消息部分,以識別可能有缺陷的消息部分提示。
[0073]公開了一種簡化消息部分列表的方法。公開了一種來自消息序列的消息部分列表。所述消息部分設置為第一值。成功候選序列被識別為設置到第一值的、再現初始消息序列故障的消息部分。不成功的候選序列的消息部分被識別和提供為調試提示。
[0074]盡管本發明已經被相對于一個或者多個實現方式圖示和描述了,但在不背離所附權利要求的精神和范圍的情況下,可以對所述圖示的示例作出替代和/或修改。進一步,尤其關于由以上描述的組件或結構(組裝件、設備、電路、系統等)執行的各種功能,用于描述這種組件的術語(包括對“裝置”的引用)旨在與執行(例如,在功能上等價的)描述組件的指定功能的任何組件或者結構相對應,除非另有指示,即使不在結構上與(執行這里示出的本發明的示例性實現方式中的功能的)公開的結構相對應也是如此。另外,盡管本發明的特定特征可能僅相對于若干實現方式中的一個被公開,但這種特征可以按照對于任何給定或者特定的應用可能是令人期待的和有益的方式與一個或者多個其它實現方式的其它特征組合。此外,在術語“包括在內”、“包括”、“具有”、“有”、“采用”或者其變化被用于詳細說明以及權利要求的程度上,這類術語旨在以類似于術語“包含”的形式進行包括。
【權利要求】
1.一種簡化消息序列的系統,包括: 縮小組件,被配置成接收誘導故障消息序列,并且基于所述誘導故障消息序列生成縮小序列;其中與所述誘導故障消息序列相比,所述縮小序列包括數量減少的消息; 消息簡化組件,被配置成接收所述縮小序列,并且簡化所述縮小序列內的多個消息以生成簡化消息序列。
2.如權利要求1所述的系統,其中所述縮小組件被配置成識別所述誘導故障消息序列內的一個或者多個簡化候選序列,并且基于所述一個或者多個簡化候選序列提供所述縮小序列。
3.如權利要求2所述的系統,其中所述縮小組件被配置成使用抽象模型測試一個或者多個簡化候選序列,以識別一個或者多個成功候選序列。
4.如權利要求1所述的系統,其中所述縮小組件使用抽象模型采用其觸發遷移注釋所述誘導故障消息序列的一個或者多個消息。
5.如權利要求1所述的系統,其中所述簡化序列和所述誘導故障消息序列在抽象模型中生成相同的可觀測的故障。
6.如權利要求1所述的系統,進一步包括耦合到所述縮小組件和所述消息簡化組件的抽象模型,其中所述抽象模型為事件驅動模型。
7.如權利要求6所述的系統,其中所述抽象模型表示設備的設計或者行為。
8.如權利要求7所述的系統,其中所述設備的設計或者行為以軟件、固件、硬件或者其任何組合實現。
9.如權利要求1所述的系統,其中所述簡化組件被配置成提供調試提示以及簡化序列。
10.如權利要求9所述的系統,其中所述調試提示指示技術區域。
11.如權利要求1所述的系統,其中所述消息簡化組件被配置成分析所述縮小序列的消息部分以識別可能的缺陷。
12.如權利要求1所述的系統,其中所述消息簡化組件被配置成識別不大可能導致故障的消息部分。
13.如權利要求1所述的系統,其中所述消息簡化組件被配置成識別所述縮小消息序列的消息部分,并且在抽象模型上測試用于識別的消息部分的各種值。
14.如權利要求1所述的系統,其中所述消息簡化組件利用啟發算法從所述縮小序列的一組消息部分中去除無故障消息部分。
15.—種簡化消息序列的方法,所述方法包括: 從所述消息序列中識別一個或者多個簡化候選序列; 測試所述一個或者多個簡化候選序列以識別至少一個成功候選序列;以及 基于所述至少一個成功候選序列生成縮小消息序列。
16.如權利要求15所述的方法,進一步包括識別所述縮小消息序列的消息部分,并且測試所述被識別的消息部分以識別可能有缺陷的消息部分的提示。
17.如權利要求15所述的方法,進一步包括設置所述縮小消息序列的消息部分為缺省值,并且把那些消息部分識別為再現錯誤的成功消息部分。
18.如權利要求17所述的方法,進一步包括從可能的消息部分的列表中移除所述成功消息部分以生成剩余消息部分的列表。
19.如權利要求18所述的方法,進一步包括提供所述剩余消息部分的列表作為調試提/Jn ο
20.如權利要求19所述的方法,進一步包括基于所述調試提示調試系統。
21.一種簡化消息部分列表的方法,所述方法包括: 從消息序列獲取消息部分列表; 把所述消息部分設置為第一值; 識別設置為所述第一值的成功候選序列消息部分,所述消息部分再現初始消息序列故障; 識別設置為所述第一值的不成功候選序列消息部分,所述消息部分不再生初始消息序列故障;以及 提供所述不成功候選序列消息部分作為調試指示。
22.如權利要求21所述的方法,其中所述第一值是缺省值。
23.如權利要求21所述的方法,其中所述初始消息序列故障為由所述消息序列誘導的`故障。
24.如權利要求21所述的方法,其中識別成功候選序列消息部分包括在抽象模型上采用第一值測試所述消息部分。
【文檔編號】G06F9/44GK103885769SQ201310757111
【公開日】2014年6月25日 申請日期:2013年12月20日 優先權日:2012年12月20日
【發明者】R·D·布魯邁爾 申請人:英特爾移動通信有限責任公司