应用程序框架分阶段模型的制作方法

文档序号:6567311阅读:259来源:国知局
专利名称:应用程序框架分阶段模型的制作方法
应用程序框架分阶段模型背景一般而言,软件系统通过在计算机内执行进程来完成操作。通常,单个进程 可包括若干个简单的任务或方法。为正确地完成进程,必须以特定顺序完成这些简 单方法,因为得自一个简单方法的结果可被输入到另一简单方法。如果这些方法试 图在接收到正确的输入之前执行,或者如果一方法提供了不及时的结果,则整个进 程可能会失败。由此,软件系统内方法的执行顺序是非常重要的。对于软件开发者而言,当开发软件代码时方法的排序变为一个主要关注问题。 一般而言,软件系统中的方法对其它方法作出调用,使得其它方法可执行和提供某 一操作。软件开发者必须注意对方法的调用顺序,并且试图编写不考虑调用顺序可 在任何情况中操作的代码。不幸的是,开发足够灵活以在任何条件下操作的复杂代 码是极其困难的。当软件应用程序的大小和复杂性增加时,可能的调用顺序的爆发 性增加使得非常难以正确实现对方法调用的排序。对软件开发者施加的负担在存在 调用几个不同方法的多个方法时变得尤为重要,其中返回的结果必须以特定顺序到 达以使进程正确执行。同样,软件开发者难以测试具有在变化的操作情形中作出各 种调用的方法的灵活代码。本发明正是关于这些和其它考虑事项而作出的。概述提供了这一概述以用简化的形式介绍将在以下详细描述中进一步描述的若干 概念。这一概述并不旨在标识出所要求保护的主题的关键特征或主要特征,也不旨 在用于帮助确定所要求保护的主题的范围。本发明能够在整个计算机系统中约束软件方法的执行。 一般而言,本发明提 供了一种多层分阶段模型,它将软件方法的执行约束于两个或更多阶段,每一阶段 可能具有两个或更多子阶段。阶段是划分软件系统的方法的操作状态。分区中的所 有方法被约束于仅在特定阶段期间执行。当一组软件组件对一阶段空间中的公共分 阶段达成一致时,创建阶段域。阶段空间确定了有效的阶段序列。在本发明的各实
施例中,阶段空间是确定用于软件组件的有效阶段和有效阶段转换的有限有向图。 在本发明的各实施例中,软件组件服从阶段约束。阶段约束是限制阶段在某 一软件程序上下文中有效的静态约束。阶段约束可被应用于软件程序段,从而确保 只要执行该软件程序段,执行线程将处于遵从该约束的阶段中。为应用阶段约束, 软件组件可包括形成阶段约束属性的数据结构。该阶段约束属性可以是软件组件的 运行时元数据的一部分。在本发明的各实施例中, 一种计算机可读介质包括占据第一阶段域的多个组 件。在某些实施例中,软件组件的第一子集占据第一子阶段域,而软件组件的第二 子集占据第二子阶段域。在本发明的某些实施例中,子阶段是聚集在一父阶段之下 的阶段。在一个实施例中,本发明提供了一种用于将多个方法的执行划分成软件系统 内的各阶段的方法。该方法首先转移到可能具有两个或更多子阶段的第一阶段。第 一组方法的执行被约束于第一阶段。然而,计算机系统转移到一个或多个其它阶段, 其中一组或多组其它方法的执行被约束于一个或多个其它阶段。最后,计算机系统 转移到一个或多个其它阶段。在本发明的各实施例中,还提供了一种软件系统。该软件系统包括控制用于整个软件系统的一组阶段的主指导器(director)组件。指导器是控制阶段空间内 的阶段转移的软件构造。在某些实施例中, 一个或多个子指导器向主指导器注册, 并控制一组或多组子阶段。 一个或多个组件向一个或多个指导器注册,并被约束于 仅在一个或多个阶段期间执行方法。本发明可被实现为计算机进程、计算系统或诸如计算机程序产品等制品。计 算机程序产品可以是可由计算机系统读取并编码了用于执行计算机进程的指令的 计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读且编码了用 于执行计算机进程的指令的计算机程序的载波上的传播信号。参考以下简要概述的附图、以下本发明各实施例的详细描述以及所附权利要 求书,能够获得对本发明及其改进的更完整理解。附图简述

