基于本体方法的领域工程研究
更新日期:2018-03-10     来源:天津师范大学学报(自然科学版)   浏览次数:232
核心提示:欢迎投稿《天津师范大学学报(自然科学版)》

软件产品线是一种基于大粒度重用的产品开发方式,然而为了获得软件重用所带来的好处,我们首先要开发可重用的软件资源,领域工程则是开发软件可重用组件的重要阶段。并且本体在可重用和可共享方面具有重要的角色作用。本体可以增强开发者,用户,领域专家之间对问题模型的理解能力。本体可以被引入到领域工程,但是在软件产品线领域工程中应用本体存在一个问题,就是如何把本体引入到软件开发过程中。目前,面向对象技术在软件工程中处于主要开发模式,如果把本体应用到实践,我们还需要能够从本体中抽取对象模型的技术方法,从而能够获得广泛的可重用资源集。本文提出基于本体的领域工程,包括两个主要阶段:构建领域本体和从本体中提取对象框架。

作者介绍:王超轶(1982-),男,安徽芜湖,硕士研究生,工程师,主要研究方向: 本体、软件产品线、复用技术
作者通信地址:天津市和平区曲阜道88号王超轶,邮编300042
Email:wangcy001@qq.com

1、本体与领域工程
在软件产品线双周期开发模型中分为领域工程和应用工程,而领域工程又分为领域分析,领域设计和领域实现三个阶段[1],其中领域分析主要是识别、提取,组织和表示领域中的相关知识。领域设计在领域分析的基础上提出领域模型,领域模型主要的任务包括:1)对特定领域问题进行分析和为构造可重用构件提供参考源 2)在统一模型下有利于知识间的共享和沟通。3)为可重用构件的构建提供规格化标准[2]。领域实现则是生产出可被复用的软件组件。因此领域分析在领域工程中处于首要阶段,为后续阶段奠定基础,在软件产品线的开发过程中起到非常重要的作用。
目前比较有影响的领域分析方法有CMU/SEI(卡内基.梅隆大学软件工程研究所)提出的面向特征的领域分析(Feature Oriented Domain Analysis, FODA)方法。Maarit Harsu提出的向族的提取、规范和转换(Family-Oriented Abstraction Specification and Translation, FAST)方法。Tract提出的DSSA方法。James Rumbaugh等提出的重用驱动的软件工程(Reuse-Driven Software Engineering Business, RSEB)方法。产品线软件工程(Product Line Software Engineering, PLSE)方法等
上述的领域分析方法各有特点,其某些过程和阶段也有一定的重叠,在一定程度上,还存在一些不足:
对于异构环境下的知识缺乏规范化表示,如何进行统一化表示,反映相互之间的关系。
对于领域知识缺乏可复用性的表示,如何最大化的复用领域知识,
针对上述问题,本文把本体引入到软件产品线的领域工程的开发过程中,在领域工程中主要发挥以下三个方面的作用:1、作为一种领域模型,领域本体对领域知识进行组织,使其统一规范化,形式化表示,达到知识的可共享和可重用目的。2、领域本体为开发人员对领域知识的理解提供支持,减少对领域知识的理解产生歧义。3、可以从领域本体模型抽取领域知识。
在软件产品线的领域工程,直接面临的是领域分析阶段,领域分析与软件复用紧密相连,目的是为了获得在同一领域可复用的领域知识,然而在领域工程过程中尚存在对领域知识的重复分析获取,缺乏对相似领域知识进行复用,缺乏对领域知识的规范化表示,这些因素降低了软件产品线的产品开发效率。领域知识的复用对软件产品线产品的开发有很重要的作用,要复用领域知识,领域分析人员和软件开发人员之间对领域知识必须达成共识,以避免在领域知识的理解上产生歧义。在这种背景下,本文把本体引入到软件产品线的领域工程中,利用领域本体可以组织领域知识,促进领域知识的规范化和知识的可重用。提高领域工程的效率和效用。下面介绍领域知识的分层本体表示与本体的构建。

