计算机应用程序中体系结构划分的构建时(Build-Time)实施的制作方法

文档序号:6570308阅读:337来源:国知局
专利名称:计算机应用程序中体系结构划分的构建时(Build-Time)实施的制作方法
技术领域
本发明涉及实施计算机应用程序等中的体系结构划分的系统和方法。更具 体地,本发明涉及这样的系统和方法,其允许这样的计算机应用程序的体系结 构设计师就应用程序指定包括许可的依赖关系的划分规则,并且实施所指定的 划分规则。
背景技术
计算机应用程序,尤其是相对大规模的计算机应用程序一般根据概念上将 应用程序分成逻辑分组的体系结构划分设计来构造。如可以理解地,这样的分 组用于帮助广泛地理解应用程序。作为这样的体系结构划分的示例,应用程序 可能被分成包括用户界面(UI)、应用程序逻辑、数据存储等的分组、分区或 焦点区。
值得注意的是,特定应用程序的体系结构划分设计可不仅指定多个分区, 而且也可指定每一指定分区中的应用程序组件是否以及如何可引用其他指定 分区中的应用程序组件。如可以理解地,第一组件内对另一、第二组件的引用 创建第一组件对第二组件的依赖关系。如也可以理解地,这样的引用或依赖关 系可能是有用甚至是必需的,但也可能具有以不想要和/或欠考虑的方式将应 用程序组件连系在一起的效果。因此,应用程序的体系结构划分设计可指定第 一分区中的第一组件可引用第二分区中的第二组件但不可引用第三分组中的 第二组件。
如应理解地,通过根据逻辑分组采用体系结构划分,尤其在模块化系统中, 遵守定义的分组以及所允许的依赖关系为配置的灵活性留有了余地。例如,且 如可以理解地,如果应用程序中的应用程序逻辑被划分成与这样的应用程序中 的用户界面分开,用来提供应用程序逻辑的组件可更容易地在本质上可能相似 但具有不同用户界面的另一应用程序中采用。因此,且作为依赖关系规则,应
用程序逻辑分区中的组件不应依赖于用户界面分区中的组件,因为这样的依赖 关系将阻止应用程序逻辑用于另一用户界面。
对于计算机应用程序良好地建立了体系结构划分的理论和使用。然而,给
出这样做的机会,为计算机应用程序开发一个或多个组件的开发员可能确实会 有意或无意地违反为应用程序定义的体系结构划分。即,应用程序,尤其是前 述相对大规模的计算机应用程序,往往不再依照为其定义的体系结构划分并与 之偏差。
在这样的偏差的一个典型示例中,特定应用程序的体系结构划分设计可指 定第一分区中的组件可引用/依赖于第二分区中的组件而非第三分区中的组件 的规则。然而,尽管有这样的依赖关系规则,开发应用程序的开发员实际上通 过在第一分区中开发引用/依赖于第三分区中的组件的组件仍有意或无意地违 反了划分设计。简而言之,进行从一个组件到另一组件的引用通常是一件简单 的事,且目前不存在向开发员告知特定的引用可能会违反依赖关系规则并造成 偏差的防护装置。
一般而言,偏差主要由于应用程序的体系结构一般与应用程序本身分开设 计和维护而造成。简而言之,这样的体系结构通常不会具体化成源代码或可用 于实际构建应用程序的任何其他可存储的形式。而且,通常体系结构应用程序 由一个或一组人定义并由另一个或另一组人开发。因此,如果在开发的应用程 序和为该应用程序定义的体系结构之间出现偏差,则不存在任何方法或机制来 标识偏差或停止构建与为其定义的体系结构有偏差的应用程序。
从而,需要实施为应用程序定义的体系结构划分的方法和机制。具体地, 需要实际上标识所开发的应用程序和为该应用程序定义的体系结构之间的偏 差的方法和机制。同样地,需要用于停止构建与为其定义的体系结构有偏差的 应用程序的方法和机制。
发明概述
前述需要至少部分为本发明所满足,在本发明中对于具有多个组件并根据 为其设计的体系结构构建的计算机软件构造提供了方法。体系结构包括多个分 区和依赖关系规则,其中每一分区具有与之相关联的至少一个组件。每一依赖
关系规则指定一个分区的组件是否可引用另一分区的任何组件。
该方法用于在构建时对构造的每一组件实施体系结构的依赖关系规则。在 该方法中,接收到基于相应的构建指令来构建软件构造的特定组件的命令,还 接收到依赖关系规则。之后,确定软件构造和特定分区的特定组件是否由于不 正确引用另一分区的另一组件而违反任何依赖关系规则。仅当软件构造的特定 组件不违反任何依赖关系规则时,才构建该特定组件。
附图简述
以上概述以及以下本发明实施例的详细描述,在结合附图阅读时能够被更 好地理解。为说明本发明的目的,在附图中示出目前优选的实施例。然而,如 应理解地,本发明不限于所示的严谨的安排和手段。在附图中


