基于面向对象文法的产品配置技术
立即解锁
发布时间: 2025-08-22 00:19:08 阅读量: 1 订阅数: 9 

# 基于面向对象文法的产品配置技术
## 1. 引言
复杂产品常以产品族形式设计,每个定制产品都是相互关联组件的配置。产品配置器能支持产品配置过程,确保满足产品配置模型中的所有设计和配置规则,简化制造流程,保证收到的订单都可生产。理想的产品配置模型应能直接体现设计意图,便于领域工程师阅读和修改,还能自动生成计算机辅助配置工具。
为实现这一理想场景,我们开发了 OPG(面向对象产品文法),它基于面向对象编程和属性文法。面向对象提供了合适的建模支持,属性文法则为表达配置规则提供了基础,并且属性文法在生成交互式工具方面有成熟有效的技术。OPG 的开发源于隆德大学和阿法拉伐热能公司合作的一个项目,旨在正式描述板式换热器的机械配置。阿法拉伐热能公司开发了名为 CAS 2000 的交互式配置工具,允许用户定制板式换热器的设计。OPG 的近期目标是用自动生成的配置器取代 CAS 2000 中手动实现的配置器,以便快速更新工具以适应新产品的发展。
## 2. 板式换热器
板式换热器(PHE)是一种通过与另一种流体交换热量来加热或冷却流体的设备,广泛应用于化工、乳品加工、空调等领域。它由一组金属板组成,流体被引入板间的交替通道,以实现大面积的热交换,同时避免流体混合。
我们的示例涉及 PHE 的机械配置,包括如何配置板包与框架板、压力板、承载杆、支撑柱、紧固螺栓等。每个框架板和压力板有四个孔,可用于不同用途。四个孔用于连接进出的两种流体,其他孔可覆盖检查盖,有些孔因板包相应位置无孔而不与任何流体接触,这些孔用盲盖覆盖。配置选项包括如何放置连接和盖子、如何选择尺寸匹配和材料合适的组件,以确保相邻材料不腐蚀且组件能承受压力要求。当有不同配置时,通常选择最便宜的配置。
值得注意的是,PHE 本身并非大规模生产,而是其各个组件(如板、承载杆、支撑柱等)有多种不同变体(每种变体都是大规模生产的),但每个售出的 PHE 通常代表组件的独特配置。阿法拉伐热能公司采用了大规模定制的生产原则,其产品模型是一种积木式系统。从制造角度看,一个模块是具有固定组件集的命名组件,从销售角度看,模块是可配置成客户特定产品的原子元素。
## 3. OPG 配置模型
从一般角度看,产品配置可视为一组相互连接的组件,每个组件有多个属性。组件和属性上的一系列规则定义了配置的有效性,有效的产品配置是满足所有规则的配置。交互式产品配置器工具允许用户通过添加、删除或更改组件来交互式编辑产品配置,并不断检查当前配置的有效性,帮助用户选择能产生有效配置的组件。
OPG 是基于面向对象和属性文法的正式产品配置模型,允许在三个级别进行规范:
- **类型级别**:指定产品类型及其主要组件,如板式换热器及其主要组件(框架板、压力板、承载杆等)。
- **原型级别**:指定可用于产品配置的大规模生产组件,如不同的大规模生产框架板。
- **配置级别**:指定单个定制配置,如由特定大规模生产组件实例配置的牛奶冷却器。
我们的目标是通过将产品类型规范作为工具生成器的输入,并使用大规模生产组件的描述作为配置器工具的数据库,自动生成特定产品的配置器工具。支持生成配置器工具的主要原因是能够快速适应产品类型的演变,同时在三个级别都支持高度的一致性检查,并且规范具有高可读性和可重用性以支持演变。
### 3.1 组件层次结构
在 OPG 中,产品配置的组件以层次结构连接。以板式换热器为例,一个非常简化的组件层次结构中,顶级组件代表完整的 PHE,由板包和框架组成,框架又由框架板、压力板和紧固螺栓组成。有些组件对应物理大规模生产组件,称为原型组件,通常有物料清单;其他组件没有物理对应物,称为配置组件,可能用于分组原型组件、指示配置选择或建模客户需求。
一个组件 c 在从组件 s 到根的路径上,则称 c 包含 s,反之,s 是 c 的子组件。例如,图 3 中的检查盖组件的包含组件有流体接触、孔、压力板、框架、PHE。
### 3.2 规范级别
不同方面的组件、连接、属性和规则在不同的规范级别进行指定:
- **类型级别**:声明组件类型以建模配置中出现的组件类型,类型按继承层次结构排列,每个组件类型声明其连接(在组件层次结构中),包括强制和可选子组件以及子组件数组,还包含属性和规则的声明。
- **原型级别**:指定原型,即原型组件类型的实例,以建模大规模生产的组件。每个原型为其类型中声明的一些或所有连接和属性赋予显式值。通常,原型的所有属性在这个级别赋值,但也可以留出一些属性值以指定参数化组件。
- **配置级别**:指定配置组件类型的实例和原型的副本,并为(剩余的)连接和属性赋值。
该模型明显受到面向对象和属性文法的启发。组件类型对应类,原型对应类的原型实例,配置级别的实例对应类的实例或原型的副本。OPG 组件类型及其连接对应上下文无关文法的非终结符和产生式,OPG 属性和规则对应文法的属性和语义规则。配置(即组件层次结构)对应带属性的语法树,有效的产品配置概念与具有有效属性的语法树概念直接类似。属性文法特别适合生成交互式语言编辑器,我们早期的工作展示了如何使用面向对象属性文法技术获得高效的增量评估器,该评估器可在用户编辑语法树时增量检查属性有效性,这一技术直接适用于产品配置器工具。
## 4. OPG 中的元素
### 4.1 属性
所有属性在类型级别声明,但可在原型或配置级别赋值。根据赋值方式,属性有三种不同模式:
- **原型属性**:在原型级别赋值,通常反映组件的一些物理特征(如厚度、直径)或一些强加的特征(如价格)。
- **配置属性**:在配置级别赋值,可由用户显式设置或由外部工具计算。用户设置的配置属性通常反映客户需求,外部工具也可设置配置属性,以便与主配置器接口。
- **派生属性**:其值由规则计算得出,通常用于简化其他规则的表达。派生属性的值可通过持有派生属性的组件中的规则或紧邻的包含组件中的规则定义,可用于在组件层次结构中向上或向下传播属性值。派生属性不必显式存储,可在需要时计算,可实现为函数。
原型和配置属性对应上下文无关文法中的词法单元,向上或向下定义的派生属性对应属性文法中的综合属性和继承属性,使用面向对象语言中的虚函数构造可特别简单地将属性(派生属性)实现为函数。
### 4.2 规则
OPG 中的规则放置在组件类型中并在类型级别指定。规则是局部的,可引用自身(组件类型的实例)的属性以及以特定方式从自身可访问的其他组件的属性。规则有两种类型:
- **定义规则**:定义派生属性值的规则,对应属性文法的语义规则。
- **有效性规则
0
0
复制全文
相关推荐