图1是根据本发明可在计算机环境中操作以对软件方法的执行排序的多层分 阶段模型的一个实施例。图2是示出根据本发明的操作分阶段模型的计算环境和计算设备的框图。
图3是根据本发明的具有用于在阶段模型中对软件方法的执行排序的软件组 件的模块化软件系统的一个实施例。图4是根据本发明的在整个计算机系统上操作以对该系统内的任何软件方法 的执行排序的第一或顶层阶段模型或空间的一个实施例。图5是根据本发明的可在诸如图4的主阶段空间等主阶段空间的一个或多个 阶段期间操作的子阶段空间的一个实施例,它们对数据检索和写入进行排序。图6A和图6B是根据本发明的可在诸如图4的主阶段空间等主阶段空间的一 个或多个阶段期间操作的子阶段空间的实施例,它们对即插即用系统的配置和操作 进行排序。图7示出了根据本发明的包含说明将软件方法的执行约束于某一阶段的阶段 约束属性的数据结构或语言属性的一个实施例。图8A和8B示出了根据本发明的用于对计算机系统的操作分阶段的方法的一 个实施例。图9是根据本发明的用于提供并储存在分阶段域中操作的用户联系人信息的 示例性计算机系统。详细描述现在将参考其中示出本发明的示例性实施例的附图来更全面描述本发明。然 而,本发明可以用许多不同的形式来具体化,且不应被解释为限于此处所述的实施 例。相反,提供这些实施例以使公开内容全面且完整,并使得它能够向本领域的技 术人员完全传达本发明的范围。一般而言,分阶段通过使软件组件服从多层分阶段模型来约束软件方法在计 算机系统内的执行。软件组件可以是类、对象、方法或计算机系统内的其它软件代 码构造。阶段是同时且共同由一组软件组件共享的操作状态。计算机系统执行顶层 分阶段模型,也称为主分阶段模型,且一个或多个子阶段在该主分阶段模型的一个 或多个阶段期间发生。计算机系统内的操作被约束到一组阶段或子阶段。多层分阶段模型100的一个示例性实施例在图1中示出。该多层分阶段模型 具有包括三个阶段102、 104和106的第一或主阶段模型。主阶段以由箭头116描 绘的顺序发生。两个子阶段,即子阶段l 108和子阶段2 110在阶段1 102期间发 生。此外,另两个子阶段,即子阶段2a和子阶段2b在子阶段2期间发生。由此, 分阶段模型100表示了具有在其它阶段或子阶段期间发生的子阶段的一组多层阶
段。在下文中,对阶段的任何讨论也可应用于子阶段。每一软件组件被约束于在一特定阶段内操作。对每一软件方法施加约束以仅 在该软件方法被约束到的阶段期间执行或被调用。能够造成冲突或矛盾结果的软件 方法被约束到不同的阶段,在那些阶段软件方法不能从当前阶段合法地调用。由此, 每一软件方法以已知的方式执行而不会在完成矛盾任务的方法之间产生冲突。所有 方法都在一特定的阶段约束下执行,使得软件系统被称为处于与当前阶段约束兼容 的状态中。其中可实现本发明的合适的计算系统环境200的一个示例在图2中示出。计 算系统环境200仅为合适的计算环境的一个示例,并非对本发明的使用范围或功能 提出任何局限。也不应将计算环境200解释为对示例性操作环境200中示出的任一 组件或其组合具有任何依赖或需求。本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适用于本 发明的众所周知的计算系统、环境和/或配置的例子包括但不限于,个人计算机、 服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、 可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的 分布式计算环境等等。本发明可以在诸如程序模块等由计算机执行的计算机可执行指令的一般上下 文中描述。 一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它 们执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中 实践,其中,任务由通过通信网络链接的本地和远程处理设备来执行。在分布式计 算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质 中。参考图2,用于实现本发明的示例性计算机系统200包括计算机210形式的通 用计算设备。计算机210的组件可包括但不限于,处理单元220、系统存储器230 以及将包括系统存储器230的各类系统组件耦合至处理单元220的系统总线221。 系统总线221可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制 器、外围总线以及使用各类总线体系结构中的任一种的局部总线。作为示例而非局 限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA) 总线、增强ISA (EISA)总线、视频电子技术标准协会(VESA)局部总线以及外 围部件互连(PCI)总线,也称为Mezzanine总线。计算机210通常包括各种计算机可读介质。计算机可读介质可以是可由计算 机210访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。 作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储 介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息 的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储
介质包括但不限于,RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、 数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设 备、或可以用来储存所期望的信息并可由计算机210访问的任一其它介质。通信介 质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、
数据结构、程序模块或其它数据,并包括任一信息传送介质。术语"已调制数据信 号"指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作 为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线 介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机
可读介质的范围之内。
系统存储器230包括以易失性和/或非易失性存储器形式的计算机存储介质, 如只读存储器(ROM) 231和随机存取存储器(RAM) 232。基本输入/输出系统 233(BIOS)包括如在启动时帮助在计算机210内的元件之间传输信息的基本例程, 通常储存在ROM 231中。RAM 232通常包含处理单元220立即可访问和/或当前 正在操作的数据和/或程序模块,诸如分阶段模型100。作为示例而非局限,图2 示出了操作系统234、应用程序235、其它程序模块236和程序数据237;诸如分 阶段模型100等分阶段模型可用于对储存在RAM 232中或从其中执行的所有软件 的执行进行排序。
计算机210也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。 仅作示例,图2示出了计算机20具有对不可移动、非易失性磁介质241,如硬盘 驱动器进行读写的不可移动、非易失性存储器接口 240。计算机210还可包括对诸 如磁盘驱动器等设备251进行读写的非易失性存储器接口 250,设备251对诸如磁 盘等可移动、非易失性介质252进行读写。另外,计算机210可包括对诸如CD ROM 或其它光学介质等可移动、非易失性光盘256进行读写的光盘驱动器255。可以在 示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质 包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态 ROM等等。硬盘驱动器241通常通过不可移动存储器接口,如接口 240连接到系 统总线221,磁盘驱动器251和光盘驱动器255通常通过可移动存储器接口,如接
口 250连接到系统总线221。
上文讨论并在图2中示出的驱动器及其关联的计算机存储介质为计算机210 提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,示出硬盘 驱动器241储存操作系统244、应用程序245、其它程序模块246和程序数据247, 它们可以与操作系统234、应用程序235、其它程序模块236和程序数据237相同, 也可以与它们不同。这里对操作系统244、应用程序245、其它程序模块246和程 序数据247给予不同的标号来说明至少它们是不同的副本。用户可以通过连接到用 户输入设备,如键盘262和定位设备261 (通常指鼠标、跟踪球或触摸垫)的用户 输入接口 260向计算机210输入命令和信息。其它输入设备(未示出)可包括话筒、 操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦 合至系统总线221的用户输入接口 260连接至处理单元220,但是也可以通过其它 接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器291或其它类型的显示设备也通过接口,如视频接口 290连接至系统 总线221。除监视器291之外,计算机210也可包括其它外围输出设备,如扬声器 297和打印机296,它们通过输出外围接口 295连接。
计算机210可以使用到一个或多个远程计算机,如远程计算机280的逻辑连 接在网络化环境中操作。远程计算机280可以是个人计算机、服务器、路由器、网 络PC、对等设备或其它常见的网络节点,并通常包括许多或所有以上相对于计算 机210所描述的元件,尽管在图2中仅示出了存储器存储设备281。图2描述的逻 辑连接包括局域网(LAN) 271和广域网(WAN) 273,但也可包括其它网络,如 无线网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机210通过网络接口或适配器270连接至 LAN 271。当在WAN网络环境中使用时,计算机210通常包括调制解调器272或 用于通过WAN 273,如因特网建立通信的其它装置。调制解调器272可以是内置 或外置的,它可通过用户输入接口 260或其它适当的机制连接至系统总线221。在 网络化环境中,相对于计算机210所描述的程序模块或其部分可储存在远程存储器 存储设备281中。作为示例而非局限,远程应用程序285驻留在存储器设备281 上。可以理解,示出的网络连接是示例性的,且可以使用在计算机之间建立通信链 路的其它手段。
再次参考图l,阶段l 102是子阶段1 108和子阶段2 UO的超阶段。另两个 子阶段,即子阶段2a 112和子阶段2b 114在子阶段2 IIO期间发生。同样,子阶
9
段2 110是子阶段2a 112和子阶段2b 114的超阶段。任何阶段或子阶段可具有子 阶段。对于多层分阶段模型内的子阶段的层数没有限制。另外,在任何阶段空间中 必须有至少两个阶段,但是对两个阶段之上的阶段数没有限制。另外,如果在超阶 段内有子阶段,则必须有至少两个子阶段,但是对在两个子阶段之上的任何超阶段 期间发生的子阶段的数目没有限制。任何子阶段组可在超阶段期间循环一次或多 次。
阶段模型100示出了阶段空间。阶段空间是确定有效阶段(图节点)和有效 阶段转移(图边)的有限有向图。因此,阶段空间确定了有效阶段序列。阶段空间 100被定义在阶段组阶段1 102、阶段2 104和阶段3 106上。阶段空间100还有三 个阶段转移118a、 118b和118c。阶段转移表示共享预转换阶段的所有软件组件的 同时阶段改变何时发生。
当软件组件共享一阶段空间时,这些软件组件是阶段域的一部分。阶段域是 对由特定阶段空间定义的公共分阶段模型达成一致的一组软件组件。例如,同意受 具有主阶段102、 104和106的主阶段空间约束的所有软件组件是主阶段域的一部 分。由此,与主阶段域中的软件组件相关联的所有软件组件包括与主阶段102、 104 和106中的至少一个相关联的阶段约束。
阶段约束是限制阶段在某一特定程序上下文中有效的静态约束。特别地,约 束可被应用于程序段,从而断言该程序段仅在遵从该约束的阶段期间执行。在一个 实施例中,阶段约束被写为括号中的属性,诸如[Phasel]。这一数据结构将在以下 更详细解释。
具有占据一个或多个阶段域的一个或多个组件的计算机环境300在图3中示 出。主指导器302控制主阶段空间的转移和建立。该计算机环境内的所有组件是主 阶段域300的一部分,但是可占据一个或多个子阶段域。为允许创建阶段域300, 程序作者需要选择阶段空间、在该阶段空间上执行阶段转移的策略、以及处理跨阶 段域边界的消息的策略。
阶段域300可由多层阶段空间来表征。在本发明的各实施例中,诸如组件1304 等一个或多个组件向主指导器302注册。组件1 304表示任何类型的软件构造,包 括软件组件或方法。软件组件304被约束于主阶段空间中的阶段之一。
在其它实施例中,诸如子指导器1 306和子指导器2 308等一个或多个子指导 器向主指导器302注册。子指导器控制具有一个或多个不同阶段空间的一个或多个 其它阶段域。由此,阶段域300具有一个或多个嵌套的阶段域。诸如向子指导器l
306注册的组件2 310等所有组件被约束于子阶段空间内以及主阶段空间的一个或 多个主阶段内的一个或多个子阶段。在一个实施例中,由子指导器控制的子阶段域 在单个主阶段内操作。子阶段的操作可以在单个主阶段期间重复发生。
在本发明的各实施例中,诸如子指导器2等子指导器向诸如子指导器3等其 它子指导器注册以创建进一步嵌套的子阶段域。在某些实施例中,子指导器2 308 控制组件3 312的和子指导器3 314的操作。在其它实施例中,诸如子指导器3 314 的指导器控制诸如组件4 316和组件5 318等一个以上组件。每一子指导器可控制 具有独有的阶段的阶段空间。由此,子指导器1 306操作第一子阶段空间,而子指 导器3 314操作第二子阶段空间。如果两个子阶段空间不交互,则阶段空间被称为 正交空间。正交阶段空间的组合可形成笛卡尔阶段空间,它可用于形成用于单个乘 积的阶段域。底层阶段组是正交阶段组的笛卡尔乘积,其中有效阶段转移也是正交 阶段组的有效转移的笛卡尔乘积。
在本发明的各实施例中,指导器是逻辑时钟。指导器类似于硬件系统中的时 钟循环通过各阶段。在每一阶段转换时,指导器同时改变阶段域内的所有软件组件 的阶段。在一个实施例中,任何子指导器可同时改变子阶段域中的一个子阶段。逻 辑时钟等待被约束于该阶段的操作或在约束于该阶段的子阶段内执行的操作完成。
可用于主阶段域的阶段空间400的一个示例性实施例在图4中示出。阶段空 间400具有三个阶段。在读请求阶段402期间,将对数据读或写的请求或软件系统 中的其它软件命令或请求排队,直到进入下一阶段。在一个实施例中,仅所请求的 某些非冲突的方法在下一阶段中执行,而其它方法等待另一阶段或该阶段的下一循 环。
更新阶段404将命令和请求定向到适当的软件组件。在本发明的各实施例中, 在更新阶段404期间,软件组件履行命令或请求。在一个实施例中,更新阶段404 具有在更新阶段404期间发生的子阶段空间500。 一个示例性子阶段500在图5中 示出并在下文解释。在一个实施例中,更新阶段404触发用于数据层的子阶段。换 言之,对数据写的任何请求在更新阶段404的子阶段中实现。
第三阶段,即重新确认阶段406指导并执行在更新阶段404期间未处理的其 它方法。在一个实施例中,对检索数据的所有请求在重新确认阶段406期间完成。 例如,在更新阶段404中更新了数据之后,通知所有软件组件发生了数据改变,且 被通知的软件组件检索更新的数据。在一个实施例中,重新确认阶段406操作子阶 段空间600。子阶段空间600的一个示例性实施例在图6中示出并在以下描述。
为改变阶段,阶段空间400通过阶段转移。在该示例性实施例中,有表示三个阶段402、 404和406之间的转移的三个阶段转移408a、 408b和408c。如上所 述,阶段转移是诸如指导器302等指导器改变阶段时钟,且阶段域中用于所有软件 组件的阶段同时改变的时间点。可以发生对阶段域内的软件组件的关于当前阶段或向新阶段的转换转移的警 告或通知。在一个实施例中,指导器通知阶段的所有软件组件。在其它实施例中, 请求方法向指导器要求阶段。在本发明的各实施例中,转移通知被发送给阶段域内 的一个或多个软件组件。在一个实施例中,转移通知在当前阶段期间或在下一阶段 的开始处发生。在其它实施例中,对通知过程采用单独的阶段。例如,阶段空间 400可具有位于转移408a、 408b和408c处的三个通知阶段,用于通知阶段域内的 软件组件。更新阶段404的一个示例性子阶段空间500在图5中示出。子阶段500在某 些实施例中用于数据层。换言之,用于将数据写入共享数据结构的方法被约束于该 数据子阶段空间500的子阶段之一。在一个实施例中,共享该数据的所有软件组件 在协议阶段502中同意提交改变或异常中止(abort)改变。改变在提交或异常中止阶 段504中被提交或异常中止。在另一实施例中,协议阶段和提交或异常中止阶段是"提交或异常中止"子 阶段504的子阶段,且子阶段空间500具有标记阶段502而非协议子阶段502。此 处,数据改变在提交或异常中止阶段504中作出,且使用该数据的所有软件组件被 标记用于在标记阶段502中更新。标记一软件组件是在该软件组件中设置发信号通 知该软件组件在适当的稍后阶段中检索更新的数据的标志。在一个实施例中,标记 的软件组件在重新确认阶段406中检索数据。在另一实施例中,标记阶段502具有 两个子阶段标记子阶段和最终标记子阶段。此处,使用该数据的软件组件在标记 子阶段中被标记,并在最终标记子阶段中检索数据。在重新确认阶段406期间发生的另一示例性子阶段空间600在图6A中示出。 约束于子阶段空间600的软件构造中的一个示例性改变在图6B中示出。子阶段空 间600提供用于即插即用操作的子阶段。即插即用子阶段空间600具有两个阶段 用子阶段604和插子阶段602。 一般而言,在插子阶段602中,建立、改变或移除 软件组件的组成和配置,但是不执行任何使用时间功能。同样,在用子阶段604 中,对常规功能使用软件组件的已建立的组成或配置,但是不建立、改变或移除组 成或配置方面。
模块重新配置的一个示例性实施例在图6B中示出。在该实施例中,软件模块
具有第一配置606。在诸如用户输入请求等某一动作之后,软件模块改为第二配置 608。本领域的技术人员将认识到,软件模块在第一配置606中与在第二配置608 中不同地操作。由此,重新配置应当在没有方法在与该软件模块交互的用阶段期间 执行的情况下发生。在本发明的各实施例中,在插子阶段602期间,初始化、连接 或断开软件实例并设置属性。在某些实施例中,其它子阶段帮助对在插子阶段602 中执行的操作进行排序。
在一个实施例中,插子阶段602具有其它子阶段。构造子阶段610通过实例 化己知的类、调用软件组件或使用现有实例上的接口来获取克隆或专门化的导出实 例来创建新软件实例。配置子阶段612添加或移除实例之间的连接。最后,初始化 子阶段614设置属性并要求在正确连接的实例之间的协商。插子阶段602中的子阶 段可与此处所呈现的子阶段有所不同。另外,用子阶段604也可包含子阶段。
构想了其它分阶段空间。例如,构想了用于用户界面改变的子阶段空间。在 用户界面子阶段空间中,无效子阶段可允许用于构建结构的方法的执行。绘制子阶 段然后绘制构建结构。可对其它类型的操作使用其它阶段空间,如本领域的技术人 员将认识到的。另外,本领域的技术人员将认识到以上呈现的示例性阶段空间可在 阶段或子阶段的数目、层或级的数目以及阶段或子阶段的类型方面有所改变。由此, 本发明是可扩展的。在一个实施例中,新的超阶段被叠加在现有阶段空间上。在另 一实施例中,新的阶段被添加到现有的阶段空间。在还有一些实施例中,向现有的 阶段空间添加更多子阶段或子阶段空间的新的层。
具有约束代码项的执行的阶段约束的数据结构700的一个示例性实施例在图 7中示出。数据结构700是代码元素。任何类型的代码可具有阶段约束。阶段约束 702被示为在方法704之上。阶段约束702将方法704的操作约束于阶段约束中指 定的阶段,在本实施例中为阶段"perform""执行"。由此,方法704仅在"perform" 阶段或"perform"子阶段期间执行。
在本发明的各实施例中,数据结构包含取决于软件组件和所执行的操作的类 型的一种形式的约束。在一个实施例中,约束是调用约束。调用约束将方法调用约 束于指定阶段。由此,在其它软件组件或同一软件组件中的方法执行通过限制这些 方法仅在指定阶段期间启动来约束。在另一实施例中,约束是构造函数约束。构造 函数是实例化软件组件的一种特殊形式的方法。由此,软件组件的实例化被约束于 指定阶段,诸如对于图6A中的构造子阶段610所解释的。在另一实施例中,约束
是引用约束。引用约束约束了软件组件的整个类以及该类的所有原语操作。例如, 对接口施加的引用约束限制了软件模块之间的连接,如对于图6A中的连接子阶段612所解释的。约束由软件代码中可被分配给任何目标软件组件的阶段约束属性来表达。在 本发明的各实施例中,阶段约束属性被分配给整个类且是可继承的。由此,子组件 从其父组件继承约束。在某些实施例中,分阶段模式对同一目标施加多个阶段约束 属性。由此,软件目标通过多个阶段约束的结合来约束。每一约束是对与所指定的阶段的层次相关联的"类型"的约束。由此,指定 超阶段的约束是对"超阶段"的约束。指定子阶段的约束是对"子阶段"的约束。 对作为子阶段的类型的约束是对关于"超类型"的所有约束的并集的约束。对类型 的约束之间的关系由编译器使用或在运行时使用以检查不同软件组件之间的约束 关系的有效性。实施约束可在运行时或在编译时发生。在编译时,可检査对类型的约束。编 译器可对照关于具有对类型的约束的方法调用具有对子类型的约束的方法的一组 合法性规则来检查对类型的约束以及对子类型的约束。如果对子类型的约束与对类型的约束相同或比它弱,例如,如果对类型的约束指定了插阶段602,而对子类型 的约束指定了初始化子阶段614,则该约束模式是有效的。在该实施例中,初始化 子阶段约束614在插子阶段602内执行,且因此是较弱的约束。如果对子类型的约 束与对类型的约束互不相交,例如,如果对类型的约束指定了用子阶段604,而对 子类型的约束指定了相反的插子阶段602,则约束模式是无效的。如果对子类型的 约束比对类型的约束强或与其重叠,例如,如果对类型的约束指定了插子阶段602, 而对子类型的约束指定了初始化子阶段614,则约束模式是有效的,但是必须经受 某一动态检查。在该实施例中,如果阶段域当前同时在插子阶段602和初始化子阶 段614中操作,则该调用模式是有效的。然而,如果域不在两个子阶段之一中,则 该模式是无效的。构想了其它合法性规则并结合到本发明中。用于在多层分阶段域中操作计算机环境的方法800的一个示例性实施例在图 8A和图8B中示出。在开始之后,转移操作802转移到第一阶段,如请求阶段402。 在一个实施例中,启动诸如主指导器302的主指导器。在一个实施例中,诸如组件 304等组件被约束于向主指导器注册的主阶段之一。主指导器开始阶段时钟以将逻 辑时间循环通过诸如阶段空间400的阶段空间内的各阶段。确定操作804确定诸如组件304等任何软件组件是否被约束于主阶段中的第
一个。如果一软件组件被约束于第一阶段,则执行操作806在第一阶段期间执行该软件组件。如果没有软件组件要执行或者在软件组件的执行期间,则确定操作808 确定是否有在第一阶段期间发生的子阶段空间,诸如子阶段空间500。如果在第一 阶段期间没有子阶段空间发生,则该过程通过连接器1前进到图8B所示的转移操 作822。如果有在第一阶段期间发生的子阶段空间,则标识操作810标识该子阶段空 间以及适用的子阶段。在一个实施例中,诸如子指导器306的子指导器被启动并向 控制主阶段空间的主指导器注册。子指导器开始子阶段逻辑时钟以循环通过该子阶 段空间中的各子阶段。确定操作812确定是否有被约束于当前子阶段的任何软件组 件,如组件312。在一个实施例中,约束于子阶段空间的软件组件向子指导器注册。 由此,在主阶段域下创建了嵌套的子阶段域。如果在约束于当前子阶段的子阶段域 中有软件组件,则执行操作814在当前子阶段期间执行这些软件组件。确定操作 816确定是否有在当前子阶段期间发生的其它子阶段空间,诸如子阶段610、 612 和614。如果有其它子阶段,则该过程返回到标识操作810以标识其它子阶段。如果没有其它子阶段空间要标识,则确定操作818确定是否还余下任何其它 子阶段要在当前子阶段空间中发生。如果有另一子阶段要在当前子阶段空间中发 生,则转移操作820转移到子阶段空间中的下一子阶段。在一个实施例中,子指导 器等待,直到当前子阶段中的所有线程被执行,然后转移到下一子阶段。然后,该 过程再次前进到确定操作812。如果当前子阶段空间中没有余下任何子阶段,则确 定操作818确定在任何超阶段空间中是否有要转移到的另一超阶段。如果有另一超 阶段,则转移操作820转移到下一超阶段。该过程(确定超阶段内的子阶段;在子 阶段内执行软件组件;转移到下一子阶段直到所有子阶段完成;以及然后转移到下 一超阶段)重复,直到循环通过了所有子阶段空间并且需要到下一主阶段的转移。 一旦子阶段循环对第一主阶段结束,则该过程通过连接器1前进到图8B所示的转 移操作822。转移操作822转移到下一主阶段,如更新阶段404。在一个实施例中,主指导 器等待在第一阶段中执行的所有线程结束。然后,主指导器将逻辑阶段时钟改为下 一阶段。在某些实施例中,主指导器遵循以上参考图3列出的转移规则。该过程然 后按照用于标识子阶段的第一阶段发生时类似的操作进行。由此,关于子阶段过程 的某些细节此处不再讨论,但是本领域的技术人员将认识到如何将关于第一阶段描 述的细节实现到约束于下一阶段的任何后续过程中。 确定操作824确定是否有任何软件组件被约束于当前主阶段。如果有被约束于下一主阶段的软件组件,则执行操作826执行该软件组件。在各实施例中,这些软件组件已向主指导器注册。这些软件组件继续关于当前阶段与用主指导器校验当 前阶段。当阶段转移和主指导器报告,该域现在在下一主阶段中时,约束于下一主 阶段的软件组件开始执行。如果没有约束于下一主阶段的软件组件或者在被约束的软件组件的执行期间,则确定操作828确定当前主阶段内是否有任何子阶段空间。如果有子阶段空间, 则标识操作830标识这些子阶段空间并转移到第一子阶段。确定操作832确定是否 有任何软件组件约束于当前子阶段。如果有约束于当前子阶段的软件组件,则执行 操作834执行该软件组件。如果没有约束于当前子阶段的软件组件或者在这些软件组件的执行期间,则 确定操作836确定当前子阶段内是否有其它子阶段空间。如果有其它子阶段空间, 则该过程返回到标识操作830。如果当前子阶段内没有其它子阶段空间,则确定操 作838确定是否有在当前子阶段空间中的下一子阶段或者在超阶段空间中的下一 超阶段。如果有下一子阶段或超阶段,则转移操作840转移到下一子阶段或超阶段。 如果在当前主阶段下没有下一子阶段或超阶段,则确定操作842确定是否有下一主 阶段,诸如重新确认阶段406。如果有下一主阶段,则该过程返回到转移操作822。 如果主阶段空间中没有另一主阶段,则该过程通过连接器2返回到转移操作802 并通过转移到第一阶段来开始阶段循环。为进一步解释本发明,以下参考图9描述在多层分阶段域中操作的一个示例 性计算机系统。该示例性计算机系统操作个人联系人应用程序,诸如Microsoft Outlook⑧消息通信和协作客户端程序。此处,用户界面显示地址簿中的一个或多个 联系人。用户界面具有主视图窗口卯2。主视图902示出了所有联系人并允许用户 选择一个联系人来査看关于该联系人的更详细信息。计算机环境900在一阶段空间下操作。为解释起见而非限制,整个系统900 在图4所示的阶段空间400下操作。另外,出于解释的目的,计算机系统900当前 在请求阶段402中。由此,计算机系统900允许其中接收请求或命令的任何操作。 由此,接收査看联系人的详细视图904的用户命令916并将其置于队列中。另外, 命令918被发送到地址簿模块908以检索所请求的详细信息。数据请求918也被排 队。主指导器302将计算机系统域900中的阶段改为更新阶段404。此处,命令 916和918分别被发送到选择状态模块906和地址簿卯8。在更新阶段404期间, 转移到如以上参考图6所解释的用于对用户界面的改变的用户界面子阶段空间。无 效子阶段开始。用于详细视图904的命令916开始处理。主视图902中的视图被无 效。例如,对详细视图904的选择被设为非活动。另外,主视图902被设为非活动 窗口。详细视图904用适当的字段和用户界面项来创建。用户界面子指导器然后转 移到绘制子阶段。主视图902中对联系人的选择被绘制以显现为非活动,例如加亮 的选择改变颜色。主视图902被绘制为非活动。例如,主视图902窗格改变颜色以 表示它是非活动的。详细视图904用用户界面元素来绘制。字段保持打开以从地址 簿模块908接收数据。主指导器302在用户界面子空间中的所有无效和绘制约束操作完成之后转移 到重新确认阶段406。在重新确认阶段406期间执行数据检索操作。在一个实施例 中,数据检索操作被约束于数据检索子阶段空间。数据检索子阶段空间具有两个子 阶段,即标记和最终标记,如参考图6所解释的。启动标记子阶段。地址簿搜索需 要数据更新的软件模块。标记详细视图904。用于数据检索子阶段空间的子指导器 转移到最终标记子阶段。在最终标记子阶段中,地址簿908从以下三个数据存储之 一中检索所需的联系人信息Exchange服务器地址簿910、客户端地址簿912或 MSN地址簿。在检索到联系人信息之后,地址簿908将联系人信息写入详细视图 904。在完成了约束于重新确认阶段406的所有操作之后,主指导器302转移回请 求阶段402。此处,用户界面再次从用户输入设备接受命令和请求。用户在详细视 图904内输入对联系人信息的改变。例如,用户改变联系人的地址。命令902从详 细视图904发送到地址簿904以改变数据。另外,命令922被发送到选择状态906 以更新主视图902和详细视图904的视图。在这一实施例中,命令将被排队,且主 指导器302转移到更新阶段404。更新阶段404启动数据写子阶段空间,诸如子阶 段空间500。在协议子阶段502中,地址簿将数据改变请求发送到若干数据存储910、 912 和914。数据存储中的一个或多个可包含详细视图904中改变的数据的副本。由此, 具有该数据的每一数据存储必须同意改变数据。由此,在协议子阶段502期间发生 投票过程。如果所有的数据存储同意提交该改变,则将协议发回地址簿908。子指 导器将阶段改为提交或异常中止阶段504。此处,数据改变被发送到数据存储并用 于更新数据。404期间,用户界面子阶段空间发生。选择状态906在无 效子阶段中将主视图902和详细视图904中包含旧数据的部分无效。在绘制子阶段 中,重新绘制主视图902和详细视图904,从而为改变的数据保持了空间。在所有 子阶段在更新阶段404中完成之后,阶段域900转移到重新确认阶段406。在重新确认阶段406中,其它子阶段空间包括用于标记和最终标记的子阶段。 转移到标记阶段,地址簿908将主视图902和详细视图904标记为需要改变的数据。 在最终标记子阶段中,改变的数据被写入主视图902和详细视图904。这些改变可 在非常短的时间内且以精细的粒度发生。例如,阶段在用户输入每一字符之后且在 几分之一秒的瞬间内循环。由此,改变看似为立即发生。本示例示出了如何对系统内的方法执行施加多层分阶段约束。如果命令和改 变在没有分阶段的情况下发生,则主视图902和详细视图904可能在所有数据存储 改变数据之前被更新。因此,用户可取决于视图改变数据并更新用户界面视图的方 法的顺序来查看详细试图卯4或主试图902中的混合结果。尽管以对结构特征、方法动作和包含这些动作的计算机可读介质专用的语言 描述了本发明,但是可以理解,所附权利要求书中定义的本发明不必限于所描述的 具体结构、动作或介质。本领域的技术人员将认识到落入本发明的范围和精神内的 其它实施例或改进。因此,这些具体结构、动作或介质是作为实现所要求保护的本 发明的示例性实施例来公开的。本发明由所附权利要求书来限定。
权利要求
1.一种编码了用于具有组件的计算机系统的指令的计算机程序的计算机程序产品,所述组件包括形成两组或多组软件组件的多个软件组件;被约束于由第一阶段空间表征的第一阶段域的第一组软件组件;以及被约束于由第二阶段空间表征的第二阶段域的第二组软件组件。
2. 如权利要求l所述的计算机程序产品,其特征在于,所述第一阶段空间是 主阶段空间。
3. 如权利要求l所述的计算机程序产品,其特征在于,所述第二阶段域是所 述第一阶段域的子阶段域,并由一子阶段空间来表征。
4. 如权利要求3所述的计算机程序产品,其特征在于,所述子阶段域还包括 由一个或多个其它子阶段空间来表征的一个或多个其它子阶段域。
5. 如权利要求l所述的计算机程序产品,其特征在于,所述第一阶段域和所 述第二阶段域是正交的。
6. 如权利要求l所述的计算机程序产品,其特征在于,还包括控制所述第一 阶段域的主指导器。
7. 如权利要求6所述的计算机程序产品,其特征在于,还包括 控制所述第一阶段域下的一个或多个子阶段空间的一个或多个子指导器;以及向所述子指导器之一注册的一个或多个软件组件,所述子指导器将所述一个 或多个软件组件的执行约束于由所述子指导器控制的子阶段中的一个或多个。
8. 如权利要求6所述的计算机程序产品,其特征在于,还包括向所述主指导 器注册的一个或多个软件组件,所述主指导器将所述一个或多个软件组件的执行约 束于由所述主指导器控制的阶段中的一个或多个。
9. 如权利要求6所述的计算机程序产品,其特征在于,所述一个或多个子指 导器向所述主指导器注册,并且由所述主指导器控制。
10. 如权利要求1所述的计算机程序产品,其特征在于,被约束于所述第一 阶段的所有方法的完成和被约束于所述第二阶段的所有方法的完成导致计算机操 作的完成。
11. 一种编码了用于执行一计算机实现的方法的指令的计算机程序的计算机 程序产品,所述计算机实现的方法用于结构化软件系统内的多个方法的执行,所述 方法包括转移到第一阶段;将第一方法的执行约束于所述第一阶段; 转移到一个或多个其它阶段;以及将一个或多个其它方法的执行约束于所述一个或多个其它阶段。
12. 如权利要求ll所述的计算机程序产品,其特征在于,所述第一阶段是请 求阶段、更新阶段或重新确认阶段中的一个。
13. 如权利要求ll所述的计算机程序产品,其特征在于,所述第一阶段具有 两个或更多子阶段。
14. 如权利要求13所述的计算机程序产品,其特征在于,所述两个或更多子 阶段包括协议子阶段和提交或异常中止子阶段。
15. 如权利要求13所述的计算机程序产品,其特征在于,所述两个或更多子 阶段包括标记子阶段和最终标记子阶段。
16. 如权利要求13所述的计算机程序产品,其特征在于,所述两个或更多子 阶段包括插子阶段和用子阶段。
17. 如权利要求16所述的计算机程序产品,其特征在于,所述插子阶段还包 括构造子阶段、配置子阶段和初始化子阶段。
18. 如权利要求ll所述的计算机程序产品,其特征在于,所述第一方法由所 述方法中的阶段约束属性约束于所述第一阶段。
19. 一种其上储存有数据结构的计算机程序产品,所述数据结构包括包含阶 段约束属性的数据字段,所述阶段约束属性将与所述数据结构相关联的操作限制到 一指定的阶段。
20. 如权利要求19所述的计算机程序产品,其特征在于,所述阶段约束属性 包括调用约束、构造函数约束或引用约束中的一个。
全文摘要
本发明包括用于软件系统的分阶段系统和方法。在本发明的各实施例中,该分阶段系统包括一多层分阶段空间,其中软件系统内的操作被约束于一个阶段或一个子阶段。操作仅在指定的阶段内执行。由此,在大型且复杂的软件系统中可能产生不正确结果的操作不同时执行,而是遵循一特定顺序来执行。本发明还提供了一种将阶段约束作为软件属性引入软件代码的数据结构。
文档编号G06F9/44GK101167052SQ200680014637
公开日2008年4月23日 申请日期2006年4月20日 优先权日2005年4月29日
发明者A·F·X·阿玛德, B·M·奥兰尼科, C·A·西泽伯斯基, D·G·亨特, G·L·休格斯, S·克莱安, W·A·曼尼斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1