CN104615438B - 一种软件产品线的特征切片模型检测方法 - Google Patents
一种软件产品线的特征切片模型检测方法 Download PDFInfo
- Publication number
- CN104615438B CN104615438B CN201510078269.6A CN201510078269A CN104615438B CN 104615438 B CN104615438 B CN 104615438B CN 201510078269 A CN201510078269 A CN 201510078269A CN 104615438 B CN104615438 B CN 104615438B
- Authority
- CN
- China
- Prior art keywords
- feature
- model
- characteristic
- product line
- formula
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000001617 migratory effect Effects 0.000 claims abstract description 31
- 230000009471 action Effects 0.000 claims abstract description 28
- 230000007704 transition Effects 0.000 claims abstract description 20
- 230000014509 gene expression Effects 0.000 claims abstract description 13
- 238000004458 analytical method Methods 0.000 claims description 34
- 238000013508 migration Methods 0.000 claims description 25
- 230000005012 migration Effects 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 102100028704 Acetyl-CoA acetyltransferase, cytosolic Human genes 0.000 claims description 9
- 101100536896 Homo sapiens ACAT2 gene Proteins 0.000 claims description 9
- 230000002123 temporal effect Effects 0.000 claims description 8
- 238000000354 decomposition reaction Methods 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 7
- 206010048669 Terminal state Diseases 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 5
- 238000012795 verification Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims 1
- 238000007689 inspection Methods 0.000 abstract description 10
- 230000006399 behavior Effects 0.000 description 23
- 238000001514 detection method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- NGXUUAFYUCOICP-UHFFFAOYSA-N aminometradine Chemical compound CCN1C(=O)C=C(N)N(CC=C)C1=O NGXUUAFYUCOICP-UHFFFAOYSA-N 0.000 description 2
- 229960001887 aminometradine Drugs 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 101000728490 Homo sapiens Tether containing UBX domain for GLUT4 Proteins 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 238000012356 Product development Methods 0.000 description 1
- 102100029773 Tether containing UBX domain for GLUT4 Human genes 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003447 ipsilateral effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件产品线的特征切片模型检测方法,将用户特定需求与行为模型联系在一起,对特征迁移系统进行抽象并验证,给出系统满足程度。根据用户的特定需求定义切片准则,利用特征模型的语义以及命题逻辑抽取出与切片准则对应的最小特征依赖集和特征排斥集;利用三值逻辑对特征迁移系统的迁移关系进行选择;按照三值逻辑运算规则对迁移关系上的特征表达式进行逻辑运算,得到一个抽象的三值特征迁移系统;利用多值模型检测工具,对软件产品线进行模型检测,给出系统行为属性的满足程度。本发明提供了一个满足用户硬性需求的基础单元,为后续的可变性绑定奠定基础,缓解了模型检测在空间和运行时间上的瓶颈问题。
Description
技术领域
本发明公开了一种软件产品线的特征切片模型检测方法,涉及软件产品线工程技术领域。
背景技术
在现代信息系统中,软件开发和维护的高成本压力迫使开发人员寻找更为有效的方法以提高软件复用。跨多个开发项目的软件复用包括对设计模型、源代码、测试方案以及框架等部件的复用。软件产品线(Software Product Line-SPL)是一种在产业界正在被广泛推广使用的基于软件复用的产品开发范式。软件产品线是在公共核心资源的基础上,按照规定方式开发的软件密集系统的集合。这些系统共享一组公共的、可管理的、能够满足特定市场或者任务需求的功能集合。例如,对于一个汽车软件产品线来说,存在多种类型的引擎控制软件部件;这些部件可作为核心资产的一部分供开发人员根据不同的客户需求,在不同产品的配置过程中复用。软件产品线的目的就是最大化满足用户需求的同时实现批量开发的效率。区别于独立开发单个系统,软件产品线工程将所有系统看作一个整体,分析系统间的共性和可变性,并通过最大化的平台复用和个性化定制实现产品家族开发。软件产品线方式具有低成本、高质量、缩短产品上市时间等优势,广泛应用于航空、航天、汽车、医疗以及金融等面向多种任务和客户需求的软件密集型系统中。
在实际应用中,软件产品线的构建和投入使用需要精心规划。从一个软件产品线中派生出满足用户需求且功能正确的软件产品是一个复杂的决策过程——因为一个决策不单单影响某一个产品,而且影响多个产品甚至是整个软件产品线。软件产品线工程一般分为领域工程和应用工程两个阶段。在领域工程阶段,首先明确系统的领域范围,严格定义系统所支撑的业务领域;最主要的就是获取需求,包括共性需求、可变性需求以及需求间的交互与依赖等,其中共性需求明确定义了为不同组件集共享的系统功能,可变性需求描述了各组件集所特有的系统功能。相应地,在领域工程阶段必须处理复杂的需求之间的结构约束和交互关系。特征模型(Feature Model-FM)是一种基于特征的描述软件产品线共性和可变性需求,以及需求之间关系的模型。特征可定义为对软件系统中可识别的功能抽象,即描述系统需求的行为逻辑单元。应用工程阶段负责从特征模型中派生出满足特定约束的软件产品;该过程通过对特征的取舍实现产品配置,也称为产品配置过程。
特征模型一般由树形结构图表示,称为特征图(Feature Diagram-FD)。图中有且仅有一个根节点,通常表示一个领域系统;一般节点表示特征,分为可选和必选两类;边表示父节点与子节点特征自上而下的层次分解,包括Or-group和Xor-group两种分解模式;约束关系通过文本的形式表示,如requires和excludes等。自1990年Kang等人[K.Kang,S.Cohen,J.Hess,W.Novak,and S.Peterson.Feature–Oriented Domain Analysis(FODA)FeasibilityStudy[J].Technical Report CMU/SEI-90-TR-21,Software EngineeringInstitute,Carnegie Mellon University,November,1990]在领域分析方法中引入特征模型以来,许多研究在Kang等人的基础上对特征模型进行扩展,将更多的建模元素融入到特征模型中,如特征属性、分组、视图等,使特征模型更容易理解且具有更强的表达能力。特征模型描述了软件产品线中所有可能的配置集,其中一个配置表示一个有效的软件产品,由一组通过遵循一定的约束规则从特征模型中选择出的特征组成;该约束规则包括:1)如果一个特征出现在某个产品中,那么其父特征必须同时出现在该产品中;2)如果一个父特征出现在某产品中,那么其所有的必选子特征必须同时出现在该产品中;3)必须满足所有的约束条件。
然而,随着特征数量的增加,特征模型以及对应的特征图变得越来越复杂,人工很难对其进行分析和管理。例如,作为二维平面中的图形化特征模型,大数量级的特征模型不可避免地会占用很大的物理空间,因此很难对其进行浏览、分析和解释。从语义方面来说,特征模型代表软件产品线的产品配置空间。软件产品线中的产品数量随着特征数量的增加呈指数增长。例如,在一个包含n个特征的特征模型中,可能包含2n个产品。因此,特征数量的急剧增加不仅仅引起可变性管理方面的问题,同时为产品配置与分析验证带来更大的挑战。具体表现在以下几个方面:
1、缺乏对复杂特征模型的从不同侧面进行自动分析的支持;
2、在软件产品线配置过程中未考虑用户特定需求驱动的约束关系;
3、不能有效解决验证过程中随着特征数量增加而出现的状态爆炸问题。
为此,以特征模型为基础,许多研究提出了一系列软件产品线分析与验证方法。
第一类方法基于特征模型的分解,即将一个特征模型分解成多个小的模型进行管理和分析,主要包括:Archer等人[Acher M,Collet P,Lahire P,et al.Slicing featuremodels[C]//Proceedings of the 201126th IEEE/ACM International Conference onAutomated Software Engineering.New York:ACM,2011:424-427.]公开了一种对特征模型切片的方法,主要思想是:采用程序切片的思想,根据所选择的特征集(切片准则)对一个大而复杂的特征模型进行投影,得到一个只包含切片准则中特征的子特征模型。该子特征模型仍是一个满足原特征模型约束关系的树形结构。
第二类方法基于特征模型的融合,主要包括:Reiser等人[Reiser,M.O.,Weber,M.:Managing highly complex product families with multi-level feature trees[C]//Proceedings of the 14th International Conference on RequirementsEngineering(RE’06),IEEE,2006:146–155.]公开了一种使用多个特征图表示不同公司的产品线,同时将多个特征图组合成一个层次结构。主要思想是:多个特征图分别代表公司各合作部分,各合作部门可以独自管理一个规模相对小的特征模型,而某个特征模型的变化通过组合层次结构传播到其他的特征模型,实现整个产品线的一致性管理。
Segura[Segura S.Automated analysis of feature models usingatomic sets[C]//Proceedings of the First Workshop on Analyses of Software Product Lines(ASPL 2008).Limerick,Ireland.2008:201–207]公开了一种基于原子集自动化分析特征模型的方法,其中原子集指包含特征模型中具有必选关系(Mandatory)的父特征和子特征的逻辑单元。主要思想是:利用原子集方法简化特征模型,实现从根本上减少可变点数量,从而减少内存消耗并提高分析效率。
第三类方法采用自动化机制从特征模型抽取出相关信息,主要包括:
Benavides等人[Benavides D,Segura S,Ruiz-Cortés A.Automated analysisof feature models 20years later:A literature review[J].Information Systems,2010,35(6):615-636.]总结了近20年以来基于特征模型的自动化分析操作,如Void、Validproduct、All products、Valid partial configuration、Filter、Anomalies detection、Optimization等。
Benavides等人[Benavides D,Segura S,Trinidad P et al.FAMA:Tooling aframework for the automated analysis of feature models[C]//Proceeding oftheFirst International Workshop on Variability Modelling of Software-intensiveSystems(VAMOS),2007:129–134]公开了一种FAMA自动化分析工具,其主要思想是:整合三种分析工具SAT、BDD、CSP,对不同的自动化分析操作采用效率最高的分析工具进行分析,以提高分析效率。
第四类方法基于多视图方法,主要包括:Hubaux等人[A Hubaux,PHeymans,P–YSchobbens.Supprtingmultiple perspectives in feature-based configuration[J].Software&System Modeling,2011,3(12):641-663]公开了一种基于特征的多视图配置方法,该方法使不同的利益相关者只关注与其相关的特征,主要思想是:对一个完整的特征模型,根据不同利益相关者的需求定义并裁剪视图,同时要求多个视图最终完全覆盖整个特征集,使得所有的特征都能够被决策,最后作者给出了三种可视化视图并支持相互转换的自动化配置工具。
然而,上述各类方法只是针对特征模型本身,并没有考虑特征与产品线中行为属性的联系。这些方法只是从不同利益相关者的需求角度呈现不同的静态视图,隐藏不相关的特征与依赖信息,而未能将用户的特定需求与相应的系统功能行为联系在一起,因此不支持对软件产品线的行为属性进行验证,判断系统功能的正确与否。克服这些缺陷的思路包括:(1)根据用户特定需求对特征模型进行自动化分析;(2)将分析结果与系统功能行为相关联;(3)采用模型检测(Model Checking)对系统功能的行为属性进行自动验证。
模型检测是一种自动形式化验证技术,用于对一个计算机系统的行为属性进行判断。实现软件产品线模型检测的关键在于采用一种足够灵活和有效的方式对软件产品线中所有的产品行为进行建模,主要侧重于描述产品线上所有产品在每一个系统所处状态所能发生的行为。常用的行为模型主要分为两类:基于状态的迁移模型(如:Kripke结构)和基于动作的迁移模型(如:模态迁移系统)。特征迁移系统(Feature Transition System-FTS)是一种基于动作的行为模型,在迁移系统的基础上以特征为差异单元描述整个软件产品线中所有产品的系统行为。特征迁移系统是一个有向图,其中状态可用原子命题标记,迁移关系以―行为/特征表达式‖的形式标记。例如表示从状态s出发,做up这个动作,到达状态t,同时该迁移依赖于特征a且排斥特征b。为实现对软件产品线系统行为属性的模型检测,需要选择合适的时序逻辑描述系统属性。常见的时序逻辑有计算树逻辑(Computation Tree Logic-CTL)和线性时序逻辑(Linear-time Temporal Logic-LTL)。其中CTL和LTL针对基于状态的迁移模型;基于动作的CTL逻辑(Action-basd ComputationTree Logic)针对基于动作的迁移模型。
Classen等人[Classen A,Cordy M,Heymans P,et al.Model checking softwareproduct lines with SNIP[J].International Journal on Software Tools forTechnology Transfer,2012,14(5):589-612]公开了一种对软件产品线进行模型检测的方法,其基本思想是用特征模型和特征迁移系统来表示待检测的系统模型,并用线性时序逻辑LTL公式来描述系统的正确行为属性,然后通过对模型状态空间穷举搜索来判断该公式是否能够在模型上被满足。如果公式在模型上被满足,则系统的正确性得到证实;否则,就表明系统中存在错误,系统正确性被证伪。其不足之处是:未针对用户的特定需求,模型检测的穷举搜索过程中易面临状态爆炸问题。
Yufeng Shi等人的课题组[Yufeng Shi,Ou Wei,Yu Zhou.Model CheckingPartial Software Product Line Designs[C]//Proceedings of the 22nd ACM SIGSOFTInternational Symposium on Foundations of Software Engineering:InternationalWorkshop on Innovative Software Development Methodologies and Practices.2014:21-29]公开了一种基于双格的软件产品线模型检测方法。主要思想是:首先提出一种基于双格的特征迁移系统,用于软件产品线的行为建模,采用投影的方法定义产品的行为模型;然后采用动作计算树逻辑描述系统的时序属性,并且给出在新系统上的语义,用于支持基于双格的模型检测;最后,采用多值模型检测工具χchek对方法的有效性进行实验分析。但是,该方法同样没有针对用户的特定需求进行特征模型的分析和产品线验证。
发明内容
本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种软件产品线的特征切片模型检测方法,针对特征数量庞大且约束复杂的特征模型,克服未从用户特定需求实现产品配置的不足,以及弥补现有方法不支持针对用户特定需求进行系统功能正确性验证的缺陷;提供一种能充分利用特征模型切片分析,对相应的软件产品线行为属性进行验证的方法,从而为提高软件产品线的复用性提供支持,保证产品配置的正确性。
本发明为解决上述技术问题采用以下技术方案:
一种软件产品线的特征切片模型检测方法,包括如下步骤(为便于理解,表1中列出了各步骤统一使用的主要数学符号及其含义):
表1 主要符号及其含义一览表
步骤1,描述特征模型。具体实施方式如下:
特征模型在领域工程中描述产品线共性和可变性特征,特征与特征之间关系的需求模型。特征模型一般由以下两部分组成:
层次结构:描述父特征与子特征之间的关系,分为必选特征(mandatory)、可选特征(optional)、多选一特征分解(xor-decomposition)和多选多特征分解(or-decomposition)。
约束:特征间约束依赖关系,分为相互依赖关系(includes)和相互排斥关系(excludes)。
目前,特征模型的描述主要有基于图形化方法和基于文本型方法两种。
其中,图形结构一般由树形结构图表示,图中有且仅有一个根节点,根节点通常表示一个系统。特征则由树形结构中的一般节点表示,通过特征名称来识别。边表示父特征和子特征之间的分解关系,实心圆点表示必选特征,空心圆点表示可选特征,空心扇形域表示多选一分解模式,实心扇形域表示多选多分解模式。约束关系以文本型描述在特征图旁边。
基于文本型的特征模型描述特征间层次结构时,将特征视为布尔变量,语法形式类似于
Parent:[min_card,max_card]/关键词{Child1 Child2...};
其中,[min_card,max_card]是基于基数定义父特征与子特征间的分解关系,还可通过关键词表示分解关系,如group oneOf、group someOf分别表示多选一分解模式和多选多分解模式。
表2给出了基于图形方式和基于文本型两种方式对特征模型元素进行描述的具体规则。
表2 特征模型描述规则
其中,f、g、h表示特征;n表示子特征个数;i和j分别表示约束子特征个数的最小值和最大值。
步骤2,将用户的特定需求表示为特征切片准则fslice,根据切片准则对特征模型的配置集进行分析得到切片结果该结果由特征依赖集φslice与特征排斥集组成,具体如下:
步骤2-1,对特征模型进行自动化分析,得到特征模型配置集,具体如下:
为实现对特征模型的自动化分析,可将特征模型映射到现有自动化分析工具(如SAT、BDD、CSP等)支持的逻辑形式。本发明采用基于命题逻辑(Propositional Logic-PL)的自动化分析方法。将特征模型映射到命题公式一般遵循以下规则:1)将特征模型中的每个特征映射为命题公式中的一个变量;2)将模型中每一个分解关系映射为一个或多个小的逻辑公式,通过逻辑连接符连接;3)将2)中所有的公式、约束以及合取得到最终公式。特征模型映射到命题公式的具体规则如表3所示。
表3 特征模型到命题公式的映射
表中,f、g、h表示特征。
映射到命题公式的特征模型可使用可满足性求解器,如SAT Solver,进行分析,得到该特征模型的配置集可满足性求解器以一个合取范式的命题公式为输入,通过变量赋值自动判断该命题公式是否满足。
步骤2-2,根据用户输入的切片准则fslice,对步骤2-1中的配置集抽取出包含切片准则中所有特征的产品集具体实施如下:
给定特征模型d,其配置集是软件产品线所有可能产品的集合,其中每个产品都是由一组满足约束条件的特征组成。从用户输入的切片准则到所有包含切片准则中特征的产品的抽取由公式(1)定义:
式中:表示软件产品线配置集,由步骤2-1分析得到;z表示包含切片准则中特征的产品。
步骤2-3,抽取特征依赖集φimpl,具体实施方式如下:
特征依赖集是指特征模型中所有与用户特定需求必然相关的特征集合。在一个特征庞大、约束复杂的特征模型中,用户的特定需求往往对应一组产品变体,而这些变体并不都是用户期望的最终产品,这些产品变体的公共部分往往对应用户的硬性需求,非公共部分的特征则可以根据用户的软性需求或技术、环境等约束进行后续绑定。所以特征模型切片结果中的特征依赖集指与满足用户需求的一组产品变体的公共特征集,由公式(2)定义:
式中:表示包含切片准则中特征的产品集,由步骤2-2分析得到;x表示中的元素。
步骤2-4,抽取特征排斥集具体实施方式如下:
特征模型是通过特征间的组合与约束来实现对软件产品线中所有产品的建模。用户特定需求反映了目标产品的部分特征组合,特征依赖集只表示相关产品公共部分,整体上的约束还需要通过一个特征排斥集进行描述,为后续实现部分特征集在整个行为模型的抽象提供更精确的描述。
特征排斥集描述所有与用户特定需求必然互斥的特征集合。本发明从特征模型语义角度对特征排斥集进行推导,由公式(3)定义:
式中:F表示软件产品线中的有限特征集,表示包含切片准则中特征的产品集,由步骤2-2分析得到。
步骤3,根据切片结果对软件产品线的特征迁移系统进行抽象,具体包括:
步骤3-1,定义三值的特征变量集,具体实施方式如下:
三值逻辑是对二值逻辑的扩展,增加M(maybe)表示真值未知的情况,用于对不确定信息进行建模。
为步骤2-3生成的特征依赖集中的特征行为属性赋值为T(true),表示依赖该特征对应的迁移关系;为步骤2-4生成的特征排斥集中的特征行为属性赋值为F(false),表示排斥该特征依赖的迁移关系;为不在以上两个集合中的特征行为属性赋值为M(maybe),表示对该特征对应的迁移关系选择未知。
步骤3-2,根据三值逻辑运算规则得到三值特征迁移系统,具体实施方式如下:
表4 三值逻辑运算规则真值表
根据表4给出的三值逻辑运算真值表,对特征迁移系统上的特征表达式进行运算,并替换成三值逻辑值得到三值特征迁移系统。
步骤4,模型转换和公式转换,具体包括:
步骤4-1,将三值特征迁移系统转化为三值Kripke结构,具体实施方式如下:
三值特征迁移系统是一种基于动作的软件产品线行为模型,而Kripke结构是基于状态的模型,两者的主要区别是迁移关系的标记函数不同,因此将三值特征迁移系统转换成Kripke结构关键是对迁移关系的转换。
黄明宇等人[黄明宇,石玉峰.基于χchek的软件产品线多值模型检测方法[J].计算机与现代化.2014(8):87-90]公开了一种将基于动作的模型转化为Kripke结构。主要转换关系如下:Kripke结构主要包含状态节点和状态迁移,其状态集合S'以及迁移集合T'与基于动作的模型的转换关系如下:
S'={i∈Z+,i≤number of Transitions|(dest[i],act[i])} (4)
T'={i∈N*,i≤Number-of-Transitions|(ori[i],*),(dest[i],act[i]),r[i]} (5)
(4)式表示对应Kripke结构的状态节点集,其中Z+表示正整数集,dest[i]和act[i]分别对应第i条迁移边的终点状态和迁移动作。(5)式表示对应Kripke结构的迁移关系集,其中(ori[i],*)表示由第i条迁移边的起点状态派生出的所有状态,(dest[i],act[i])表示该迁移对应的终点状态,r[i]表示该迁移对应的迁移逻辑值。
根据以上规则即可实现模型转换。
步骤4-2,将ACTL转化为CTL公式,具体实施方式如下:
ACTL是描述基于动作的系统模型的时序逻辑公式,是对CTL公式的扩展,其由下列规则进行归纳:
其中,
·true,false:逻辑常量,分别表示―真‖、―假‖;
·p:表示原子命题;
·基本逻辑连接词,分别表示―且‖、―或‖、―非‖、―蕴含‖;
·A:表示―所有路径‖;
·E:表示―存在一条路径‖;
·F:表示―将来某个状态‖;
·G:表示―将来所有状态‖;
·U:表示―直到‖;
·a:动作(action);
·<a>:表示―存在某条迁移做a动作到达下一状态‖;
·[a]:表示―所有做a这个动作的迁移到达下一状态‖。
除了<>和[],每个ACTL时态连接词都是一对符号。符号对中的第一个是A或E,符号对中的第二个符号是F,G或U。CTL公式和ACTL公式的区别在于后者比前者多了两个表示动作的连接词<>和[]。其中<a>:表示―存在某条迁移做a动作到达下一状态‖,而[a]:表示―所有做a这个动作的迁移到达下一状态‖。根据步骤4-1中将动作作为某迁移的终点节点的一个原子命题,所以等价于同理等价于
步骤5,利用多值模型检测工具对三值Kripke结构模型和CTL公式进行验证。具体实施方式如下:
多值模型检测的输入通常为一个多值状态迁移系统和一个用于描述系统属性的时序逻辑公式,其检测结果采用相应的多值逻辑值表示时序逻辑公式在系统上被满足的程度。
利用多值模型检测工具对三值Kripke结构模型和CTL公式进行验证所得的检测结果相应地分为True、False和Maybe。其中True表示该模型满足某属性公式,意味着软件产品线中所有包含该特征集的产品都满足该属性;False表示该模型不满足某属性公式,意味着软件产品线中所有包含该特征集的产品都不满足该属性;Maybe表示该模型对某公式的满足情况未知,需进一步抽象验证。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:本发明针对复杂的软件产品线特征模型,不需要关注整个特征模型,采用多值模型检测工具进行验证,从而为提高软件产品线的复用性提供支持,保证产品配置的正确性。
附图说明
图1为本发明的一个具体实施例中,雨刷控制器软件产品线特征图;
图2为雨刷控制器软件产品线特征迁移系统;
图3为三值雨刷控制器软件产品线特征迁移系统;
图4为用户需求{w,s,p}对应的抽象模型检测结果示意图;
图5为基于特征切片的软件产品线模型检测方法流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
下面结合附图对本发明的技术方案做进一步的详细说明:
具体实施例以文献[Classen A,HeymansP,Schobbens P Y,et al.Symbolicmodel checking of software product lines[C]//Proceeding of the 33rdInternational Conference on Software Engineering.New York:ACM,2011:321-330]中的雨刷控制器软件产品线wwd(Windscreen Wiper Controller)为实例,以用户需求特征集{w,s,p}为切片准则对特征模型进行分析。
图5为本发明技术方案的流程图,具体实施步骤如下:
步骤1,描述雨刷控制器软件产品线特征模型,具体实施方式如下:
图1所描述的是挡风玻璃雨刷控制器wwd特征图。该控制器包含五个特征:雨刷产品线(WiperFamily)、传感器(Sensor)、永久雨刷(Permanent)、低品质传感器(Low)和高品质传感器(High),每个特征都用一个小写字母表示,如s代表特征传感器。其中根节点特征w表示雨刷系统;传感器特征s是一个必选特征,意味着其与父特征w同时出现在产品中;永久雨刷特征p是一个可选特征,意味着当父特征w出现在某产品中,其可包含也可不包含在该产品中;传感器特征根据质量高低,可分为高品质h和低品质l两种且满足多选一分解模式(xor-decomposition)。其中高品质传感器h可以识别雨量的大小,而l不可以。
步骤2,根据用户输入的切片准则fslice,根据切片准则对特征模型的配置集进行分析得到切片结果该结果由特征依赖集φslice与特征排斥集组成,具体如下:
步骤2-1,对特征模型进行自动化分析,得到特征模型配置集,具体如下:
将wwd特征模型转化为等价的命题公式,如表5示:
表5 特征模型对应的命题公式
本发明借助SAT Solver工具对公式进行分析,可以得到该特征模型中的所有产品配置集,即
步骤2-2,根据用户输入的切片准则fslice={w,s,p},对步骤2-1中的配置集抽取包含切片准则中特征的产品集具体实施如下:
将切片准则作为一个整体对特征模型中配置集进行遍历搜索,根据公式(1)抽取出所有包含切片准则中特征的产品集
步骤2-3,抽取特征依赖集φimpl,具体实施方式如下:
根据公式(2)对步骤2-2结果中所有的元素进行取交集运算得到特征依赖集
φimpl={w,s,p}。
步骤2-4,抽取特征排斥集φexcl,具体实施方式如下:
根据公式(3),首先用特征全集F对步骤2-2的结果集中所有的元素取补集得到一个与结果相对应的集合{{l},{h}},然后对补集中所有的元素再取交集得到特征排斥集
步骤3,根据切片结果对软件产品线的特征迁移系统进行抽象,具体包括:
步骤3-1,定义三值的特征变量集,具体实施方式如下:
将特征模型中所有的特征作为逻辑变量,其真值域为{T,M,F}。为步骤2-3中生成的特征依赖集中的特征行为属性赋值为T(true),表示依赖该特征对应的迁移关系,即w=T,s=T,p=T;为特征排斥集中的特征行为属性赋值为F(false),表示排斥该特征依赖的迁移关系,该集合为空;为不在以上两个集合中的特征行为属性赋值为M(maybe),表示对该特征对应的迁移关系选择未知,即l=M,h=M。
步骤3-2,根据三值逻辑运算关系得到三值特征迁移系统,具体包括:
根据表4给出的三值逻辑运算真值表,对特征迁移系统上的特征表达式进行运算,得到三值特征迁移系统,如图3所示。
步骤4,模型转换和公式转换,具体包括:
步骤4-1,将图3对应的三值特征迁移系统转化为Kripke结构,具体实施方式如下:
图2所描述的是雨刷控制器特征迁移系统,该系统基本工作流程是:拉起控制杆启动系统→激活传感器→传感器根据雨量大小调整雨刷速度。图中初始状态为状态1(s1),系雨刷停止工作(stop)。拉起控制杆(up)启动系统,若产品中包含特征p,系统首先到达状态2(s2),雨刷匀速工作(wipe),再一次拉起控制杆(up)系统到达状态3(s3),传感器感应(sense);另一方面,若产品中不包含特征p,系统直接到达状态3,传感器感应。在状态3,特征l不能识别暴雨(heavyRain)和小雨(rain),都到达状态4(s4),雨刷匀速工作(wipe);而特征h能够识别暴雨和小雨,若雨量为暴雨,系统到达状态5(s5),雨刷快速工作(fastWipe);若为小雨则到达状态4,雨刷匀速工作;若由暴雨变为小雨则状态从状态5迁移到状态4。若无雨(noRain),通过拉下控制杆(down)这个动作使系统回到初始状态。
为方便描述模型转换,以各状态和动作对应的由字母和数字组成的名称表示,如状态1用s1表示。首先根据关系式(4)列出所有真实状态集,以(状态,入度迁移上的动作)形式命名,如以图2中初始状态s1为例,该状态只有一个入度迁移边,所以s1只衍生出一个状态(s1,down),其他状态类似。然后根据关系式(5)将每个状态对应的以该状态为开始节点的迁移边表示成[起点状态,终点状态,迁移逻辑值]形式。三值特征迁移系统Kripke结构见表6
表6 三值特征迁移系统Kripke结构
步骤4-2,将ACTL公式转化为CTL公式,如下表示所:
根据ACTL与CTL公式之间的转换关系,表7描述了本发明待验证的三个行为属性公式、转化后的CTL公式以及含义。
表7 ACTL公式、CTL公式及其含义
ACTL公式 | CTL公式 | 含义 |
AG([rain]AFwipe) | AG(rain→AFwipe) | 任意时刻,只要天气下雨,控制器总会启动雨刷 |
EF(<up>AXsense) | EF(up∧AXsense) | 司机做up这个动作,系统下一步将激活传感器 |
EF(fastWipe) | EF(fastWipe) | 系统永远不会启动快速雨刷 |
步骤5,利用多值模型检测工具χchek[Easterbrook S,Chechik M,Devereux B,etal.χchek:A model checker for multi-valued reasoning[C]//Proceedings ofthe25th International Conference on Software Engineering.Washington,DC,USA,2003:804-805]对三值特征迁移系统抽象模型进行检测,具体实施方式如下:
首先,准备满足χchek软件包格式的Kripke结构模型文件输入,如XML格式;设置χchek软件包中的模型编译器,如XMLXKripkeModelCompiler;然后,输入表7中的CTL公式;最后,运行χchek实现多值模型检测。
χchek是加拿大多伦多大学(University of Toronto)用JAVA开发的一款图形化界面的多值模型检测工具,支持Kripke多值结构模型和CTL公式的模型检测,并能生成反例。
本实施例的输出结果如图4所示,从验证结果可以得出以下结论:属性AG([rain]AFwipe)验证结果为T(true),说明基础单元满足该属性,即所有包括该单元的产品均满足属性AG([rain]AFwipe);属性EF(<up>AXsense)验证结果为F(false),说明该基础单元不满足该属性,即所有包括该单元的产品均不满足EF(<up>AXsense);属性EF(fastWipe)验证结果为M(maybe),说明该基础单元依赖于其他特征信息,在不同的产品配置中属性满足情况不同。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
Claims (4)
1.一种软件产品线的特征切片模型检测方法,其特征在于包括下述步骤:
步骤一、构造特征模型,所述特征模型为描述产品线共性和可变性特征、特征与特征之间关系的需求模型;
步骤二、将用户的特定需求表示为特征切片准则,根据切片准则对特征模型的配置集进行分析得到切片结果,所述切片结果包括特征依赖集与特征排斥集;具体包括:
201、将特征模型映射到自动化分析工具支持的逻辑形式,对特征模型进行自动化分析,使用可满足性求解器得到特征模型配置集;
202、根据用户输入的特征切片准则fslice,从步骤201的配置集中抽取出包含切片准则中所有特征的产品集,采用下述公式进行:
式中:z表示包含切片准则中特征的产品;
203、抽取特征依赖集Φimpl,采用下述公式进行:
式中:X表示中的元素;
204、抽取特征排斥集采用下述公式进行:
式中:F表示软件产品线中的有限特征集;
步骤三、根据步骤二得到的切片结果对软件产品线的特征迁移系统进行抽象;具体包括:
301、定义三值逻辑下的特征变量集,增加逻辑判断参数M表示真值未知的情况,用于对不确定信息进行建模;
为步骤203生成的特征依赖集中的特征行为属性赋值为T,表示依赖该特征对应的迁移关系;
为步骤204生成的特征排斥集中的特征行为属性赋值为F,表示排斥该特征依赖的迁移关系;
为不在特征依赖集和特征排斥集两个集合中的特征行为属性赋值为M,表示对该特征对应的迁移关系选择未知;
302、根据三值逻辑运算规则对特征迁移系统上的特征表达式进行运算,得到三值特征迁移系统;
步骤四、进行模型转换和公式转换;具体包括:
401、将三值特征迁移系统转化为三值Kripke结构,转换关系如下:
三值Kripke结构包括状态节点和状态迁移,所述状态节点集合S'以及状态迁移集合T'与基于动作的模型的转换关系为:
S'={i∈Z+,i≤number of Transitions|(dest[i],act[i])}
T'={i∈Z+,i≤number of Transitions|(ori[i],*),(dest[i],act[i]),r[i]}
其中,Z+表示正整数集,dest[i]和act[i]分别对应第i条迁移边的终点状态和迁移动作;(ori[i],*)表示由第i条迁移边的起点状态派生出的所有状态,(dest[i],act[i])表示该迁移对应的终点状态,r[i]表示该迁移对应的迁移逻辑值;
402将描述基于动作的系统模型的时序逻辑公式ACTL转化为CTL公式,由下列规则进行归纳:
其中,true,false:逻辑常量,分别表示“真”、“假”;p:表示原子命题;∧,∨,→:基本逻辑连接词,分别表示“且”、“或”、“非”、“蕴含”;A:表示“所有路径”;E:表示“存在一条路径”;F:表示“将来某个状态”;G:表示“将来所有状态”;U:表示“直到”;a:表示动作;<a>:表示“存在某条迁移做a动作到达下一状态”;[a]:表示“所有做a这个动作的迁移到达下一状态”;
步骤五、利用多值模型检测工具对经过步骤四转换的模型和公式进行验证。
2.如权利要求1所述的一种软件产品线的特征切片模型检测方法,其特征在于:步骤一中,所述特征模型由层次结构和约束组成,其中,
所述层次结构用以描述父特征与子特征之间的关系,包括必选特征、可选特征、多选一特征分解和多选多特征分解;所述约束用以描述特征之间的约束依赖关系,包括相互依赖关系和相互排斥关系。
3.如权利要求2所述的一种软件产品线的特征切片模型检测方法,其特征在于:步骤一中,所述特征模型的描述方法包括基于图形化方法和基于文本型方法。
4.如权利要求1所述的一种软件产品线的特征切片模型检测方法,其特征在于:所述步骤五中的验证检测结果包括True、False和Maybe,其中,
True表示该模型满足某属性公式,即软件产品线中所有包含该特征集的产品都满足该属性;
False表示该模型不满足某属性公式,即软件产品线中所有包含该特征集的产品都不满足该属性;
Maybe表示该模型对某公式的满足情况未知,需进一步抽象验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510078269.6A CN104615438B (zh) | 2015-02-13 | 2015-02-13 | 一种软件产品线的特征切片模型检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510078269.6A CN104615438B (zh) | 2015-02-13 | 2015-02-13 | 一种软件产品线的特征切片模型检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615438A CN104615438A (zh) | 2015-05-13 |
CN104615438B true CN104615438B (zh) | 2017-09-12 |
Family
ID=53149900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510078269.6A Active CN104615438B (zh) | 2015-02-13 | 2015-02-13 | 一种软件产品线的特征切片模型检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615438B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301040B (zh) * | 2017-05-16 | 2020-09-29 | 南京航空航天大学 | 一种基于子树分解的软件产品线产品派生方法 |
CN107589936B (zh) * | 2017-09-13 | 2020-10-30 | 北京航空航天大学 | 基于需求文本与可变性模型追踪关系的产品线可变性配置优化方法 |
CN109508288B (zh) * | 2018-10-22 | 2022-04-01 | 暨南大学 | 一种模型检测方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279347A (zh) * | 2013-05-28 | 2013-09-04 | 复旦大学 | 一种通用的软件产品线领域模型与应用模型的同步方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009384A (ja) * | 2008-06-27 | 2010-01-14 | Fujitsu Ltd | 検証支援プログラム、検証支援装置、および検証支援方法 |
-
2015
- 2015-02-13 CN CN201510078269.6A patent/CN104615438B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279347A (zh) * | 2013-05-28 | 2013-09-04 | 复旦大学 | 一种通用的软件产品线领域模型与应用模型的同步方法 |
Non-Patent Citations (2)
Title |
---|
一种适用于软件产品线的特征模型;赵鄂;《计算机系统应用》;20130411;第22卷(第10期);全文 * |
从领域需求到产品线体系结构的映射;李玉琴;《计算机研究与发展》;20070306;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104615438A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7954083B2 (en) | System and method for specifying functional and non-functional requirements for a project | |
Ananieva et al. | Implicit constraints in partial feature models | |
Vanherpen et al. | Ontological reasoning for consistency in the design of cyber-physical systems | |
Schwartz et al. | Semantically enriched BIM life cycle assessment to enhance buildings’ environmental performance | |
Molcho et al. | Computer aided manufacturability analysis: Closing the knowledge gap between the designer and the manufacturer | |
Nyberg et al. | Formal verification in automotive industry: Enablers and obstacles | |
CN104615438B (zh) | 一种软件产品线的特征切片模型检测方法 | |
CN108037913A (zh) | 一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序 | |
Filipovikj et al. | Integrating pattern-based formal requirements specification in an industrial tool-chain | |
Alenazi et al. | SysML modeling mistakes and their impacts on requirements | |
Bernaerts et al. | Validating industrial requirements with a contract-based approach | |
CN102013055A (zh) | 一种服务编排流程的验证方法及系统 | |
CN105956287A (zh) | Cad系统环境下产品设计与环境影响评价集成系统与方法 | |
Wilde et al. | Ontology-based approach to support life cycle engineering: Development of a data and knowledge structure | |
Kowal et al. | Supporting the development of interdisciplinary product lines in the manufacturing domain | |
CN105022692A (zh) | 一种死锁检测验证方法 | |
Nakajima | Semi-automated diagnosis of foda feature diagram | |
CN114207620B (zh) | 数据解释装置、方法及存储介质、数据整合装置、方法及存储介质、以及数字城市构建系统 | |
Alenazi et al. | Assuring virtual PLC in the context of SysML models | |
Cansell et al. | Predicate diagrams for the verification of reactive systems | |
Chakraborty et al. | Applying the grounded theory method to derive enterprise system requirements | |
Pronost et al. | Digital Twins along the product lifecycle: A systematic literature review of applications in manufacturing | |
Bakaev et al. | User interface design guidelines arrangement in a recommender system with frame ontology | |
Fogarty et al. | System modeling and traceability applications of the higraph formalism | |
Kherbouche et al. | Formal approach for compliance rules checking in business process models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |