杨 内,王红球,易裕民,秦晓东,耿莹莹
(同方威视技术股份有限公司,北京100084)
近年来,利用拉曼光谱具有物质“指纹”的特征,拉曼光谱技术在危险品检测、海关/边防查私、珠宝鉴定、食品安全、药品鉴定、文物真伪鉴定、矿物勘探、石油成分鉴定等领域得到了广泛的应用。经分析,虽然应用行业不同,但各行业软件的公用成分和交叉成分所占比重很大,如果采用传统方法开发,不仅需要消耗巨大的人力、物力、财力、研发周期长,且相当一部分工作是重复劳动。针对这一情况,本文采用软件产品线的模式开发,以期取得理想的效果,因此拉曼检测仪软件产品线应运而生。
软件产品线是目前为止最大程度的软件复用,可以有效地降低成本、缩短产品面世时间、提高软件质量。产品线的起源可以追溯到1976年PARNAS对程序族的研究[1]。软件产品线的实践早在20世纪80年代中期就已出现。据 HP公司 1996年对 HP、IBM、NEC、AT&T等几个大型公司分析研究,这些公司在采用了软件产品线开发方法后,使产品的开发时间减少了30%~50%,维护成本降低了 20%~50%,软件质量提升了 5~10倍,软件重用达 50%~80%,开发成本降低 12%~15%[1]。
产品线是一个产品集合,每个新产品都可以由来自核心资源库的可应用组件组成,通过预先设定的变化机制(如参数化)对这些组件进行必要的剪裁,添加可能需要的新组件,根据一个产品线范围内的公共构架来组装这些组件。因此软件产品线主要由两部分组成:核心资源和产品集合。其中核心资源包括产品线中产品共享的构架以及为贯穿产品线进行系统化重用所开发的软件组件和其他相关配套资源。
软件产品线典型的过程模型是SEI模型,它将产品线的基本活动分为3部分:核心资源开发(领域工程)、产品开发(应用工程)和管理。图1显示了这三大基本活动及其相互关系[2]。
图1 SEI模型
三大基本活动交错连接,可以任何次序发生,且高度重叠。旋转的箭头表示不但核心资源用来开发产品,而且已存在的核心资源的修订甚至新的核心资源常常来自产品开发。核心资源开发和产品开发均需要技术和组织管理。
经过多年发展,软件产品线理论和工程的框架已比较完整,未来研究的主要任务包括:领域具体化、质量保证、模型驱动开发、进化、多条产品线、工具支持、过程改进和评估、经济因素等。本文侧重软件产品线的领域具体化设计与应用,其主要任务是对于一个给定的应用领域(如本文的拉曼检测仪),完成框架的具体化。具体化将产生一组用于特定领域建模的变化点、变量、变化依赖和约束的良好定义的类型。这样的具体化将会增加模型的语义,其将是工具支持和有效解决变化的复杂性的重要基础。例如,标准的抽象级别和映射概念的机制以及可变性从一个级别到另一个级别的一致性定义,都应该是领域具体化的结果[1]。
构建拉曼检测仪软件产品线的首要任务是对拉曼产品领域进行领域分析、领域设计和领域实现。其中,领域分析利用现有系统的设计、架构和需求建立领域模型;领域设计是用领域模型确定领域/产品线的共性和可变性,为产品线设计架构;领域实现则基于领域架构开发领域可复用资源,例如构件、文档和代码生成器等。在此基础上导出软件产品线构架并实现其核心资源库。
拉曼效应是由科学家拉曼(RAMAN C V)和克里斯南(RISHNAN K S K)在1928年观察液体中的散射现象时发现的。当频率为ω0的单色光入射到无尘的透明气体、液体或者光学上完全透明的固体时,对其散射频谱分析表明:除了与入射光频谱相同的散射光外,还有频谱为 ω′=ω0+Δω 的新谱线,这些谱线组成拉曼光谱[3]。由于不同的分子对应不同的特征拉曼频移,因此可以用拉曼光谱对物质进行识别。拉曼光谱技术具有无需取样、无耗材,并且准确、无损、快速等特点。
经分析,虽然应用行业不同,但其检测流程基本相同,典型的拉曼检测系统如图 2所示。具体流程是:(1)拉曼检测系统发出测量指令,驱动激光器出光;(2)应用光谱仪采集本底、原始光谱数据,计算出被测物拉曼光谱;(3)对被测物拉曼光谱去噪、平滑处理,调用算法识别接口,进行物质识别,保存物质和原始谱图数据;(4)根据显示策略进行显示处理;(5)显示结果,包括检测结果、检测次数、危险品次数和谱图,还可以通过蜂鸣器、LED灯、警示界面、警示文字提示用户。
图2 典型拉曼检测系统
此外,为了提高设备物质识别能力,提供了用户补充谱图功能,方便用户在使用过程中不断补充新的物质谱图;为方便用户使用设备,提供了历史数据管理、谱图库管理、系统管理、用户切换等功能对设备进行管理和维护。
根据拉曼产品领域分析所得的领域共性和特性,将软件架构划分为UI交互层、领域层、数据管理层和系统交互层,如图3所示。
图3 软件架构
(1)UI交互层,负责封装与用户的双向交互、屏蔽具体交互方式。UI交互层又包括子系统UI和主控UI。其中,子系统UI包括设备自检、用户登录、数据导出、历史数据管理、谱图库管理、系统管理等基本功能;主控UI包括测量、显示结果、详情、切换用户和高级管理等功能,为适应不同的行业和用户,主控UI给出不同的应用控制界面。
(2)领域层,负责问题领域或业务领域的抽象、领域功能的实现。包括数据采集、预处理、算法识别、显示策略、保存结果等功能。
(3)数据管理层,负责封装各种持久化数据的具体管理方式。
(4)系统交互层,负责封装硬件的具体交互方式以及封装外部系统的交互。
在上述功能资源中,领域层、数据管理层和系统交互层将直接共享使用;UI交互层部分共享使用,大部分将重新设计。软件构架主要可变点包括以下几点:
(1)数据采集、识别算法、显示策略,根据具体应用的不同,调用不同的算法。
(2)谱图库,根据不同的行业,配置不同的谱图库。
(3)主控UI界面,根据特定行业使用习惯重新设计。
(4)子系统UI,根据特定行业UI风格,进行局部调整。
由于运行平台为WinCE,为了得到一个开放的、通用的拉曼系列产品,本设计基于.NET Framework平台,使用VC和C#语言开发。其中识别算法、网络、驱动、硬件控制等核心和底层功能采用VC实现;界面UI、显示、设备管理、系统管理等功能使用C#实现。为方便数据维护和配置,系统配置和谱图库采用XML实现。
在软件实现过程中,综合考虑实际应用、模块相对独立、操作简便等原则,采用面向对象技术、接口技术、设计模式、XML配置文件等实现。拉曼检测仪软件产品线部分核心资源如表1所示。
应用工程在领域工程成果的基础上构造新产品。应用工程需要根据每个应用独特的需求,经过需求分析、系统设计和系统实现,生成新产品。下面以拉曼珠宝检测系统为例,说明应用工程的过程。
拉曼珠宝检测仪将建成更加完备的珠宝玉石谱图库及行业知识库,设计制造出更加符合专业用户操作习惯的检测平台并力争在业界难点问题(如翡翠A、B货,象牙等的检测)上实现技术突破、获取差异化竞争优势,为产品的市场推广打下坚实基础。
一般拉曼检测仪的普通用户只关心检测结果是什么,不关心拉曼谱图,也不关心更多的技术细节;而拉曼珠宝检测仪的用户是专业的用户,与普通用户不同,不仅关心检测结果,还关心谱图、相关度,经常自行添加谱图,导出数据、生成检测报告等,还要根据检测样品的情况采取快检和精检模式。将这些拉曼珠宝检测仪个性化,特有的系统需求与领域需求比较,即可划分成领域公共需求和独特需求两部分,得出了拉曼珠宝检测仪系统需求规格说明书。
系统设计主要是在领域架构基础上,结合系统独特需求,设计应用的软件架构。根据需求分析,软件架构需要作以下调整:
(1)重新和调整设计
①主控界面:该界面提供测量、导出、生成报告、数据分析、添加到谱图库、切换用户和高级等功能;显示检测结果,包括物质谱图、物质名称、相似度、物质属性、检测次数、检到珠宝次数;还包括时间、声音、电池电量等辅助功能元素。
②谱图库管理:由多库显示管理调整为只有珠宝玉石谱图库管理功能,显示元素、位置都作了调整,界面更简洁。
③添加谱图库:由多库添加谱图库调整为只有珠宝玉石谱图库添加功能,显示元素、位置都作了调整,界面更简洁。
④高级界面:在功能分级中,由于海洛因检测、选择谱图库等功能模块在本系统中去掉,对功能按钮位置和个数作了相应调整。
表1 拉曼检测仪软件产品线部分资源表
(2)新增功能
①人工对比分析:提供人工对比所有谱图的功能,可以选择谱图库中任意谱图与检测的样品进行对比,同时对比的谱图可以导出。
②快检和精检模式:针对不同的应用场合,提供快检和精检模式。其中,快检应用于一般工作场合;精检用于建库或特定样品细微差别鉴定场合。
系统实现的主要工作是遵照应用架构,用领域可复用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统。根据前述需求分析和系统设计,本文重新设计主控界面、添加谱图库等功能模块;增加人工分析、两种检测模式等功能;调整高级、谱图库管理、系统管理等界面;直接使用系统自检、历史数据、导出、生成报告、数据分析、切换用户、修改密码、用户管理、器件测试等功能。最后进行集成、测试,形成拉曼珠宝检测系统,其主界面如图4所示。
图4 拉曼珠宝检测系统主界面
由于采用了软件产品线的开发模式,这个原来预计需要研发半年的系统只花了2个月的时间就完成了。开发效率、软件质量得到显著提高,工作量明显减少。
在拉曼检测仪软件产品线的设计和应用过程中,采用演化方式,将现有产品演化为产品线。这种方法的优点是通过对投资回报周期的分解、对现有系统演化的维持,使产品线方法的实施风险降到了最小。采用软件产品线开发的拉曼检测仪,可以根据各个应用领域实际需要而以极少的人力、时间、工作量等来研发出具体产品,由于软件产品的主要成分是高可靠性、性能经过验证的可复用构件,因此软件产品的质量也大大提高。采用软件产品线的模式已经研制了拉曼安检系统、拉曼珠宝检测系统、拉曼监管物项识别系统等一批拉曼产品,大大推进了企业产品化的效率。软件产品线的建立需要企业有意识地、长期地努力才有可能成功,要有一个构建产品的好的核心资源库、好的产品架构以及好的管理(包括软件资源、人员组织和过程等)支持。拉曼检测仪软件产品线的下一步工作是加强现有成果的深度和广度。
[1]POHL K,BO¨CKLE G.Frank van der linder.软件产品线工程[M].张佳骥,译.北京:国防工业出版社,2010.
[2]姚建铨.奇异的光—激光[M].北京:清华大学出版社,2000.
[3]张友生,王勇.系统分析师技术指南[M].北京:清华大学出版社,2009.