用于快速设备开发的集成开发环境的制作方法

文档序号:6360094阅读:154来源:国知局
专利名称:用于快速设备开发的集成开发环境的制作方法
用于快速设备开发的集成开发环境背景原型设备的实现是开发新计算设备的过程的关键部分,而目前此过程既耗时又昂贵。原型可用于实验室测试和/或用于用户试验,而这意味着原型通常需要在大小、重量、性能等方面充分代表最终产品,这组成了快速生产适当原型的困难。在能够生产代表性原型的情况下,具有最终用户的消费者计算设备的试验可在开发过程的早期执行,而这可提供关于设备的价值、它是否保证进一步的开发、以及什么改变可能使其更有用、对用户更友好等的有用信息。为了开发代表性原型,通常需要执行基本上与创建最终产品相同的步骤,例如,设计PCB并制作该PCB,开发固件来在设备上运行,设计外壳并制造该外壳并随后组装该设备。这带来了很大的初期花费并且迭代起来非常耗时而且昂贵。以下描述的各实施例不限于解决已知原型化(prototyping)或开发方法和工具的 缺点中的任一个或全部的实现。概述下面呈现了本发明的简要概述,以便向读者提供基本理解。本概述不是本发明的详尽概览,并且不标识本发明的关键/重要元素,也不描述本发明的范围。其唯一的目的是以简化形式呈现此处所公开的一些概念,作为稍后呈现的更详细的描述的序言。描述一种用于快速设备开发的集成开发环境。在一实施例中,该集成开发环境向用户提供多个不同视图,每个视图与设备设计的不同方面(诸如硬件配置、软件开发和物理设计)相关。该设备(它可以是原型设备)是由从数据库选择的多个对象形成的,并且该数据库为每个对象存储多个数据类型,诸如用于该对象的3D模型、软件库和代码存根(code-stub),以及硬件参数。用户可通过以任何次序选择不同视图来设计该设备,并且可在选择时在各视图间切换。在一个视图中所做的改变(诸如对新对象的选择)被馈送到其他视图中。通过结合附图参考以下详细描述,可更易于领会并更好地理解许多附带特征。附图描述根据附图阅读以下详细描述,将更好地理解本发明,在附图中图I是用于设备的快速开发的集成开发环境的示意图;图2示出约束解决器(constraint resolver)的操作的示例方法的流程图;图3是示出图I中示出的集成开发环境的一种替代表示的示意图;图4包括示出硬件配置引擎和软件开发引擎的操作的示例方法的两个流程图;图5是示出物理设计引擎的操作的示例方法的流程图;图6、8、9和11是用于设备的快速开发的集成开发环境的进一步示例的示意图;图7示出模拟引擎的操作的示例方法的流程图;

