推荐给好友 上一篇 | 下一篇

软件配置管理概念-3.4 结构和构建概念

这个概念将处理:选择一个结构的组件;捕获一个组件及其结构的变更;访问结构的一部分;描绘和保持一个结构一致性的特性,包括:变更集、系统建模、子系统、对象池、属性和一致性维护,这些将在下面描述。

3.4.1 变更集

Aide-De-Camp (ADC) [1] 抽象了版本库中组件不同版本的区别的这一基本概念,使之成为一个区别关系并可以被访问。区别的关系,以及其应用的文件和其他变更的细节组成了变更集。 ADC 捕获对一个配置的变更集,并且这个变更集可以用来构建一个配置的自定义版本。这个变更集有一个名字,可以在操作中使用,用户可以指定一个表达式来创建配置 的特定实例,这个表达式可以为某个变更集指派一个应用的基线。一个变更集可以看作是和前一个变更集是相互独立的(会创建一个版本历史),也可以看作是非独 立的(历史中选定的一部分被应用)。因此,用户可以工作在最新的版本上,也可以在自定义的版本上。变更集捕获对所有文件的所有修改,包括修改的原因和细 节,以及修改的作者和时间。用户检验修改的范围,ADC会自动记录所有的变更细节。例如,用户希望对一个配置作出一个主要的修改来修正一个问题,用户指派 一个变更集并且修改这个文件。这个变更集捕获:对配置中所有文件作出修正的原因;所有实际修改的代码(在配置中每个文件的区别);所有关联的文件变更;和 作出修正的人和时间。用户在浏览每个文件或变更集时可以看到这些信息的大部分,作为汇总,变更集代表了一个产品的逻辑变更,也意味着创建版本的任何配置不 必依赖于那个配置的最新版本。

3.4.2 系统建模

系统建模描述了一个软件产品的结构和它的组件及组建的创建方式。 Jasmine [10] 系统模型是一个文本描述,用户可以调整,并且用来执行他们的任务。Jasmine系统建模由代表了四类信息的功能描述:(1)产品组件的关系,(2)版本 绑定信息,(3)构建规则和(4)验证规则。关系描述了:产品的模块分解,如子模块的等级;组件的依赖关系,例如模块的创建次序;还有根据共同属性对组件 的分类,如建立源程序或对象模块组。这种根据关系的产品描述叫做模板,这个描述捕获了它的结构。使用功能操作和关系,用户可以从简单中构建复杂的关系。这 使的Jasmine可以回答用户定义的查询,例如修改某个模块会影响哪些组件。系统模型包括了族的概念,可以用来捕获产品的历史。一个族描述了组件版本的 更迭,许多用户定义的产品版本组成了族,与之相关的还有每个版本的属性如创建日期和作者。查询,版本选择和规则都是基于这些属性,构建规则记录了当前组件 是如何生成的,以及未来会怎样生成,例如记录编译器的版本和编译选项。验证规则指定和记录了产品的结构和组织约束,例如源代码和库模块必须一致(所有的二 进制模块都是从这些源代码模块编译而得)。通过选择一个组件的一个版本,就会使用族的选择表达式执行评估,来确认这个模块查找的路径,选择的作为结果的模 块就会以一个镜像(image)的形式绑定到模板。许多工具,如浏览器,模块retriever,调试器和内置模块分析器可以引用和处理这个系统模型。实 际上,系统建模是对产品某个实例的一种抽象,通过对产品的完全描述,辅助其他工具来维护产品的完整性。

3.4.3 子系统

Ratinal [14] 环境支持将一个大的Ada产品分解成几个部分,允许限制变更影响的范围,这几个部分叫做子系统。子系统接口规范及其实现,代表了配置项目。因此,它们可以 被看作一个整体,并通过它们的名字访问。子系统中的组件对其他子系统的组件不可见,除非是通过结构规范指派公开的。Ratinal环境会在运行时检查实现 满足了接口说明,作为结果,可以在接口规范的实现上独立进行工作,只要用户愿意。重复编译只会在子系统的范围内进行,除非接口有改变;在任何时候,任何使 用这些组件的产品需要重新编译,对接口规范的修改可能会需要整个产品的重新编译。子系统对它们的组件有版本控制,子系统可以是某个特定的版本。用户可以混 合匹配子系统来组合一个产品的特定版本。总之,子系统代表了是一种限制变更和编译影响的方法,对于环境来说,检查了产品组合部分的正确性。

