彭钊 杜天保
摘要:需求的变更影响分析过程无论是对于降低系统维护的代价或者是保证系统对变更需求正确的实现都有着至关重要的意义。已有的变更影响分析的研究主要存在两个方面的问题:一方面,当前的有关需求变更影响分析的研究主要侧重于需求到代码之间的变更影响分析,缺乏需求与需求之间的变更影响分析的研究。另一方面,传统的方法大多数是基于需求文档描述做研究,缺乏需求间关系的语义,在作变更影响分析时,会导致大量的变更影响误报,从而忽略了实际的变更影响。为了解决以上这些问题,本文提出了一种基于一阶逻辑的变更影响分析方法。设计一个只包含需求追踪关系信息实体的需求元模型,基于该模型设计一种变更分类方法,并基于一阶逻辑给出需求间关系以及每种变更类型的形式化语义,自动实现需求模型中变更的传播。并通过一个实验来说明本文方法的可行性。
关键词:需求间变更影响分析;一阶逻辑;形式化语义;可追踪性
中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2020)04-0000-00
0 引言
据调查,软件系统开发的预算中有85%到90%被用于软件系统的管理和维护,而这其中有50%被用于软件系统的变更管理[1]。Ebert等人在文献[2]和文献[3]中通过调查得到一个结论:一个周期为一年的软件开发项目,就会有多于40%的需求发生了变更。为了尽可能的减少软件开发成本,需要尽早在软件开发周期中对变更进行管理。如图1为软件系统的变更管理和维护过程。
变更影响分析是指:基于引入的需求变更,确定变更潜在的后果,并对系统中需要更改的其他元素做出预测[4]。变更影响分析无论是对引起变更需求的实现还是对评估系统变更后的风险都十分重要[4]。
Bohner等人在文献[5]-[7]中列出了软件系统开发过程中所有可能受变更影响的元素,他提出一个概念叫作“变更影响爆炸(the explosion of impacts)”。
需求间的变更影响爆炸:由于缺乏需求间关系的语义,需求工程师必须对需求文档中的每个需求都进行分析,因此会造成变更影响爆炸从而忽略实际的变更影响。
在安全关键的嵌入式软件中,需求变更影响分析有着重要的意义。ISO-26262和安全标准IEC-61508中对需求变更影响分析都有相应的要求[9][10]。需求变更影响分析的不完整有可能致使系统功能出现故障或者失效。
本文提出一种基于一阶逻辑的需求间变更影响分析方法,该方法基于一阶逻辑符号系统对需求间关系给出一个形式化语义,保证了需求间变更影响分析的有效性和准确性。
本文的具体章节安排如下:第1节介绍了需求间变更影响分析的国内外相关研究现状;第2节介绍需求间变更影响分析及一阶逻辑相关理论基础;第3节详细介绍了基于一阶逻辑的需求间变更影响分析方法过程;第4节用一个案例说明本文方法的可行性;第5节是结束语。
1 相关工作
目前,学术界对需求变更影响分析做了大量的研究。从变更影响分析过程中的影响集的角度出发,变更影响方法可分为基于可追踪性的变更影响分析、基于依赖关系的变更影响分析和基于工程实验的变更影响分析[11]。Boher等人在文献[4]中提供了一种基于可追踪性的变更影响分析方法。文献[12]使用程序切片技术提供了一种基于依赖关系的变更影响分析方法。文献[13][14]提供了一种基于UML模型的变更影响分析方法。Kilpinen等人在文献[11][12]出了一种基于工程实验的方法。
根据需求变更影响分析是否由人工来完成,又可以将需求变更影响分析方法分为静态分析方法和动态分析方法。静态分析方法:文献[15][16][17]提供了一种面向方面文档驱动需求的变更影响分析方法。文献[18]提供一种基于可达矩阵的变更影响分析方法;动态分析方法:文献[19]基于事件的通知机制,通过使用发布/订阅模式来实现软件演化过程中的需求变更影响分析方法。
陈光颖等人在文献[20]中基于谓词逻辑和模型驱动方法,提供一种常见的需求间关系的形式化语义,并给出需求间隐含关系的推导规则。文献[21]基于SysML的元模型,给定一个需求模型,并在需求模型中定义需求之间的关系,最后利用文献[20]中提供的语义和推导规则,证明了需求变更影响不一致性分析推导规则。
2 相关理论
2.1 需求间变更影响分析相关综述
在需求變更中,存在以下3个基本概念:
(1)变更源:变更源通常是指软件系统中最初引入变更的一个或者多个元素。
(2)变更传播:对于系统中已经引入的变更,与这些引入变更的元素相关的其他元素会出现新的变更,需求工程把这种活动称为变更的传播。
(3)受影响集:给定一个或者多个变更源,把这些受到变更影响的元素成为受影响集[22]。
需求的层次内(Within-level)可追踪性是需求间变更影响分析的前置条件。图2是一个简单的需求可追踪性关系图:
文献[23]给出了如下5种常见的需求关系:
定义2.1五种常见的需求间关系。
需求关系(Requires);精化关系(Refines);包含关系(Contains); 部分精化关系(Partially Refines);冲突关系(Conflicts)。
Goknil在文献错误!未找到引用源。中给出了一个比较精化的需求描述模型,他指出需求是指对系统中一个或多个需要被满足的属性的描述,关系符号和阈值构成了需求所要实现的属性的约束条件,如图3为Goknil提供的需求描述模型:
2.2 一阶逻辑相关理论
定义2.2模型M在一阶逻辑中的定义:
令F为函数符号,P为谓词符号集,函数与谓词都是n元变量的,n是有限的,则模型M由二元组(F,P)表示,并且由以下的符号项组成:
(1)非空集合A,表示个体词的取值范围。
(2)对于任意一个n元函数f,f∈F,n>0,并且存在映射关系f^M:A^n→A。
(3)对于任意一个n元谓词符号集P,P∈P,n>0,并且存在集合P^M?A^n。
下面是公式?在一阶逻辑中的形式化定义,该定义通过巴斯克范式表示:
?∷=K(t_1…t_n )|??|(?∧?)|?∨?|(?→?)|?x?|(?x?),n≥1
在上述巴斯克范式中,K是n元的谓词符号集,x是变量,t_i,i∈(1,n)是函数集F上的项,?是由右侧的巴斯克范式规则构造出来的任意一个公式。整个公式是一个合取范式(Conjunctive normal form,CNF)的形式,公式的右侧是由原子公式组成的,这些原子公式不包含逻辑连接词和子公式。对于二元组(F,P)上的任意一个一阶逻辑公式?,满足以下关系:M?_l ?
即模型M在环境l下,公式?为真,环境是指变量集到A的一个映射关系,其作用是查询变量取值。
定义2.3需求R在一阶逻辑中的定义:
对于一个需求R,在一阶逻辑中将其定义为一个二元组
,其中P为需求中的属性集合,S为满足属性的系统的集合,S可看作一个基于一阶逻辑的形式化模型M。l是模型M中的环境,在对需求R的定义中可视为约束条件:
(1)P=?x(p_1∧…?p_n ),n≥1,其中x为变元,p_1到p_n为属性。
(2)S?_l P(即属性P在需求R中约束条件为l的时候成立)。
以上便是一阶逻辑对需求的形式化定义。
定义2.4基于一阶逻辑的需求间关系的形式化语义:
令R_1 〖,R〗_2,R_3为一个需求模型中的3个需求,二元组P_1,S_1>,
(1)需求关系的形式化语义:
(2)精化关系的形式化语义:
(3)包含关系的形式化语义:
(4)冲突关系的形式化语义:
(5)部分精化关系的形式化语义:
3 本文方法概述
3.1 基于需求间追踪关系的需求元模型
本文在通用的Sysml需求元模型的基础上去掉与需求间关系无关的实体,得到了如图4中的扩展的需求元模型:
3.2 基于需求描述模型的需求变更类型
基于图3中给出的需求描述模型以及图4中给出的需求元模型,本文提供了如表1中需求变更类型:
前五种变更在需求模型中是非常简单而且明显的。对于最后一种类型,根据上述给出的需求描述模型,可以将其分为6个小的部分,给定需求R和R1,属性property用pt表示,约束条件constraint用ct表示,如表2:
假定对于一个需求R,一个属性pt,为需求R添加一个属性pt,且pt总是与需求R总已存在的属性不相同,从一阶逻辑符号系统来说明:即对于新添加的属性pt,总是存在一个系统集S,S满足属性pt且不满足需求R中的现有属性。
定义4.1 添加一个属性:
3.4 需求变更传播
需求变更传播是基于并引入的初始的需求变更,根据本文所给出变更类型和需求关系可以推导出可能出现的新的变更。我们设定一个变更影响分析函数:
如下为变更影响分析函数的定义:
函数:SPCR×SCT×SR×SSRR→SSDT
其中SCT表示需求变更类型的集合;SR表示需求集合;SSRR表示需求模型中需求关系的集合;SPCR表示初始的引入变更的需求集合,存在关系SPCP∈SR,SSDT为函数的输出,表示一组对于受变更影响的其他需求可能出现的变更的决策树集合。
3.5 变更传播规则
本文对11种变更类型和5种需求关系进行任意组合得到变更场景,最后可得到所有场景的需求变更影响传播的规则,如表3:
上述表3中的16条规则是本文中需求间变更影响分析中的所有的影響规则。本文以此规则为基础讨论需求间的变更影响分析。
3.6 变更传播算法
变更影响分析算法的核心思想是根据需求模型中需求与需求之间的关系,从变更源开始遍历整个需求模型,得到一组决策树,决策树包含了需求变更可能的转播路径。如算法3.1:
4 案例分析
4.1 系统概述
如下是一个远程的病患监护系统,该系统拥有3个利益相关者:医生、病人、系统管理员,这个系统的主要功能是监控病人的体征状态如:血压、心率、体温等。
本文通过一种需求管理工具:TRIC,TRIC可根据需求的语义来找到需求间具体的关系,通过TRIC可以得到RPM系统的需求模型,如图5:
4.2 需求间变更影响分析
应系统的利益相关者的需要,现在要对RPM系统中的需求R14引入一个变更。
变更描述:The warning to the doctor should also contain all information about the patients condition(传递给医生的警告应该包含相关患者的所有体征信息)
對于需求R14: The system shall store patient temperature measured by the sensor in the central storage and it shall warn the doctor when the temperature threshold is violated.
它的属性有2个:
(1)存储测量到的病人的体温数据;
(2)对医生发出警告信息。
这两个属性对应的约束条件是:
(1)通过中央存储器来存储数据;
(2)警告信息为病人的体温超过阈值。
此时,需求R14为变更源需求,由图6中可以得到与需求R14相关的需求:
首先根据第3节给出的需求描述模型和需求变更类型的形式化语义,可以判定该变更类型为“为需求的属性增加约束条件”。
其次,基于表3中的需求变更传播规则,调用算法3.1-3.3,可以生成一组决策树,这组决策树的叶节点即为与R14相关的需求可能会受到的影响。
根据算法3.1-3.3,可以得到如下6条变更传播路径:
(1)R14-R4-R6;(2)R14-R6-R1;(3)R14-R4-R1;(4)R14-R7-R1;(5)R14-R7-R9;(6)R14-R7-R8。
对于每一条传播路径,我们都可以基于表3中的规则,调用算法3.1-3.3,生成一组决策树,如图7:
从图7中可以看出,对于需求R14引入的变更,通过本文的方法分析后,在RPM系统中,R7、R8、R9这三个需求受到影响,且影响为“为这三个需求增加与变更源相同的约束条件”。
5 结语
本文面向需求间的变更影响分析,基于一阶逻给出需求追踪关系的形式化语义,给出一种面向变更场景的变更影响分析方法,基于需求间的变更影响的传播规则预测需求模型中其他需求可能受到的影响,但本文方法依然存在一些不足,需要在未来的工作中不断的完善和改进。
(1)本文的方法仅支持需求间变更影响分析,不支持需求变更与体系结构等后期制品之间的影响分析;
(2)在某些特定的情况下,本文的方法存在局限性,例如当变更类型为“增加一个需求”时,系统原有的需求中必须要有与新增需求有关系的需求,否则变更影响分析算法无法执行,即无法对该变更场景进行变更影响分析。
参考文献
Erlikh L.Leveraging legacy system dollars for e-business[J].IT professional,2000,2(3): 17-23.
Ebert C.Understanding the product life cycle:Four key requirements engineering techniques[J]. IEEE software,2006,23(3):19-25.
Ebert C,De Man J.Requirements uncertainty:influencing factors and concrete improvements[C]//Proceedings of the 27th international conference on Software engineering. ACM,2005:553-560.
Bohner S A,Arnold R S.Software change impact analysis[M]. Los Alamitos: IEEE Computer Society Press,1996.
Bohner S A.Software change impacts-an evolving perspective[C]//International Conference on Software Maintenance,2002. Proceedings.IEEE,2002:263-272.
Bohner S A.Extending software change impact analysis into COTS components[C]//27th Annual NASA Goddard/IEEE Software Engineering Workshop,2002.Proceedings.IEEE,2002:175-182.
Bohner S A, Gracanin D. Software impact analysis in a virtual environment[C]//28th Annual NASA Goddard Software Engineering Workshop,2003.Proceedings.IEEE,2003:143-151.
Pfleeger S L,Atlee J M. Software engineering: theory and practice[M]. Pearson Education India, 1998.
IE Commission.Iec 61508: Functional safety of electrical/electronic/programmable electronic safety-related systems[M].parts 1-7,International Electrotechnical Commission, Switzerland,2005.
ISO.DIS 26262-1-Road vehicles functional safety Part 1 Glossary[R]. Technical report, International Organization for Standardization/Technical Committee 22 (ISO/TC 22),2009.
Kilpinen M S.The emergence of change at the systems engineering and software design interface[D].University of Cambridge,2008.
Gamma E. Design patterns: elements of reusable object-oriented software[M].Pearson Education India,1995.
Briand L C, Labiche Y, O'Sullivan L. Impact analysis and change management of UML models[C]//International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings. IEEE,2003:256-265.
Briand L C, Labiche Y, OSullivan L, et al. Automated impact analysis of UML models[J]. Journal of Systems and Software,2006,79(3):339-352.
Jin Y, Zhang J, Hao W, et al.A concern-based approach to generating formal requirements specifications[J].Frontiers of Computer Science in China,2010,4(2):162-172.
Parnas D L, Madey J. Functional documentation for computer systems engineering[M].Queen's University at Kingston,Department of Computing & Information Science,1990.
Hamza H S. Separation of concerns for evolving systems: a stability-driven approach[C]//ACM SIGSOFT Software Engineering Notes.ACM,2005,30(4):1-5.
刘华虓,金英,马鹏飞.一种需求变更影响分析方法[J].计算机研究与发展计算机研究与发展,2013, 50(8):1769-1777.
Cleland-Huang J,Chang C K,Christensen M. Event-based traceability for managing evolutionary change[J].IEEE Transactions on Software Engineering,2003,29(9):796-810.
陈光颖.基于谓词逻辑的需求追踪方法研究[D].南京:南京航空天大学,2016.
Hove D, G?knil A, Kurtev I, et al. Change impact analysis for SysML requirements models based on semantics of trace relations[C]//Proceedings of the 5th ECMFA Traceability Workshop. 2009.
Kassab M,Ormandjieva O,Daneva M.A traceability metamodel for change management of non-functional requirements[C]//2008 Sixth International Conference on Software Engineering Research,Management and Applications.IEEE,2008:245-254.
Spanoudakis G,Zisman A.Software traceability:a roadmap[M].Handbook of Software Engineering and Knowledge Engineering:Vol 3:Recent Advances.2005:395-428.
收稿日期:2020-02-05
作者簡介:彭钊(1993—),男,湖北巴东人,硕士研究生,研究方向:需求工程、安全工程。
Research on Method of within Requirements Change Impact Analysis Based on First Order Logic
PENG Zhao,DU Tian-bao
(College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu 211100)
Abstract: Change impact analysis is an important activity in software maintenance and evolution. Current research on change impact analysis has two main problems. On one hand, current approaches mainly focuses on change impact analysis between requirements and codes, there is a lack of research about change impact analysis within requirements. On the other hand,the traditional method is based on requirement documents .Due to the lack of semantics of requirements relations and change types, change impact analysis may produce high number of false impacted requirements. This may result in neglecting and actual impact of a change. To solve these problems, this paper proposes a approach based on first order logic(FOL).Firstly,the paper designs a requirement metamodel which only contains within requirements traceability informations,then the paper provide a classification of change types based on the metamodel. A formal semantics for the changes types and requirements relations would be provided based on FOL .The semantics is used for propagating proposed changes. Lastly,the paper use a system as the case study to demonstrate the feasibility and effectiveness of the method.
Key words:within requirements change impact analysis;FOL;formal semantics;traceability