具体实施方式
说明了一种软件可操作性服务。在实施例中,可以实施软件可操作性模块以监视软件的活动,从而例如从任何类型的软件、应用、设备驱动程序、固件(例如设备固件或系统固件)、微代码、硬件组件或其任何组合来采集软件活动数据。然后软件可操作性模块可以从所述软件活动数据生成供软件用的软件可操作性签名。软件可操作性签名表示软件的可操作性,或一般地,表示软件、应用、设备驱动程序、固件、硬件等的“健康”。然后软件可操作性模块可以将软件可操作性签名以及表示操作上下文的关联的上下文数据传送至对软件可操作性签名进行解析的网络服务。
在其它实施例中,网络服务可以从计算设备接收软件可操作性签名和关联的上下文数据。软件可操作性签名表示在计算设备上工作的软件的可操作性。在一种实施例中,网络服务可以从附加的软件可操作性签名生成基线可操作性签名。网络服务可以将从附加的计算设备接收到的附加的软件可操作性签名聚合在一起。每一个附加的软件可操作性签名表示在附加的计算设备上工作的软件的可操作性,并且与上下文数据关联,该上下文数据相同于或类似于与软件关联的上下文数据。然后,网络服务可以从附加的软件可操作性签名生成基线可操作性签名,并且该基线可操作性签名表示正常软件操作。然后网络服务可以将软件可操作性签名与软件的基线可操作性签名作比较,以确定软件是与基线可操作性签名一致地工作、还是与基线可操作性签名不一致地工作。
在实施例中,表示正常软件操作的基线可操作性签名可以是在其中生成软件可操作性签名的上下文的函数。例如,可以基于上下文生成基线可操作性签名,该上下文可以包括计算设备的架构(例如X64或ARM)、性能(例如高性能或低性能)、(例如基于OEM、PC型号、位置、CPU速度等的)分析下的市场分区等。仅基于设备驱动程序和操作系统内建版本的两个变量生成的基线可操作性签名可能会具有每驱动程序和每操作系统的基线上下文。另外,可以将更多维度添加至基线上下文。例如,可以添加基线上下文的维度,以当供电力管理功能用的驱动程序运行在带有1GB以下的存储器的平板计算机上的特定位置时,标识该驱动程序的基线可操作性签名。
在其它实施例中,可以基于软件可操作性签名来确定该软件与基线可操作性签名不一致地工作。然后网络服务可以确定与基线可操作性签名不一致地工作对应于正常软件操作。因而,然后基于软件可操作性签名可以生成软件的新的基线可操作性签名。替代地,网络服务可以对软件可操作性签名进行解析,以便当基于软件签名确定软件与基线可操作性签名不一致地工作时,确定软件的操作失败或操作退化。网络服务还可以确定操作失败或退化的原因,并且启动缓解软件的操作失败或退化的解决方案。
例如,考虑计算设备上的打印机和相应的打印机驱动程序。在对计算设备进行应用服务包更新后,打印机可能会不同地工作,例如花费更长时间来完成打印作业。通常,难以确定打印机驱动程序不同地工作,并且同样难以确定是服务包更新造成打印机的速度变慢。一段时间后打印机的使用者可能注意到打印机似乎花费更长时间来完成打印作业,但是使用者可能难以精准定位是什么造成了性能的降低。此外,如果打印机驱动程序并未变得完全无法操作,则许多使用者甚至不会注意到打印机的性能的降低。
然而,根据各种实施例,可以实施软件可操作性模块以监视打印机驱动程序,从而采集打印机驱动程序活动数据。然后可以生成供打印机驱动程序用的软件可操作性签名并将它传送至网络服务。然后网络服务可以将供打印机驱动程序用的软件可操作性签名与打印机驱动程序的基线可操作性签名作比较,以确定打印机驱动程序是与基线可操作性签名一致还是不一致地工作。在这种情况下,因为打印机驱动程序在服务包更新后不正确地工作,所以网络服务可以确定打印机驱动程序与基线可操作性签名不一致地工作。响应于打印机驱动程序与基线可操作性签名不一致工作的确定,网络服务可以对供打印机驱动程序用的软件可操作性签名进行解析,以确定打印机驱动程序的操作失败或操作退化。然后可以启动缓解打印机驱动程序的操作失败或操作退化的解决方案。例如,网络服务可以创建软件更新和/或将软件更新发送至计算设备,该软件更新使得打印机驱动程序与服务包更新正确地工作。
尽管可以以任何数量的不同设备、系统、环境、网络和/或配置来实施软件可操作性服务的特征和构思,但是将在下列示例设备、系统和方法的上下文中说明软件可操作性服务的实施例。
图1示出了在其中可以实施软件可操作性服务的各种实施例的示例系统100。示例系统100包括计算设备102,它可以被构造成任何类型的计算设备104。各种计算设备104的任一种都可以被构造成计算设备102,并且可以以任何数量的参照图6所示的示例设备进一步说明的不同组件和它们的组合来实施。
计算设备104可以被实施为电视设备106、计算机108、游戏系统110、电器设备、电子设备和/或任何其它类型设备的任何一个或组合。各种计算设备还可以包括被实施以接收无线数据和/或对无线数据进行通信的无线设备,诸如移动电话112(例如蜂窝电话、VoIP、WiFi等)、便携式计算机设备114、媒体播放机116和/或任何其它无线设备的任何一个或组合。客户系统可以包括各自的计算设备和显示设备118。
计算设备102可以包括处理各种计算机可执行指令以控制计算设备的操作的一个或更多处理器120(例如任何微处理器、控制器等)。计算设备102还包括启用数据存储的存储器122(例如一个或更多计算机可读存储媒介设备)。存储器可被实施为任何类型的存储器、存储介质和/或适宜的电子数据存储。
存储器122还包括可以利用存储器保持为软件应用并被处理器120执行的操作系统124。操作系统包括软件可操作性模块126和操作系统内核128。软件可操作性模块126可以被实施为诸如软件应用等的计算机可执行指令,并且可以被处理器在各种计算设备104的任一种上执行,以实施本文说明的实施例。
实施软件可操作性模块126以监视软件130的活动从而采集软件活动数据132。如本文所说明的,软件可以包括如字处理应用、网页浏览器应用或设备驱动程序(仅举几例)等任何类型的软件应用。软件还可以包括固件(例如设备固件或系统固件)、微代码、硬件组件或其任何组合。软件活动数据可以包括与软件的活动和/或行为(包括正常软件活动、软件行为改变和软件失败)相关的任何数据。
在一种实施例中,实施软件可操作性模块126以从网络服务200(以下将更详细地说明)接收请求,从而监视软件的具体活动。例如,可以接收请求以监视与软件的电力管理行为相关的具体活动,并且忽视所有其它活动。替代地,可以实施软件可操作性模块以监视软件的所有活动。
在一种实施例中,实施软件可操作性模块126以基于一个或更多准则选择用于监视的软件。可以由软件可操作性模块自身生成该一个或更多准则,或者可以从网络服务200接收该准则。例如,可以实施软件可操作性模块以随机地或通过发现例如错误事件序列等一些显著的行为来选择用于监视的软件。作为另一例,网络服务可以使用取样逻辑来确保软件的宽泛排序被监视,以便编辑各种计算设备的操作性的宽泛的图片。
然后实施软件可操作性模块126以从软件活动数据132生成供软件用的软件可操作性签名134。软件可操作性签名表示软件的可操作性并且可以包括软件活动数据的概要。例如,软件可操作性签名可以包括软件崩溃、未完成应用任务或执行应用操作失败的指示符。因此应理解,软件可操作性签名提供了在软件被监视期间软件的可操作性的快照。
在一种实施例中,实施软件可操作性模块126以采集软件活动数据132并且响应于触发事件生成软件可操作性签名134。触发事件确保用来生成软件可操作性签名的软件活动数据是一致的。触发事件可以是例如计算设备重启等具体的事件、或具体的时间或一段时间。例如,可以每当计算设备重启时、每天上午8:00或每隔12小时生成软件可操作性签名。触发事件可以由软件可操作性模块确定,或者可以基于从网络服务接收到的命令来选择触发事件。
然后实施软件可操作性模块126以将软件可操作性签名134和关联的上下文数据136传送至对软件可操作性签名进行解析的网络服务200。在一种实施例中,上下文数据可以由另一系统或实体搜集和/或传送,在这种情况下,软件可操作性签名可以与对上下文数据的指针或指示一起被传送。
上下文数据136对软件活动数据被采集并且软件可操作性签名被生成的操作环境进行标识。上下文数据可以包括与可能会对软件的操作有影响的计算设备的配置或操作环境关联的任何信息。例如,上下文数据可以包括硬件、固件或基本输入输出(BIOS)型号信息、与计算设备关联的设备的类型(例如,嵌入式、内置和外置设备)、计算设备的驱动程序的类型和/或操作系统的类型。上下文数据还可以包括与软件活动数据被采集的时间对应的时间数据或与软件活动数据被采集时计算设备的环境(例如操作系统的状态)对应的环境数据。
应注意,软件的操作可以被软件的操作环境或上下文极大地影响。因此,所采集的上下文数据的质量和数量有可能影响到由网络服务对软件可操作性签名的解析。例如,与在ARM系统上相对,在32位系统上软件或设备可能会不同地操作。类似地,当有两个或更多相同的设备工作在相同的计算设备上时,设备可能会不同地操作。因而,上下文可能会影响软件可操作性签名。因此,可以与每个签名关联的上下文数据越多越好,这样将帮助由网络服务对签名的后端解析。
软件可操作性模块126可以通过通信网络318与网络服务200通信,该通信网络318可以被实施以包括便于软件可操作性签名134的通信和分发的有线和/或无线网络。还可以使用任何类型的网络拓扑和/或通信协议来实施通信网络,并且通信网络可以被表示或要么实施为两个或更多网络的组合。通信网络还可以包括由例如通信服务提供者、蜂窝电话提供者和/或因特网服务提供者等移动运营商管理的移动运营商网络。移动运营商可以促进针对任何类型的无线设备或移动电话(例如,蜂窝、VoIP、WiFi等)的移动数据和/或语音通信。
在各种实施例中,软件130包括被实施以经过与操作系统内核128的通信来控制相应设备142的设备驱动程序140。设备142的实例包括键盘、扬声器、打印机、通用串行总线(USB)存储设备、网络摄像头和可以与计算设备102接口的任何其它类型的硬件设备。在一种实施例中,实施软件可操作性模块126以使用被动地监视在设备驱动程序和操作系统内核之间的通信的监视模块144来监视设备驱动程序140,以采集软件活动数据。监视模块可以被配置为被动地监视在设备驱动程序和操作系统内核之间的通信的“中介”,以采集与设备驱动程序对应的软件活动数据。如本文所说明的,“被动地”监视是指不干预在设备驱动程序和操作系统内核之间的通信而监视。
然后实施软件可操作性模块126以从与设备驱动程序对应的软件活动数据生成软件可操作性签名134。例如,软件可操作性签名可以包括设备驱动程序崩溃、未完成或失败的指示符。例如,设备驱动程序操作失败可以包括这样的事例:其中设备驱动程序未能正确地响应来自操作系统内核的命令,如未能进入所请求的电力状态,这导致低于供计算设备用的最佳电池寿命。软件可操作性签名提供了在设备驱动程序被监视期间设备驱动程序的可操作性的快照。如上述,然后软件可操作性模块126将与设备驱动程序对应的软件可操作性签名传送至对软件可操作性签名进行解析的网络服务200。
图2示出了根据本文说明的实施例的示例网络服务200。网络服务包括数据通信接口202,如参照图1所说明的,经过该数据通信接口202,从计算设备102接收软件可操作性签名204和关联的上下文数据206。
网络服务200还可以包括处理各种计算机可执行指令以控制网络服务的操作的一个或更多处理器208(例如任何处理器、控制器等)。网络服务还包括启用数据存储的存储器210(例如一个或更多计算机可读存储介质设备)。存储器可被实施为任何类型的存储器、存储介质和/或适宜的电子数据存储装置。如参照图6所示的示例设备所进一步说明的,还可以以任何数量的不同组件和它们的组合来实施网络服务。网络服务200还包括可以被实施为如软件应用等的计算机可执行指令、并且可以被一个或更多处理器208执行以实施本文说明的各种实施例的软件可操作性服务212。
实施软件可操作性服务212以从计算设备102接收软件可操作性签名204和关联的上下文数据206。如参照图1所说明的,软件可操作性签名表示在计算设备上工作的软件130的可操作性。
在一种实施例中,实施软件可操作性服务212以确定表示正常软件操作的基线可操作性签名214。为了生成基线可操作性签名,软件可操作性服务可以将从附加的计算设备102接收到的附加的软件可操作性签名204聚合在一起。每一个附加的软件可操作性签名表示在附加的计算设备上工作的软件130的可操作性。然后,软件可操作性服务212可以从附加的软件可操作性签名生成基线可操作性签名,并且该基线可操作性签名表示正常软件操作。基线可操作性签名可以是在其中生成附加的软件可操作性签名的上下文的函数。例如,可以基于可包括计算设备的架构、设备的性能和/或被选择用于解析的设备的特征的上下文来生成基线可操作性签名。
在实施例中,当软件工作在相同或相似的操作环境和/或当监视相同或相似的软件活动时,基线可操作性签名214表示正常软件操作。例如,可以通过将与上下文数据(该上下文数据相同或相似于与软件可操作性签名关联的上下文数据)关联的附加的软件可操作性签名聚合在一起,来动态地生成基线可操作性签名214。这使得计算设备的上下文或操作环境不影响软件可操作性签名与基线签名的比较。
例如,请求最小BIOS版本的显示器驱动程序可能会在带有更旧BIOS版本的计算设备上工作得很差,但在带有新的BIOS版本的系统上却正确地工作。因此,如果从带有新的BIOS的计算设备生成软件可操作性签名、并且在带有更旧BIOS版本的计算设备上从附加的软件可操作性签名生成基线可操作性签名,则比较将不精确。因而,当将软件可操作性签名与供显示器驱动程序用的基线可操作性签名做比较时,软件可操作性签名和基线可操作性签名两者都从带有新的BIOS版本的计算设备生成。
替代与相同或相似的上下文数据关联或在其以外附加地,还可以从监视软件的相同或相似活动来生成软件可操作性签名和附加的软件可操作性签名。例如,如果通过监视与电力管理行为相关的活动来生成软件可操作性签名,则可以基于同样是通过监视与电力管理行为相关的活动来生成而将用来生成基线可操作性签名的附加的软件可操作性签名聚合在一起。因而,可以基于具有相同或相似的上下文数据、或从监视相同或相似的软件活动来生成的一个或更多来将用来生成基线可操作性签名的附加的软件可操作性签名聚合在一起,以便生成精确的基线可操作性签名。
实施软件可操作性服务212以将软件可操作性签名204与软件的基线可操作性签名214做比较,从而确定软件是与基线可操作性签名一致地工作、还是与基线可操作性签名不一致地工作。基线可操作性签名表示正常软件操作。因而,通过将软件可操作性签名与基线可操作性签名做比较,网络服务可以确定软件是与正常软件操作或行为一致还是不一致地工作。
例如,软件可操作性服务可以在数据图表中将软件可操作性签名与基线可操作性签名一起图示,并且统计地解析签名以确定软件是与基线可操作性签名一致还是不一致地工作。例如,如果软件可操作性签名与基线可操作性签名相符合,则软件可操作性服务确定软件是与基线可操作性签名一致地工作。替代地,如果软件可操作性签名与基线可操作性签名不相符合,则软件可操作性服务可以确定软件与基线可操作性签名不一致地工作。
在一种实施例中,软件可操作性服务212可以基于软件可操作性签名204确定软件130与基线可操作性签名214不一致地工作,并且随后确定软件与基线可操作性签名不一致地工作对应于正常软件操作。例如,计算设备更新可能导致软件不同地工作,这可能造成软件可操作性签名改变。然而,在某些情况下,软件的不同工作可能对应于软件的可接受的或更好的工作。因此在这些事例中,不同的软件可操作性签名此时可对应于正常软件操作。因而,实施软件可操作性服务212以然后基于对于软件接收到的软件可操作性签名生成软件的新的基线可操作性签名。
在另一实施例中,软件可操作性服务212可以基于软件可操作性签名204确定软件130与基线可操作性签名214不一致地工作,然后对软件可操作性签名进行解析以确定软件的操作失败。软件的操作失败可以对应于软件未能正确地操作。为了确定软件的操作失败,软件可操作性服务对对应于不一致操作的软件可操作性签名204进行解析,以确定软件可操作性签名是否表示软件的失败。例如,软件可操作性签名可以表示软件崩溃或未完成特定命令的执行。作为另一例,软件可操作性签名可以表示当由操作系统内核请求改变电力状态时设备驱动程序未能改变电力状态。
在另一实施例中,软件可操作性服务212可以基于软件可操作性签名204确定软件130与基线可操作性签名214不一致地工作,然后对软件可操作性签名进行解析以确定软件的操作退化。软件的操作退化是指这样的事例:其中响应于诸如操作系统更新或服务包更新等计算设备更新,软件的可操作性退化(例如,软件的性能降低)。
可以通过将在计算设备更新后接收到的软件130的软件可操作性签名204与在计算设备更新前生成的基线可操作性签名214做比较,来标识操作退化。例如,在服务包更新后接收到的软件可操作性签名应当与在服务包更新前生成的基线可操作性签名相同或大致相同。然而,如果在服务包更新后软件可操作性签名与基线可操作性签名不同,则可以检查软件可操作性签名以查看软件可操作性签名是否对应于表示操作退化的软件的性能的降低。
例如,通过对供打印机驱动程序用的软件可操作性签名进行解析,软件可操作性服务212可以确定当运行更旧版本的操作系统时打印机驱动程序在打印处理的特定步骤期间在5%的时间失败。然而,软件可操作性签名可以表示当安装更新版本的操作系统时、打印机设备驱动程序当执行打印处理的特定步骤时在20%的时间失败。打印机驱动程序在更新版本的操作系统下更经常地失败这一事实表明:响应于操作系统更新,打印机驱动程序的性能已降低或退化。
实施软件可操作性服务212以然后从软件可操作性签名204与基线可操作性签名214的比较来确定软件130的操作失败或操作退化的原因。例如,软件可操作性服务可以检查与软件关联的上下文数据206来确定软件的操作失败或操作退化的原因。
实施软件可操作性服务212以然后启动缓解软件130的操作失败或操作退化的解决方案。例如,软件可操作性服务和/或另一服务或处理可以启动缓解操作失败或操作退化的软件解决方案。例如,可以启动更新打印机驱动程序以便与更新版本的操作系统兼容的软件解决方案。
然后该解决方案可以在通信网络138上传送至计算设备102以缓解计算设备处的软件的操作失败或操作退化。替代地或附加地,关于操作失败或操作退化的信息可以被传送至软件的制造者或研发者(或另一第三方)以使第三方能够开发缓解软件的操作失败或操作退化的解决方案。软件可操作性服务还可以标记与操作失败或操作退化对应的软件可操作性签名,以便当后续检测到操作失败或操作退化时启动带有该解决方案的计算设备的自动更新。
参照根据软件可操作性服务的一个或更多实施例的各附图3、4和5来说明示例方法300、400和500。一般地,本文说明的任何服务、功能、方法、程序、组件和模块都可以使用软件、固件、硬件(例如固定逻辑电路)、手动处理或其任何组合来实施。软件实施代表当被计算机处理器执行时执行具体任务的程序代码。可以在计算机可执行指令的一般环境(这可以包括软件、应用、例程、程序、对象、组件、数据结构、过程、模块、功能等)中说明示例方法。程序代码可以存储在(计算机处理器本地和/或异地的)一个或更多计算机可读存储介质设备中。还可以在分布式计算环境中由多个计算机设备来实践该方法。另外,本文说明的特征是平台独立的,并且可以在具有各种处理器的各种计算平台上实施。
图3示出了软件可操作性服务的示例方法300,并且是参照在计算设备中实施的软件可操作性模块来说明的。方法框被说明的次序并非意在被解释成限制,可以以任何次序来组合任何数量的所说明的方法框以实施方法或替代方法。
在框302处,监视软件以采集软件活动数据。例如,计算设备102(图1)处的软件可操作性模块126监视软件130以采集软件活动数据132。在框304处,从软件活动数据生成供软件用的软件可操作性签名。例如,软件可操作性模块126从软件活动数据132生成供软件130用的软件可操作性签名134。
在框306处,将软件可操作性签名和关联的上下文数据传送至对该软件可操作性签名进行解析的网络服务。例如,软件可操作性模块126将软件可操作性签名134和关联的上下文数据136传送至对该软件可操作性签名进行解析的网络服务200(图2)。
图4示出了软件可操作性服务的示例方法400,并且是参照图2所示的网络服务来说明的。方法框被说明的次序并非意在被解释成限制,可以以任何次序来组合任何数量的所说明的方法框以实施方法或替代方法。
在框402处,从计算设备接收软件可操作性签名和关联的上下文数据。例如,网络服务200(图2)从计算设备102(图1)接收软件可操作性签名204和关联的上下文数据206。软件可操作性签名表示在计算设备上工作的软件130的可操作性。
在框404处,将从附加的计算设备接收到的附加的软件可操作性签名聚合在一起。例如,软件可操作性服务212将从附加的计算设备104接收到的附加的软件可操作性签名204聚合在一起。每一个附加的软件可操作性签名表示在附加的计算设备上工作的软件的可操作性。此外,每一个附加的软件可操作性签名可以与上下文数据关联,该上下文数据相同于或类似于与软件可操作性签名关联的上下文数据。
在框406处,从附加的软件可操作性签名生成基线可操作性签名。例如,软件可操作性服务212从附加的软件可操作性签名生成基线可操作性签名214。在实施例中,基线可操作性签名可以是在其中生成附加的软件可操作性签名的上下文的函数。例如,可以基于可包括计算设备的架构、设备的性能和/或被选择用于解析的设备的特征的上下文来生成基线可操作性签名。
在框408处,将软件可操作性签名与软件的基线可操作性签名作比较,以确定软件是与基线可操作性签名一致还是不一致地工作。例如,软件可操作性服务212将软件可操作性签名204与软件的基线可操作性签名214做比较,以确定软件是与基线可操作性签名一致地工作、还是与基线可操作性签名不一致地工作。
图5示出了网络服务的示例方法500,并且是参照图2所示的软件可操作性服务来说明的。方法框被说明的次序并非意在被解释成限制,可以以任何次序来组合任何数量的所说明的方法框以实施方法或替代方法。
在框502处,基于软件可操作性签名来确定软件与基线可操作性签名不一致地工作。例如,软件可操作性服务212(图2)基于软件可操作性签名204确定软件130与基线可操作性签名214不一致地工作(例如,可以像基于参照框408(图4)所说明的比较来确定那样)。响应于软件与基线可操作性签名不一致地工作的确定,方法可以可选地在框504或框508处继续。
在一种实施例中,在框504处,确定与基线可操作性签名不一致地工作的软件对应于正常软件操作。例如,即使软件可操作性与基线可操作性签名不一致,软件可操作性服务212也确定软件130可操作性对应于正常软件操作。
在框506处,基于对于软件接收到的软件可操作性签名生成新的基线可操作性签名。例如,软件可操作性服务212基于对于软件130接收到的软件可操作性签名204生成新的基线可操作性签名214。在另一实施例中,在框508处,对软件可操作性签名进行解析,以确定软件的操作失败或操作退化。例如,软件可操作性服务212对软件可操作性签名204进行解析,以确定软件130的操作失败或操作退化。
在框510处,从软件可操作性签名与基线可操作性签名的比较来确定软件的操作失败或操作退化的原因。例如,软件可操作性服务212从软件可操作性签名204与基线可操作性签名214的比较来确定软件130的操作失败或操作退化的原因。此外,基线可操作性签名的上下文可以是当确定软件的操作失败或操作退化时考虑的因素。在框512处,启动缓解软件的操作失败或操作退化的解决方案。例如,软件可操作性服务212启动缓解软件130的操作失败或操作退化的解决方案。
图6示出了可以被实施为参照前图1~5说明的任何设备或由设备所实施的服务的示例设备600的各种组件。在实施例中,设备可以被实施为固定或移动设备的任何一个或组合,这些固定或移动设备采取消费类、计算机、服务器、便携、使用者、通信、电话、导航、电视、电器、游戏、媒体播放和/或电子设备的任何形式。设备还可以与操作设备的使用者(也就是人)和/或实体关联,从而设备描述包括使用者、软件、固件、硬件和/或设备的组合的逻辑设备。
设备600包括通信设备602,该通信设备602能够实现如接收到的数据、正在接收的数据、计划用于广播的数据、数据的数据包等设备数据604的有线和/或无线通信。设备数据或其它设备内容可以包括设备的配置设定、存储在设备上的媒体内容和/或与设备的使用者关联的信息。存储在设备上的媒体内容可以包括任何类型的音频、视频和/或图像数据。设备包括一个或更多数据输入606,经过该数据输入606可以接收任何类型的数据、媒体内容和/或输入,如使用者可选择的输入、消息、通信、音乐、电视内容、录像内容和从任何内容和/或数据源接收到的任何其它类型的音频、视频和/或图像数据。
设备600还包括诸如串行、并行、网络或无线接口的任何一个或更多等的通信接口608。通信接口提供设备和通信网络之间的连接和/或通信链路,利用该连接和/或通信链路,其它电子、计算和通信设备与设备对数据进行通信。
设备600包括处理各种计算机可执行指令以控制设备的操作的一个或更多处理器610(例如任何微处理器、控制器等)。替代地或附加地,设备可以由软件、固件、硬件或与一般地以612标出的处理和控制电路相结合地实施的固定逻辑电路来实施。尽管未图示,但是设备却可以包括将设备内的各种组件耦合的系统总线或数据传送系统。系统总线可以包括以下不同总线结构的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线结构的任一种的处理器或局部总线等。
设备600还包括诸如随机存取存储器(RAM)、非易失性存储器(例如只读存储器(ROM)、快闪存储器等)和盘存储设备等实现数据存储的一个或更多存储器设备(例如计算机可读存储媒介)614。盘存储设备可以被实施为诸如硬盘驱动器、可记录和/或可改写盘等的任何类型的磁或光存储设备。设备还可以包括大容量存储介质设备。
计算机可读媒介可以是被计算设备存取的任何可用的媒介或媒介。通过示例而不是限制,计算机可读媒介可以包括存储媒介和通信媒介。存储媒介包括以供诸如计算机可读指令、数据结构、程序模块或其他数据等信息的存储用的任何方法或技术实施的易失和非易失、可移动和不可移动媒介。存储媒介包括但不限于RAM、ROM、EEPROM、快闪存储器或其他存储器技术、CD-ROM、数字多功能光盘(DVD)或其它光学存储装置、磁盒、磁带、磁盘存储或其它磁存储设备、或可以被用来存储信息并且可以被计算机存取的任何其它媒介。
通信媒介一般包含计算机可读指令、数据结构、程序模块、或诸如载波或其它传输机制等的调制数据信号中的其他数据。通信媒介还包括任何信息分送媒介。术语“调制数据信号”是指这样的信号:它的一个或更多特征是以将信息编码在信号中这样的方式来设定或改变的。通过示例而不是限制,通信媒介包括诸如有线网络或直接有线连接等有线媒介、以及诸如声学、RF、红外和其它无线媒介等无线媒介。
存储器设备614提供存储设备数据604、其它类型的信息和/或数据和各种设备应用616的数据存储机制。例如,操作系统618可以利用存储器设备保持为软件应用并且在处理器上执行。设备应用还可以包括诸如任何形式的控制应用、软件应用、信号处理和控制模块、特定设备固有的代码、用于特定设备的硬件抽象层等设备管理器。
在本例中,设备应用616包括例如当设备600被实施为计算设备时等的软件可操作性模块620。替代地或附加地,设备应用包括例如当设备被实施为参照图2说明的网络服务时等的软件可操作性服务622。软件可操作性模块和软件可操作性服务被图示为软件和/或计算机应用。替代地或附加地,软件可操作性模块和/或软件可操作性服务可以被实施为硬件、软件、固件、固定逻辑或其任何组合。
设备600还包括生成供音频系统626用的音频数据和/或生成供显示系统628用的显示数据的音频和/或视频处理系统624。音频系统和/或显示系统可以包括对音频、视频、显示和/或图像数据进行处理、显示和/或要么渲染的任何设备。可以将显示数据和音频数据通过RF(射频)链路、S-video链路、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接或其它类似的通信链路传送至音频设备和/或显示设备。在实施中,音频系统和/或显示系统是设备的外部组件。替代地,音频系统和/或显示系统是示例设备的集成组件。
尽管已经以特定于特征和/或方法的语言来说明了软件可操作性服务的实施例,但所附权利要求书的主题不一定限定于所说明的具体特征或方法。相反,具体的特征或方法是作为软件可操作性服务的示例实施来公开的。