基于自动控制理论的系统功能需求分析方法
2021-01-21马赞王鹏崔明山
马赞,王鹏,崔明山
(1.中国民航大学 民航航空器适航审定技术重点实验室,天津 300300;2.北京畅研汇明科技有限公司,北京 100107)
0 引 言
功能需求分析是需求工程的重要内容[1-2],是系统设计开发的关键输入。随着系统越来越复杂,系统功能需求越来越多,越来越难以完整识别,尤其是没有结构化的识别方法,这给系统需求分析带来了不小的困难。
目前,最流行的需求分析方法主要有:调研/访谈的需求分析方法;基于知识的需求获取;基于场景的需求分析方法;面向对象的需求获取分析方法;基于特征的需求分析;基于本体的需求获取方法;基于QFD的质量功能展开方法。
上述方法无法保证需求分析的完整性,主要原因有:(1)这些方法都是基于主观的分析方法,由干系人根据经验提出系统需求,对干系人的经验要求较高,如果干系人经验欠缺或者出现疏忽,就会遗漏需求,造成需求不完整;(2)这些分析方法未能完整考虑“外部所有输入信号”的各种情况,容易遗漏外部输入的特殊组合情况,造成系统需求缺失;(3)这些分析方法未能充分考虑“系统所有的工作状态”,造成在不同工作状态下系统对外部所有输入的响应出现遗漏,导致系统需求缺失;(4)非结构化方法易造成功能需求缺失。
具体而言,造成需求不完整的原因为:
(1)调研/访谈的需求分析方法[3],因为是通过调研和访谈进行的需求分析,被访谈者描述需求的时候主观性很强,如果干系人欠缺经验,就会造成需求不完整;另外,系统越来越复杂,单纯靠人的经验,已经无法完整准确地识别系统需求了。
(2)基于知识的需求获取[4],虽然可以依靠相关人员的经验知识获取系统功能需求,但是,由于人类积累的知识有限,有些经验知识是系统发生故障后才能获得的,因此,无法确保系统功能需求的完整性,只能作为一种检查完整性的方法。
(3)基于场景的需求分析方法[5-6],从系统运行场景的角度可以识别系统功能需求的“分类”,但是由于每个场景的“分支”组合太多,单纯靠场景法几乎无法穷举这些分支,也会造成功能需求识别不完整。
(4)面向对象的需求获取分析方法[7-8]是目前最流行的,其更多强调的是一种分析流程,并且,由于通过用例图、活动图、顺序图、对象图等进行分析,与“基于场景的需求分析方法”类似,并没有从一开始就综合考虑功能需求的完整性,而且主要依靠有经验的人进行分析,可能造成功能需求有遗漏,无法保证需求的完整性。
(5)基于特征的需求分析[9],重点在功能需求的“分类”和需求之间的依赖关系上,也依赖于有经验的专家,难以保证需求的完整性。
(6)基于本体的需求获取方法[10-11],重点在需求的层次关系、本体之间关系、图形化表示等方面,和“面向对象的需求获取分析方法”类似,偏重于流程和技术手段,并不是针对需求的完整性进行分析,无法确保需求的完整性。
(7)基于QFD的质量功能展开方法[12-15],侧重点在从客户需求到系统特征上的定量转化,也就是从定性的需求向定量的需求转换,并没有考虑需求的完整性问题。
1 基本原理及定义
1.1 基本原理
本文提出的系统功能需求完整性的分析方法,是从系统对外界输入信号响应和系统自身状态的角度考虑需求分析的一种方法,并且从一开始就关注结构化的分析流程。
根据现代控制系统理论,可以通过如下公式表示一般系统的所有功能集合[16]:系统外部输入信号集合(Input);系统内部状态集合(State);系统输出集合(Output)。
系统完整功能集合表示为
Output=fsystem(State,Input),
式中,fsystem为一般系统。
对于一般系统而言,功能需求就是“系统处在内部各种状态下,对接收到的外界的各种输入信号组合产生何种响应的要求”。因此,通过识别系统内部状态State和外部信号输入Input的所有组合,描述在每种特定组合下,系统应该执行的操作和得到的输出,就可以获得系统完整的功能需求。
假设系统存在P种状态,且在状态Mi下,系统对输入信号的组合Sj的响应可以描述为需求Ri,j,假设所有输入信号的组合数为N,那么,在状态Mi下的所有需求集合
Ri={Ri,j|j=1,…,N}。
由于包含了所有的输入信号组合,因此,Ri代表了在状态Mi下的所有需求,该状态下,Ri所代表的需求集合是完整的。
假设整个系统的所有需求集合为Rsys,则有
Rsys={Ri,j|i=1,…,P,j=1,…,N}。
由于系统状态是完整的(P种状态),每种状态下的需求集合是完整的(Ri),因此,Rsys所代表的系统的功能需求集合也是完整的。
1.2 定义
为了简化表示方法,给出一些定义,这些定义将在后面的分析和实例验证中使用。
定义1 信号有效集合
R={Sig,
式中:Sig为信号名称;S1,S2,S3,…为在全空间内的有效子集合;
定义1表示信号的整个范围集合。
定义2 信号有效集合乘法运算
假设As,Bs2个信号的有效集合分别为
A={As,
As,Bs输入信号有效集的乘法运算定义为
T=A×B={
式中: B2>, 定义2表示多信号有效集合的所有可能的组合情况,用于识别信号的各种有效组合关系。 推论1 多个信号乘法运算,可以分解为多个两信号乘法运算的迭代运算。 假设As,Bs,Cs3个信号的有效集合分别为 A={As, As,Bs,Cs3个信号有效集的乘法运算为 T=A×B×C=(A×B)×C= { { 推论1是将定义2推广到多信号有效子集的所有组合情况的计算。 定义3 信号有效集合数量 假设S为信号Sig有效集合,S集合中有效子集的个数k称为信号有效子集数量,记为 k=N(S), 式中,N为运算符。 定义3是计算符号,用于计算信号有效子集的数量。 推论2 信号有效子集数量等于所有信号有效子集数量的乘积 假设S1,S2,…,Sn为对应信号的有效集合,Sa=S1×S2×…×Sn,那么,ka=N(Sa)=N(S1)×N(S2)×…×N(Sn)。 推论2代表了多信号组合后的所有可能组合数量的计算方法。 需求分析过程中,可以结合系统用例图,识别不同系统状态下的输入接口和信号,从而减小Input,State组合空间的大小,进而降低分析的复杂度。假设系统用例如图1所示。 用例的接口关系参见表1。 所有输入信号有效集合为(参见定义1) Sa={a, Se={e, (1)用例1。在用例1的情况下,系统输入信号的有效组合为(参见定义2)
C={Cs,2 分析过程及流程
2.1 需求分析过程