炼油厂结构的分析模式撰文/甄镭(本文来自《程序员》杂志2002年11期)本文包括四个分析模式,这些模式描述了炼油厂的结构,包括:生产装置模式(Refinery Production Unit Pattern)描述了装置与装置组的结构以及它们之间的关系;油品储存模式(Oil Storage Pattern)描述了储罐与罐区以及它们之间的关系;油品运输模式(Oil Delivery Pattern)描述了与油品进出厂相关的码头、车站等储运单元;加工流程模式(Production Process Pattern)描述了加工流程的组成。
1. 引言1.1 目的笔者曾经参与开发了许多炼油厂的信息系统。
这些系统几乎涉及到炼油厂的所有管理层次,既有供车间使用的装置单元操作系统,也有供领导使用的决策支持系统。
在开发这些系统的过程中,技术人员常常会遇到一些与行业知识相关的障碍,例如,由于缺乏对炼油工艺基础知识的了解,使参与项目的软件工程师经常会混淆一些术语,虽然这些术语在字面是相同的,但其对于不同层次的用户而言含义往往不同。
有人说,参与项目的工程师需要了解行业背景知识,但是为了开发一个信息系统,究竟了解多少才合适呢?通常情况下,如果开发团队具备该领域的相关背景知识,会使应用软件的开发更加顺利。
对于某些常见的应用系统,开发团队往往比较容易掌握有关背景知识,例如对于一般软件工程师来说,了解一个图书馆的管理过程就比较容易。
但是由于炼油工程离普通人生活太远,在很多情况下,让软件工程师理解某些炼油工艺的术语是非常困难的,并且,让软件工程师掌握过多的炼油工艺知识,既无必要也会大大增加项目成本。
因此,有必要开发一系列相关的分析模式,作为炼油厂信息系统的开发指南。
本文的读者主要是系统分析员、设计人员和程序员,这些模式可以帮助他们理解在开发项目中所需要的最基本的知识,并为他们提供一个通用的分析原型,从而使整个开发过程更有效率。
本文的模式主要描述炼油厂的结构。
需要指出,这里的结构不仅仅是物理结构,还包括不同业务环境中的逻辑结构。
1.2 概述1.2.1 炼厂的典型结构图1炼油厂的结构是非常复杂的,本文根据开发信息系统的需要对其进行了简化。
图1是一个炼油厂的逻辑结构。
一般情况下,可以将炼油厂分为三个系统,即运输系统、储存系统和生产系统。
这三个系统中的实体和连接实体的管线构成了炼油加工流程。
生产系统将原油转化为成品。
生产系统中包括多种生产装置,本文不考虑生产装置的类型,如蒸馏、焦化、催化等,而仅仅着眼于装置的物理结构。
一个装置包括一个或多个物料的进口和多个出口,通常称为“侧线”。
装置由设备组成,在业务中,常常把多个装置作为一个整体进行处理。
油品储存系统储存原油、成品油和半成品油。
存储系统由储罐组成。
储罐是实际存在的实体,在业务中,常常把多个储罐作为一组进行处理,称为罐区。
油品运输系统负责原油进厂和成品油的出厂。
通常有多种运输方式,包括船运、管道、铁路运输、公路运输等。
整个炼厂的加工流程是由上述三个系统中的实体通过管线的连接而构成的。
本文的四个模式就是针对以上三个系统和加工流程而设计的。
1.2.2 炼厂结构模式图2如图2所示,本文包括四个模式:生产装置模式(Refinery Production Unit Pattern)描述装置和装置组的结构;油品储存模式描述储罐和储罐组的结构(Oil Storage Pattern);油品运输模式(Oil Delivery Pattern)描述油品输入输出单元的结构;加工流程模式(Production Process Pattern)描述加工流程的构成。
1.3 为什么仅描述静态关系?目前已经有很多针对不同领域的分析模式,例如[Fer99]。
这些模式主要描述业务过程,而本文则仅仅描述炼厂的静态结构,这是因为,在开发炼油厂信息系统的过程中,有许多分析中的错误是由于对炼厂结构不了解或者是误解所导致的。
一方面,炼厂中几乎所有的业务过程都依赖于加工流程,加工流程由炼厂中的各种实体构成,如生产装置、储罐等;另一方面,每个业务过程又是根据各自的业务规则处理来自加工流程的各种数据,这就导致不同的业务过程有不同的加工过程视图。
在业务分析和系统分析时,分析人员最先接触的总是这些视图,而隐含在这些视图背后的业务规则却往往会被忽略,而在涉及到多个业务过程的复杂系统时,就会发生不同子系统的分析结果互相矛盾的情况。
因此我们有必要建立描述炼油厂的结构分析模式。
这里的结构不仅是指物理结构,还包括在不同业务环境中的逻辑结构。
针对炼油厂的具体业务的分析模式将在以后的工作中逐步建立。
1.4 本文采用的描述方法本文主要采用UML对模式进行描述。
虽然本文描述的都是分析模式,但还是采用了某些设计模式中通常采用的描述方法。
为了更清楚地描述该结构,本文采用了类似于化工过程流程图的表示方法。
2. 生产装置模式(Refinery Production Unit Pattern)2.1 意图(Intent)本模式描述装置和装置组的结构和装置组的类型。
2.2 相关情形(Context)(注:Context、Forces、Consequences是模式书写的专用词,其中有一些隐含的意思,如果读者有更好的译法或建议,请给作者发邮件。
)生产装置是炼厂的基本加工单元,它们是由塔、炉、泵等设备组成。
每个装置完成一个物理的或者化学的加工过程,如精馏、催化裂化、重整等。
而装置组则存在于业务活动中,它们由装置组按照一定的业务规则组成。
例如,在蒸馏车间主任的眼中,常减压装置有两个入口,这也是实际的入口数。
而统计部门则仅仅关心整个装置的加工量,因此统计部门认为仅有一个入口。
构成装置组的业务规则常常是隐含的。
在许多情况下,非常容易混淆装置与装置组,由此导致许多重要信息的丢失。
因此需要一个概念模型对装置与装置组的结构进行描述。
这个模型应适应不同的业务需要。
2.3 问题(Problem)如何开发一个生产装置的概念模型以描述不同业务过程中的装置组?2.4 难点与动因(Forces)(注:Forces是模式书写的一个特点,这里是比喻的用法。
作者的翻译不一定确切,这里把它在模式中的英文含义列出,供读者参考。
“It describes Trade-offs,goals+constraints, motivating factors/concerns, and tells why the problem is difficult.”)概念模型必须反映不同业务环境中的装置结构。
装置组的类型通常包含业务规则。
2.5 解决方案(Solution)2.5.1 装置与装置组的结构装置和装置组有一些共同的属性和行为,如物料平衡。
一个装置组包含一个或多个装置或装置组。
装置组的输入(输出)由一个或多个装置的输入(输出)组成。
定义装置(Unit)类和装置组(Unit Group)类分别描述装置和装置组。
装置组包含装置或其它装置组。
定义一个抽象的装置类(Abstract Unit),该类包含装置和装置组的共有属性。
装置类和装置组类都是该抽象类的子类。
定义抽象的装置输入类(Abstract Unit Import),该类包含装置和装置组输入类的共有属性。
定义抽象的装置输出类(Abstract Unit Export),该类包含装置和装置组输出类的共有属性。
图3图3是生产装置模式的类图。
装置类和装置组类都是该抽象类的子类。
一个装置或装置组包含多个物料的输入口和多个物料的输出口。
装置组的输入口(或输出口)与装置组中装置的输入口(或输出口)的关系比较复杂。
通常情况下,一个装置组的输入口(或输出口)是其装置输入口(或输出口)的组合。
在某些特殊情况下(见2.5.2 (2)),一个装置的输入口(或输出口)对应于装置组的多个输入口(或输出口)。
装置由设备组成。
设备本身的结构与装置的结构一样复杂,关于设备的详细描述已超出了本文的范围。
2.5.2 设备组的三种类型虽然在不同的业务环境中,装置组的构成规则不同,但所构成的装置组总是在这三种类型中,它们是:简单装置组、统计型装置组和时间统计型装置组。
(1)简单装置组(Simple Unit Group)简单装置组比较容易理解,它主要用来描述简化加工流程,装置组的输入口和输出口与其中装置的输入口和输出口相对应。
(2) 统计装置组(Statistical Unit Group)图5a图5b如图5所示,在这种情况下,一个装置组的输入(或输出)由其所包含的装置的输入或输出组成。
这些组合的输入可以被看作是一个输入口。
装置组输入口的物料流量是组成它的装置输入口的流量之和。
但必须小心图5(b)的情况,在这种情况下,装置组与装置名称相同,大部分输入口与输出口一一对应,只有几个组合关系,这在分析过程中往往容易被忽略。
(3) 时间统计装置组(Statistical Unit Group by time)要考虑这种情况,装置G可以处理两种原料,即原料1和原料2。
从日期A到日期B,它加工原料A,其产品是产品1和产品2。
从日期B到日期C,它加工原料2,产品是产品2和产品3。
从日期A到日期C的统计报表如表1所示。
在这种情况下,装置G应被看作是一个装置组,该装置组包括两个输入口和三个输出口。
2.5.3 如何区分装置组的类型和业务规则区分装置组类型有助于发现业务规则。
通常方法如下:(1)列出所有装置。
这一般很容易实现,因为装置是现实存在的实体。
(2)发现所分析业务范围内的装置组。
必须注意,在业务范围内的“装置”都要按装置组处理,至少在分析初期要这样做。
(3)建立装置与装置组的输入口和输出口之间的关系。
(4)确定装置组的类型。
(5)列出可能的业务规则。
(6)请最终用户确认这些业务规则。
还有一点需要注意:这里的“装置”和“装置组”并不是最终用户的术语。
在实践中,最终用户仅仅使用“装置”这个词,他们可以根据业务环境区别含义的不同,因此,在系统开发过程中,最好请他们采用同一定义的术语与软件工程师进行交流。
2.6 结果(Consequences)该模式有如下优点:定义了炼厂生产装置的通常结构,可以在许多应用中采用。
帮助区别装置组及其类型,从而发现隐含的业务规则。
简化整个流程的描述。
一个缺点是,该模式虽然可以帮助发现隐含的业务规则,却并没有把业务规则作为模式中的一个类,必须在具体的应用开发中加以注意。
2.7 已知应用(Known Uses)在许多炼厂管理系统中可以发现该模式,如生产管理系统[ZHA1999]。
2.8 相关模式(Related Pattern)本模式中的装置和设备是Composite pattern[Gam95]的实例。
一个装置的所有输入口(所有输出口)构成Collection [SAN2001]。