图1是表示本发明和/或其部分的各方面可被纳入其中的通用计算机系统 的框图2是应用程序及其体系结构的示例的框图,其中应用程序根据本发明的 一个实施例要构建以在计算平台上实例化;
图3是根据本发明的一个实施例用于构建图2的应用程序的构建器的框 图;以及
图4是示出图3的构建器在构建图2的应用程序之前执行的关键步骤的流 程图,其中构建器确定图2的应用程序的组件根据本发明的一个实施例是否满 足图2的体系结构的划分。
本发明详细描述 计算机环境
图1和以下讨论旨在提供其中可实现本发明和/或其部分的合适计算环境 的简要一般描述。尽管不是必需的,但是在诸如程序模块的由诸如客户机工作 站或服务器的计算机执行的计算机可执行指令的一般上下文中描述本发明。一 般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定 任务或实现特定抽象数据类型。而且,应该理解,本发明和/或其部分可与其它 计算机系统配置一起来实践,包括手持设备、多处理器系统、基于微处理器或
8
可编程消费电子产品、网络PC、小型机、大型机等。本发明也可以在分布式 计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布 式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规个人计算机120等,该计算机 包括处理单元121、系统存储器122和将包括系统存储器的各种系统组件耦合 到处理单元121的系统总线123。系统总线123可以是若干类型的总线结构中 的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结 构中的任一种的局部总线。系统存储器包括只读存储器(ROM) 124和随机存 取存储器(RAM) 125。基本输入/输出系统126 (BIOS)包含有助于诸如启动 时在个人计算机120中元件之间传递信息的基本例程,它被存储在ROM 124 中。
个人计算机I20还包括对硬盘(未示出)读写的硬盘驱动器127、对可移 动磁盘129读写的磁盘驱动器128、以及对诸如CD-ROM或其它光学介质的可 移动光盘131读写的光盘驱动器130。硬盘驱动器127、磁盘驱动器128和光 盘驱动器130分别通过硬盘驱动器接口 132、磁盘驱动器接口 133和光盘驱动 器接口 134连接到系统总线123。驱动器及其相关联的计算机可读介质为个人 计算机120提供了对计算机可读指令、数据结构、程序模块和其它数据的非易 失性存储。
尽管此处所述的示例性环境使用硬盘、可移动磁盘129和可移动光盘131, 但是应该理解,在示例性操作环境中也可使用能够存储可由计算机访问的数据 的其它类型计算机可读介质。这样的其它类型介质包括磁带盒、闪存卡、数字 视频盘、贝努利盒式磁带、随机存取存储器(RAM)、只读存储器(ROM) 等。
可在硬盘、磁盘129、光盘131、 ROM 124或RAM 125上存储许多程序 模块,包括操作系统135、 一个或多个应用程序136、其它程序模块137和程 序数据138。用户可通过诸如键盘140和定点设备142的输入设备向个人计算 机120中输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、 游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系 统总线的串行端口接口 146连接至处理单元121,但也可以由其它接口,诸如
并行端口、游戏端口或通用串行总线(USB)连接。监视器147或其它类型的 显示设备也经由接口,诸如视频接口 148连接至系统总线123。除了监视器147 之外,个人计算机通常包括诸如扬声器和打印机的其它外围输出设备(未示 出)。图1的示例性系统也包括主适配器155、小型计算机系统接口 (SCSI) 总线156以及连接到SCSI总线156的外置存储设备162。
个人计算机120可使用至一个或多个远程计算机,诸如远程计算机149 的逻辑连接在网络化环境中操作。远程计算机149可以是另一个人计算机、服 务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文 相对于个人计算机120描述的许多或所有元件,尽管在图1中只示出存储器存 储设备150。图1中所示逻辑连接包括局域网(LAN) 151和广域网(WAN) 152。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是 常见的。个人计算机120也可用作为对诸如另一个人计算机120的客户的主机、 诸如便携式播放器或便携式数据助理的更专门的设备等,借此主机对客户进行 数据下载和/或上传等。
当在LAN网络环境中使用时,个人计算机120通过网络接口或适配器153 连接至LAN151。当在WAN网络环境中使用时,个人计算机120通常包括调 制解调器154或用于通过诸如因特网等广域网152建立通信的其它装置。或为 内置或为外置的调制解调器154经由串行端口接口 146连接到系统总线123。 在网络化环境中,相对于个人计算机120所描述的程序模块或其部分可以存储 在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使 用在计算机之间建立通信链路的其它手段。
体系结构划分的构建时实施
在本发明中,为应用程序定义体系结构划分,包括多个分区以及每一指定 的分区中的应用程序组件是否以及如何可引用其他指定分区中的应用程序组 件,且确保应用程序实际上是在这样的体系结构划分定义内构造。具体地,在 本发明中,提供了实施应用程序体系结构的划分规则的方法和机制,其中这样 的方法和机制在构建应用程序的每一组件时的构建时操作。从而,实施应用程 序的体系结构且防止应用程序与为其定义的体系结构有偏差。如果实际上检测
到这样的偏差,即停止组件的构建,且向组件的开发员告知以便给予纠正这样 的偏差的机会。
注意到,为其定义体系结构划分的应用程序和这样的应用程序的体系结构 可以是任何应用程序和体系结构,而不背离本发明的精神和范围。设计和定义 这样的应用程序和体系结构是已知的,或应该对相关的公众是显而易见的,从 而不必在此处详细描述。也注意到,在设计和定义这样的应用程序和体系结构 时,这样的体系结构的每一分区可按照任何适当的方式定义,而不背离本发明 的精神和范围。例如,可将每一分区定义成分区是一维或多维的,且每一分区 可基于诸如功能、安全性、通信等等的准则来定义。
现在转向图2,可见示出了应用程序10及其体系结构12的示例,其中应
用程序要在计算平台14上实例化。此处注意到,计算平台14可包括单个计算
设备或多个联网的计算设备。在后一情况中,多个联网的计算设备可按照任何
适当的方式组织,而不背离本发明的精神和范围。例如,平台14的不同计算 设备可专用于体系结构12的不同分区16,或这样的不同计算设备对应于多个 这样的分区16。
无论如何,且仍参考图2,可见在示例中示出的应用程序10被组织成搭 接以形成点阵或网格的多个水平层和垂直片的体系结构12,其中网格的每一单 元格被视为一单独的分区16。尽管未示出,诸如图2的体系结构12可适当地 包括任何数目的附加维。如可以理解地,每一分区16在构建应用程序10时要 被构成为一个或多个组件18。如应理解地,如根据应用程序10的体系结构12 所定义地,特定分区16中或'内'的每一组件实际上应与这样的分区16的目 的相关。
每一这样的组件18可以是任何适当的组件18和并具有任何组件18的类 型,而不背离本发明的精神和范围。定义体系结构12的组件18—般是己知的, 或应对相关公众是明显的,从而不必在此处详细描述。例如,如果应用程序IO 要被构建成单个逻辑文件等,每一组件18可以是要被编译或以其他方式被包 括在应用程序10的文件内的适当的逻辑部分。同样地,如果应用程序要被构 建为多个逻辑文件等,则每一组件18可以是多个这样的文件、单个文件或单 个文件的一部分。说明书第7/12页
在后一情况中,每一组件18通常可以对应于特定的文件等,其中这样的 文件包括数据文件、可执行文件、库文件等。如可以理解地,每一这样的组件 18/文件可由一个或多个开发员开发为经由适当的构建过程或构建器被编译或 以其他方式构建到组件18/文件中的一组源代码等。
在图2中所示的体系结构12中,可以看到,体系结构12的水平层对应于 应用程序10内组件18的一般适用性,诸如产品、开发工具和通用工具。同样 地,可以看到,体系结构12的垂直片对应于组件18在应用程序10上的顶层 功能分组,诸如用户界面(UI)、逻辑和数据。因此,应用程序10的体系结 构12内水平层和垂直片的每一交集表示具有一个或多个组件18的分区16,其 中这样的分区内的每一这样的组件18具有共享的一般适用性以及共享的顶层 功能。例如,并如图2中所示,产品层和逻辑片的交集是其中具有与应用程序 10的逻辑和产品有关的一个或多个组件18的产品-逻辑分区16。
或者,体系结构12内的每一层或片本身可被视为分区16,其中片表示第 一分区策略的分区,而层表示与第一分区策略共存的第二分区策略的分区16。 在这样的情况中,每一组件18同时驻留在第一分区策略的特定分区16以及第 二分区策略的特定分区16内。然后,更一般地,可以理解,分区16和分区策 略可按照任何适当方式定义,而不背离本发明的精神和范围。
值得注意的是,除定义分区16和可能的划分策略以外,体系结构划分设 计也可定义依赖关系限制或规则20,适当地施加限制或规则以管控应用程序 10的特定分区16中的任何组件18是否以及如何可由应用程序10的另一特定 分区16中的任何其他组件18引用。仅作为这样的依赖关系规则20的一个示 例,并仍参考图2,可以看到所示的体系结构12中许可的依赖关系在水平层上 从左流向右,在垂直片上向下流动。即,UI产品分区16中的组件18可引用逻 辑产品分区16中的组件,但逻辑产品分区16中的组件18不可引用UI产品分 区16中的组件18。类似地,数据产品分区16中的组件18可向下引用数据通 用分区16中的组件,但数据通用分区16中的组件18不可向上引用数据产品 分区16中的组件18。
当然,应用程序10的任何特定体系结构12的依赖关系规则20可以是任 何适当的依赖关系规则20,而不背离本发明的精神和范围。在定义了单向流的
12
一个典型的示例中,这样的规则20可要求每一分区16中的组件18仅可按流 动方向引用下游直接毗邻的分区16中的组件。作为另一示例,这样的规则20 可引用特定分区16或多个分区16,并指定对这样的所引用分区16允许的特定 的依赖关系流。
注意到,尽管特定的依赖关系规则20可仅定义在任何条件下不可从特定 分区16引用的禁止分区16,但这样的特定依赖关系规则20也可按条件方式定 义这种禁止分区16,诸如基于从特定分区16引用的目的。如可以理解地,用 于定义这样的依赖关系规则20的特定方法和机制可以是任何适当的方法和机 制,而不背离本发明的精神和范围。例如,这样的依赖关系规则20可根据预 定义的依赖关系定义语言在依赖关系文件或脚本等中指定;或可被指定为一组 属性等。
如上所指出,尽管可为一应用程序10定义诸如在图2中所示出的包括分 区16和依赖关系规则20的体系结构12,但为应用程序10开发特定组件18 的开发员并不被阻止有意或或无意地违反这样的体系结构12。具体地,在这样 的组件18的开发期间,这样的开发员并不被阻止对另一组件创建依赖关系, 在此所创建的依赖关系依据与其(依赖关系规则20)有的偏差而违背依赖关系 规则20。
从而,在本发明的一个实施例中,如果开发员开发了违背应用程序10的 体系结构12的依赖关系规则20的组件18,则为应用程序10构建组件18的尝 试将失败。因此,开发员必须更改组件18以遵循依赖关系规则10并重试以便 为应用程序10构建这样的组件18。
在现有技术中,提供构建器来基于所提交的构建指令以及应用程序10的 每一组件18的源代码等构建组件18。构建这样的组件18的这样的构建器是已 知的且应对相关公众是显而易见的。然而,现有技术的构建器完全不参考任何 依赖关系规则20,或以某种其他方式确认正在构建的组件18不违反这样的依 赖关系规则20。
因此,现在转向图3,在本发明的一个实施例中,提供构建过程或'构建 器'22以基于组件18的源代码等、 一组构建指令24并基于依赖关系规则20 来构建应用程序10的每一组件18。因此,正被请求来构建应用程序10的构建
器22首先确认其每一组件18不违反依赖关系规则20。
如果构建器22在要构建的组件18中没有发现违反依赖关系规则20,则 构建器22基于其的构建指令24实际地构建并输出组件18,当然这是假定没有 阻止构建器22构建组件18的其他问题存在。然而,如果构建器在组件18中 发现对依赖关系规则20的任何违反,则构建器10拒绝构建这样的组件18,而 改为可发出详述关于依赖关系规则20的每一违反的报告等。因此,组件18的 开发员等可审阅报告并试图补救其中详述的每一违反。 一旦补救了每一违反, 开发员可再次请求构建器22构建组件18。
如上提到,基于构建指令24来构建应用程序10的组件18的构建器22 是己知的或应对相关公众显而易见,从而不需在此处详述。 一般,尽管不是必 需的,在构建器22被执行时,可能以项目文件等形式向其提供构建指令24。 基于构建指令24,构建器22然后定位构建组件18所需的所有源代码等,并实 际上根据在构建指令24内包含的指示构建组件18。注意到,除了参考组件18 的源代码等,构建指令24也可参考其他对象,包括定义组件18的属性的对象、 提供构建组件18时使用的方法的对象、提供条件的对象等。或者,至少某些 这样的对象的内容可被包括在构建指令24内。 一般,这样的构建指令24是已 知的,或应对相关公众是显而易见的,从而不必在此处详细描述。从而,可采 用构建指令24的任何适当形式,而不背离本发明的精神和范围。
因此,应理解,这样的构建器22实际上基于这样的指令24构建应用程序 10的组件18所采用的功能可以是任何适当的功能,而不背离本发明的精神和 范围。然而,如应理解地,本发明至少部分在于这样的构建器22在被请求构 建应用程序10的组件之后首先确认组件18不违反为应用程序10的体系结构 12设置的依赖关系规则20。
现在转向图4,示出了一种方法,它构建应用程序10的组件18并为此确 认组件18不违反为应用程序10的体系结构12设置的相应的依赖关系规则20, 从而实施为应用程序10设计并在这样的应用程序10的体系结构12的依赖关 系规则20中描述的体系结构划分。初步地,且如可以理解地,体系结构设计 师必须定义应用程序10的体系结构12的体系结构划分设计以包括多个分区16 (步骤401)。如现在应理解地,并现在假定想要单个划分策略,则体系结构
的体系结构划分设计将应用程序10的每一组件18置于多个定义的分区16之 一中。值得注意的是,应用程序10的每一组件18必须与一个且仅一个分区16 相关联。
此外,体系结构设计师必须定义应用程序10的体系结构12的体系结构划 分设计,以包括体系结构12的每一分区16中的每一组件18要遵守的依赖关 系规则20 (步骤403)。如现在应理解地,这样的依赖关系规则20指定分区 16之间的依赖关系限制,使得对于体系结构12中的每一特定分区16,其他分 区16被标识为不从该特定的分区16引用。换言之,依赖关系规则20为每一 特定分区16定义不经由该特定分区16访问的其他分区16。如上所提到,这样 的依赖关系规则20不仅对于开发应用程序10的体系结构12的分区16的组件 18的开发员有益,而且供构建器22在实施依赖关系规则20及其体系结构划分 设计的过程中使用。
一旦定义了分区16和依赖关系规则20之后,应用程序10的每一组件18 必须被指派给一特定的分区16 (步骤405)。值得注意的是,这样的指派必须 被记录或以其他方式存储成使指派可由构建器22访问,以便这样的构建器22 可实施依赖关系规则20。可按照任何适当的执行方式来实现这样的指派,而不 背离本发明的精神和范围。例如,可在随组件18和依赖关系规则20提供给构 建器22的构建指令24中为组件18中的至少某些中的每一个指定这样的指派。 又例如,可在所述组件18内可能作为其属性为组件18中的至少某些中的每一 个指定这样的指派。再例如,可作为对应于组件18的数据文件的一部分为组 件18中的至少某些中的每一个指定这样的指派。在最后的示例中,且如应理 解的那样,每一这样的数据文件必须随组件18、构建指令24和依赖关系规则 20被提供给构建器22。
注意到,用于指定组件18到分区16的指派的至少某些选项可能要求开发 组件18的开发员执行指定的动作,诸如例如在组件18中包括指派。因此,开 发员可能选择省略指定指派以努力避免麻烦。在克服这样的情形的努力时,且 在本发明的一个实施例中,构建器22,作为确认应用程序10的每一组件18 不违反为应用程序10的体系结构12设置的依赖关系规则20的一部分,可能 需要每一组件18到相应分区16的指派。因此,如果构建器22不能找到特定 组件18的指派,则构建将失败。
无论如何,现在假定应用程序10的特定组件18的指派被指定且可被找到, 并假设特定组件18的源代码等已被开发,则构建器22按以下方式确认特定组 件18未违反依赖关系规则20。如可以理解地,构建器处的过程以向构建器22 至少提交一组构建指令24 (步骤407)开始,其中这样的构建指令24包括何 处获取特定组件18的源代码等、任何相应的数据文件以及依赖关系规则20。 或者,组件18的这样的源代码、任何相应的数据文件以及依赖关系规则20按 需提交。
之后,对特定组件18,构建器22标识其分区16 (步骤409),或是根据 构建指令24、组件18的源代码等、任何数据文件,或是根据所釆用的任何其 他源,构建器22并审阅依赖关系规则20以标识禁止分区16,禁止分区16的 组件18不被该特定组件18所引用(步骤411)。构建器22然后以适当方式确 定由特定组件18引用的每一组件18 (步骤413),诸如经由源代码等内的特 定部分或通过审阅源代码等中的每一行。对每一引用的组件18,构建器然后确 定所引用的组件18是否在禁止分区16中(步骤415)。如果每个引用的组件 18都是根据依赖关系规则20由特定组件18正确引用的,则构建器继续进行(步 骤417)。否则,发现违反,且该过程可被停止,且可发出适当的报告。或者, 可允许该过程在违反标志等被置位之后继续,借此可发现存在的其他违反。
如可理解地,假定过程未停止,过程对特定组件18的每一引用组件18 继续。如果构建器22发现所有引用的组件18均遵循依赖关系规则20,则构建 器继续进行。具体地,如果采用违反标志,构建器22确定这样的违反标志是 否被置位。如果是,则过程停止,使得特定组件18不被构建,且可发出适当 的报告。如果否,则构建器22实际上通过基于应用程序10的特定组件18的 源代码并根据构建指令24来构建该特定组件18来继续(步骤419),当然假 定构建器22未发现将阻止构建这样的组件18的任何其他问题。
如前所述,如果构建器22确实发现了对依赖关系规则20的违反,则构建 器10发出详述对依赖关系规则20的每一违反的报告等。因此,应用程序10 和/或其特定组件18的开发员等可审阅报告并试图补救其中详述的每一违反。 一旦每一违反被补救之后,开发员然后可根据图4的步骤407及以下步骤再次
请求构建器22来构建应用程序10的特定组件18。
结论
尽管本发明对从组件18构建的诸如大规模应用程序的应用程序10尤其有 用,但本发明可对任何适当的应用程序IO实现,而不背离本发明的精神和范 围。而且,尽管按照应用程序10的体系结构12公开了本发明,但本发明可对 任何其他类型的计算机或网络软件构造或从组件18构造的对象的体系结构来 实现。从而,本发明要被解释为涵盖任何类型的计算机或网络软件构造或从组 件18构造的对象,在此根据定义的体系结构12来开发每一组件18,该体系结 构为组件18是其部分的对象指定分区16和关于分区16的依赖关系规则20。
实现结合本发明执行的过程所需的编程相当直接,且应对相关编程公众是 显而易见的。从而,这样的编程不附在此。从而可采用任何特定的编程来实现 本发明,而不背离其精神和范围。
在前述描述中,可以看到,本发明包括实施为应用程序IO定义的体系结 构12的体系结构划分的新的且有用的方法和机制。该方法和机制标识所开发 的应用程序10与为应用程序10定义的体系结构12之间的任何偏差,且如果 与为这样的应用程序10定义的体系结构12有偏差,则停止构建应用程序10。 应理解,从而,本发明不限于所公开的特定实施例,而是旨在覆盖落入如由所 附权利要求书定义的本发明的精神和范围内的修改。
权利要求
1.一种关于具有多个组件并根据为其设计的体系结构来构建的计算机软件构造的方法,所述体系结构包括多个分区和依赖关系规则,每一分区具有与之相关联的至少一个组件,每一依赖关系规则是关于一个分区的组件是否可引用另一分区的任何组件,所述方法用于在构建时对所述构造的每一组件实施所述体系结构的依赖关系规则,所述方法包括接收基于相应的构建指令来构建所述软件构造的特定组件的命令;接收所述依赖关系规则;确定所述软件构造和特定分区的特定组件是否由于不正确引用另一分区的另一组件而违反任何依赖关系规则;以及仅当所述软件构造的特定组件不违反任何依赖关系规则时,才构建所述特定组件。
2. 如权利要求1所述的方法,其特征在于,所述方法是关于包括计算机应 用程序的软件构造的。
3. 如权利要求1所述的方法,其特征在于,所述方法由基于所述构建指令 来构建所述软件构造的所述特定组件的构建器来执行。
4. 如权利要求1所述的方法,其特征在于,还包括如果所述软件构造的所 述特定组件违反任何依赖关系规则,则拒绝构建所述特定组件并发出详述所述 特定组件作出的违反的报告,借此可试图基于所述报告来对所述违反进行补 救。
5. 如权利要求l所述的方法,其特征在于,还包括 定义所述体系结构来包括多个分区;定义所述依赖关系规则来为每一分区指定将不经由所述特定分区访问的 其他分区;以及将所述软件构造的所述特定组件指派到特定分区,并按照基于所述相应的 构建指令构建所述软件构造的构建器可访问的形式记录所述指派。
6. 如权利要求5所述的方法,其特征在于,记录所述指派包括在所述构建 指令中指定所述指派。
7. 如权利要求5所述的方法,其特征在于,记录所述指派包括在所述特定 组件内指定所述指派。
8. 如权利要求5所述的方法,其特征在于,记录所述指派包括在对应于所 述特定组件的数据文件中指定所述指派。
9. 如权利要求1所述的方法,其特征在于,包括,对所述特定组件进行 标识所述特定组件的所述分区;审阅所述依赖关系规则以基于所标识的分区标识每一禁止分区,借此根据 所述依赖关系规则,每一禁止分区的每一组件将不会由所述特定组件所引用; 确定所述特定组件所引用的每一组件;以及对每一所引用的组件,确定所引用的组件是否在禁止分区中;以及 如果所引用的组件在禁止分区中则停止,借此所述软件构造不被构建。
10. 如权利要求9所述的方法,其特征在于,包括如果所述软件构造的 所述特定组件的所述分区不能被标识则停止。
11. 如权利要求l所述的方法,其特征在于,包括,对所述特定组件进行标识所述特定组件的所述分区;审阅所述依赖关系规则以基于所标识的分区来标识每一禁止分区,借此根 据所述依赖关系规则,每一禁止分区的每一组件将不会由所述特定组件所引 用;确定所述特定组件所引用的每一组件;以及对每一引用的组件,确定所引用的组件是否在禁止分区中,且如果所引用的组件在禁止分区中则对违反标志置位;以及在处理了所有标识的组件之后,确定所述违反标志是否被置位,如果是则 停止,借此所述软件构造的所述特定组件不被构建。
12. —种其上存储计算机可执行指令的计算机可读介质,所述指令实现 一种关于具有多个组件并根据为其设计的体系结构来构建的计算机软件构造的方法,所述体系结构包括多个分区和依赖关系规则,每一分区具有与之相关 联的至少一个组件,每一依赖关系规则是关于一个分区的组件是否可引用另一 分区的任何组件,所述方法用于在构建时对所述构造的每一组件实施所述体系 结构的依赖关系规则,所述方法包括接收基于相应的构建指令来构建所述软件构造的特定组件的命令;接收所述依赖关系规则;确定所述软件构造和特定分区的特定组件是否由于不正确引用另一分区 的另一组件而违反任何依赖关系规则;以及仅当所述软件构造的特定组件不违反任何依赖关系规则时,才构建所述特 定组件。
13. 如权利要求12所述的介质,其特征在于,所述方法是关于包括计 算机应用程序的软件构造的。
14. 如权利要求12所述的介质,其特征在于,所述方法由基于所述构 建指令来构建所述软件构造的所述特定组件的构建器来执行。
15. 如权利要求12所述的介质,其特征在于,所述方法还包括如果所 述软件构造的所述特定组件违反任何依赖关系规则,则拒绝构建所述特定组件 并发出详述所述特定组件作出的违反的报告,借此可试图基于所述报告来对所 述违反进行补救。
16. 如权利要求12所述的介质,其特征在于,所述方法包括,对所述特定组件进行标识所述特定组件的所述分区;审阅所述依赖关系规则以基于所标识的分区来标识每一禁止分区,借此根 据所述依赖关系规则,每一禁止分区的每一组件将不会由所述特定组件所引 用;确定所述特定组件所引用的每一组件;以及对每一所引用的组件,确定所引用的组件是否在禁止分区中;以及 如果所引用的组件在禁止分区中则停止,借此所述软件构造不被构建。
17. 如权利要求16所述的介质,其特征在于,所述方法包括如果所述 软件构造的所述特定组件的所述分区不能被标识则停止。
18. 如权利要求12所述的介质,其特征在于,所述方法包括,对所述 特定组件进行-标识所述特定组件的所述分区;审阅所述依赖关系规则以基于所标识的分区来标识每一禁止分区,借此根 据所述依赖关系规则,每一禁止分区的每一组件将不会由所述特定组件所引 用;确定所述特定组件所引用的每一组件;以及对每一引用的组件,确定所引用的组件是否在禁止分区中,且如果所引用 的组件在禁止分区中则对违反标志置位;以及在处理了所有标识的组件之后,确定所述违反标志是否被置位,如果是则 停止,借此所述软件构造的所述特定组件不被构建。
全文摘要
计算机软件构造具有多个组件,且基于为该构造设计的体系结构来构建。体系结构包括多个分区和依赖关系规则,其中每一分区具有与之相关联的至少一个组件。每一依赖关系规则指定一个分区的组件是否可引用另一分区的任何组件。该方法在构建时对构造的每一组件实施体系结构的依赖关系规则。接收到基于相应的构建指令来构建软件构造的特定组件的命令,还接收到依赖关系规则。之后,确定特定分区的特定组件是否由于不正确引用另一分区的另一组件而违反任何依赖关系规则。仅当软件构造的特定组件不违反任何依赖关系规则时,才构建该特定组件。
文档编号G06F17/00GK101361053SQ200680051002
公开日2009年2月4日 申请日期2006年12月20日 优先权日2006年1月12日
发明者R·S·金伯利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1