[发明专利]基于抽象语法树和软件产品特征的应用软件代码提取方法有效
申请号: | 201310144528.1 | 申请日: | 2013-04-23 |
公开(公告)号: | CN103235723A | 公开(公告)日: | 2013-08-07 |
发明(设计)人: | 邵建伟;俞东进;刘愉;李万清;穆海伦 | 申请(专利权)人: | 浙江天正思维信息技术有限公司;杭州电子科技大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 杜军 |
地址: | 310006 *** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于抽象语法树和软件产品特征的应用软件代码提取方法,目前已有的方法一般利用约定的编程规范,由于缺乏标准化,其可靠性一直得不到很好的保证,而且需要较多的人工干预。本发明根据已有的软件产品线特征树模型以及特征与领域构件的追溯关系,从领域构件中自动提取具有应用软件特征的软件代码,从而实现应用软件系统的快速构建。本发明采用标准的抽象语法树表示软件产品的代码结构,可以使得从特征到代码的映射关系更加规范和精确,同时一次遍历抽象语法树即可自动获取构建应用软件的基本信息,其效率更高。 | ||
搜索关键词: | 基于 抽象 语法 软件产品 特征 应用软件 代码 提取 方法 | ||
【主权项】:
1.基于抽象语法树和软件产品特征的应用软件代码提取方法,定义1:软件产品线特征模型可规范化定义为一个三元组:
(1)
表示特征和特征组的集合,描述特征模型中的一组概念,即
;
代表特征模型中的特征集合,并且有
,
,其中:①
: 特征的标记名称;任何唯一且有意义的字符组合均可作为特征的标记名称;②
:特征的可选性;表示当前特征的父特征被绑定时,该特征是否必须被绑定;这里提到的父子关系是由特征间的精化关系引起的,精化关系将在第三节详细介绍;如果当前特征的Opt 属性为真,则该特征是可选性的Optional,否则就是强制的Mandatory;③
:特征的绑定状态;表示该特征当前是否已经被作出绑定决策;如果
属性为
,表示该特征处于绑定状态,即该特征所指代的软件系统功能处于激活状态,否则就处于非绑定状态;④
:与该特征具有追溯关系的核心资产Core Assets标识,本发明指的是直接实现了该特征的软件构件标识;
代表特征模型中的特征组集合,
;①
:与And特征组;
中的特征成员
可以是强制的Mandatory,也可以是可选的Optional,所以当父特征被包含在产品中时,与特征组中的强制特征必须包含在产品中,而可选特征则会根据进一步选择来确定是否包含到产品中;②
:多选一Alternative特征组;
是一组多选一关系的特征,这组特征在其父特征出现的产品中仅有一个特征可以被选取;③
:或Or特征组;
是一组或关系的特征,这组特征在其父特征出现的产品中至少应有一个特征可以被选取;
表示特征模型中一组关系的集合,这些关系包括精化关系和约束关系,其中常见的约束关系有需要关系和排斥关系,因此涉及两个特征的基本二元关系有:精化关系Parent:某个特征
能够被分解成为一组组成特征
,表示
;需要关系Req:需要关系揭示了特征与特征之间的必要约束,即一个特征是实现另一个特征的前提和基础;特征
需要特征
表示为
;排斥关系Excl:排斥关系表示
,
两个特征之间的互斥关系,它意味着
特征和
特征中只能有一个特征被选取,表示为
;
为软件产品线特征模型中核心资产Core Assets的集合,主要包括需求、代码和文档,并通过统一的全局标识符对其进行标记;定义2:
表示多选一特征集,它是
所在多选一特征组中除了自己以外所有特征的集合;定义3:表示与特征集,它是
所在与特征组中除了自己以外所有特征的集合;定义4:
表示或特征集,它是
所在或特征组中除了自己以外所有特征的集合;定义5:
表示需要链集,它是与
存在需要关系或是因传递性而存在需要关系的所有特征的集合;定义6:
表示互斥链集,它是与
存在互斥关系或是因传递性而存在互斥关系的所有特征的集合;定义7:
表示已有关联集合,它是与AST节点n已经存在追溯关系的所有特征的集合;定义8:
表示与指定特征关联的节点集合;其特征在于该方法具体包括如下步骤:步骤1:输入一个基于Java的软件产品线特征模型对应的特征树、Java抽象语法树以及指定的特征Id;解析特征树并确定特征树中相应的AndSet、AltSet、OrSet集合;步骤2:解析软件产品线特征模型中的约束关系,根据约束关系的可传递性确定软件产品线特征模型中的需要链集合ReqSet和排斥链集合ExclSet;步骤3:根据软件产品线特征模型中已有的特征与代码块的映射关系,确定已有关联集合ExistSet;步骤4:抽象语法树中的所有节点均置为未选择状态,初始化堆栈stack,并以抽象语法树的根节点作为stack的初始元素集,将输出节点集合SelectedSet置为空;步骤5:如果stack不为空,则将栈顶节点出栈,并对该节点进行访问操作;对节点的具体访问操作为:1)获取当前抽象语法树节点的起止位置,如果不在所选代码段的范围内则直接跳转到步骤6;2)遍历ExistSet集合并获取当前节点已经关联的特征,然后判断这些特征是否存在于指定特征对应的AltSet集合或者ExclSet集合中,若存在,则发生核心资产不一致情况,直接跳转到步骤6;3)获取当前抽象语法树节点的父节点,如果当前节点与父节点起止位置相同,而且父节点已经处于已选择状态,则将父节点从SelectedSet集合中删除,并将其置为未选择状态,同时将当前节点放入SelectedSet集合中,置为选择状态;否则,直接将当前节点放入SelectedSet集合中,并置为选择状态;步骤6:获取当前节点的所有子节点,如果子节点集合不为空,则将这些子节点依次放入stack中,重复执行步骤5,直至stack 为空;如果子节点集合为空,则直接跳转步骤5,直至stack为空;步骤7:返回当前指定特征关联的节点集合SelectedSet;最后通过组装SelectedSet节点集合对应的节点代码构建具有应用特征的应用软件系统。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江天正思维信息技术有限公司;杭州电子科技大学,未经浙江天正思维信息技术有限公司;杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310144528.1/,转载请声明来源钻瓜专利网。
- 上一篇:自稳定人工椎体
- 下一篇:防过载的脉搏跳动血压波强度传感器