專利名稱:用于快速設(shè)備開發(fā)的集成開發(fā)環(huán)境的制作方法
用于快速設(shè)備開發(fā)的集成開發(fā)環(huán)境背景原型設(shè)備的實現(xiàn)是開發(fā)新計算設(shè)備的過程的關(guān)鍵部分,而目前此過程既耗時又昂貴。原型可用于實驗室測試和/或用于用戶試驗,而這意味著原型通常需要在大小、重量、性能等方面充分代表最終產(chǎn)品,這組成了快速生產(chǎn)適當(dāng)原型的困難。在能夠生產(chǎn)代表性原型的情況下,具有最終用戶的消費者計算設(shè)備的試驗可在開發(fā)過程的早期執(zhí)行,而這可提供關(guān)于設(shè)備的價值、它是否保證進一步的開發(fā)、以及什么改變可能使其更有用、對用戶更友好等的有用信息。為了開發(fā)代表性原型,通常需要執(zhí)行基本上與創(chuàng)建最終產(chǎn)品相同的步驟,例如,設(shè)計PCB并制作該PCB,開發(fā)固件來在設(shè)備上運行,設(shè)計外殼并制造該外殼并隨后組裝該設(shè)備。這帶來了很大的初期花費并且迭代起來非常耗時而且昂貴。以下描述的各實施例不限于解決已知原型化(prototyping)或開發(fā)方法和工具的 缺點中的任一個或全部的實現(xiàn)。概述下面呈現(xiàn)了本發(fā)明的簡要概述,以便向讀者提供基本理解。本概述不是本發(fā)明的詳盡概覽,并且不標(biāo)識本發(fā)明的關(guān)鍵/重要元素,也不描述本發(fā)明的范圍。其唯一的目的是以簡化形式呈現(xiàn)此處所公開的一些概念,作為稍后呈現(xiàn)的更詳細(xì)的描述的序言。描述一種用于快速設(shè)備開發(fā)的集成開發(fā)環(huán)境。在一實施例中,該集成開發(fā)環(huán)境向用戶提供多個不同視圖,每個視圖與設(shè)備設(shè)計的不同方面(諸如硬件配置、軟件開發(fā)和物理設(shè)計)相關(guān)。該設(shè)備(它可以是原型設(shè)備)是由從數(shù)據(jù)庫選擇的多個對象形成的,并且該數(shù)據(jù)庫為每個對象存儲多個數(shù)據(jù)類型,諸如用于該對象的3D模型、軟件庫和代碼存根(code-stub),以及硬件參數(shù)。用戶可通過以任何次序選擇不同視圖來設(shè)計該設(shè)備,并且可在選擇時在各視圖間切換。在一個視圖中所做的改變(諸如對新對象的選擇)被饋送到其他視圖中。通過結(jié)合附圖參考以下詳細(xì)描述,可更易于領(lǐng)會并更好地理解許多附帶特征。附圖描述根據(jù)附圖閱讀以下詳細(xì)描述,將更好地理解本發(fā)明,在附圖中圖I是用于設(shè)備的快速開發(fā)的集成開發(fā)環(huán)境的示意圖;圖2示出約束解決器(constraint resolver)的操作的示例方法的流程圖;圖3是示出圖I中示出的集成開發(fā)環(huán)境的一種替代表示的示意圖;圖4包括示出硬件配置引擎和軟件開發(fā)引擎的操作的示例方法的兩個流程圖;圖5是示出物理設(shè)計引擎的操作的示例方法的流程圖;圖6、8、9和11是用于設(shè)備的快速開發(fā)的集成開發(fā)環(huán)境的進一步示例的示意圖;圖7示出模擬引擎的操作的示例方法的流程圖;
圖10和12示出同步元件的操作的示例方法的流程圖;以及圖13示出可在其中實現(xiàn)本文所描述的各種方法的實施例的示例性的基于計算的設(shè)備。
在各個附圖中使用相同的附圖標(biāo)記來指代相同的部件。詳細(xì)描述下面結(jié)合附圖提供的詳細(xì)描述旨在作為本發(fā)明示例的描述,并不旨在表示可以構(gòu)建或使用本發(fā)明示例的唯一形式。本描述闡述了本發(fā)明示例的功能,以及用于構(gòu)建和操作本發(fā)明示例的步驟的序列。然而,可以通過不同的示例來實現(xiàn)相同或等效功能和序列。圖I是用于設(shè)備的快速開發(fā)的集成開發(fā)環(huán)境(IDE)的示意圖,其中該設(shè)備包括物理外殼和執(zhí)行一些預(yù)先變成的軟件的一些內(nèi)部組件模塊,諸如電子元件或傳感器。在一示例中,該IDE可被用于快速原型化(prototype)設(shè)備,而后面的描述中對原型設(shè)備的開發(fā)的任何引用均是僅作為示例。該IDE向用戶提供了在單一開發(fā)環(huán)境內(nèi)的多個不同視圖101-103,每個視圖使用戶能夠開發(fā)設(shè)備的不同方面。這些視圖將在以下更詳細(xì)地描述。用戶在開發(fā)設(shè)備時可以任何次序選擇這些視圖,并且可在他們選擇時在各視圖間切換,并且如此該IDE提供了一種靈活的非線性的設(shè)備設(shè)計方式。這些視圖被提供各視圖間同步的元件鏈接,使得用戶在一個視圖中對設(shè)計所做的改變反映在其他視圖中。在本示例中,該元件 是約束解決器104。這些視圖中的每一個具有對對象數(shù)據(jù)存儲106 (其也可被稱為智能庫)和實例化專用(instantiation-specific)數(shù)據(jù)存儲108的訪問。對象數(shù)據(jù)存儲106存儲關(guān)于可用于搭建設(shè)備的對象或?qū)ο箢惖膶嵗毩?instantiation-independent)的數(shù)據(jù),而實例化專用數(shù)據(jù)存儲108存儲被創(chuàng)建的設(shè)備專用的數(shù)據(jù),諸如可以是用戶指定或推斷的參數(shù)。術(shù)語‘推斷的參數(shù)’在此處用于指代由該IDE (例如,在該IDE的任何視圖內(nèi))生成的任何參數(shù)。這些參數(shù)可作為用戶輸入的結(jié)果而生成(例如,所選擇的對象的組合、所編寫的特定代碼等)。要理解,一對象可包括其他對象的分組的群集。在許多實施例中,該IDE從對象數(shù)據(jù)存儲106僅讀取數(shù)據(jù),而對實例化專用數(shù)據(jù)存儲108進行數(shù)據(jù)讀寫。硬件配置視圖101顯示可用對象(或?qū)ο箢?的細(xì)節(jié)并允許用戶從對象數(shù)據(jù)存儲106選擇對象(或?qū)ο箢?來形成設(shè)備。例如,用戶可選擇存儲器模塊、處理器、顯示器、電池、用戶輸入設(shè)備(諸如按鍵板(keypad))、GPRS (通用分組無線電業(yè)務(wù))模塊等。用戶輸入設(shè)備提供了對象類的示例,因為可存在可被選擇的許多不同類型的用戶輸入設(shè)備(對象)。在另一示例中,可存在用戶能夠選擇的許多不同的顯示器(每個均是不同的對象),這些顯示器形成對象類‘顯示器’。在第三示例中,用戶可選擇對象類‘電池’,這等同于用戶說“使用任何電池”,或可選擇特定電池,這等于用戶說“使用這一特定電池”(例如,具有特定容量的電池或特定類型的電池)。在以下描述中,對對象的任何引用均僅是示例性的,并且也可稱為對象類。硬件配置視圖101還允許用戶配置對象參數(shù),例如,用戶可選擇對象類‘顯示器’并配置對象參數(shù)來指定最小顯示器尺寸、顯示器分辨率等。在某些示例中,這可等同于選擇類的子集,例如,類‘顯示器’中具有超過用戶指定參數(shù)的尺寸的所有顯示器。已經(jīng)被配置的任何對象參數(shù)被存儲在實例化專用數(shù)據(jù)存儲108中(此信息是實例化專用的,因為它與特定設(shè)備構(gòu)造(build)有關(guān))。所選擇的對象的細(xì)節(jié)也可被存儲在實例化專用數(shù)據(jù)存儲108中或可以其他方式記錄(例如,通過將適當(dāng)?shù)膶ο髷?shù)據(jù)從對象數(shù)據(jù)存儲106加載到中心儲存庫中,如下面參考圖9-12更詳細(xì)地描述的)。被提供給用戶以使用戶能夠做出選擇(以及可以任何形式而不必是列表形式提供給用戶)的可用對象的列表可包括在對象數(shù)據(jù)存儲106中的所有對象。然而,可基于已經(jīng)做出的選擇(例如,考慮對象或所指定的任何約束之間的不兼容性,如下面更詳細(xì)地描述的)、基于存儲在實例化專用數(shù)據(jù)存儲108中的(以及可能已在其他視圖中生成的)實例化專用參數(shù)、和/或取決于其他因素來更新這個可用對象列表。可使用自動化決策算法來生成可用對象的列表。在一實施例中,可用于創(chuàng)建該設(shè)備的對象可包括為了設(shè)備的快速原型化或為了非原型設(shè)備的快速開發(fā)而設(shè)計的一組模塊化硬件元件。該組元件例如可包括包含主處理器以及多個其他電子模塊能容易地與其連接的核心模塊。在一示例中,每個電子模塊可用飛線(flying lead)和兼容連接器來適合??山?jīng)由該核心模塊向每一外圍模塊提供電力,或者外圍模塊可各自包括電池或到電源的連接(例如,經(jīng)由USB)。例如,外圍模塊可提供(超過在核心模塊上所提供的)用于輸入、輸出、通信、電力、顯示、傳感和致動的附加能力。在某些示例中,可使用共同的通信協(xié)議,但是在其他示例中,可在核心模塊和不同外圍模塊之間使用不同通信協(xié)議。軟件開發(fā)視圖102使用戶能夠編寫計算機代碼以在該設(shè)備上運行并提供到編譯 器的前端以及提供對調(diào)試工具和模擬器的訪問。該IDE可以是基于微軟.NET微框架的,該框架允許用C#來編程設(shè)備(其可以是小型并且資源受約束的)并利用.NET微框架庫或其他高級庫所提供的高級編程原語。軟件開發(fā)視圖102使配置和使用單個對象(在一實施例中,其可包括從該組模塊化硬件元件中選擇的模塊)的過程自動化。在硬件配置視圖101 (或其他視圖)中所選擇的對象所使用的任何庫和代碼存根從對象數(shù)據(jù)存儲106被自動加載。當(dāng)編譯軟件時,生成與該設(shè)備相關(guān)聯(lián)的多個推斷的參數(shù),諸如存儲該代碼所需的存儲器的量和執(zhí)行該代碼所需的存儲器的量。這些推斷的參數(shù)被存儲在實例化專用的數(shù)據(jù)存儲108中。軟件開發(fā)視圖102可生成的推斷的參數(shù)的另一示例是預(yù)期電池壽命(取決于用戶所選擇的電池)。物理設(shè)計視圖103顯示該設(shè)備的3D (三維)表示(基于所選擇的對象),該表示可包括該設(shè)備的外殼的表示。初始3D表示(例如,其是在任何用戶輸入之前在此視圖中顯示的)和外殼可在該IDE內(nèi)自動生成。物理設(shè)計視圖允許用戶操縱此3D表示來從任何視角(perspective)查看它以及在空間中重新安排所選擇的對象。該物理設(shè)計視圖還允許用戶為該設(shè)備指定配置參數(shù)(例如,總大小約束或其他物理設(shè)計規(guī)則)或為單個對象指定配置參數(shù)(例如,顯示器必須位于該設(shè)備的所標(biāo)識的面上或者必須與特定用戶輸入模塊(例如,按鍵板)位于同一面上)。這些配置參數(shù)(當(dāng)它們與整個設(shè)備相關(guān)而不與該設(shè)備內(nèi)的特定對象相關(guān)時它們可被稱為‘全局參數(shù)’)與該物理設(shè)計視圖所生成的任何推斷的參數(shù)(諸如該設(shè)備的總大小和形狀、自動生成的外殼的形狀等)一起被存儲在實例化專用數(shù)據(jù)存儲108中。在違反任何物理設(shè)計規(guī)則的情況下(例如,所選擇的對象不能適合放入該設(shè)備的用戶指定的最大尺度內(nèi)),該物理設(shè)計視圖可把此情況的視覺化提供給用戶,例如,通過突出顯示該3D表示的部分或者向用戶顯示消息。對象數(shù)據(jù)存儲106存儲關(guān)于不同對象或?qū)ο箢惖膶嵗毩⒌臄?shù)據(jù),這些對象可被組裝以形成設(shè)備,并且多個不同類型的數(shù)據(jù)與每一對象或?qū)ο箢愊嚓P(guān)聯(lián)地存儲。與特定對象相關(guān)聯(lián)地存儲的不同類型的數(shù)據(jù)可對應(yīng)于在該IDE內(nèi)提供的不同視圖,例如· 3D模型(其對應(yīng)于物理設(shè)計視圖103);
該對象所使用的任何軟件庫或代碼存根的細(xì)節(jié)(其對應(yīng)于軟件開發(fā)視圖102),其中特定庫/代碼存根可與該對象相關(guān)聯(lián)地存儲,或者對該特定庫/代碼存根的引用可被存儲;以及·硬件參數(shù)(其對應(yīng)于硬件配置視圖101),諸如以下的一個或多個令所需的電連接(例如,地、5V、UART )今任何可選電連接(例如,如果針腳X被連接,則使能附加的模塊重置能力)令任何硬件選擇(例如,對象可支持UART或I2C接口并且這些中的一個是所需的)今電線是多分支線(multi-drop line)(例如,UART)還是點到點連接(例如,I2C)的細(xì)節(jié)令功能性今可使用的連接器以及它們能插入的插口今外部連接器今連線兼容性今用戶可配置的任何參數(shù)的細(xì)節(jié)可與一對象相關(guān)聯(lián)地存儲的其他數(shù)據(jù),諸如·約束(例如,取決于對一對象做出哪些連接而使能的與其他對象或不同方法的不兼容性),其可按照該對象的規(guī)則集來定義; 裝載問題,諸如與將該對象在該設(shè)備的特定面上定位、相對于其他對象或外殼定位、定向敏感性(例如,某些設(shè)備可具有在設(shè)計原型時必須尊重的‘頂部’和‘底部’)等以及如何調(diào)整以自動適應(yīng)這些問題有關(guān)的細(xì)節(jié);·裝載細(xì)節(jié),諸如裝載孔/支架等的位置;·機械強度;·性能數(shù)據(jù),諸如電力消耗(且這可包括不同模式(例如,醒或睡眠)的不同電力消耗值)、在睡眠時喚醒所花的時間、獲取讀數(shù)的時間(例如,對于傳感器)、耐熱性、單位轉(zhuǎn)換(例如,溫度傳感器可輸出12個比特,可使用轉(zhuǎn)換公式將其映射為。C)等;·傳感器激勵數(shù)據(jù)(如在下面參考圖6的實施例更詳細(xì)地描述的);·與該對象相關(guān)聯(lián)的變量的細(xì)節(jié),這些變量具有實例化專用值(例如,其可以是用戶指定的或在該IDE內(nèi)生成的),并且在這些值可不被指定或可被設(shè)置為初始默認(rèn)值的情況下,這些變量在此處被稱為‘對象變量’;·模擬該對象所需的任何其他數(shù)據(jù)(上面尚未指定的); 數(shù)據(jù)表單;以及 購買信息,諸如部件號、成本、制造者和經(jīng)銷商細(xì)節(jié)、本地部件倉庫中的存貨等。該其他數(shù)據(jù)可對應(yīng)于特定視圖中的一個或可與一個或多個視圖相關(guān)。為特定對象定義的規(guī)則可以代數(shù)形式定義,例如(A+B+C)〈Y,其中A、B、C和Y是對象變量或推斷的參數(shù),諸如電壓、電流、電容、消耗、帶寬等。這些規(guī)則本身可添加額外的約束,例如,如果Z為真,則A〈Y。與特定對象(或?qū)ο箢?相關(guān)聯(lián)的數(shù)據(jù)可以模塊化形式存儲,以便當(dāng)新對象被開發(fā)或以其他方式變得可用于被用戶選擇以包括在正使用該IDE開發(fā)的設(shè)備內(nèi)時,與新對象相關(guān)聯(lián)的模塊化數(shù)據(jù)能夠被容易地添加到對象數(shù)據(jù)存儲106。例如,用于一對象(或?qū)ο箢?的實例化獨立的數(shù)據(jù)可被包括在‘模塊描述’內(nèi),其中該模塊描述包括與特定對象(或?qū)ο箢?相關(guān)聯(lián)的自包含數(shù)據(jù)元素。在一示例中,模塊描述可包括zip文件夾中的多個數(shù)據(jù)文件,該zip文件夾進一步包括XML描述,該XML描述提供了用于這些文件的包(wrapper)并標(biāo)識在這些數(shù)據(jù)文件中的每一個中所存儲的數(shù)據(jù)的類型。例如,模塊描述可包括3D模型、軟件庫的列表、硬件參數(shù)集合、規(guī)則集合、以及對象變量的列表。實例化專用數(shù)據(jù)存儲108存儲對正在使用該IDE開發(fā)的設(shè)備專用的數(shù)據(jù),包括推斷的參數(shù)(其由這些視圖中的一個生成并包括已被選擇以形成原型的一部分的對象的細(xì)節(jié))以及全局參數(shù)(其可由用戶指定)。3D配置的細(xì)節(jié)和已編寫以在該原型上運行的軟件的細(xì)節(jié)也可被存儲在此數(shù)據(jù)存儲108內(nèi)或可被存儲在別處(例如,在本地盤上、在文件共享上、或在版本控制儲存庫/數(shù)據(jù)庫中)。全局參數(shù)(也可被稱為全局約束)的示例可包括原型的最大尺度(例如厚度)、所需的電池壽命、不使用風(fēng)扇的事實(其可影響可用于被用戶選擇的組件,例如,通過將可用處理器限制為產(chǎn)生小熱量的那些處理器) 等。盡管將全局參數(shù)描述為是經(jīng)由物理設(shè)計視圖輸入的,然而要理解,全局參數(shù)可替代地經(jīng)由另一視圖輸入,或者可提供專用視圖來輸入這些全局參數(shù)。實例化專用數(shù)據(jù)存儲108可支持版本化(versioning),以便能夠為特定項目存儲軟件和/或硬件配置的不同版本。這可使用戶能夠退回到先前的版本,例如,在更新(例如,改變或添加硬件、在空間中重新安排組件和/或修改代碼)導(dǎo)致問題的情況下。如上所述,兩個庫對象數(shù)據(jù)存儲106和實例化專用數(shù)據(jù)存儲108每一個均存儲與在該IDE內(nèi)并且在圖I中示出的布置中的視圖中的每一個相關(guān)的數(shù)據(jù),每個存儲均能由每個視圖訪問。在其他布置中,來自存儲106、108之一 /兩者的數(shù)據(jù)可經(jīng)由另一元件(諸如中心儲存庫(例如,如在圖9和圖11中所示))對每一視圖可用。約束解決器104檢查參數(shù)不相抵觸,其中這些參數(shù)可包括以下的一些或全部通過視圖推斷的參數(shù);用戶指定的參數(shù)(其是實例化專用的并存儲在實例化專用數(shù)據(jù)存儲108中);以及實例化獨立的參數(shù),例如,與已被選擇的特定對象相關(guān)聯(lián)的參數(shù),其被存儲在對象數(shù)據(jù)存儲106中。圖2示出約束解決器(constraint resolver) 104的操作的示例方法的流程圖。約束解決器104接收實例化專用參數(shù)(框202),所述實例化專用參數(shù)包括形成設(shè)備設(shè)計的一部分的特定對象(或?qū)ο箢?的細(xì)節(jié)?;谶@些參數(shù),約束解決器還從對象數(shù)據(jù)存儲訪問該特定對象的實例化獨立的參數(shù)(框204)。實例化獨立的參數(shù)可包括與所選擇的對象相關(guān)聯(lián)的約束/規(guī)則的細(xì)節(jié)。實例化專用參數(shù)可響應(yīng)于由約束解決器發(fā)送到該實例化專用數(shù)據(jù)存儲的周期性請求而從該數(shù)據(jù)存儲中接收(在框202),替代地,實例化專用數(shù)據(jù)存儲或視圖101-103中的一個可在這些參數(shù)被生成或更新時或在視圖改變時(例如,由用戶發(fā)起的)將這些參數(shù)推送到約束解決器。約束解決器104的監(jiān)視可以是周期性的(如在所述示例中),或者該監(jiān)視可以是連續(xù)的。在已經(jīng)接收/訪問與設(shè)備設(shè)計相關(guān)聯(lián)的參數(shù)的情況下(在已經(jīng)到達(dá)設(shè)計中的特定階段并且在該設(shè)備設(shè)計可能沒有完成的情況下),約束解決器確定在所述參數(shù)中的任何參數(shù)之間是否存在沖突(框206),并且如果存在沖突,則約束解決器可向用戶標(biāo)志(flag)該沖突(框208),例如,經(jīng)由該IDE的圖形用戶界面(GUI),或者替代地,約束解決器可嘗試自動修復(fù)該沖突(框210)。在一示例中,該沖突可通過參數(shù)值的比較來確定,而在另一示例中,可使用與對象相關(guān)聯(lián)的規(guī)則。在一進一步的示例中,可組合與多個對象相關(guān)聯(lián)的參數(shù)(例如,將設(shè)備內(nèi)的每個對象的功率消耗加總并將其與可作為全局參數(shù)指定的該設(shè)備的最大功率消耗相比較)。重復(fù)該過程(例如,周期性地或響應(yīng)于接收新的實例化專用參數(shù),如上所述),如由點畫線箭頭20所指示的。在經(jīng)由⑶I向用戶通知沖突的情況下,可使用專門的GUI屏,或替代地,可使用這些視圖中的一個。在一示例中,在所選擇的對象不能適合放入該原型的用戶指定的最大尺度時,可在物理設(shè)計視圖中用圖形顯示這一點(例如,通過突出顯示該原型的延伸超出用戶指定參數(shù)所設(shè)置的邊界的部分)。在另一示例中,沖突解決器可接收該設(shè)備在執(zhí)行在軟件開發(fā)視圖中編寫的代碼時的功率消耗的推斷的參數(shù)。約束解決器可訪問所選擇的電池對象的數(shù)據(jù)并標(biāo)識該電池所提供的電力是不足的。在此情況下,該IDE向用戶警告該沖突。所使用的自動解決沖突(框210)的方法可取決于該原型設(shè)計內(nèi)已被選擇并配置的特定對象或?qū)ο箢悺T谝皇纠?,在對象類‘存儲器’已被選擇(例如,經(jīng)由硬件配置視圖)且軟件開發(fā)視圖生成存儲該代碼所需的存儲器量的推斷的參數(shù)的情況下,如果該對象類包括不夠小的存儲器元件,可通過更新對象選擇來指定足夠大的存儲器元件或通過選擇足夠大到滿足該推斷的參數(shù)的特定存儲器元件來解決該沖突。對不同對象(或?qū)ο箢惖淖蛹?的這種選擇可由沖突解決器本身執(zhí)行,或者替代地,該沖突解決器可觸發(fā)這些視圖中的一個 來運行自動決策算法來做出此確定。在沖突與存儲器大小相關(guān)的此特定示例中,沖突解決器可觸發(fā)(在框210中)硬件配置視圖101來選擇適當(dāng)?shù)拇鎯ζ髟斫鉀Q參數(shù)中的沖突。如果此解決方案不可能,則該IDE可向用戶標(biāo)志該錯誤(如上所述)。在某些情形下,在另一視圖中嘗試沖突解決是可能的(例如,在沖突的參數(shù)受到該設(shè)計的多個方面的影響的情況下)。約束解決器104的使用以及在某些示例中由該IDE的視圖對推斷的參數(shù)(其可被存儲在實例化專用數(shù)據(jù)存儲108中)的生成允許對要在該IDE內(nèi)的視圖間共享的相關(guān)設(shè)計要求的訪問。約束解決器和數(shù)據(jù)存儲提供了框架,通過該框架用戶在一個視圖中所選擇的設(shè)計決策致使其他視圖中的可用選項/操作反映這些可能性。這具有跨越設(shè)備設(shè)計的先前未鏈接的方面而擴展智能的效果。圖3是示出圖I中示出的IDE的一種替代表示的示意圖。IDE 300包括如上所述的對象數(shù)據(jù)存儲106、實例化專用數(shù)據(jù)存儲108以及約束解決器104。該IDE還包括多個引擎301-303,所述引擎提供圖I中視圖101-103后的計算。在本示例中,硬件配置引擎301與硬件配置視圖101相關(guān)聯(lián),軟件開發(fā)引擎302與軟件開發(fā)視圖102相關(guān)聯(lián),而物理設(shè)計引擎303與物理設(shè)計視圖103相關(guān)聯(lián)。盡管在本示例中在引擎和視圖間存在1:1關(guān)系,然而這僅是作為示例,而在其他實施例中,單一引擎可以與多個視圖相關(guān)聯(lián),反之亦然。該IDE進一步包括用戶界面304,該用戶界面提供被顯示給用戶并且用戶通過其與視圖101-103交互(并因此與引擎301-303交互)以設(shè)計設(shè)備(例如,原型)的⑶I。如上所述,該用戶界面允許用戶容易地在不同視圖(其也可被稱為表示)間切換,每個視圖提供允許數(shù)據(jù)的不同表示被編輯的工具(例如,代碼編輯器、傳感器輸入流/交互編輯器以及3D設(shè)計編輯器)。要理解,可存在用于在視圖間移動的許多不同交互可能性,諸如雙擊、右鍵點擊、Alt-Tab 和 Ctrl-Tab。圖3中的箭頭示出該IDE中的元件間的數(shù)據(jù)路徑的示例,然而,要理解,這僅是作為示例,而數(shù)據(jù)可在不同于圖3中所示的那些的不同路徑/方向中以及在不同元件間流動。
圖3還示出了 IDE 300的多個輸入和輸出306-308。如上面結(jié)合圖I所述,對該IDE的輸入包括用戶對對象306的選擇以及設(shè)備307上的任何全局約束。取決于特定實現(xiàn),可通過該IDE內(nèi)的各視圖中的任何視圖來指定全局參數(shù),或者可提供該GUI中的專門部分來使用戶能夠指定全局參數(shù)。在一示例中,所述全局參數(shù)可從外部源導(dǎo)入。來自該IDE的輸出包括用于使該設(shè)備能夠被建造的制造數(shù)據(jù)308。該制造數(shù)據(jù)例如可包括以下的一項或多項組件列表309、固件310和可用于制造該設(shè)備的外殼的數(shù)據(jù)文件311。在某些實施例中,該固件可被直接輸出到處理器,而在其他實施例中,該固件可被輸出以使得用戶能將其加載到處理器上。在某些示例中,可通過輸出生成器模塊在該構(gòu)造過程中對用戶進行引導(dǎo)。下面參考圖8更詳細(xì)地描述了制造數(shù)據(jù)和輸出生成器模塊。圖4包括分別示出硬件配置引擎301和軟件開發(fā)引擎302的操作的示例方法的兩個流程圖401-402。第一個流程圖401示出了硬件配置引擎301的操作的示例方法。該方法包括基于任何實例化專用參數(shù)來確定可用對象(或?qū)ο箢?的集合(框411),而這可涉及訪問存儲在數(shù)據(jù)存儲108中的參數(shù)。該可用對象集合隨后被顯示給用戶(框412)以使用戶能夠做出選擇。該引擎接收選擇一個或多個對象的用戶輸入(框413)并隨后從對象數(shù)據(jù)存 儲106訪問每個對象的硬件相關(guān)數(shù)據(jù)(框414)。該引擎還可接收配置對象的用戶輸入(框417),并且在接收該硬件相關(guān)數(shù)據(jù)(在框414中)后此配置可被使能。該配置數(shù)據(jù)導(dǎo)致用戶指定的參數(shù),所述參數(shù)被存儲在實例化專用數(shù)據(jù)存儲108中(框418)。基于所選擇的對象、硬件數(shù)據(jù)和任何配置數(shù)據(jù),該引擎計算任何推斷的參數(shù)(框415)并將它們存儲在參數(shù)存儲中(框416)。已經(jīng)選擇了對象(框413)和/或創(chuàng)建了推斷的參數(shù)(在框415中)后,這可影響用戶能繼續(xù)選擇的可用對象的集合,因此可重復(fù)該方法的各方面(如由點畫線箭頭41所指示的)。硬件配置引擎301可生成的推斷的參數(shù)的示例包括設(shè)備從睡眠完全喚醒的時間(例如,基于構(gòu)成該設(shè)備的對象的喚醒時間)、該設(shè)備內(nèi)的任何共享總線(例如I2C)的估計的剩余容量(例如,如果視頻模塊和另一傳感器兩者均使用該總線則有狀態(tài)數(shù)據(jù)率可能超出該總線的已知容量)、一對象連接到另一對象的特定方式(例如,當(dāng)超過一個選項可用時)
坐寸ο圖4中的第二流程圖402示出了軟件開發(fā)引擎302的操作的示例方法。該方法包括訪問數(shù)據(jù)存儲108中的任何實例化專用參數(shù)(框421),并且如果已選擇了任何對象(例如,在硬件配置視圖中),則加載用于與所述特定對象進行接口的相關(guān)庫和代碼存根(框422)。這些庫和代碼存根,或者對它們的引用,被存儲在與該特定對象相關(guān)聯(lián)的對象數(shù)據(jù)存儲106中。與所選擇的對象相關(guān)的其他數(shù)據(jù)也可從該對象數(shù)據(jù)存儲106訪問,而這種數(shù)據(jù)的一個示例可以是對象的定向敏感性(例如,加速度計或任何方向傳感器)以及如何基于該對象在該設(shè)備內(nèi)的實際定向的推斷的參數(shù)(如由物理設(shè)計視圖103生成的)用軟件對其進行矯正。可接收定義代碼的用戶輸入(框423),該代碼在從用戶接收到請求后(例如,用戶可點擊軟件開發(fā)視圖302中的GUI內(nèi)的‘編譯’按鈕)可被編譯(框424)。如果該用戶編寫的代碼(如在框423接收的)包括對先前未選擇的新對象的引用(如基于在框421中訪問的實例化專用參數(shù)確定的),則軟件開發(fā)引擎302更新所述實例化專用參數(shù)來包括新對象的選擇(框429),將更新后的參數(shù)存儲在數(shù)據(jù)存儲108中(框430)并加載所需的任何附加的庫和代碼存根(框422)。
在編譯時(在框424中),軟件開發(fā)引擎創(chuàng)建推斷的參數(shù)(框425)并將這些參數(shù)存儲在實例化專用數(shù)據(jù)存儲108中(框426)。如上所述,軟件開發(fā)引擎可生成的推斷的參數(shù)的示例是存儲該代碼所需的存儲器的量或執(zhí)行該代碼所需的存儲器的量。所生成的推斷的參數(shù)可取決于特定引擎內(nèi)的活動并且還取決于其他實例化專用的和/或?qū)嵗毩⒌膮?shù)。例如,可基于所選擇的電池對象、用于該對象的實例化獨立的參數(shù)以及所編寫的代碼來生成該原型的估計電池壽命的推斷的參數(shù)。該方法還可包括啟動調(diào)試工具(框427)和/或模擬器(框428)。與編譯步驟一樣(框424),該調(diào)試工具和/或模擬器可響應(yīng)于用戶請求(例如,通過點擊該⑶I內(nèi)的‘調(diào)試’或‘模擬器’按鈕)而啟動(在框427和428中)。圖5是示出物理設(shè)計引擎303的操作的示例方法的流程圖。物理設(shè)計引擎303訪問存儲在實例化專用數(shù)據(jù)存儲108中的任何實例化專用參數(shù)(框501),特別而言,物理設(shè)計引擎訪問已被選擇以形成該設(shè)備的一部分的對象的細(xì)節(jié)。每個被選擇的對象的3D模型(或?qū)?D模型的引用)隨后被從對象數(shù)據(jù)存儲106訪問(框502)并被用于生成并顯示該設(shè)備的3D表示(框503)。用戶可通過提供操縱該3D模型的用戶輸入(在框504中接收)和/或通 過指定與該設(shè)備相關(guān)聯(lián)的設(shè)計規(guī)則(其也可以是全局參數(shù))(在框505中接收的)來與引擎303交互。這種用戶輸入的一示例會是指定該設(shè)備的最大厚度或顯示器的所需位置的用戶輸入。在接收指定設(shè)計規(guī)則(或全局參數(shù))的用戶輸入的情況下,這些用戶指定的參數(shù)被存儲在實例化專用數(shù)據(jù)存儲108中(框506)。作為任何用戶輸入的結(jié)果(在框504或505中),該3D模型可以被更新而且更新后的模型可被顯示給用戶(框507),并且可為多個連續(xù)的輸入重復(fù)此過程(如由點畫線箭頭51所指示的)。物理設(shè)計引擎303基于所得到的3D模型創(chuàng)建推斷的參數(shù)(框508)并將它們存儲在實例化專用數(shù)據(jù)存儲中(框509)。物理設(shè)計引擎可生成的推斷的參數(shù)的一個示例是該設(shè)備的尺度。圖6是用于設(shè)備的快速開發(fā)的另一 IDE的示意圖。圖6中示出的IDE除了圖I中示出并在上面描述的元件之外還包括附加的視圖,傳感器模擬/交互視圖601。與上面描述的IDE —樣,用戶在開發(fā)設(shè)備時可以任何次序選擇這些視圖,并且可在他們選擇時在各視圖間切換,并且如此圖6中示出的IDE也提供了一種靈活的非線性的設(shè)備設(shè)計方式。如圖I中一樣,視圖101-103、601被提供各視圖間同步的約束解決器104鏈接,使得用戶在一個視圖中對設(shè)計所做的改變反映在其他視圖中。傳感器模擬/交互視圖601允許用戶訪問存儲在對象數(shù)據(jù)存儲106中的傳感器數(shù)據(jù)(例如,與形成該設(shè)備的一部分的特定對象相關(guān)聯(lián)的)并且模擬響應(yīng)于該傳感器數(shù)據(jù)或響應(yīng)于傳感器數(shù)據(jù)的組合的該設(shè)備的操作(例如,基本上同時鍛煉(exercise)該設(shè)備的不同部分的多個流)。該設(shè)備的表現(xiàn)的細(xì)節(jié)可被顯示給用戶且用戶可以能夠指定在模擬期間要監(jiān)視的參數(shù)。該視圖在該模擬運行時收集表現(xiàn)數(shù)據(jù),且這可以被實時地或在模擬完成后顯示給用戶。存在該視圖可使用戶能夠做的多個其他操作,諸如設(shè)計傳感器流、模擬對用戶交互的響應(yīng)、指定測試?yán)⑴c該設(shè)備交互以及記錄交互,而在下面更詳細(xì)地描述了這些??稍谀M中使用的傳感器數(shù)據(jù)的示例可包括· GPS信息——在高等級或低等級的預(yù)先錄制的序列 加速度計數(shù)據(jù)——包括使用代理加速度計來記錄并隨后回放諸如用于實際設(shè)計的設(shè)備的虛擬傳感器數(shù)據(jù)的此類數(shù)據(jù)的可能性
·按鈕按下、觸摸等·溫度 無線電分組通信等·藍(lán)牙、WiFi 或 Zigbee 通信附加于(或代替)模擬響應(yīng)于從對象數(shù)據(jù)存儲訪問的傳感器數(shù)據(jù)的設(shè)備的表現(xiàn),該表現(xiàn)可響應(yīng)于用戶交互或交互序列來模擬。在一示例中,該視圖可向用戶提供到該設(shè)備的虛擬接口(例如,原型移動設(shè)備的圖形表示,其中用戶可點擊按鈕來模擬該移動電話的操作),以便該用戶可與虛擬設(shè)備交互。在另一示例中,用戶可以能夠與連接到該系統(tǒng)的實際的硬件對象交互。在任一情況下,交互序列可被該IDE記錄以便該交互序列隨后可被用于模擬或該模擬可在交互進行時實時地運行。所記錄的交互序列數(shù)據(jù)可被存儲在數(shù)據(jù)存儲中,以便在需要時該交互序列可用于特定設(shè)備的未來測試。在某些示例中,該數(shù)據(jù)可以是實例化獨立的并且可被存儲在對象數(shù)據(jù)存儲106中。 該視圖使得用戶能夠設(shè)計傳感器流和/或測試?yán)栽谠撛O(shè)備的模擬/測試中使用。傳感器流包括該設(shè)備所接收的輸入的細(xì)節(jié)(其可包括交互序列)和/或該設(shè)備所經(jīng)歷的狀況(例如,環(huán)境狀況),且該測試?yán)▊鞲衅髁骱晚憫?yīng)于所述傳感器流所預(yù)期的該設(shè)備的表現(xiàn)(或輸出)的細(xì)節(jié)。例如,如果預(yù)期能夠多點觸摸的觸摸屏設(shè)備能夠檢測特定大小的指尖并且在由定義的最小距離分開的觸摸之間進行區(qū)分,則可開發(fā)指定一組觸摸事件并定義預(yù)期的檢測到的信號的測試?yán)?。測試?yán)脑O(shè)計可以通過數(shù)據(jù)/數(shù)字/向量的人工輸入、或使用生成(例如)特殊波形的實用程序(utilities) /工具、或通過使用實時的人工代理激勵。當(dāng)運行測試?yán)龝r,該視圖把結(jié)果與定義的輸出進行比較并可經(jīng)由該GUI向用戶標(biāo)志任何差異。該IDE可包括與傳感器模擬/交互視圖601相關(guān)聯(lián)的模擬引擎。圖7示出模擬引擎的操作的示例方法的流程圖。該模擬引擎訪問傳感器數(shù)據(jù)(框701),并且如上所述,可能有此傳感器數(shù)據(jù)的許多不同源。它可以是從對象數(shù)據(jù)存儲106讀取的,在用戶與真正的或虛擬的硬件交互時記錄的,或者用戶指定的(并且通過用戶輸入接收的)。隨后在運行對該設(shè)備的模擬時使用該數(shù)據(jù)(框702)。在運行模擬時,模擬引擎使用存儲在對象數(shù)據(jù)存儲106中的與構(gòu)成該設(shè)備的特定對象相關(guān)的數(shù)據(jù)以及來自實例化專用數(shù)據(jù)存儲108的實例化專用數(shù)據(jù)。隨后可向用戶顯示模擬結(jié)果(框703),或在另一示例中,可將該結(jié)果與所需的結(jié)果進行比較(其中在框704中訪問這些結(jié)果并在框705中執(zhí)行比較)。隨后可向用戶顯示比較的結(jié)果(框706),而在某些情況下這些結(jié)果可簡單地表示對所定義的測試的通過或失敗。在原型不滿足測試?yán)那闆r下(例如,響應(yīng)于輸入它沒有給出所需的輸出),可將這直接地或通過傳感器模擬/交互視圖601所生成的推斷的參數(shù)反饋到約束解決器104,并存儲在參數(shù)存儲108中。約束解決器104隨后可嘗試以與上面描述的參數(shù)間的沖突類似的方式解決此問題。傳感器模擬/交互視圖可被認(rèn)為為該設(shè)備提供測試環(huán)境。通過提供測試環(huán)境(正被設(shè)計的富含傳感器的設(shè)備可在其中在設(shè)計階段被“鍛煉”),原本不會變得明顯的許多問題會被凸顯。第一個示例可以是某個外部傳感器激勵序列使該設(shè)備的功率消耗性能能被更精確地測量。第二個示例是外部傳感器中斷的某些異步序列能導(dǎo)致設(shè)備鎖住或用戶界面中的不良表現(xiàn)/不響應(yīng)的情況,例如可能發(fā)現(xiàn)在某些加速閾值處向主處理器提供樣本中斷的加速度計由于模擬的運動輸入而隨著時間在某些加速度情況下太快地消耗電池。像其他視圖101-103 —樣,傳感器模擬/交互視圖601可生成推斷的參數(shù)并將它們存儲在數(shù)據(jù)存儲108中。傳感器模擬/交互視圖可生成的推斷的參數(shù)的示例包括性能參數(shù),諸如電力消耗或?qū)μ囟畹捻憫?yīng)。圖8是用于設(shè)備的快速開發(fā)的進一步IDE的示意圖。與圖6相比,圖8中示出的IDE包括兩個附加的元件硬件檢測模塊801和輸出生成器模塊802。要理解,IDE可包括這些附加的元件中的任一個,并且IDE可包括這些附加的元件中的一個或兩個而不包括傳感器模擬/交互視圖601。這兩個附加的元件將在以下更詳細(xì)地描述。硬件檢測模塊801允許用戶通過將實際的硬件對象(諸如上面描述的模塊化硬件元件)連接在一起來在IDE內(nèi)構(gòu)造設(shè)備。當(dāng)用戶將所述實際硬件對象中的至少一個(諸如來自模塊化硬件元件集合的核心模塊)連接到硬件檢測模塊801 (例如,經(jīng)由USB)時,該模塊自動檢測哪些模塊被連接并更新硬件配置視圖101。此檢測過程可使用存儲在對象數(shù)據(jù)存 儲106中的數(shù)據(jù),例如,在特定模塊具有定義的地址且硬件檢測模塊801檢測該地址的情況下,對象數(shù)據(jù)存儲106可用于搜索與檢測到的地址相對應(yīng)的模塊。在接收到標(biāo)識連接的模塊的數(shù)據(jù)后,硬件配置視圖101更新實例化專用參數(shù)并生成推斷的參數(shù)(如上所述)。替代地,硬件檢測模塊801可更新實例化專用參數(shù)并將這些參數(shù)直接存儲在實例化專用數(shù)據(jù)存儲108中。硬件檢測模塊801可使用相機(例如,網(wǎng)絡(luò)攝像頭)來標(biāo)識硬件對象的集合來代替(或附加于)經(jīng)由電連接來檢測硬件對象的存在。在這種情況下,對象數(shù)據(jù)存儲106可存儲與每個對象(或?qū)ο箢?相關(guān)聯(lián)的代表性圖形,而硬件檢測模塊801可使用圖像分析算法來標(biāo)識捕捉的圖像(或圖像序列)內(nèi)的元件并在對象數(shù)據(jù)存儲106中搜索匹配的(或類似的)圖像。在某些實施例中,用戶可以能夠使用硬件檢測模塊801來檢測并存儲對象的第一集合,并然后隨后檢測對象的第二集合,以便該設(shè)備包括對象的這兩個集合的組合。對于其中將所有對象放入相機的視野內(nèi)不可能,或者其中將所有對象連接到核心模塊不可能(例如,由于連接器的數(shù)量的限制或連接引線的長度的限制)的復(fù)雜設(shè)備,這可能是有用的。輸出生成器模塊802生成在制造該設(shè)備時使用的、并且在某些示例中可在構(gòu)造/輸出過程中引導(dǎo)用戶(例如,使用一系列提示(prompt)和/或問題)的數(shù)據(jù)308。如上面參考圖3所述的,輸出的數(shù)據(jù)可包括以下的一項或多項組件列表309、固件310和可用于制造原型的外殼的數(shù)據(jù)文件311。在一示例中,輸出生成器模塊802允許用戶指定用于原型外殼的制造技術(shù)(例如,激光切割或3D打印),并且所選擇的技術(shù)影響數(shù)據(jù)文件311的格式。在一示例中,可從由輸出生成器模塊802顯示給用戶的多個選項中選擇制造技術(shù),并且在用戶選擇激光切割作為方法的情況下,輸出生成器模塊802使外殼的設(shè)計(其是由物理設(shè)計引擎303自動生成的)平坦為可被開槽(slot)以及粘合在一起的側(cè)面,并且產(chǎn)生適于輸入到激光切割機的輸出文件。在某些實施例中,輸出文件可直接地或經(jīng)由網(wǎng)絡(luò)連接(諸如圖13中示出的通信接口 1315)輸出到激光切割機或其他制造設(shè)備(例如,3D打印機)。輸出生成器模塊802附加地編譯軟件代碼(如果該代碼尚未被編譯的話)并產(chǎn)生將在該設(shè)備內(nèi)的處理器上運行的固件。在某些示例中,如果用戶經(jīng)由USB將處理器連接到該IDE (并且可提示用戶這樣做),可通過輸出生成器模塊802直接對處理器編程。在其他示例中,或?qū)τ诙壧幚砥?,輸出生成器模塊802可輸出固件文件,固件文件可被加載到處理器上(例如,使用第三方工具)。在制造多個設(shè)備的情況下,輸出生成器設(shè)備802可并行地對多個處理器編程或者可依序?qū)λ鼈冞M行編程,在完成每次迭代之后提示用戶斷開一個處理器模塊的連接并連接另一個處理器。在一示例中,輸出生成器模塊802可響應(yīng)于接收‘打印n (print η)’用戶輸入(其中η是所需的設(shè)備的數(shù)量),致使固件編程器被啟動η次,制造 設(shè)備(例如激光切割機或3D打印機)產(chǎn)生η個物理設(shè)計(例如,設(shè)備外殼的η個副本),所需部分的自動庫存計數(shù)、硬件和軟件的自動打共同標(biāo)簽(co-lebel)以便物理外殼標(biāo)簽和軟件版本/序列號標(biāo)簽同步等。除了生成在制造設(shè)備時使用的數(shù)據(jù)308并輸出該數(shù)據(jù)之外,輸出生成器模塊802還可生成‘項目存檔’輸出,該項目存檔輸出包括任何存儲的版本、測試結(jié)果和與開發(fā)設(shè)備的特定項目相關(guān)的其他數(shù)據(jù)的細(xì)節(jié)。該存檔數(shù)據(jù)隨后可存儲在該IDE的外部,以防在未來需要該存檔數(shù)據(jù)。此處描述的方法可極大地減少生產(chǎn)設(shè)備(例如,原型設(shè)備)所花的時間長度。在使用模塊化硬件(如上所述的)并且輸出生成器模塊802輸出用于使用諸如激光切割或3D打印等快速技術(shù)生產(chǎn)外殼的數(shù)據(jù)文件的實施例中,在僅8小時內(nèi)從原始主意到生成多個原型(例如5個)是可能的。此外,這些原型與第一代原型的正常情況相比明顯地更穩(wěn)健并且更精細(xì)。這具有減少所需的迭代的數(shù)量的效果,這減少了思想和最終設(shè)計之間的總的時間標(biāo)尺,而且減少了項目成本。圖9示出用于設(shè)備的快速開發(fā)的進一步示例IDE的示意圖。在本示例中,該IDE包括同步元件902,該同步元件保持正在開發(fā)的設(shè)備的當(dāng)前構(gòu)造狀態(tài)的工作數(shù)據(jù)集。該數(shù)據(jù)集包括實例化獨立的和實例化專用的兩種數(shù)據(jù),并且因此同步元件902能被認(rèn)為是包括實例化專用數(shù)據(jù)存儲108 (如在圖9中所示)。同步元件902進一步包括約束解決器104。圖10是同步元件902的操作的示例方法的流程圖。同步元件902從視圖101-103中的一個或多個接收實例化專用數(shù)據(jù)(框1002)。響應(yīng)于視圖內(nèi)的用戶選擇(其可選擇新對象或?qū)е峦茢嗟膮?shù)的生成或更新)或在視圖中的變化(例如,如由用戶發(fā)起的)后,可從視圖接收實例化專用數(shù)據(jù)(在框1002中)。所接收的數(shù)據(jù)包括形成設(shè)備設(shè)計的一部分的特定對象(或?qū)ο箢?的細(xì)節(jié),并且還可包括視圖生成的其他推斷的參數(shù)。同步元件902維護正在開發(fā)的設(shè)備的表示并因此加載每個所標(biāo)識的對象或?qū)ο箢惖哪K描述(框1004)。同步元件902可包括庫管理器904,該庫管理器選擇特定的模塊描述來從對象數(shù)據(jù)存儲106加載。與同步元件維護的設(shè)備表示相關(guān)的數(shù)據(jù)在需要時被傳遞到所述視圖(框1005),這可在圖10中所示的流程圖中的任何點處執(zhí)行多次。同步元件902可包括系統(tǒng)管理器906,該系統(tǒng)管理器基于工作數(shù)據(jù)集內(nèi)的模塊描述來執(zhí)行將約束推送回每個視圖。提供給視圖的數(shù)據(jù)可包括實例化獨立的和/或?qū)嵗瘜S玫臄?shù)據(jù)。在一示例中,庫管理器904可初始地拉入通用模塊描述,例如,對象的類或子類的模塊描述,并且逐漸地,隨著設(shè)備內(nèi)的對象的選擇被變窄,可將更具體的模塊描述加載到工作數(shù)據(jù)集中。如上所述,對象的模塊描述可包括一個或多個‘對象變量’的細(xì)節(jié),所述對象變量可具有實例化專用的值。當(dāng)從視圖接收數(shù)據(jù)時(在框1002中),同步元件更新這些變量的值(框1006)。對象變量的值可作為所述視圖之一內(nèi)的推斷的參數(shù)而被生成,或者該值可由同步元件基于也包含在模塊描述內(nèi)的一個或多個推斷的參數(shù)和/或規(guī)則來計算。在框1005中可將一個或多個對象變量的值傳遞到視圖。在維護正在開發(fā)的設(shè)備的表示時,同步元件使用存儲在所標(biāo)識的對象的模塊描述中的任何規(guī)則。這些規(guī)則例如可提供視圖之間的鏈接,例如,通過提供將硬件配置(例如,連接哪些插口)映射到在軟件代碼中使能的哪些方法的規(guī)則。在一實際示例中,作為SD卡讀取器的對象可具有一規(guī)則,該規(guī)則指定如果一根線被連接則使能讀和寫方法,但是如果兩根線被連接,則還使能檢查該卡是否存在的方法以及確定該卡是否被寫保護的方法。在另一示例中,同步元件902可使用規(guī)則來將一對象變量轉(zhuǎn)換為視圖理解的參數(shù)或執(zhí)行其他參數(shù)的翻譯。在本示例中,同步元件902包括約束解決器104,并且在已經(jīng)加載了模塊描述(框1004)并且更新了對象變量后,如果需要,(在框1006中),該同步元件確定所述參數(shù)/變量中的任一個之間是否存在沖突(框1008),并且如果存在沖突,可經(jīng)由例如該IDE的GUI向用戶標(biāo)志該沖突(框1010),或者替代地,可嘗試自動修復(fù)該沖突(框1012)。
可重復(fù)圖10中示出的過程(例如,如上所述,周期性地或響應(yīng)于接收到新的實例化專用參數(shù)),如由點畫線箭頭1000所指示的,并且要理解,可以不同次序執(zhí)行各框,例如,可在任何時間或基本連續(xù)地向視圖傳送或從視圖傳送數(shù)據(jù)。在同步元件902所執(zhí)行的約束解決操作的一示例中,三個不同視圖中的每一個可標(biāo)識一類內(nèi)的滿足與該視圖相關(guān)聯(lián)的準(zhǔn)則的不同對象子集(例如,相機類內(nèi)的不同對象)。所述不同子集是基于在每個視圖中應(yīng)用的視圖專用準(zhǔn)則的,例如,物理設(shè)計視圖103中的大小以及硬件配置視圖101中的分辨率。同步元件902從接收自每個視圖的數(shù)據(jù)標(biāo)識哪些相機被包括在所有三個子集中,并且因此適于在該設(shè)備中使用。在對象隨后被從正在開發(fā)的設(shè)備移除時,相關(guān)數(shù)據(jù)(例如,相關(guān)模塊描述)可從同步元件902內(nèi)所存儲的表示中刪除。然而,在某些示例中,可不刪除該數(shù)據(jù),相反將其標(biāo)志為禁用,以便如果重新選擇該對象作為該設(shè)備的形成部件,則不需要重新加載模塊描述并且重新設(shè)置可能已經(jīng)為該對象指定的任何對象變量。這在其中對象被意外移除或斷開連接的情況下特別有用(例如,在包括硬件檢測模塊801的示例中)。圖11示出用于設(shè)備的快速開發(fā)的另一示例IDE的示意圖。本示例包括同步元件1102和一個或多個約束解決器1110-1112。這些約束解決器可專用于特定視圖(例如,約束解決器1110、1112)或可在兩個或更多個視圖之間共享(例如,約束解決器1111)。每個約束解決器可理解與構(gòu)成設(shè)備的對象相關(guān)聯(lián)的對象變量和規(guī)則的子集,并且在這種示例中,同步元件將相關(guān)對象變量和任何其他相關(guān)參數(shù)/規(guī)則(例如,如從加載的模塊描述中提取的)推送到每個約束解決器。這在圖12的框1202中示出,圖12包括同步元件的操作的另一示例方法的流程圖。單個約束解決器1110-1112隨后能標(biāo)識沖突并且要么向用戶通知該沖突,要么自動解決該沖突(以與圖2中的框206-210中所示的類似的方式)。盡管圖12示出數(shù)據(jù)被傳遞給視圖(在框1005中)和約束解決器(在框1202中)兩者,然而在其他示例中,數(shù)據(jù)可從同步元件1102傳遞到視圖或者相關(guān)聯(lián)的約束解決器中的任一個,而數(shù)據(jù)隨后可按照需要在視圖和該相關(guān)聯(lián)的約束解決器之間傳遞。而且,盡管圖12沒有示出庫管理器904或系統(tǒng)管理器906,然而要理解,同步元件1102可包括這兩個元件中的一個或兩個。
在某些示例中,同步元件902、1102可使用加載的模塊描述內(nèi)的規(guī)則來翻譯變量或參數(shù),以使得它們能被不同視圖解釋。被翻譯的變量或參數(shù)可以是對象變量和/或在視圖中生成的推斷的參數(shù)。在一示例中,同步元件可在與所選擇的對象相關(guān)聯(lián)的對象和特定視圖或約束解決器所理解的參數(shù)之間翻譯。在這種示例中,被推送給視圖(在框1005中)或約束解決器(在框1202中)的數(shù)據(jù)可包括一個或多個翻譯的變量,以附加于或代替實際的對象變量值和/或其他參數(shù)。在同步元件可執(zhí)行的翻譯的特定示例中,該元件可從軟件開發(fā)視圖102接收‘所使用的卡檢測API’的視圖專用參數(shù)并將此參數(shù)翻譯為硬件配置視圖101理解的通用參數(shù)或‘CD線為真’的另一視圖專用參數(shù)。在上面描述的示例中,提供單層的約束解,它或者是中心約束解決器(例如,如圖I和9中所示),或者是并行的多個約束解決器(例如,如圖11所示)。在IDE的進一步示例中,可提供多層約束解決器。例如,除了同步元件內(nèi)的中心約束解決能力(如圖9所示)之外,可提供鏈接到一個或多個視圖的視圖專用約束解決器1110-112(如圖11所示)。在這種示例中,同步元件可提供高級約束解和/或跨所有(或許多)視圖切割的約束的解。這種約束的一示例是熱約束,因為這受到所選擇的對象,這些對象的定位以及在這些對象上運行的代 碼的影響。在這種示例中,與視圖相關(guān)聯(lián)的單個約束解決器1110-1112可提供更詳細(xì)的視圖相關(guān)的約束解(例如,標(biāo)識對象在3D空間中的何處重疊的物理約束解決器和標(biāo)識對象不兼容性、不足的總線容量等的硬件約束解決器等)。在進一步示例中,可存在多于兩層的約束解。盡管圖9和11僅示出了三個視圖而不包括硬件檢測模塊或輸出生成器模塊,然而要理解,進一步的不例IDE可包括另外的視圖和/或另外的I旲塊(例如,圖8中不出的另外的模塊中的一個或兩者)。以下段落提供了設(shè)計新移動電話的示例場景,其展示了諸如上面描述的那些的IDE可如何被用于改善生產(chǎn)原型的過程,該過程允許單個用戶以統(tǒng)一而高效的方式快速查看并開發(fā)設(shè)計的所有方面。在該示例場景中,用戶可能通過啟動應(yīng)用、創(chuàng)建新項目以及加載軟件開發(fā)視圖來開始,如上所述,該軟件開發(fā)視圖包括對編寫計算機代碼的支持、到編譯器的前端、對調(diào)試工具和模擬器的訪問。用戶可使用該視圖來編寫將在該設(shè)備上運行的軟件代碼的基礎(chǔ)。在編譯該軟件時,它們發(fā)現(xiàn)代碼將需要8Mb的存儲(storage)和4Mb的存儲器(memory)來執(zhí)行。通過切換到該應(yīng)用上的硬件配置視圖,該用戶能夠從多個可用存儲器和處理器選項的列表中選擇,并且選擇滿足軟件按需執(zhí)行的要求的一個選項。此外,他們能選擇并配置電話正常工作所必需的多個另外的電子模塊即,某種尺寸和分辨率的顯示器、GPRS模塊、電池和用于用戶輸入的按鍵板。通過切換到物理設(shè)計視圖,用戶能看到他們已選擇的所有單個電子模塊的精確的3D表示。他們能與它們交互,將它們相對于彼此布局,并且獲得該配置將要求的大小和形狀的初步印象。用戶指定電話的最大厚度,并且這導(dǎo)致顯示器模塊被突出顯示,因為顯示器太厚而不適合。在返回到硬件配置視圖時,用戶選擇更薄的替代顯示器模塊,同時該視圖自動地“灰掉(gray out)”會違反物理厚度約束的硬件選項。通過切換到傳感器模擬/交互視圖,用戶可設(shè)計傳感器輸入流,用所述傳感器輸入流來鍛煉不同的外圍傳感器,所述傳感器輸入流可用準(zhǔn)備好的傳感器輸入流被包括在設(shè)計中,或者(如在上面的物理設(shè)計視圖中提到的交互技術(shù)中)通過允許與包括在設(shè)計中的輸入和輸出模塊實時地模擬的交互而被包括在設(shè)計中。某些傳感器可具有標(biāo)準(zhǔn)激勵庫,通過所述標(biāo)準(zhǔn)激勵附連于每個所包括的傳感器(諸如對于溫度傳感器來說是隨時間的溫度梯度)。切換回軟件開發(fā)視圖,用戶發(fā)現(xiàn)該應(yīng)用已加載了所有必要的庫、包括了相關(guān)的引用、并且添加了與已選擇的另外的硬件元件進行接口所需的適當(dāng)?shù)拇a存根。在再次編譯代碼時,該應(yīng)用給出在給定當(dāng)前硬件配置和模擬的軟件執(zhí)行的情況下該設(shè)備的電池壽命將是多少的估計。給定此信息,用戶切換到硬件配置視圖,選擇并刪除當(dāng)前電池模塊,并用較高容量的電池來取代它。切換到硬件設(shè)計視圖,他們注意到新的電池更大,并調(diào)整屏幕上的3D模塊的相對放置以將其容納在他們的設(shè)計中。在編碼過程期間,用戶向先前沒有被配置的新類型的硬件模塊——具有相片和視頻錄制能力的相機一添加引用。當(dāng)在軟件開發(fā)視圖中添加對相機的引用時,它也被自動 在硬件配置和物理設(shè)計視圖中被加載并選擇。用戶能夠重新安排現(xiàn)有3D表示來在期望的位置容納該相機,并隨后切換到硬件配置視圖來配置新模塊并指定其圖像捕捉分辨率。用戶再次切換到物理設(shè)計視圖,并選擇用于‘自動生成外殼’的選項。給定構(gòu)成3D表示的相對放置,在將裝載和組裝夾具計入的情況下,軟件生成簡單的外殼來封裝它們。用戶能做出最終的調(diào)整,矯正放置并對設(shè)計做出最終的改變。在任何階段,用戶具有切換到傳感器模擬/交互視圖并且附接多個不同傳感器輸入激勵模式或者甚至通過代理或虛擬接口來直接操縱傳感器模塊的選項,該接口使得能夠?qū)崟r地直接與軟件模擬交互——或許沿路收集表現(xiàn)數(shù)據(jù)。最終,用戶點擊“打印”。這啟動允許用戶制作初始原型的工具。用戶選擇制造5個,并在軟件側(cè)被引導(dǎo)(編譯并生產(chǎn)主處理器和二級處理器的固件、通過USB自動對主處理器編程并提供固件文件以供用戶使用第三方工具加載到二級處理器中)。對于硬件,向用戶給出所需的組件的列表,從而他們能夠檢查必需的部分的庫存和訂單。對于物理構(gòu)造,用戶選擇制作激光切割版本,所以軟件將外殼“平坦化(flatten)”為能被開槽并粘合在一起的側(cè)面,并產(chǎn)生輸出文件并將其發(fā)送到激光切割機。圖13示出示例性的基于計算的設(shè)備1300的各個組件,設(shè)備1300可以被實現(xiàn)為任何形式的計算和/或電子設(shè)備,其中能實現(xiàn)此處描述的方法的實施例?;谟嬎愕脑O(shè)備1300包括一個或多個處理器1302,該一個或多個處理器可以是微處理器、控制器、或用于處理計算可執(zhí)行指令以控制設(shè)備的操作以便提供此處描述的集成開發(fā)環(huán)境的任何其他合適類型的處理器。可以在基于計算的設(shè)備處提供包括操作系統(tǒng)1304的平臺軟件或任何其他合適的平臺軟件以使得應(yīng)用軟件1305-1309能夠在該設(shè)備上執(zhí)行。應(yīng)用軟件包括約束解決器1306、軟件開發(fā)引擎1307、硬件開發(fā)引擎1308和物理設(shè)計引擎1309。該應(yīng)用軟件還可包括以下的一個或多個模擬引擎1310、硬件檢測模塊1311、輸出生成器模塊1312和同步模塊1324。計算機可執(zhí)行指令可使用諸如存儲器1313這樣的任何計算機可讀介質(zhì)來提供。存儲器具有任何合適的類型,諸如隨機存取存儲器(RAM)、諸如磁或光存儲設(shè)備等任何類型的盤存儲設(shè)備、硬盤驅(qū)動器、或⑶、DVD或其他盤驅(qū)動器。也可以使用閃存、EPROM或EEPR0M。盡管存儲器被示出為在基于計算的設(shè)備1300內(nèi),然而要理解,該存儲可以是分布式的或位于遠(yuǎn)程并經(jīng)由網(wǎng)絡(luò)1314或其他通信鏈路(例如,使用通信接口 1315)來訪問。存儲器1313還可包括對象數(shù)據(jù)存儲1316和實例化專用數(shù)據(jù)存儲1317?;谟嬎愕脑O(shè)備1300還包括輸入/輸出控制器1318,該輸入/輸出控制器被安排成向顯示設(shè)備1320輸出顯示信息,該顯示設(shè)備可與基于計算的設(shè)備1300分開或集成。顯示信息包括該IDE的圖形用戶界面并呈現(xiàn)上面描述的不同視圖。輸入/輸出控制器1318還被安排成接收并處理來自諸如用戶輸入設(shè)備1322 (例如,鼠標(biāo)或鍵盤)等一個或多個設(shè)備的輸入。此用戶輸入可被用于使用戶能夠選擇對象、配置對象參數(shù)、修改所選擇的對象的3D布置等。在一實施例中,如果顯示設(shè)備1320是觸敏顯示設(shè)備,那么它還可擔(dān)當(dāng)用戶輸入設(shè)備1322。輸入/輸出控制器1318還可從諸如模塊化電子元件或網(wǎng)絡(luò)攝像頭等連接的硬件接收數(shù)據(jù)(例如,在使用硬件檢測模塊1310的情況下)。輸入/輸出控制器1318還可將數(shù)據(jù)輸出到除了顯示設(shè)備以外的設(shè)備,例如,輸出到所連接的硬件以對 處理器編程,或輸出到用于制造原型外殼的激光切割機、3D打印機或其他機器(圖13中未示出)。盡管本發(fā)明的示例在此處被描述并描繪成在如圖13中示出的具有由特定引擎集合所提供的特定視圖集合并且其中對象是硬件對象的系統(tǒng)中實現(xiàn)的,然而所描述的系統(tǒng)是作為示例而非限制提供的。本領(lǐng)域的技術(shù)人員將會認(rèn)識到,本發(fā)明的示例適于在各種不同類型的計算系統(tǒng)中應(yīng)用并且可提供不同的視圖和/或引擎。在一示例中,此處描述的功能可在各視圖和/或引擎之間不同地劃分,并且在視圖和引擎之間可能不存在一對一關(guān)系。此外,某些或所有對象可能不是硬件對象而可能反而包括化學(xué)對象,并且在這種實施例中,硬件配置視圖/引擎可替代地被稱為對象配置視圖/引擎。要理解,圖1、3、6、8、9和11中的雙末端箭頭標(biāo)識IDE中的元件之間的可能的數(shù)據(jù)路徑;然而,要理解,這些不是唯一的可能路徑,而它們僅是作為示例示出的。上面描述的IDE各自提供了單一開發(fā)環(huán)境,該開發(fā)環(huán)境將生產(chǎn)原型設(shè)備所需的任務(wù)緊密集成。該IDE允許用戶設(shè)計并開發(fā)不同方面電子配置、設(shè)備運行的軟件及其物理形狀因子。通過提供單一環(huán)境,用戶不需要熟悉多個工具,并且這使得特定領(lǐng)域的專家(例如,物理設(shè)計師)更好地理解電子模塊的約束,反之亦然。在該IDE包括傳感器模擬/交互視圖的情況下,(例如,如在圖6和8中所示),該開發(fā)環(huán)境提供了創(chuàng)建傳感器輸入流和交互模擬以在實際實現(xiàn)之前鍛煉該設(shè)計的便利。通過使用單一環(huán)境,該環(huán)境能夠提供涵蓋設(shè)備設(shè)計的所有方面(例如,軟件、硬件和物理設(shè)計)的單一版本號。這改善了設(shè)備開發(fā)的可溯性(traceability)。此處所使用的術(shù)語‘計算機’是指帶有處理能力以便它可以執(zhí)行指令的任何設(shè)備。本領(lǐng)域的技術(shù)人員將認(rèn)識到,這樣的處理能力被集成到許多不同的設(shè)備中,因此,術(shù)語‘計算機’包括PC、服務(wù)器、移動電話、個人數(shù)字助理和許多其他設(shè)備。此處所描述的方法可以通過有形的存儲介質(zhì)上的計算機可讀形式的軟件來執(zhí)行。有形(或非瞬態(tài))存儲介質(zhì)的示例包括盤(disk)、拇指型驅(qū)動器、存儲器等而不包括所傳播的信號。軟件可適于在并行處理器或串行處理器上執(zhí)行以使得各方法步驟可以按任何合適的次序或同時執(zhí)行。這承認(rèn),軟件可以是有價值的,單獨地可交換的商品。它旨在包含運行于或者控制“啞”或標(biāo)準(zhǔn)硬件以實現(xiàn)所需功能的軟件。它還旨在包含例如用于設(shè)計硅芯片,或者用于配置通用可編程芯片的HDL (硬件描述語言)軟件等“描述”或者定義硬件配置以實現(xiàn)期望功能的軟件。本領(lǐng)域技術(shù)人員會認(rèn)識到,用于存儲程序指令的存儲設(shè)備可分布在網(wǎng)絡(luò)上。例如,遠(yuǎn)程計算機可以存儲被描述為軟件的進程的示例。本地或終端計算機可以訪問遠(yuǎn)程計算機并下載軟件的一部分或全部以運行程序??闪磉x地,本地計算機可以根據(jù)需要下載軟件的片段,或在本地終端上執(zhí)行一些軟件指令,并在遠(yuǎn)程計算機(或計算機網(wǎng)絡(luò))上執(zhí)行另一些軟件指令。本領(lǐng)域的技術(shù)人員還將認(rèn)識到,通過利用本領(lǐng)域的技術(shù)人員已知的傳統(tǒng)技術(shù),軟件指令的全部,或一部分可以通過諸如DSP、可編程邏輯陣列等等之類的專用電路來實現(xiàn)。對精通本技術(shù)的人顯而易見的是,此處給出的任何范圍或設(shè)備值可以被擴展或改變,而不會丟失尋求的效果。可以理解,上文所描述的優(yōu)點可以涉及一個實施例或可以涉及多個實施例。各實施例不僅限于解決任何或全部所陳述的問題的那些實施例或具有任何或全部所陳述的優(yōu)點那些實施例。進一步可以理解,對“一個”項目的引用是指那些項目中的一個或多個。 此處所描述的方法的步驟可以在適當(dāng)?shù)那闆r下以任何合適的順序,或同時實現(xiàn)。另外,在不偏離此處所描述的主題的精神和范圍的情況下,可以從任何一個方法中刪除各單獨的框。上文所描述的任何示例的各方面可以與所描述的其他示例中的任何示例的各方面相結(jié)合,以構(gòu)成進一步的示例,而不會丟失尋求的效果。此處使用了術(shù)語‘包括’旨在包括已標(biāo)識的方法的框或元件,但是這樣的框或元件不包括排它性的列表,方法或設(shè)備可以包含額外的框或元件??梢岳斫猓厦鎸σ惠^佳實施例的描述只是作為示例給出并且本領(lǐng)域的技術(shù)人員可以做出各種修改。以上說明、示例和數(shù)據(jù)提供了對本發(fā)明的各示例性實施例的結(jié)構(gòu)和使用的全面描述。雖然上文以一定的詳細(xì)度或參考一個或多個單個實施例描述了本發(fā)明的各實施例,但是,在不偏離本發(fā)明的精神或范圍的情況下,本領(lǐng)域的技術(shù)人員可以對所公開的實施例作出很多更改。
權(quán)利要求
1.一種用于開發(fā)設(shè)備的集成開發(fā)環(huán)境,所述集成開發(fā)環(huán)境包括 被安排成向用戶提供多個不同視圖的用戶界面,其中每個視圖與設(shè)備設(shè)計的不同方面相關(guān)聯(lián); 被安排成存儲與多個對象中的每一個相關(guān)聯(lián)的多個不同類型的數(shù)據(jù)的數(shù)據(jù)庫,所述不同類型的數(shù)據(jù)與設(shè)備設(shè)計的所述不同方面相關(guān); 用于接收用戶輸入信號的輸入,所述用戶輸入信號從所述數(shù)據(jù)庫中選擇至少一個對象來添加到形成所述設(shè)備的對象的集合;以及 將所述視圖鏈接以便在一個視圖中的改變影響至少一個其他視圖的約束解決器。
2.如權(quán)利要求I所述的集成開發(fā)環(huán)境,其特征在于,一視圖被安排成基于所述用戶輸入信號生成推斷的參數(shù),并且其中所述環(huán)境還包括 被安排成存儲實例化專用數(shù)據(jù)的數(shù)據(jù)存儲,所述實例化專用數(shù)據(jù)包括推斷的參數(shù);以及 其中所述約束解決器被安排成通過檢測存儲在所述數(shù)據(jù)存儲和所述數(shù)據(jù)庫的至少一個中的參數(shù)中的沖突來鏈接所述視圖。
3.如權(quán)利要求2所述的集成開發(fā)環(huán)境,其特征在于,所述輸入進一步用于接收指定與所述設(shè)備相關(guān)聯(lián)的全局參數(shù)的用戶輸入信號,并且其中所述實例化專用數(shù)據(jù)包括全局參數(shù)。
4.如前述權(quán)利要求中任一項所述的集成開發(fā)環(huán)境,其特征在于,所述約束解決器被進一步安排成向用戶通知參數(shù)中的檢測到的沖突。
5.如權(quán)利要求1-3中任一項所述的集成開發(fā)環(huán)境,其特征在于,所述約束解決器被進一步安排成更新形成所述設(shè)備的對象的集合以解決參數(shù)中的檢測到的沖突。
6.如前述權(quán)利要求中任一項所述的集成開發(fā)環(huán)境,其特征在于,所述多個不同視圖包括對象配置視圖,軟件開發(fā)視圖和物理設(shè)計視圖,且其中與每個對象相關(guān)聯(lián)的所述多個類型的數(shù)據(jù)包括所述對象的3D模型;所述對象所使用的任何軟件庫的細(xì)節(jié);以及用于所述對象的參數(shù)。
7.如權(quán)利要求6所述的集成開發(fā)環(huán)境,其特征在于,所述對象配置視圖包括硬件配置視圖,而用于所述對象的所述參數(shù)包括硬件參數(shù)。
8.如權(quán)利要求6或7所述的集成開發(fā)環(huán)境,其特征在于,所述多個不同視圖進一步包括被安排成接收傳感器模擬數(shù)據(jù)并模擬所述原型設(shè)備響應(yīng)于所述傳感器模擬數(shù)據(jù)的表現(xiàn)的模擬視圖。
9.如權(quán)利要求8所述的集成開發(fā)環(huán)境,其特征在于,所述傳感器模擬數(shù)據(jù)包括以下的至少一項從所述數(shù)據(jù)庫訪問并與形成所述設(shè)備的對象的集合中的一個對象相關(guān)聯(lián)的傳感器模擬數(shù)據(jù);以及由所述模擬視圖響應(yīng)于與虛擬設(shè)備的用戶交互而生成的用戶交互數(shù)據(jù)。
10.如前述權(quán)利要求中任一項所述的集成開發(fā)環(huán)境,其特征在于,進一步包括用于輸出制造數(shù)據(jù)的輸出。
11.如權(quán)利要求10所述的集成開發(fā)環(huán)境,其特征在于,進一步包括被安排成基于與形成所述設(shè)備的對象的集合中的每一對象相關(guān)聯(lián)的數(shù)據(jù)并基于實例化專用數(shù)據(jù)生成所述制造數(shù)據(jù)的輸出生成器模塊。
12.如前述權(quán)利要求中任一項所述的集成開發(fā)環(huán)境,其特征在于,進一步包括被安排成標(biāo)識一個或多個對象并將所標(biāo)識的對象添加到形成所述設(shè)備的對象的集合的硬件檢測模塊。
13.—種方法,包括 將與多個對象相關(guān)聯(lián)的數(shù)據(jù)存儲在數(shù)據(jù)庫中,用于每個對象的數(shù)據(jù)包括多個不同類型的數(shù)據(jù); 使用戶能夠通過用戶界面中的多個不同視圖中的一個視圖從所述數(shù)據(jù)庫選擇并配置對象的集合以形成設(shè)備,其中每個視圖與設(shè)備設(shè)計的不同方面相關(guān)聯(lián);以及 基于用戶在另一視圖中所做的改變更新在一個視圖中顯示給所述用戶的信息。
14.如權(quán)利要求13所述的方法,其特征在于,所述多個不同視圖包括對象配置視圖,軟件開發(fā)視圖和物理設(shè)計視圖,且其中與每個對象相關(guān)聯(lián)的所述多個類型的數(shù)據(jù)包括所述對象的3D模型;所述對象所使用的任何軟件庫的細(xì)節(jié);以及用于所述對象的參數(shù)。
15.如權(quán)利要求13或14所述的方法,其特征在于,還包括 基于所選擇的對象和所接收的用戶輸入在一視圖中生成至少一個推斷的參數(shù); 將所述推斷的參數(shù)存儲在數(shù)據(jù)存儲中;以及 檢測推斷的參數(shù)與存儲在所述數(shù)據(jù)庫中的用于所選擇的對象中的每一個對象的參數(shù)中的任一個之間的沖突。
全文摘要
描述一種用于快速設(shè)備開發(fā)的集成開發(fā)環(huán)境。在一實施例中,該集成開發(fā)環(huán)境向用戶提供多個不同視圖,每個視圖與設(shè)備設(shè)計的不同方面(諸如硬件配置、軟件開發(fā)和物理設(shè)計)相關(guān)。該設(shè)備(它可以是原型設(shè)備)是由從數(shù)據(jù)庫選擇的多個對象形成的,并且該數(shù)據(jù)庫為每個對象存儲多個數(shù)據(jù)類型,諸如用于該對象的3D模型、軟件庫和代碼存根(code-stub),以及硬件參數(shù)。用戶可通過以任何次序選擇不同視圖來設(shè)計該設(shè)備,并且可在他們選擇時在各視圖間切換。在一個視圖中所做的改變(諸如對新對象的選擇)被饋送到其他視圖中。
文檔編號G06F19/00GK102844760SQ201180017137
公開日2012年12月26日 申請日期2011年3月25日 優(yōu)先權(quán)日2010年4月9日
發(fā)明者N·韋拉, J·斯科特, S·豪杰斯, D·A·巴特勒, S·伊扎迪 申請人:微軟公司