图10和12示出同步元件的操作的示例方法的流程图;以及图13示出可在其中实现本文所描述的各种方法的实施例的示例性的基于计算的设备。
在各个附图中使用相同的附图标记来指代相同的部件。详细描述下面结合附图提供的详细描述旨在作为本发明示例的描述,并不旨在表示可以构建或使用本发明示例的唯一形式。本描述阐述了本发明示例的功能,以及用于构建和操作本发明示例的步骤的序列。然而,可以通过不同的示例来实现相同或等效功能和序列。图I是用于设备的快速开发的集成开发环境(IDE)的示意图,其中该设备包括物理外壳和执行一些预先变成的软件的一些内部组件模块,诸如电子元件或传感器。在一示例中,该IDE可被用于快速原型化(prototype)设备,而后面的描述中对原型设备的开发的任何引用均是仅作为示例。该IDE向用户提供了在单一开发环境内的多个不同视图101-103,每个视图使用户能够开发设备的不同方面。这些视图将在以下更详细地描述。用户在开发设备时可以任何次序选择这些视图,并且可在他们选择时在各视图间切换,并且如此该IDE提供了一种灵活的非线性的设备设计方式。这些视图被提供各视图间同步的元件链接,使得用户在一个视图中对设计所做的改变反映在其他视图中。在本示例中,该元件 是约束解决器104。这些视图中的每一个具有对对象数据存储106 (其也可被称为智能库)和实例化专用(instantiation-specific)数据存储108的访问。对象数据存储106存储关于可用于搭建设备的对象或对象类的实例化独立(instantiation-independent)的数据,而实例化专用数据存储108存储被创建的设备专用的数据,诸如可以是用户指定或推断的参数。术语‘推断的参数’在此处用于指代由该IDE (例如,在该IDE的任何视图内)生成的任何参数。这些参数可作为用户输入的结果而生成(例如,所选择的对象的组合、所编写的特定代码等)。要理解,一对象可包括其他对象的分组的群集。在许多实施例中,该IDE从对象数据存储106仅读取数据,而对实例化专用数据存储108进行数据读写。硬件配置视图101显示可用对象(或对象类)的细节并允许用户从对象数据存储106选择对象(或对象类)来形成设备。例如,用户可选择存储器模块、处理器、显示器、电池、用户输入设备(诸如按键板(keypad))、GPRS (通用分组无线电业务)模块等。用户输入设备提供了对象类的示例,因为可存在可被选择的许多不同类型的用户输入设备(对象)。在另一示例中,可存在用户能够选择的许多不同的显示器(每个均是不同的对象),这些显示器形成对象类‘显示器’。在第三示例中,用户可选择对象类‘电池’,这等同于用户说“使用任何电池”,或可选择特定电池,这等于用户说“使用这一特定电池”(例如,具有特定容量的电池或特定类型的电池)。在以下描述中,对对象的任何引用均仅是示例性的,并且也可称为对象类。硬件配置视图101还允许用户配置对象参数,例如,用户可选择对象类‘显示器’并配置对象参数来指定最小显示器尺寸、显示器分辨率等。在某些示例中,这可等同于选择类的子集,例如,类‘显示器’中具有超过用户指定参数的尺寸的所有显示器。已经被配置的任何对象参数被存储在实例化专用数据存储108中(此信息是实例化专用的,因为它与特定设备构造(build)有关)。所选择的对象的细节也可被存储在实例化专用数据存储108中或可以其他方式记录(例如,通过将适当的对象数据从对象数据存储106加载到中心储存库中,如下面参考图9-12更详细地描述的)。被提供给用户以使用户能够做出选择(以及可以任何形式而不必是列表形式提供给用户)的可用对象的列表可包括在对象数据存储106中的所有对象。然而,可基于已经做出的选择(例如,考虑对象或所指定的任何约束之间的不兼容性,如下面更详细地描述的)、基于存储在实例化专用数据存储108中的(以及可能已在其他视图中生成的)实例化专用参数、和/或取决于其他因素来更新这个可用对象列表。可使用自动化决策算法来生成可用对象的列表。在一实施例中,可用于创建该设备的对象可包括为了设备的快速原型化或为了非原型设备的快速开发而设计的一组模块化硬件元件。该组元件例如可包括包含主处理器以及多个其他电子模块能容易地与其连接的核心模块。在一示例中,每个电子模块可用飞线(flying lead)和兼容连接器来适合。可经由该核心模块向每一外围模块提供电力,或者外围模块可各自包括电池或到电源的连接(例如,经由USB)。例如,外围模块可提供(超过在核心模块上所提供的)用于输入、输出、通信、电力、显示、传感和致动的附加能力。在某些示例中,可使用共同的通信协议,但是在其他示例中,可在核心模块和不同外围模块之间使用不同通信协议。软件开发视图102使用户能够编写计算机代码以在该设备上运行并提供到编译 器的前端以及提供对调试工具和模拟器的访问。该IDE可以是基于微软.NET微框架的,该框架允许用C#来编程设备(其可以是小型并且资源受约束的)并利用.NET微框架库或其他高级库所提供的高级编程原语。软件开发视图102使配置和使用单个对象(在一实施例中,其可包括从该组模块化硬件元件中选择的模块)的过程自动化。在硬件配置视图101 (或其他视图)中所选择的对象所使用的任何库和代码存根从对象数据存储106被自动加载。当编译软件时,生成与该设备相关联的多个推断的参数,诸如存储该代码所需的存储器的量和执行该代码所需的存储器的量。这些推断的参数被存储在实例化专用的数据存储108中。软件开发视图102可生成的推断的参数的另一示例是预期电池寿命(取决于用户所选择的电池)。物理设计视图103显示该设备的3D (三维)表示(基于所选择的对象),该表示可包括该设备的外壳的表示。初始3D表示(例如,其是在任何用户输入之前在此视图中显示的)和外壳可在该IDE内自动生成。物理设计视图允许用户操纵此3D表示来从任何视角(perspective)查看它以及在空间中重新安排所选择的对象。该物理设计视图还允许用户为该设备指定配置参数(例如,总大小约束或其他物理设计规则)或为单个对象指定配置参数(例如,显示器必须位于该设备的所标识的面上或者必须与特定用户输入模块(例如,按键板)位于同一面上)。这些配置参数(当它们与整个设备相关而不与该设备内的特定对象相关时它们可被称为‘全局参数’)与该物理设计视图所生成的任何推断的参数(诸如该设备的总大小和形状、自动生成的外壳的形状等)一起被存储在实例化专用数据存储108中。在违反任何物理设计规则的情况下(例如,所选择的对象不能适合放入该设备的用户指定的最大尺度内),该物理设计视图可把此情况的视觉化提供给用户,例如,通过突出显示该3D表示的部分或者向用户显示消息。对象数据存储106存储关于不同对象或对象类的实例化独立的数据,这些对象可被组装以形成设备,并且多个不同类型的数据与每一对象或对象类相关联地存储。与特定对象相关联地存储的不同类型的数据可对应于在该IDE内提供的不同视图,例如· 3D模型(其对应于物理设计视图103);
该对象所使用的任何软件库或代码存根的细节(其对应于软件开发视图102),其中特定库/代码存根可与该对象相关联地存储,或者对该特定库/代码存根的引用可被存储;以及·硬件参数(其对应于硬件配置视图101),诸如以下的一个或多个令所需的电连接(例如,地、5V、UART )今任何可选电连接(例如,如果针脚X被连接,则使能附加的模块重置能力)令任何硬件选择(例如,对象可支持UART或I2C接口并且这些中的一个是所需的)今电线是多分支线(multi-drop line)(例如,UART)还是点到点连接(例如,I2C)的细节令功能性今可使用的连接器以及它们能插入的插口今外部连接器今连线兼容性今用户可配置的任何参数的细节可与一对象相关联地存储的其他数据,诸如·约束(例如,取决于对一对象做出哪些连接而使能的与其他对象或不同方法的不兼容性),其可按照该对象的规则集来定义; 装载问题,诸如与将该对象在该设备的特定面上定位、相对于其他对象或外壳定位、定向敏感性(例如,某些设备可具有在设计原型时必须尊重的‘顶部’和‘底部’)等以及如何调整以自动适应这些问题有关的细节;·装载细节,诸如装载孔/支架等的位置;·机械强度;·性能数据,诸如电力消耗(且这可包括不同模式(例如,醒或睡眠)的不同电力消耗值)、在睡眠时唤醒所花的时间、获取读数的时间(例如,对于传感器)、耐热性、单位转换(例如,温度传感器可输出12个比特,可使用转换公式将其映射为。C)等;·传感器激励数据(如在下面参考图6的实施例更详细地描述的);·与该对象相关联的变量的细节,这些变量具有实例化专用值(例如,其可以是用户指定的或在该IDE内生成的),并且在这些值可不被指定或可被设置为初始默认值的情况下,这些变量在此处被称为‘对象变量’;·模拟该对象所需的任何其他数据(上面尚未指定的); 数据表单;以及 购买信息,诸如部件号、成本、制造者和经销商细节、本地部件仓库中的存货等。该其他数据可对应于特定视图中的一个或可与一个或多个视图相关。为特定对象定义的规则可以代数形式定义,例如(A+B+C)〈Y,其中A、B、C和Y是对象变量或推断的参数,诸如电压、电流、电容、消耗、带宽等。这些规则本身可添加额外的约束,例如,如果Z为真,则A〈Y。与特定对象(或对象类)相关联的数据可以模块化形式存储,以便当新对象被开发或以其他方式变得可用于被用户选择以包括在正使用该IDE开发的设备内时,与新对象相关联的模块化数据能够被容易地添加到对象数据存储106。例如,用于一对象(或对象类)的实例化独立的数据可被包括在‘模块描述’内,其中该模块描述包括与特定对象(或对象类)相关联的自包含数据元素。在一示例中,模块描述可包括zip文件夹中的多个数据文件,该zip文件夹进一步包括XML描述,该XML描述提供了用于这些文件的包(wrapper)并标识在这些数据文件中的每一个中所存储的数据的类型。例如,模块描述可包括3D模型、软件库的列表、硬件参数集合、规则集合、以及对象变量的列表。实例化专用数据存储108存储对正在使用该IDE开发的设备专用的数据,包括推断的参数(其由这些视图中的一个生成并包括已被选择以形成原型的一部分的对象的细节)以及全局参数(其可由用户指定)。3D配置的细节和已编写以在该原型上运行的软件的细节也可被存储在此数据存储108内或可被存储在别处(例如,在本地盘上、在文件共享上、或在版本控制储存库/数据库中)。全局参数(也可被称为全局约束)的示例可包括原型的最大尺度(例如厚度)、所需的电池寿命、不使用风扇的事实(其可影响可用于被用户选择的组件,例如,通过将可用处理器限制为产生小热量的那些处理器) 等。尽管将全局参数描述为是经由物理设计视图输入的,然而要理解,全局参数可替代地经由另一视图输入,或者可提供专用视图来输入这些全局参数。实例化专用数据存储108可支持版本化(versioning),以便能够为特定项目存储软件和/或硬件配置的不同版本。这可使用户能够退回到先前的版本,例如,在更新(例如,改变或添加硬件、在空间中重新安排组件和/或修改代码)导致问题的情况下。如上所述,两个库对象数据存储106和实例化专用数据存储108每一个均存储与在该IDE内并且在图I中示出的布置中的视图中的每一个相关的数据,每个存储均能由每个视图访问。在其他布置中,来自存储106、108之一 /两者的数据可经由另一元件(诸如中心储存库(例如,如在图9和图11中所示))对每一视图可用。约束解决器104检查参数不相抵触,其中这些参数可包括以下的一些或全部通过视图推断的参数;用户指定的参数(其是实例化专用的并存储在实例化专用数据存储108中);以及实例化独立的参数,例如,与已被选择的特定对象相关联的参数,其被存储在对象数据存储106中。图2示出约束解决器(constraint resolver) 104的操作的示例方法的流程图。约束解决器104接收实例化专用参数(框202),所述实例化专用参数包括形成设备设计的一部分的特定对象(或对象类)的细节。基于这些参数,约束解决器还从对象数据存储访问该特定对象的实例化独立的参数(框204)。实例化独立的参数可包括与所选择的对象相关联的约束/规则的细节。实例化专用参数可响应于由约束解决器发送到该实例化专用数据存储的周期性请求而从该数据存储中接收(在框202),替代地,实例化专用数据存储或视图101-103中的一个可在这些参数被生成或更新时或在视图改变时(例如,由用户发起的)将这些参数推送到约束解决器。约束解决器104的监视可以是周期性的(如在所述示例中),或者该监视可以是连续的。在已经接收/访问与设备设计相关联的参数的情况下(在已经到达设计中的特定阶段并且在该设备设计可能没有完成的情况下),约束解决器确定在所述参数中的任何参数之间是否存在冲突(框206),并且如果存在冲突,则约束解决器可向用户标志(flag)该冲突(框208),例如,经由该IDE的图形用户界面(GUI),或者替代地,约束解决器可尝试自动修复该冲突(框210)。在一示例中,该冲突可通过参数值的比较来确定,而在另一示例中,可使用与对象相关联的规则。在一进一步的示例中,可组合与多个对象相关联的参数(例如,将设备内的每个对象的功率消耗加总并将其与可作为全局参数指定的该设备的最大功率消耗相比较)。重复该过程(例如,周期性地或响应于接收新的实例化专用参数,如上所述),如由点画线箭头20所指示的。在经由⑶I向用户通知冲突的情况下,可使用专门的GUI屏,或替代地,可使用这些视图中的一个。在一示例中,在所选择的对象不能适合放入该原型的用户指定的最大尺度时,可在物理设计视图中用图形显示这一点(例如,通过突出显示该原型的延伸超出用户指定参数所设置的边界的部分)。在另一示例中,冲突解决器可接收该设备在执行在软件开发视图中编写的代码时的功率消耗的推断的参数。约束解决器可访问所选择的电池对象的数据并标识该电池所提供的电力是不足的。在此情况下,该IDE向用户警告该冲突。所使用的自动解决冲突(框210)的方法可取决于该原型设计内已被选择并配置的特定对象或对象类。在一示例中,在对象类‘存储器’已被选择(例如,经由硬件配置视图)且软件开发视图生成存储该代码所需的存储器量的推断的参数的情况下,如果该对象类包括不够小的存储器元件,可通过更新对象选择来指定足够大的存储器元件或通过选择足够大到满足该推断的参数的特定存储器元件来解决该冲突。对不同对象(或对象类的子集)的这种选择可由冲突解决器本身执行,或者替代地,该冲突解决器可触发这些视图中的一个 来运行自动决策算法来做出此确定。在冲突与存储器大小相关的此特定示例中,冲突解决器可触发(在框210中)硬件配置视图101来选择适当的存储器元件来解决参数中的冲突。如果此解决方案不可能,则该IDE可向用户标志该错误(如上所述)。在某些情形下,在另一视图中尝试冲突解决是可能的(例如,在冲突的参数受到该设计的多个方面的影响的情况下)。约束解决器104的使用以及在某些示例中由该IDE的视图对推断的参数(其可被存储在实例化专用数据存储108中)的生成允许对要在该IDE内的视图间共享的相关设计要求的访问。约束解决器和数据存储提供了框架,通过该框架用户在一个视图中所选择的设计决策致使其他视图中的可用选项/操作反映这些可能性。这具有跨越设备设计的先前未链接的方面而扩展智能的效果。图3是示出图I中示出的IDE的一种替代表示的示意图。IDE 300包括如上所述的对象数据存储106、实例化专用数据存储108以及约束解决器104。该IDE还包括多个引擎301-303,所述引擎提供图I中视图101-103后的计算。在本示例中,硬件配置引擎301与硬件配置视图101相关联,软件开发引擎302与软件开发视图102相关联,而物理设计引擎303与物理设计视图103相关联。尽管在本示例中在引擎和视图间存在1:1关系,然而这仅是作为示例,而在其他实施例中,单一引擎可以与多个视图相关联,反之亦然。该IDE进一步包括用户界面304,该用户界面提供被显示给用户并且用户通过其与视图101-103交互(并因此与引擎301-303交互)以设计设备(例如,原型)的⑶I。如上所述,该用户界面允许用户容易地在不同视图(其也可被称为表示)间切换,每个视图提供允许数据的不同表示被编辑的工具(例如,代码编辑器、传感器输入流/交互编辑器以及3D设计编辑器)。要理解,可存在用于在视图间移动的许多不同交互可能性,诸如双击、右键点击、Alt-Tab 和 Ctrl-Tab。图3中的箭头示出该IDE中的元件间的数据路径的示例,然而,要理解,这仅是作为示例,而数据可在不同于图3中所示的那些的不同路径/方向中以及在不同元件间流动。
图3还示出了 IDE 300的多个输入和输出306-308。如上面结合图I所述,对该IDE的输入包括用户对对象306的选择以及设备307上的任何全局约束。取决于特定实现,可通过该IDE内的各视图中的任何视图来指定全局参数,或者可提供该GUI中的专门部分来使用户能够指定全局参数。在一示例中,所述全局参数可从外部源导入。来自该IDE的输出包括用于使该设备能够被建造的制造数据308。该制造数据例如可包括以下的一项或多项组件列表309、固件310和可用于制造该设备的外壳的数据文件311。在某些实施例中,该固件可被直接输出到处理器,而在其他实施例中,该固件可被输出以使得用户能将其加载到处理器上。在某些示例中,可通过输出生成器模块在该构造过程中对用户进行引导。下面参考图8更详细地描述了制造数据和输出生成器模块。图4包括分别示出硬件配置引擎301和软件开发引擎302的操作的示例方法的两个流程图401-402。第一个流程图401示出了硬件配置引擎301的操作的示例方法。该方法包括基于任何实例化专用参数来确定可用对象(或对象类)的集合(框411),而这可涉及访问存储在数据存储108中的参数。该可用对象集合随后被显示给用户(框412)以使用户能够做出选择。该引擎接收选择一个或多个对象的用户输入(框413)并随后从对象数据存 储106访问每个对象的硬件相关数据(框414)。该引擎还可接收配置对象的用户输入(框417),并且在接收该硬件相关数据(在框414中)后此配置可被使能。该配置数据导致用户指定的参数,所述参数被存储在实例化专用数据存储108中(框418)。基于所选择的对象、硬件数据和任何配置数据,该引擎计算任何推断的参数(框415)并将它们存储在参数存储中(框416)。已经选择了对象(框413)和/或创建了推断的参数(在框415中)后,这可影响用户能继续选择的可用对象的集合,因此可重复该方法的各方面(如由点画线箭头41所指示的)。硬件配置引擎301可生成的推断的参数的示例包括设备从睡眠完全唤醒的时间(例如,基于构成该设备的对象的唤醒时间)、该设备内的任何共享总线(例如I2C)的估计的剩余容量(例如,如果视频模块和另一传感器两者均使用该总线则有状态数据率可能超出该总线的已知容量)、一对象连接到另一对象的特定方式(例如,当超过一个选项可用时)
坐寸ο图4中的第二流程图402示出了软件开发引擎302的操作的示例方法。该方法包括访问数据存储108中的任何实例化专用参数(框421),并且如果已选择了任何对象(例如,在硬件配置视图中),则加载用于与所述特定对象进行接口的相关库和代码存根(框422)。这些库和代码存根,或者对它们的引用,被存储在与该特定对象相关联的对象数据存储106中。与所选择的对象相关的其他数据也可从该对象数据存储106访问,而这种数据的一个示例可以是对象的定向敏感性(例如,加速度计或任何方向传感器)以及如何基于该对象在该设备内的实际定向的推断的参数(如由物理设计视图103生成的)用软件对其进行矫正。可接收定义代码的用户输入(框423),该代码在从用户接收到请求后(例如,用户可点击软件开发视图302中的GUI内的‘编译’按钮)可被编译(框424)。如果该用户编写的代码(如在框423接收的)包括对先前未选择的新对象的引用(如基于在框421中访问的实例化专用参数确定的),则软件开发引擎302更新所述实例化专用参数来包括新对象的选择(框429),将更新后的参数存储在数据存储108中(框430)并加载所需的任何附加的库和代码存根(框422)。
在编译时(在框424中),软件开发引擎创建推断的参数(框425)并将这些参数存储在实例化专用数据存储108中(框426)。如上所述,软件开发引擎可生成的推断的参数的示例是存储该代码所需的存储器的量或执行该代码所需的存储器的量。所生成的推断的参数可取决于特定引擎内的活动并且还取决于其他实例化专用的和/或实例化独立的参数。例如,可基于所选择的电池对象、用于该对象的实例化独立的参数以及所编写的代码来生成该原型的估计电池寿命的推断的参数。该方法还可包括启动调试工具(框427)和/或模拟器(框428)。与编译步骤一样(框424),该调试工具和/或模拟器可响应于用户请求(例如,通过点击该⑶I内的‘调试’或‘模拟器’按钮)而启动(在框427和428中)。图5是示出物理设计引擎303的操作的示例方法的流程图。物理设计引擎303访问存储在实例化专用数据存储108中的任何实例化专用参数(框501),特别而言,物理设计引擎访问已被选择以形成该设备的一部分的对象的细节。每个被选择的对象的3D模型(或对3D模型的引用)随后被从对象数据存储106访问(框502)并被用于生成并显示该设备的3D表示(框503)。用户可通过提供操纵该3D模型的用户输入(在框504中接收)和/或通 过指定与该设备相关联的设计规则(其也可以是全局参数)(在框505中接收的)来与引擎303交互。这种用户输入的一示例会是指定该设备的最大厚度或显示器的所需位置的用户输入。在接收指定设计规则(或全局参数)的用户输入的情况下,这些用户指定的参数被存储在实例化专用数据存储108中(框506)。作为任何用户输入的结果(在框504或505中),该3D模型可以被更新而且更新后的模型可被显示给用户(框507),并且可为多个连续的输入重复此过程(如由点画线箭头51所指示的)。物理设计引擎303基于所得到的3D模型创建推断的参数(框508)并将它们存储在实例化专用数据存储中(框509)。物理设计引擎可生成的推断的参数的一个示例是该设备的尺度。图6是用于设备的快速开发的另一 IDE的示意图。图6中示出的IDE除了图I中示出并在上面描述的元件之外还包括附加的视图,传感器模拟/交互视图601。与上面描述的IDE —样,用户在开发设备时可以任何次序选择这些视图,并且可在他们选择时在各视图间切换,并且如此图6中示出的IDE也提供了一种灵活的非线性的设备设计方式。如图I中一样,视图101-103、601被提供各视图间同步的约束解决器104链接,使得用户在一个视图中对设计所做的改变反映在其他视图中。传感器模拟/交互视图601允许用户访问存储在对象数据存储106中的传感器数据(例如,与形成该设备的一部分的特定对象相关联的)并且模拟响应于该传感器数据或响应于传感器数据的组合的该设备的操作(例如,基本上同时锻炼(exercise)该设备的不同部分的多个流)。该设备的表现的细节可被显示给用户且用户可以能够指定在模拟期间要监视的参数。该视图在该模拟运行时收集表现数据,且这可以被实时地或在模拟完成后显示给用户。存在该视图可使用户能够做的多个其他操作,诸如设计传感器流、模拟对用户交互的响应、指定测试例、与该设备交互以及记录交互,而在下面更详细地描述了这些。可在模拟中使用的传感器数据的示例可包括· GPS信息——在高等级或低等级的预先录制的序列 加速度计数据——包括使用代理加速度计来记录并随后回放诸如用于实际设计的设备的虚拟传感器数据的此类数据的可能性
·按钮按下、触摸等·温度 无线电分组通信等·蓝牙、WiFi 或 Zigbee 通信附加于(或代替)模拟响应于从对象数据存储访问的传感器数据的设备的表现,该表现可响应于用户交互或交互序列来模拟。在一示例中,该视图可向用户提供到该设备的虚拟接口(例如,原型移动设备的图形表示,其中用户可点击按钮来模拟该移动电话的操作),以便该用户可与虚拟设备交互。在另一示例中,用户可以能够与连接到该系统的实际的硬件对象交互。在任一情况下,交互序列可被该IDE记录以便该交互序列随后可被用于模拟或该模拟可在交互进行时实时地运行。所记录的交互序列数据可被存储在数据存储中,以便在需要时该交互序列可用于特定设备的未来测试。在某些示例中,该数据可以是实例化独立的并且可被存储在对象数据存储106中。 该视图使得用户能够设计传感器流和/或测试例以在该设备的模拟/测试中使用。传感器流包括该设备所接收的输入的细节(其可包括交互序列)和/或该设备所经历的状况(例如,环境状况),且该测试例包括传感器流和响应于所述传感器流所预期的该设备的表现(或输出)的细节。例如,如果预期能够多点触摸的触摸屏设备能够检测特定大小的指尖并且在由定义的最小距离分开的触摸之间进行区分,则可开发指定一组触摸事件并定义预期的检测到的信号的测试例。测试例的设计可以通过数据/数字/向量的人工输入、或使用生成(例如)特殊波形的实用程序(utilities) /工具、或通过使用实时的人工代理激励。当运行测试例时,该视图把结果与定义的输出进行比较并可经由该GUI向用户标志任何差异。该IDE可包括与传感器模拟/交互视图601相关联的模拟引擎。图7示出模拟引擎的操作的示例方法的流程图。该模拟引擎访问传感器数据(框701),并且如上所述,可能有此传感器数据的许多不同源。它可以是从对象数据存储106读取的,在用户与真正的或虚拟的硬件交互时记录的,或者用户指定的(并且通过用户输入接收的)。随后在运行对该设备的模拟时使用该数据(框702)。在运行模拟时,模拟引擎使用存储在对象数据存储106中的与构成该设备的特定对象相关的数据以及来自实例化专用数据存储108的实例化专用数据。随后可向用户显示模拟结果(框703),或在另一示例中,可将该结果与所需的结果进行比较(其中在框704中访问这些结果并在框705中执行比较)。随后可向用户显示比较的结果(框706),而在某些情况下这些结果可简单地表示对所定义的测试的通过或失败。在原型不满足测试例的情况下(例如,响应于输入它没有给出所需的输出),可将这直接地或通过传感器模拟/交互视图601所生成的推断的参数反馈到约束解决器104,并存储在参数存储108中。约束解决器104随后可尝试以与上面描述的参数间的冲突类似的方式解决此问题。传感器模拟/交互视图可被认为为该设备提供测试环境。通过提供测试环境(正被设计的富含传感器的设备可在其中在设计阶段被“锻炼”),原本不会变得明显的许多问题会被凸显。第一个示例可以是某个外部传感器激励序列使该设备的功率消耗性能能被更精确地测量。第二个示例是外部传感器中断的某些异步序列能导致设备锁住或用户界面中的不良表现/不响应的情况,例如可能发现在某些加速阈值处向主处理器提供样本中断的加速度计由于模拟的运动输入而随着时间在某些加速度情况下太快地消耗电池。像其他视图101-103 —样,传感器模拟/交互视图601可生成推断的参数并将它们存储在数据存储108中。传感器模拟/交互视图可生成的推断的参数的示例包括性能参数,诸如电力消耗或对特定激励的响应。图8是用于设备的快速开发的进一步IDE的示意图。与图6相比,图8中示出的IDE包括两个附加的元件硬件检测模块801和输出生成器模块802。要理解,IDE可包括这些附加的元件中的任一个,并且IDE可包括这些附加的元件中的一个或两个而不包括传感器模拟/交互视图601。这两个附加的元件将在以下更详细地描述。硬件检测模块801允许用户通过将实际的硬件对象(诸如上面描述的模块化硬件元件)连接在一起来在IDE内构造设备。当用户将所述实际硬件对象中的至少一个(诸如来自模块化硬件元件集合的核心模块)连接到硬件检测模块801 (例如,经由USB)时,该模块自动检测哪些模块被连接并更新硬件配置视图101。此检测过程可使用存储在对象数据存 储106中的数据,例如,在特定模块具有定义的地址且硬件检测模块801检测该地址的情况下,对象数据存储106可用于搜索与检测到的地址相对应的模块。在接收到标识连接的模块的数据后,硬件配置视图101更新实例化专用参数并生成推断的参数(如上所述)。替代地,硬件检测模块801可更新实例化专用参数并将这些参数直接存储在实例化专用数据存储108中。硬件检测模块801可使用相机(例如,网络摄像头)来标识硬件对象的集合来代替(或附加于)经由电连接来检测硬件对象的存在。在这种情况下,对象数据存储106可存储与每个对象(或对象类)相关联的代表性图形,而硬件检测模块801可使用图像分析算法来标识捕捉的图像(或图像序列)内的元件并在对象数据存储106中搜索匹配的(或类似的)图像。在某些实施例中,用户可以能够使用硬件检测模块801来检测并存储对象的第一集合,并然后随后检测对象的第二集合,以便该设备包括对象的这两个集合的组合。对于其中将所有对象放入相机的视野内不可能,或者其中将所有对象连接到核心模块不可能(例如,由于连接器的数量的限制或连接引线的长度的限制)的复杂设备,这可能是有用的。输出生成器模块802生成在制造该设备时使用的、并且在某些示例中可在构造/输出过程中引导用户(例如,使用一系列提示(prompt)和/或问题)的数据308。如上面参考图3所述的,输出的数据可包括以下的一项或多项组件列表309、固件310和可用于制造原型的外壳的数据文件311。在一示例中,输出生成器模块802允许用户指定用于原型外壳的制造技术(例如,激光切割或3D打印),并且所选择的技术影响数据文件311的格式。在一示例中,可从由输出生成器模块802显示给用户的多个选项中选择制造技术,并且在用户选择激光切割作为方法的情况下,输出生成器模块802使外壳的设计(其是由物理设计引擎303自动生成的)平坦为可被开槽(slot)以及粘合在一起的侧面,并且产生适于输入到激光切割机的输出文件。在某些实施例中,输出文件可直接地或经由网络连接(诸如图13中示出的通信接口 1315)输出到激光切割机或其他制造设备(例如,3D打印机)。输出生成器模块802附加地编译软件代码(如果该代码尚未被编译的话)并产生将在该设备内的处理器上运行的固件。在某些示例中,如果用户经由USB将处理器连接到该IDE (并且可提示用户这样做),可通过输出生成器模块802直接对处理器编程。在其他示例中,或对于二级处理器,输出生成器模块802可输出固件文件,固件文件可被加载到处理器上(例如,使用第三方工具)。在制造多个设备的情况下,输出生成器设备802可并行地对多个处理器编程或者可依序对它们进行编程,在完成每次迭代之后提示用户断开一个处理器模块的连接并连接另一个处理器。在一示例中,输出生成器模块802可响应于接收‘打印n (print η)’用户输入(其中η是所需的设备的数量),致使固件编程器被启动η次,制造 设备(例如激光切割机或3D打印机)产生η个物理设计(例如,设备外壳的η个副本),所需部分的自动库存计数、硬件和软件的自动打共同标签(co-lebel)以便物理外壳标签和软件版本/序列号标签同步等。除了生成在制造设备时使用的数据308并输出该数据之外,输出生成器模块802还可生成‘项目存档’输出,该项目存档输出包括任何存储的版本、测试结果和与开发设备的特定项目相关的其他数据的细节。该存档数据随后可存储在该IDE的外部,以防在未来需要该存档数据。此处描述的方法可极大地减少生产设备(例如,原型设备)所花的时间长度。在使用模块化硬件(如上所述的)并且输出生成器模块802输出用于使用诸如激光切割或3D打印等快速技术生产外壳的数据文件的实施例中,在仅8小时内从原始主意到生成多个原型(例如5个)是可能的。此外,这些原型与第一代原型的正常情况相比明显地更稳健并且更精细。这具有减少所需的迭代的数量的效果,这减少了思想和最终设计之间的总的时间标尺,而且减少了项目成本。图9示出用于设备的快速开发的进一步示例IDE的示意图。在本示例中,该IDE包括同步元件902,该同步元件保持正在开发的设备的当前构造状态的工作数据集。该数据集包括实例化独立的和实例化专用的两种数据,并且因此同步元件902能被认为是包括实例化专用数据存储108 (如在图9中所示)。同步元件902进一步包括约束解决器104。图10是同步元件902的操作的示例方法的流程图。同步元件902从视图101-103中的一个或多个接收实例化专用数据(框1002)。响应于视图内的用户选择(其可选择新对象或导致推断的参数的生成或更新)或在视图中的变化(例如,如由用户发起的)后,可从视图接收实例化专用数据(在框1002中)。所接收的数据包括形成设备设计的一部分的特定对象(或对象类)的细节,并且还可包括视图生成的其他推断的参数。同步元件902维护正在开发的设备的表示并因此加载每个所标识的对象或对象类的模块描述(框1004)。同步元件902可包括库管理器904,该库管理器选择特定的模块描述来从对象数据存储106加载。与同步元件维护的设备表示相关的数据在需要时被传递到所述视图(框1005),这可在图10中所示的流程图中的任何点处执行多次。同步元件902可包括系统管理器906,该系统管理器基于工作数据集内的模块描述来执行将约束推送回每个视图。提供给视图的数据可包括实例化独立的和/或实例化专用的数据。在一示例中,库管理器904可初始地拉入通用模块描述,例如,对象的类或子类的模块描述,并且逐渐地,随着设备内的对象的选择被变窄,可将更具体的模块描述加载到工作数据集中。如上所述,对象的模块描述可包括一个或多个‘对象变量’的细节,所述对象变量可具有实例化专用的值。当从视图接收数据时(在框1002中),同步元件更新这些变量的值(框1006)。对象变量的值可作为所述视图之一内的推断的参数而被生成,或者该值可由同步元件基于也包含在模块描述内的一个或多个推断的参数和/或规则来计算。在框1005中可将一个或多个对象变量的值传递到视图。在维护正在开发的设备的表示时,同步元件使用存储在所标识的对象的模块描述中的任何规则。这些规则例如可提供视图之间的链接,例如,通过提供将硬件配置(例如,连接哪些插口)映射到在软件代码中使能的哪些方法的规则。在一实际示例中,作为SD卡读取器的对象可具有一规则,该规则指定如果一根线被连接则使能读和写方法,但是如果两根线被连接,则还使能检查该卡是否存在的方法以及确定该卡是否被写保护的方法。在另一示例中,同步元件902可使用规则来将一对象变量转换为视图理解的参数或执行其他参数的翻译。在本示例中,同步元件902包括约束解决器104,并且在已经加载了模块描述(框1004)并且更新了对象变量后,如果需要,(在框1006中),该同步元件确定所述参数/变量中的任一个之间是否存在冲突(框1008),并且如果存在冲突,可经由例如该IDE的GUI向用户标志该冲突(框1010),或者替代地,可尝试自动修复该冲突(框1012)。
可重复图10中示出的过程(例如,如上所述,周期性地或响应于接收到新的实例化专用参数),如由点画线箭头1000所指示的,并且要理解,可以不同次序执行各框,例如,可在任何时间或基本连续地向视图传送或从视图传送数据。在同步元件902所执行的约束解决操作的一示例中,三个不同视图中的每一个可标识一类内的满足与该视图相关联的准则的不同对象子集(例如,相机类内的不同对象)。所述不同子集是基于在每个视图中应用的视图专用准则的,例如,物理设计视图103中的大小以及硬件配置视图101中的分辨率。同步元件902从接收自每个视图的数据标识哪些相机被包括在所有三个子集中,并且因此适于在该设备中使用。在对象随后被从正在开发的设备移除时,相关数据(例如,相关模块描述)可从同步元件902内所存储的表示中删除。然而,在某些示例中,可不删除该数据,相反将其标志为禁用,以便如果重新选择该对象作为该设备的形成部件,则不需要重新加载模块描述并且重新设置可能已经为该对象指定的任何对象变量。这在其中对象被意外移除或断开连接的情况下特别有用(例如,在包括硬件检测模块801的示例中)。图11示出用于设备的快速开发的另一示例IDE的示意图。本示例包括同步元件1102和一个或多个约束解决器1110-1112。这些约束解决器可专用于特定视图(例如,约束解决器1110、1112)或可在两个或更多个视图之间共享(例如,约束解决器1111)。每个约束解决器可理解与构成设备的对象相关联的对象变量和规则的子集,并且在这种示例中,同步元件将相关对象变量和任何其他相关参数/规则(例如,如从加载的模块描述中提取的)推送到每个约束解决器。这在图12的框1202中示出,图12包括同步元件的操作的另一示例方法的流程图。单个约束解决器1110-1112随后能标识冲突并且要么向用户通知该冲突,要么自动解决该冲突(以与图2中的框206-210中所示的类似的方式)。尽管图12示出数据被传递给视图(在框1005中)和约束解决器(在框1202中)两者,然而在其他示例中,数据可从同步元件1102传递到视图或者相关联的约束解决器中的任一个,而数据随后可按照需要在视图和该相关联的约束解决器之间传递。而且,尽管图12没有示出库管理器904或系统管理器906,然而要理解,同步元件1102可包括这两个元件中的一个或两个。
在某些示例中,同步元件902、1102可使用加载的模块描述内的规则来翻译变量或参数,以使得它们能被不同视图解释。被翻译的变量或参数可以是对象变量和/或在视图中生成的推断的参数。在一示例中,同步元件可在与所选择的对象相关联的对象和特定视图或约束解决器所理解的参数之间翻译。在这种示例中,被推送给视图(在框1005中)或约束解决器(在框1202中)的数据可包括一个或多个翻译的变量,以附加于或代替实际的对象变量值和/或其他参数。在同步元件可执行的翻译的特定示例中,该元件可从软件开发视图102接收‘所使用的卡检测API’的视图专用参数并将此参数翻译为硬件配置视图101理解的通用参数或‘CD线为真’的另一视图专用参数。在上面描述的示例中,提供单层的约束解,它或者是中心约束解决器(例如,如图I和9中所示),或者是并行的多个约束解决器(例如,如图11所示)。在IDE的进一步示例中,可提供多层约束解决器。例如,除了同步元件内的中心约束解决能力(如图9所示)之外,可提供链接到一个或多个视图的视图专用约束解决器1110-112(如图11所示)。在这种示例中,同步元件可提供高级约束解和/或跨所有(或许多)视图切割的约束的解。这种约束的一示例是热约束,因为这受到所选择的对象,这些对象的定位以及在这些对象上运行的代 码的影响。在这种示例中,与视图相关联的单个约束解决器1110-1112可提供更详细的视图相关的约束解(例如,标识对象在3D空间中的何处重叠的物理约束解决器和标识对象不兼容性、不足的总线容量等的硬件约束解决器等)。在进一步示例中,可存在多于两层的约束解。尽管图9和11仅示出了三个视图而不包括硬件检测模块或输出生成器模块,然而要理解,进一步的不例IDE可包括另外的视图和/或另外的I旲块(例如,图8中不出的另外的模块中的一个或两者)。以下段落提供了设计新移动电话的示例场景,其展示了诸如上面描述的那些的IDE可如何被用于改善生产原型的过程,该过程允许单个用户以统一而高效的方式快速查看并开发设计的所有方面。在该示例场景中,用户可能通过启动应用、创建新项目以及加载软件开发视图来开始,如上所述,该软件开发视图包括对编写计算机代码的支持、到编译器的前端、对调试工具和模拟器的访问。用户可使用该视图来编写将在该设备上运行的软件代码的基础。在编译该软件时,它们发现代码将需要8Mb的存储(storage)和4Mb的存储器(memory)来执行。通过切换到该应用上的硬件配置视图,该用户能够从多个可用存储器和处理器选项的列表中选择,并且选择满足软件按需执行的要求的一个选项。此外,他们能选择并配置电话正常工作所必需的多个另外的电子模块即,某种尺寸和分辨率的显示器、GPRS模块、电池和用于用户输入的按键板。通过切换到物理设计视图,用户能看到他们已选择的所有单个电子模块的精确的3D表示。他们能与它们交互,将它们相对于彼此布局,并且获得该配置将要求的大小和形状的初步印象。用户指定电话的最大厚度,并且这导致显示器模块被突出显示,因为显示器太厚而不适合。在返回到硬件配置视图时,用户选择更薄的替代显示器模块,同时该视图自动地“灰掉(gray out)”会违反物理厚度约束的硬件选项。通过切换到传感器模拟/交互视图,用户可设计传感器输入流,用所述传感器输入流来锻炼不同的外围传感器,所述传感器输入流可用准备好的传感器输入流被包括在设计中,或者(如在上面的物理设计视图中提到的交互技术中)通过允许与包括在设计中的输入和输出模块实时地模拟的交互而被包括在设计中。某些传感器可具有标准激励库,通过所述标准激励附连于每个所包括的传感器(诸如对于温度传感器来说是随时间的温度梯度)。切换回软件开发视图,用户发现该应用已加载了所有必要的库、包括了相关的引用、并且添加了与已选择的另外的硬件元件进行接口所需的适当的代码存根。在再次编译代码时,该应用给出在给定当前硬件配置和模拟的软件执行的情况下该设备的电池寿命将是多少的估计。给定此信息,用户切换到硬件配置视图,选择并删除当前电池模块,并用较高容量的电池来取代它。切换到硬件设计视图,他们注意到新的电池更大,并调整屏幕上的3D模块的相对放置以将其容纳在他们的设计中。在编码过程期间,用户向先前没有被配置的新类型的硬件模块——具有相片和视频录制能力的相机一添加引用。当在软件开发视图中添加对相机的引用时,它也被自动 在硬件配置和物理设计视图中被加载并选择。用户能够重新安排现有3D表示来在期望的位置容纳该相机,并随后切换到硬件配置视图来配置新模块并指定其图像捕捉分辨率。用户再次切换到物理设计视图,并选择用于‘自动生成外壳’的选项。给定构成3D表示的相对放置,在将装载和组装夹具计入的情况下,软件生成简单的外壳来封装它们。用户能做出最终的调整,矫正放置并对设计做出最终的改变。在任何阶段,用户具有切换到传感器模拟/交互视图并且附接多个不同传感器输入激励模式或者甚至通过代理或虚拟接口来直接操纵传感器模块的选项,该接口使得能够实时地直接与软件模拟交互——或许沿路收集表现数据。最终,用户点击“打印”。这启动允许用户制作初始原型的工具。用户选择制造5个,并在软件侧被引导(编译并生产主处理器和二级处理器的固件、通过USB自动对主处理器编程并提供固件文件以供用户使用第三方工具加载到二级处理器中)。对于硬件,向用户给出所需的组件的列表,从而他们能够检查必需的部分的库存和订单。对于物理构造,用户选择制作激光切割版本,所以软件将外壳“平坦化(flatten)”为能被开槽并粘合在一起的侧面,并产生输出文件并将其发送到激光切割机。图13示出示例性的基于计算的设备1300的各个组件,设备1300可以被实现为任何形式的计算和/或电子设备,其中能实现此处描述的方法的实施例。基于计算的设备1300包括一个或多个处理器1302,该一个或多个处理器可以是微处理器、控制器、或用于处理计算可执行指令以控制设备的操作以便提供此处描述的集成开发环境的任何其他合适类型的处理器。可以在基于计算的设备处提供包括操作系统1304的平台软件或任何其他合适的平台软件以使得应用软件1305-1309能够在该设备上执行。应用软件包括约束解决器1306、软件开发引擎1307、硬件开发引擎1308和物理设计引擎1309。该应用软件还可包括以下的一个或多个模拟引擎1310、硬件检测模块1311、输出生成器模块1312和同步模块1324。计算机可执行指令可使用诸如存储器1313这样的任何计算机可读介质来提供。存储器具有任何合适的类型,诸如随机存取存储器(RAM)、诸如磁或光存储设备等任何类型的盘存储设备、硬盘驱动器、或⑶、DVD或其他盘驱动器。也可以使用闪存、EPROM或EEPR0M。尽管存储器被示出为在基于计算的设备1300内,然而要理解,该存储可以是分布式的或位于远程并经由网络1314或其他通信链路(例如,使用通信接口 1315)来访问。存储器1313还可包括对象数据存储1316和实例化专用数据存储1317。基于计算的设备1300还包括输入/输出控制器1318,该输入/输出控制器被安排成向显示设备1320输出显示信息,该显示设备可与基于计算的设备1300分开或集成。显示信息包括该IDE的图形用户界面并呈现上面描述的不同视图。输入/输出控制器1318还被安排成接收并处理来自诸如用户输入设备1322 (例如,鼠标或键盘)等一个或多个设备的输入。此用户输入可被用于使用户能够选择对象、配置对象参数、修改所选择的对象的3D布置等。在一实施例中,如果显示设备1320是触敏显示设备,那么它还可担当用户输入设备1322。输入/输出控制器1318还可从诸如模块化电子元件或网络摄像头等连接的硬件接收数据(例如,在使用硬件检测模块1310的情况下)。输入/输出控制器1318还可将数据输出到除了显示设备以外的设备,例如,输出到所连接的硬件以对 处理器编程,或输出到用于制造原型外壳的激光切割机、3D打印机或其他机器(图13中未示出)。尽管本发明的示例在此处被描述并描绘成在如图13中示出的具有由特定引擎集合所提供的特定视图集合并且其中对象是硬件对象的系统中实现的,然而所描述的系统是作为示例而非限制提供的。本领域的技术人员将会认识到,本发明的示例适于在各种不同类型的计算系统中应用并且可提供不同的视图和/或引擎。在一示例中,此处描述的功能可在各视图和/或引擎之间不同地划分,并且在视图和引擎之间可能不存在一对一关系。此外,某些或所有对象可能不是硬件对象而可能反而包括化学对象,并且在这种实施例中,硬件配置视图/引擎可替代地被称为对象配置视图/引擎。要理解,图1、3、6、8、9和11中的双末端箭头标识IDE中的元件之间的可能的数据路径;然而,要理解,这些不是唯一的可能路径,而它们仅是作为示例示出的。上面描述的IDE各自提供了单一开发环境,该开发环境将生产原型设备所需的任务紧密集成。该IDE允许用户设计并开发不同方面电子配置、设备运行的软件及其物理形状因子。通过提供单一环境,用户不需要熟悉多个工具,并且这使得特定领域的专家(例如,物理设计师)更好地理解电子模块的约束,反之亦然。在该IDE包括传感器模拟/交互视图的情况下,(例如,如在图6和8中所示),该开发环境提供了创建传感器输入流和交互模拟以在实际实现之前锻炼该设计的便利。通过使用单一环境,该环境能够提供涵盖设备设计的所有方面(例如,软件、硬件和物理设计)的单一版本号。这改善了设备开发的可溯性(traceability)。此处所使用的术语‘计算机’是指带有处理能力以便它可以执行指令的任何设备。本领域的技术人员将认识到,这样的处理能力被集成到许多不同的设备中,因此,术语‘计算机’包括PC、服务器、移动电话、个人数字助理和许多其他设备。此处所描述的方法可以通过有形的存储介质上的计算机可读形式的软件来执行。有形(或非瞬态)存储介质的示例包括盘(disk)、拇指型驱动器、存储器等而不包括所传播的信号。软件可适于在并行处理器或串行处理器上执行以使得各方法步骤可以按任何合适的次序或同时执行。这承认,软件可以是有价值的,单独地可交换的商品。它旨在包含运行于或者控制“哑”或标准硬件以实现所需功能的软件。它还旨在包含例如用于设计硅芯片,或者用于配置通用可编程芯片的HDL (硬件描述语言)软件等“描述”或者定义硬件配置以实现期望功能的软件。本领域技术人员会认识到,用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可以存储被描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并下载软件的一部分或全部以运行程序。可另选地,本地计算机可以根据需要下载软件的片段,或在本地终端上执行一些软件指令,并在远程计算机(或计算机网络)上执行另一些软件指令。本领域的技术人员还将认识到,通过利用本领域的技术人员已知的传统技术,软件指令的全部,或一部分可以通过诸如DSP、可编程逻辑阵列等等之类的专用电路来实现。对精通本技术的人显而易见的是,此处给出的任何范围或设备值可以被扩展或改变,而不会丢失寻求的效果。可以理解,上文所描述的优点可以涉及一个实施例或可以涉及多个实施例。各实施例不仅限于解决任何或全部所陈述的问题的那些实施例或具有任何或全部所陈述的优点那些实施例。进一步可以理解,对“一个”项目的引用是指那些项目中的一个或多个。 此处所描述的方法的步骤可以在适当的情况下以任何合适的顺序,或同时实现。另外,在不偏离此处所描述的主题的精神和范围的情况下,可以从任何一个方法中删除各单独的框。上文所描述的任何示例的各方面可以与所描述的其他示例中的任何示例的各方面相结合,以构成进一步的示例,而不会丢失寻求的效果。此处使用了术语‘包括’旨在包括已标识的方法的框或元件,但是这样的框或元件不包括排它性的列表,方法或设备可以包含额外的框或元件。可以理解,上面对一较佳实施例的描述只是作为示例给出并且本领域的技术人员可以做出各种修改。以上说明、示例和数据提供了对本发明的各示例性实施例的结构和使用的全面描述。虽然上文以一定的详细度或参考一个或多个单个实施例描述了本发明的各实施例,但是,在不偏离本发明的精神或范围的情况下,本领域的技术人员可以对所公开的实施例作出很多更改。
权利要求
1.一种用于开发设备的集成开发环境,所述集成开发环境包括 被安排成向用户提供多个不同视图的用户界面,其中每个视图与设备设计的不同方面相关联; 被安排成存储与多个对象中的每一个相关联的多个不同类型的数据的数据库,所述不同类型的数据与设备设计的所述不同方面相关; 用于接收用户输入信号的输入,所述用户输入信号从所述数据库中选择至少一个对象来添加到形成所述设备的对象的集合;以及 将所述视图链接以便在一个视图中的改变影响至少一个其他视图的约束解决器。
2.如权利要求I所述的集成开发环境,其特征在于,一视图被安排成基于所述用户输入信号生成推断的参数,并且其中所述环境还包括 被安排成存储实例化专用数据的数据存储,所述实例化专用数据包括推断的参数;以及 其中所述约束解决器被安排成通过检测存储在所述数据存储和所述数据库的至少一个中的参数中的冲突来链接所述视图。
3.如权利要求2所述的集成开发环境,其特征在于,所述输入进一步用于接收指定与所述设备相关联的全局参数的用户输入信号,并且其中所述实例化专用数据包括全局参数。
4.如前述权利要求中任一项所述的集成开发环境,其特征在于,所述约束解决器被进一步安排成向用户通知参数中的检测到的冲突。
5.如权利要求1-3中任一项所述的集成开发环境,其特征在于,所述约束解决器被进一步安排成更新形成所述设备的对象的集合以解决参数中的检测到的冲突。
6.如前述权利要求中任一项所述的集成开发环境,其特征在于,所述多个不同视图包括对象配置视图,软件开发视图和物理设计视图,且其中与每个对象相关联的所述多个类型的数据包括所述对象的3D模型;所述对象所使用的任何软件库的细节;以及用于所述对象的参数。
7.如权利要求6所述的集成开发环境,其特征在于,所述对象配置视图包括硬件配置视图,而用于所述对象的所述参数包括硬件参数。
8.如权利要求6或7所述的集成开发环境,其特征在于,所述多个不同视图进一步包括被安排成接收传感器模拟数据并模拟所述原型设备响应于所述传感器模拟数据的表现的模拟视图。
9.如权利要求8所述的集成开发环境,其特征在于,所述传感器模拟数据包括以下的至少一项从所述数据库访问并与形成所述设备的对象的集合中的一个对象相关联的传感器模拟数据;以及由所述模拟视图响应于与虚拟设备的用户交互而生成的用户交互数据。
10.如前述权利要求中任一项所述的集成开发环境,其特征在于,进一步包括用于输出制造数据的输出。
11.如权利要求10所述的集成开发环境,其特征在于,进一步包括被安排成基于与形成所述设备的对象的集合中的每一对象相关联的数据并基于实例化专用数据生成所述制造数据的输出生成器模块。
12.如前述权利要求中任一项所述的集成开发环境,其特征在于,进一步包括被安排成标识一个或多个对象并将所标识的对象添加到形成所述设备的对象的集合的硬件检测模块。
13.—种方法,包括 将与多个对象相关联的数据存储在数据库中,用于每个对象的数据包括多个不同类型的数据; 使用户能够通过用户界面中的多个不同视图中的一个视图从所述数据库选择并配置对象的集合以形成设备,其中每个视图与设备设计的不同方面相关联;以及 基于用户在另一视图中所做的改变更新在一个视图中显示给所述用户的信息。
14.如权利要求13所述的方法,其特征在于,所述多个不同视图包括对象配置视图,软件开发视图和物理设计视图,且其中与每个对象相关联的所述多个类型的数据包括所述对象的3D模型;所述对象所使用的任何软件库的细节;以及用于所述对象的参数。
15.如权利要求13或14所述的方法,其特征在于,还包括 基于所选择的对象和所接收的用户输入在一视图中生成至少一个推断的参数; 将所述推断的参数存储在数据存储中;以及 检测推断的参数与存储在所述数据库中的用于所选择的对象中的每一个对象的参数中的任一个之间的冲突。
全文摘要
描述一种用于快速设备开发的集成开发环境。在一实施例中,该集成开发环境向用户提供多个不同视图,每个视图与设备设计的不同方面(诸如硬件配置、软件开发和物理设计)相关。该设备(它可以是原型设备)是由从数据库选择的多个对象形成的,并且该数据库为每个对象存储多个数据类型,诸如用于该对象的3D模型、软件库和代码存根(code-stub),以及硬件参数。用户可通过以任何次序选择不同视图来设计该设备,并且可在他们选择时在各视图间切换。在一个视图中所做的改变(诸如对新对象的选择)被馈送到其他视图中。
文档编号G06F19/00GK102844760SQ201180017137
公开日2012年12月26日 申请日期2011年3月25日 优先权日2010年4月9日
发明者N·韦拉, J·斯科特, S·豪杰斯, D·A·巴特勒, S·伊扎迪 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1