標識與軟件產品相關聯的隱含假設的制作方法
【專利說明】標識與軟件產品相關聯的隱含假設
[0001]
[0002]應用開發者可構建依賴于軟件開發工具包(SDK)的應用。應用開發者在構建應用時查閱開發者指南(本文簡稱“指南”)。該指南提供了關于對SDK的推薦用法的信息。該指南通常以特設的方式被產生,例如基于對應用開發者的信息需求的非正式評價。
[0003]應用開發者可在他或她無法遵循指南中提供的指示時產生有錯誤的應用。這是可以預料的。在其他情況中,開發者可能精確地遵循指南的指示,卻仍然產生有錯誤的應用。
[0004]概沭
[0005]本文描述了一種包括分析模塊和測試套件產生模塊的軟件開發環境。分析模塊分析軟件產品(如SDK)連同描述該軟件產品的推薦用法的文檔資料(如開發者指南)。該分析可被用于標識與該軟件產品和該文檔資料相關聯的至少一個隱含假設。隱含假設對應于這樣的信息:(a)將在構建滿足聲稱的目標的應用時對應用開發者有用;以及(b)在文檔資料中未被明確表述。在一個情況中,聲稱的目標是與執行認證和/或授權操作的軟件產品相關聯的與安全性有關的目標。
[0006]測試套件產生模塊產生由一個或多個弱點模式組成的測試套件。每個弱點模式對應于由所述分析模塊標識出的一個隱含假設。應用開發者可對照每個弱點模式來測試他的或她的應用。這將揭露出應用是否遭受到與該弱點模式相關聯的弱點。應用開發者然后可用合適的方式修改該應用來去除該弱點(如果認為合適)。
[0007]總而言之,本文所述的功能提供了一種標識開發者指南和/或SDK的實現中所缺少的有用信息的合理且結構化的方式。這促進了設計過程以及產生了更為穩健的應用。
[0008]上面的方法可以顯現在各種類型的系統、組件,方法、計算機可讀存儲介質、數據結構、制品等等中。
[0009]提供本概述以便以簡化形式介紹一些概念;這些概念將在以下的詳細描述中進一步描述。本概述并不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。
[0010]附圖簡沐
[0011]圖1示出軟件產品(如SDK)和可伴隨該軟件產品的文檔資料(如開發者指南)。
[0012]圖2示出應用可在其中被運行的說明性環境。這些應用中的至少一些可依賴于遠程服務器提供的服務。
[0013]圖3提供了可能由于應用開發者缺乏關于與SDK相關聯的隱含假設的知識而引起的弱點的示例。
[0014]圖4示出用于分析SDK及其伴隨的指南的SDK開發環境。該圖還示出用于在開發應用的過程中使用SDK開發環境提供的結果的應用開發環境。
[0015]圖5是提供圖4中所描繪的功能的概覽的過程。
[0016]圖6示出了分析模塊的一個實現。該分析模塊是圖4的SDK開發環境的組件。
[0017]圖7示出SDK可在其中被使用的說明性環境。(圖6的)分析模塊對可將圖7中所示的實體考慮在內的模型起作用。
[0018]圖8以高級形式示出圖6的分析模塊的一個實現。
[0019]圖9是描述圖6的分析模塊的操作的一個方式的過程。
[0020]圖10是描述圖6的分析模塊的操作的進一步說明性細節的過程。
[0021]圖11是描述圖6的分析模塊的操作的進一步說明性細節的過程。
[0022]圖12示出由圖4的應用開發環境提供的測試工具的一個實現。
[0023]圖13是描述圖4的應用開發環境的操作的一個方式的過程。
[0024]圖14示出了可以被用來實現前面的附圖中所示出的特征的任何方面的說明性計算功能。
[0025]貫穿本公開和各附圖,相同的編號被用于引用相同的組件和特征。100系列的標號指的是最初在圖1中所找到的特征,200系列的標號指的是最初在圖2中找到的特征,300系列的標號指的是最初在圖3中找到的特征,依此類推。
[0026]詳細描沐
[0027]本公開是按如下方式來組織的。章節A提供了用于標識和作用于與軟件開發工具包(SDK)相關聯的隱含假設的功能的概覽。所述功能包括SDK開發環境和應用開發環境。章節B提供了關于SDK開發環境的附加細節。章節C提供了關于應用開發環境的附加細節。章節D描述了可被用來實現前述各章節所描述的特征的任何方面的說明性計算功能。
[0028]—些附圖在一個或多個物理組件(被不同地稱為組件、功能、模塊、特征、元件、機制等)的上下文中描述概念。實際實現可以任何方式組織附圖中所示的物理組件。例如,在一個情況中,在附圖中所示的組件與實際物理機制之間可能存在一對一的對應關系。替代地或附加地,附圖中所例示出的任何單個組件都可以通過多個物理機制來實現。替代地或附加地,附圖中的任何兩個或更多單獨的組件可反映由單一實際物理機制所執行的不同功能。
[0029]其他附圖以流程圖形式描述了概念。以此形式,某些操作被描述為構成以某一順序執行的不同的框。這些實現是說明性的而非限制性的。此處描述的某些框可被分組在一起并在單個操作中被執行,某些框可被分成多個組件框,并且某些框可以按與此處所例示出的不同的次序來被執行(包括執行這些框的并行方式)。
[0030]各種組件和流程框可由任何物理和有形機制以任何方式來實現,例如通過運行和/或存儲任何種類的軟件指令的物理機制、通過硬件組件(如芯片實現的邏輯功能)等、和/或它們的任何組合。進而要描述的圖14提供了關于附圖中示出的組件的一個說明性物理實現的附加細節。
[0031]至于術語,短語“被配置成”包含任何種類的物理和有形功能可以被構造來執行所標識的操作的任何方式。術語“邏輯”包含用于執行某一任務的任何物理和有形功能。例如,流程圖中例示出的每一個操作都對應于用于執行該操作的一邏輯組件。在由計算系統實現時,邏輯組件表示作為計算系統的物理部分的、不管用何種方式實現的電子組件。
[0032]權利要求中的短語“用于…的裝置”(如果被使用)旨在援引35 U.S.C.§ 112第六段的規定。除了本特定短語之外,沒有其他語言旨在援引該法條的該部分的規定。
[0033]下列的闡述可以將一個或多個特征標識為“可任選的”。這種類型的陳述不應該被解讀為可以被視為可任選的特征的窮盡指示;也就是說,其他特征也可以被視為可任選的,雖然在文本中沒有明確地標識出。最后,術語“示例性”或“說明性”指的是可能的許多實現中的一個實現。
[0034]A.概覽
[0035]圖1提供了軟件產品102的高級描繪。軟件產品102可對應于任何機器可執行的內容,諸如以任一語言或多種語言(包括標記語言)的組合、參數、設置等表達的計算機指令。此外,軟件產品102可以任何方式來組織其內容。例如,軟件產品102可將其指令組織成一個或多個模塊。在一些情況中,軟件產品102可表不軟件開發工具包(SDK)。為了便于闡述,本說明將在下文將軟件產品102稱為SDK。
[0036]應用開發者可構建以任何方式依賴于SDK的應用。例如,但非限制,應用可使用SDK來提供具有任何性質的一個或多個功能。在一更具體的情況中,應用可使用SDK來與提供一個或多個功能的一獨立系統交互。在該非限制性情形中,SDK可對應于(例如)一個或多個應用編程接口(API)。
[0037]應用開發者可接收伴有文檔資料104的SDK,文檔資料在本文中稱為開發者指南(或為了簡潔起見簡稱為“指南”)。指南提供了輔助應用開發者使用SDK的信息。例如,指南可包括以自然語言表達的解釋SDK所執行的操作的指示,以及應用開發者可將SDK集成于正被開發的應用的方式。替代地或另外地,指南可包括解釋SDK的操作和用法的代碼示例。在一個情況中,產生SDK的實體(本文中稱為SDK開發者)也產生指南。SDK開發者可以任一形式或多種形式(諸如印刷材料、電子內容等)的組合來表達該指南。
[0038]指南可被概念化成包含明確表述的信息106。進一步,SDK和指南可與零個、一個或多個隱含假設108相關聯。如名字所暗示的那樣,明確表述的信息106提供了表面上清晰且明確的指示。相反,每個隱含假設對應于這樣的信息:(a)在指南中未被明確表述;以及(b)對應用開發者正確使用SDK來說有用(或必要)。在一些情況中,指南不會給予應用開發者關于隱含假設108的存在的清晰的表述或指示。這可能造成許多應用開發者“漏掉”隱含假設。在其他情況中,熟練的應用開發者可能能夠基于指南中提供的信息以及他的或她的先前經驗和知識來推斷出隱含假設。但是,無法期待所有應用開發者都將作出這些種類的復雜推斷。
[0039]更正式地說,隱含假設并非只是任何缺失的或隱藏的信息,而是應用開發者所依賴來實現一個或多個目標的信息。某一聲稱的目的可能必須產生具有某些特性的某種應用。例如,應用開發者可能希望使用SDK來執行認證操作和/或授權操作。在此,應用開發者將希望獲得隱含假設的知識以便產生安全應用。否則,所產生的應用可能會受到來自惡意實體的攻擊(下文中更詳細地描述)。
[0040]指南中隱含假設108的存在(如果有的話)