2、基于本体的领域工程
本节提出ODE(Ontology-Based Engineering),领域工程与本体方法学的结合。介绍对领域知识采用分层表示,层次式建立领域本体,本体与面向对象之间的映射。
2.1层次式领域本体
从本体的定义可以看出,本体包含概念,关系和公理等几个基本元素,但在构建领域本体时,我们考虑到领域知识有很强的专业性等特点,我们对知识采用更小的粒度表示,在一般本体定义的基础上提出一种层次式的领域本体模型,该模型把领域本体分为元本体,顶层本体,子本体三个层次的知识表示结构。如图2-1所示:
元本体:构建顶层本体和子本体的最小领域本体,是领域知识的基本单元,包括知识基本术语,概念,关系,公理等基本元素。

图2-1本体分层表示结构
顶层本体:顶层本体对领域内公用的知识进行表示和建模,与具体的领域联系密切,顶层本体和元本体一起构建子领域本体,并表示其语义。
子领域本体:子领域本体对领域内更具体的知识进行表示,子领域本体是领域模型的主要组成部分,通过子领域本体可以对领域知识进行形式化推理和建模。层次式的领域本体模型对领域本体的结构、组成及语义关系进行了明确、清晰的定义,为准确表达领域知识奠定了基础,同时也为领域本体的开发方法研究指明了方向。

2.2 本体建立过程
如图所示为本体的建立过程,实体之间的虚线表示相互之间是反复交互的过程,在本体开发过程中主要分为以下几个阶段。本体的需求确定,本体捕获,本体形式化等几个主要活动。

图2-2 本体开发流程步骤

下面简单介绍本体开发各个步骤
(1)确定本体目标和需求:根据所研究的领域来确定本体的应用目标和所需的知识,采取能力问题模型建立相应的本体。
(2)本体捕获:在本体能力的基础上识别领域关键概念和关系。
(3)本体形式化:用形式化的语言来表示捕获的本体。形式化语言应该能精确表示领域知识之间的关系和约束。
(4)本体集成:在本体捕获和形式化阶段,可能会将存在的单个本体通过集成的方式获得新的本体。
(5)本体评价:通过评价来确认是否满足本体能力和特定需求。
(6)文档化:所建立的本体必须文本化归档
以上给出了本体的构建流程,然而在本体捕获阶段,常常需要和领域专家进行交流与沟通,为了更好的理解,我们往往借助图形化的语言来提高与领域专家之间的交流,准确描述本体以及反映本体之间的各种关系,本文介绍用LINGO[3]语言来描述本体, LINGO主要表示领域中的元本体,用节点表达基本概念和相互间关系,图2-3所示给出LINGO的主要表示和部分公理。
图2-4 LINGO主要表示法与部分公理

3、领域本体模型特点:
在领域工程构建领域本体模型,不仅能对领域知识进行更全面的分析与提取,而且提高领域知识的共享与复用,本体模型与面向对象模型相比还具有以下几大特点。
(1)表达能力强: 本体不仅能对领域内的概念知识进行规范化表示,而且还能通过本体来反映知识概念间的相互关系
(2)语义表达能力: 本体模型对领域知识概念采用层次化表示,不仅表示领域概念之间的关系,而且明确化和形式化的描述各自的语义。
(3)形式化分析和推理: 领域本体采用一阶谓词逻辑进行形式化表达,可以对领域模型进行一致性、准确性的分析和推理
(4)表示形式丰富: 本体模型根据形式化程度的不同可以分为完全非形式化本体、半形式化本体、形式化本体等类型,相应的可以用自然语言、图形化语言、逻辑语言来描述领域本体模型。

4、本体模型到面向对象模型的转换
如果我们需要一个基于对象的可复用体系框架,那么我们需要获得一种能够从本体模型向对象模型转换的方法,该方法应该是一系列转换规则的集合,包含映射规则,转换模式,变换约束等[4]。领域本体包括:概念,关系,属性和角色,而面向对象包括:类,联系,属性和方法,要实现本体与面向对象的转换,则应该能从它们所包含的元素分别进行映射。本节首先介绍本体与对象之间的一般转换规则,然后运用一阶谓词逻辑语言,集合论和关系代数等知识形式化阐述本体与对象之间的转换。

一般转换规则包括以下几条:
规则1:本体中的概念可以转换到对象模型中的类,如职员(employee)概念,可以转换到职员类(employee);
规则2:本体中的概念之间的关系,可以转换成对象模型中的类之间的关系,如概念“职员”和“部门”之间的关系“人事关系”,这个关系可以转换到对象模型中的“人事关系”。