胡天翔
(南京工业职业技术学院机械工程学院,江苏南京210023)
林业生产是一个涉及多学科、多技术交叉的复杂领域,一个好的智能控制与管理系统能帮助林业生产管理提高效率,在林业森林病虫害防治方面提高农药使用率,降低农药对环境的危害,保护生态平衡和生态多样性。
软构件技术在农业和林业领域有非常广阔的应用和发展空间。在北美和澳洲等发达国家,由于其林业资源相当丰富,因此林业中的智能系统设备的研发和应用相对较为广泛。在中国等发展中国家根据自身的国情,对智能林业系统设备也有了一定的研究,以软构件技术为技术基础的林业智能控制系统,作为智能化林业的发展方向,其应用前景相当的广阔,如果使其产业化,将会对生态环境的改善有更深远的影响。
将技术相对比较成熟的软构件应用在林业系统中,是对林业生产的一个补充,同时也使得软构件技术有了更广泛的应用空间。在应用和实施的过程中,需要根据其自身的特点提出符合林业应用的技术标准,使研发和应用更具有科学依据和可实施性[1]。具体的技术标准有以下几个方面。
在林业生产中,智能控制系统的构件获取主要按照用户的需求来确定,其获取方式也根据需求的不同而不一样。当构件在实例化过程中处于未实现状态时,可依据林业生产的要求有目的性的进行构件生产,以达到想要的目标构件;对系统已有,或者已实例化的构件对象可进行深入的系统挖掘提取,最后实现目的性的构件获取过程。
构件模型在林业智能控制系统中起着至关重要的作用。根据构件模型整个应用控制系统能较完整的实施每个系统模块的划分和实现。在林业生产和应用中,对生产环节要素的把握以及系统构件的本质特征,能较为完整地搭建出系统的整体框架,同时根据林业系统中构件之间的关系,完善系统各个模块部件的组装,以更科学的方法实现系统的集成。
构件的划分是按照系统的功能需求来确定的,因此在林业生产中的智能控制系统都是以构件模型为基础,通过这种方式来解决系统集成中的高耦合低内聚的问题。构件中需要通过精确的描述才能实现对构件的理解,有了对系统构件的正确完整的理解才能解决系统后期的组装问题。
在林业系统中,每个实现的功能都是按照模块来划分的,每个划分的模块相对于其他模块来说都是独立的,因此在构件的实现上需要按照特定的方式进行划分,例如在智能控制系统中,智能决策构件和智能控制构件的区分应该以实现策略的不同进行后期归类。通过对构件的组织模式的定义便于进行后期的构件检索,在搭建构件库的同时完成构件检索策略的订制,通过这种机制实现构件的有效管理。
有了构件模型后在此基础上需对构件进行组装,其依据为构件组装的机制。在林业智能控制系统中,程序设计的模式是按照源代码级的组装和构件对象来确定的,因此在构件组装机制上采用构件复合组装技术以及运用构件对象互操作性的运行级组装是保证构件模型的标准化和构件库系统的标准化的根本保障。
应用构件化技术实现整个系统的过程较为复杂,首先通过采用定义和划分功能模块的方式进行构件的分类,根据需求实现每个划分的构件,再通过系统设计定义的构件接口进行组装和集成。
按照林业智能控制系统的需求分析和设计要求,将整个系统在设计时定义为信息采集与获取、数据处理、控制执行这三个不同功能的构件,构件之间的通信通过接口访问的方式进行,在不同的构件中根据需要有相应的接口与访问对象相连接,如图1所示,当数据处理构件中类的对象需访问信息采集构件时,后者提供Information这个接口通道,为其提供服务,同理在控制执行构件中类的对象需对数据处理构件进行访问时,后者也会通过Data这个接口为其提供相应的服务,不同的是每个构件中的类的实例化对象不同、作用不同,其对应的生命周期也不尽相同,所以可以根据具体的智能控制系统需求来实现不同的功能[2]。
图1 访问构件接口
在图1中每个构件的表示模块反映了林业智能控制系统中的软件模块构件与访问构件的接口,目的在于更科学和清晰的表述软件系统建模的思想内容。而智能控制系统根据设计要求,将来可实现在林业领域的不同系统平台上。在系统开发和移植过程中可按照该系统建模的方式对内容进行补充和完善。通过这种方式能较好的表现现实环境中的建模思想,反应真实的软件建模情况。
根据视图中的表述能明确的显示构件与构件之间的关系,并提供了与之访问的接口。在林业智能控制系统中,三个主要构件之间的访问方式与依赖关系在访问构件接口图中能够较清晰的反映构件之间的组织形式。
后期的系统扩展与维护工作可以通过系统构件视图方式进行定性和归类,在系统的完善过程中对不满足需要的部分要进行必要地修改,将系统其他扩充功能部分进行升级,从视图中可根据现有的构件接口情况对今后扩充部分进行系统部署,以满足以后的扩充升级需要。
依据构件图对系统构件模块的分配部署情况,可较容易的发现系统中设计不合理的情况,无需阅读所有的代码就能从总体设计部分发现现实中的瓶颈问题,例如系统对图像采集处理时情况,为解决这些存在的问题提供了解决的依据。
在构件与构件之间、类与类之间都存在彼此的相互关联与相互依赖,林业智能控制系统中类之间的联系如图2所示,图中反应了类的继承对应关系图。在图中所有实现功能的类都是从三个大类中继承而来,即窗体类、对话框类和窗体应用类,这三个类也是较多使用的VC提供的父类,其派生出的子类继承了在父类中的方法与属性。从窗体类派生出来的类包括有 CCapture、CMSComm和CSplash,它们主要实现对系统相应的功能上的实现与处理;对话框类也是从窗体类派生而来,其他类继承了对话框类,如 CPPAISSDlg,CButton,CVideoStatusDlg,CComStatusDlg和CAboutDlg类,它们的主要功能是建立相应的对话框提供友好的人机界面。
图2 对象类视图
林业智能控制系统设计与集成实现的好坏主要根据系统的内聚性与耦合性作为判断依据。内聚性是对对象质量的内部评估,它的目标是创建一个目标明确的对象,但是如果将目标限制得太小,就会造就许多小对象,它们自身的功能都比较有限,因此必须将许多这样的小对象连接起来,然而这样就造成了紧密耦合。耦合性的目标是希望各个对象越独立越好,如果每个对象都是独立的,则表示对象之间没有连接和通信,这样每个对象必须自己完成所有的事情,会导致极低的内聚性。因此在整个控制系统中需要找到内聚性与耦合性两者之间的平衡。内聚性与耦合性直接影响改动应用程序的难易程度,在林业智能控制系统中模块的功能是不变的,因此低内聚性不会明显的增加维护的开销[3]。
作为图像采集模块的关键类——CCapture中与其相关联的类为CPPISSDlg和自身有对象调用关系;图像处理模块中的CDibImag类与图像采集类有数据交互关系,但两者相互独立,体现了模块之间和类与类之间的低耦合性;在控制执行模块中的CMSComm从CWnd派生而来,并且与CPPISSDlg有通讯,从模块之间的依赖性来判断,整个系统的内聚性较高,耦合性较低。
有了类与模块的具体设计后,可根据它们的划分与从属关系对系统进行后期的集成工作,其中有两部分内容,即实现形式和人机交互。
整个智能控制系统的实现形式有多种方式,可以将所有的数据(包括所用到的类)都封装在一个可执行文件中,或者将每个部分都单独列出来。按照林业智能控制系统设计的要求,需要根据硬件环境和功能需要对不同的部分作相应的调整的要求,且在系统实现中应考虑将不同功能的类进行单独的划分与存储,使其与调用部分相分离,形成独立的部分,便于修改和调用,因此在程序的实现形式上采用动态链接库的方式较为合理[4]。
动态链接库在系统运行中提供相应的功能实现,对外以黑盒的形式存在,只提供调用方法的接口函数。在林业智能控制系统中,功能性的需求并不多,为便于系统扩展应用,整个系统的实现组织形式如图3所示。图中反应了系统在执行时通过可执行部分对相关的资源进行调用,不同的资源封装在不同类中,在调用窗体时与窗体类相关联的三个动态链接库CComStatusDlg,CSplash类、CVideoStatusDlg类,当系统功能调用时,则调用 CCapture类、CDibImage类、CMSComm类。
图3 系统构件组织结构形式图
整个程序的运行完全可以交给系统在后台运行,而无需人为干预,但为了给用户有直观的认识和了解,方便系统的后期维护,在系统的运行过程中提供了友好的人机交互界面以便于操作。根据硬件所提供的条件,将系统运行界面显示分为两大部分:1)图像显示区域。该区域主要提供与硬件采集设备有关的数据采集信息(如图像的采集显示等),以及数据处理后显示的图像信息(如图像分割后的显示等);2)控制调整区域。该区域提供视频连接的按钮操作等控制方式,并且对图像算法计算后得到数值进行反馈显示的区域。这样在系统的实现上就能更进一步地做到系统与人的沟通,体现软件工程的思想[5]。
在精确林业领域中,通过软构件技术对智能控制系统的研发,并将其应用在例如智能对靶施药和智能森林防火系统等相关领域中,是解决林业系统中智能复杂应用系统开发的科学方法。通过软构件技术开发的智能控制系统,能够跨越进程边界,实现应用程序、开发工具和操作系统的“即插即用”。研发的智能系统综合了软件平台、软构件技术及智能控制的特点,大大增强了其开放性和多技术的集成能力,便于系统的扩展和维护,为精确林业领域系统的开发提供了一种构件化的思路。
[1]胡天翔.基于构件化设计的嵌入式软件测试方法研究[J].机械制造与自动化,2011,31(01):111-113.
[2]胡天翔,郑加强,周宏平.基于双目视觉的树木图像测距方法[J].农业机械学报,2010,41(11):158-162.
[3]朱艳,曹卫星,王绍华,等.软构件技术在作物管理智能决策系统设计中的应用[J].农业工程学报,2003,19(01):132-136.
[4]胡天翔,郑加强,周宏平,等.基于DSSA的智能对靶喷雾机软件系统设计[J].林业科技开发,2008,22(02):68-70.
[5]胡天翔,郑加强,周宏平,等.提高动态树木图像分割处理速度的方法[J].林业科学,2009,45(06):62-67.