3.4.4 对象池

在 系统建模中使用了这个概念,Domain Software Engineering Environment (DSEE) [8] 拥有生成特定导出的对象版本必要的信息。导出的对象放置在对象池中共享给用户,DSEE可以让用户为共享的对象指定对象期望的来源属性。导出的对象池保存 了一组二进制文件和其他转换工具产生的产品。每个导出的对象都有对应系统模型的信息,包括源代码的版本和转换器用的转换选项,关于导出的用户注释,日期, 时间,参与人和导出的位置。这些信息被叫作bound configu-file lists.ration thread (BCT),当DSEE进行了系统创建,它会为系统模型的每个组件计算目标BCT,DSEE会查看池来确定是否有符合期望的导出对象存在。如果有,就会被 使用;如果没有,就会创建。因此,每当用户需要一个特定的导出对象(或是兼容的),DSEE可以重新使用池中的对象,而不需要重新生成对象。用户不必知道 是否有导出对象存在;DSEE会检查所有的事情。一旦池中的某个对象已死(根据未使用时间),DSEE可以删除它们,清理空间。这样节约了编译时间和空间 需要,并且重用了以前的工作。DSEE也提供了不同类型的对象池,例如对于源文件导出的对象一直会从版本库检出到特定的用户。实际上,CM系统优化了重新 生成组件,并且使共享导出对象最大化。

3.4.5 属性

Adele [2] 系统通过使用具备建模能力的实体关系数据库来归纳版本库和系统建模。一个产品用数据模型描述,而Adele根据模型执行操作。产品组件通过有属性和关系的 数据库对象代表,属性关联到每个对象以描述对象。一个属性有一个名称和一个值,例如属性名“delta”代表了对象是以ASCII形式保存,可以被压缩; 它的值可以是“true”或“false”。需要区分两种类型的属性:预定义的和用户定义的。前者是Adele管理的,后者则是用户声明和管理的。一个预 定义的,特别的属性是“type”,这个属性对每个对象是不可变的,在Adele中它代表了主要的CM类型(例如组合对象,文档,修订版本和元素)。关系 定义了对象之间的依赖关系,例如,对象B源自对象A,用户可以按照对象间的属性描述配置,而不是对象特定版本的列表。Adele根据对属性及关系使用选择 的规则和限制进行初始化和创建配置,用户可以对产品的期望特性定义任何结构(而不只是一个等级结构),因此,用户可以用一种高级别的方式来描述一个产品, 而不仅仅是组合冗长的文件列表。

3.4.6 一致性维护

Configuration Management Assistant (CMA) [6] 支持基于产品抽象描述的配置构建和验证,也就是组成配置的组件的使用成功和失败的信息。数据建模工具包括了用户用来描述配置的预定义属性和关系,基于这些 属性和关系的语义,CMA可以确定哪个配置(组件实例集)是可用的,为了可用性,一个配置必须完全的,毫不含糊的,完整的和没有版本问题的。这意味着配置 必须包括所有组件的实例而不会包含某个组件的多个实例。属性的类别代表了用户定义特性的属性,如约束,类型和版本,关系的类别代表了依赖的类型,例如逻 辑,兼容组件,实例和等级依赖。每当构建一个新的配置,CMA会利用前一次的信息构成配置,通过这种方式,CMA可以预测配置是否可用。新的配置会被添加 到数据库,用来分析以后的可用性,因此用户可以反馈系统来识别任何不完整性,或者是在创建和重用配置时保存完整性。

TAG: 软件 概念 管理 结构 构建
 

评分:0

我来说两句