王 丽,杜晓明
(江苏科技大学 经济管理学院,江苏 镇江 212003)
需求分析是软件定义时期的最后一个阶段,它所要做的工作是深入描述软件的功能和性能,确定软件设计的限制,以及软件同其他系统元素的接口细节,定义软件的其他有效性需求,因此,对需求阶段进行深入研究具有重要的意义。参考文献[1]对软件需求分析的含义、任务和过程进行讨论,突出了有效沟通、需求管理、团队协作在需求分析过程中的重要作用,同时探讨了若干需求分析方法;参考文献[2]重点描述按照RUP的要求进行软件需求分析的方法,给出了建立业务模型、需求模型的具体目的、内容和步骤;参考文献[3]阐述了UML的特点、UML架构、软件需求分析原则及UML对软件建模的意义,并给出了UML技术在软件需求分析和设计阶段的成功应用;参考文献[4]利用形式化规格说明语言——B语言对软件需求进行了严格定义,在严格的数学基础上进行软件开发,以获得更好的软件性能;参考文献[5]讨论和分析了软件需求分析的概念、任务、过程、种类、原则、用户和系统分析员的关系以及需求文档的书写。这些研究都具有较高的学术价值,并且各具特点,但极少有从知识管理的角度进行需求分析,缺少对软件企业所拥有案例的深入挖掘和充分利用。
本文从知识管理的角度运用基于案例推理的方法提出了软件需求分析的框架模型,并对该模型的关键技术进行了详细说明。本文的研究成果为软件企业实现有效的案例管理提供了理论和技术上的保障,拓展了CBR的应用领域。
需求分析本质上是一个知识管理的过程,这一过程出现的主要问题可归结为隐形知识显性化的管理过程。多数从事软件研究和软件开发的专家认为,需求获取只有通过客户和开发者有效的合作、减少合作中的障碍才能成功,客户的参与直接影响到需求获取的结果,没有参与就没有结果,而被动参与会产生不良结果。事实上,需求分析是分析专家通过挖掘客户潜在需求相关知识,再将各类软件开发人员的经验、专业知识相融合,从而产生出客户真正期望的需求的过程;需求分析的过程就是知识传递、创新、显化的过程[6]。
图1表明了知识流在需求过程中的流动,主要包括3个阶段:与需求相关的知识传递;相关需求知识创新;需求显化。需求知识的最初来源有客户、领域知识与软件团队内部已有的软件开发经验、开发技术、开发模式等相关知识;在相关需求知识的创新阶段,主要完成知识形态的转化,将供需双方的知识加以积聚融合;最后将用户隐含的需求知识显性化以形成客户真正的需求,这是需求分析过程中最关键的环节。经过反馈,最终流向用户手中,在用户需求得到确认的同时,软件开发团队的需求获取过程完成,但并不意味着需求过程的结束,需求过程将随着软件项目的每一个不同的开发阶段不断地信息反馈而逐渐得到更新。
图1 知识在需求获取过程中的流动
基于案例推理的思想最早是由R Shanker在1982在《Dynamic Memory》书中提出的,以后由他的学生经过多年的工作逐渐发展起来。它的核心思想为:在问题求解时,人们可以使用以前对该类问题的求解经验,即案例,来进行推理。在这种求解问题的方法中,人们将过去对问题的求解案例按一定的组织方式存储在案例库中,当用户输入待求解的新问题时,系统首先从案例库中寻找这种案例或与其近似案例。如果找到的案例与待求解案例的描述完全一致,则将找到的案例中的结论输出。否则,根据对待求解问题的描述,对检索出来的案例进行修改,以产生一个符合问题求解要求的解并将其输出;同时将这个问题案例作为一个新的案例再存储到案例库中。因此,在以后求解时,便可利用案例库中已知的案例,而不必每次都从头开始。一个经验丰富的医生可以从他过去的治病生涯中总结大量经验,对于新遇到的病症,有经验的医生可以从过去医治过的相同病症或类似病症中很快找到新的治疗方法。而每次成功的治疗又都为将来积累新的经验。
依据上述对软件需求分析过程中的知识流动分析,这里将基于案例推理(CBR)技术引入到了需求分析过程中来,提出了一个如图2所示的基于案例推理进行软件需求知识模型(CBRDA)。
定义1针对图2模型,本文将基于案例推理进行软件需求分析CBRDA,定义如下:
图2 基于案例推理进行软件需求知识模型(CBRDA)
其中,Sset={Ea,Eb},表示需求分析专家及其拥有的知识和经验,Ea表示进行需求分析的专家,Eb表示其拥有的知识;Cset={Ci,qi|i=1,2,3,…n}表示客户 Ci及其知识需求qi,包括功能需求非功能需求以及领域需求;CASEset表示联系Sset和Cset的基于案例推理的系统,它是由案例库、基于案例推理活动及其对应的规则组成。CASEset={I,F,W,C,T,S},其中,I={I1,I2,…Im}是 1 个有限集合,表示案例的说明信息;F={F1,F2,…Fn}是 1 个有限非空集合,表示案例所具有的各种特征,即特征集;W={W1,W2,…Wn}是1个有限非空集合,表示案例所具有的各种特征的权值,即权值集;C={C1,C2,…CX}是 1 个有限非空集合,表示由特征集引起的结论集;T={T1,T2,…Ty}是1个有限非空集合,表示验证结论成立与否的检测,即测试集;S={S1,S2,…Sz}是 1 个有限集合,表示结论集的解决方案。上述多元式提供了求解案例的表达模型,其中特征集和结论集可作为求解案例的索引[7]。
在图2所示的架构中,CASEset作为需求分析最关键的部分以及联系分析专家和客户之间关系纽带,其工作过程遵循如下步骤:
(1)根据客户知识需求,以规范的形式描述出新问题案例;
(2)检索与新问题案例类似的案例,通过案例推理和相似度分析,确定最类似的案例;
(3)修订解决方案以使其更加适应新问题案例;
(4)客户对得到的新方案进行评估,判断是否满足客户的需求;
(5)再次审查和评估修订后的解决方案,判断是否有必要保留新问题案例;
(6)修改案例库中的案例索引和特征权重。
在CBRDA中,存在大量支持已有的解决方案的知识与经验,这些解决方案对应着诸多源案例,其中就包括求解案例;而在需求分析过程中,客户的知识需求又会产生诸多问题案例。案例表示是CBRDA的基础,其表示方法直接关系到推理的效率和准确度。案例表示涉及求解案例和问题案例2个方面,而准确和完整地表达求解案例是CASEset的重要步骤。求解案例和问题案例定义如下。
定义2 CBRDA中的问题案例是一组反映了客户知识需求的约束的集合,表示为 P={Ak,Pk},k=1,2,…,m,其中,Ak={aki|i=1,2,…n}表示第 l个问题案例所包含的特征集,n表示 Al所包含特征的个数;Pk={wki,fki}表示与对应特征的结论。wxi表示特征权值,其值越大,该特征越重要。
定义3 CBRDA中的求解案例是在满足问题案例需求条件的下通过知识检索所得到的结果案例,表示为T={Ak,Pk},k=1, 2,…,m,其中 ,m 为当前案例库中的源案例数;Ak={aki|i=1,2,…n}表示第k个案例所包含的特征集,n 表示 Ak所包含特征的个数;Pk={fki,ski|i=1,2,…n}表示与对应特征的结论以及解决方案。
求解案例是已经存在案例,拥有特定知识结构和内容描述,每一个求解案例对应一个解决方案,而客户的知识需求是一些零散的知识,为了在案例检索中获得类似案例(求解案例),则需要在由知识需求产生的问题案例时,使问题案例以一种与求解案例相近的结构进行组织。
案例检索的本质是问题案例与求解案例之间的相似匹配,目前,适用于 CBRs的检索方法主要有:最近相邻法、归纳索引法和知识导引法等。考虑到软件需求分析的特点,这里将采用最近相邻法(Nearest neighbor approach),它是指从案例库中找出与当前情况距离最近的案例的方法。把问题案例与案例库中的求解案例进行逐索引域的比较,求出案例之间的每个域的相似度,再根据以前定义的加权向量,最终确定求解案例与问题案例的相似度,将相似度超过阈值的案例输出。该策略既是案例的检索策略,也是案例的组织策略。案例的相似度是抽取案例各方面的特征值,并确定各特征的权,通过计算问题案例和求解案例的加权距离,来确定案例相似程度的大小。
设案例集合(案例库)C={C1,C2,…,Cn},第 i个案例的属性集,,…,,则案例间的相似度为:
其中kj表示第j个特征的取值范围。
案例的改写表现为案例库的学习功能,它的主要目的是:通过适当调整在检索操作中获得的求解案例中的解决方案,使之适合于待求解的当前问题。案例的改写往往与特定的领域密切相关。改写过程中所用到的知识可以包括领域知识和启发式改写规则。由于系统完全自动修订技术非常困难,所以在CBRDA中,案例的修订也采用专家干预的形式,由系统分析专家根据用户知识需求的具体情况,参照案例的建议,修订整个解决方案,改写后的案例是原案例库中不存在的案例,当将其加入到案例库中后,就在原领域中形成了对问题求解能力的扩充[8]。
软件需求分析是软件生命周期中重要的一步,也是关键的一步。只有通过软件需求分析,才能从总体上把软件功能和性能描述为具体的软件需求规格说明。基于案例推理的软件需求分析方法有助于软件企业更加深入的挖掘已有的知识案例,快速、准确地获取客户的需求,从而提高本身的竞争力。
[1]邱树伟.关于软件需求分析的探究[J].福建电脑,2008(7):48-50.
[2]苗炬.基于RUP的软件需求分析 [J].计算机与网络,2003(5):53-54.
[3]田茵.基于UML的软件需求分析和设计[J].实验技术与管理,2004(21):74-79.
[4]周绍景,唐艳,邱发林.浅谈软件需求分析方法[J].计算机与信息技术,2007(1):37.
[5]塔维娜,何积丰.基于形式化方法的需求分析[J].实验技术与管理,2003(29):107-108.
[6]李晓明,孙林岩,汪应洛.基于知识管理的软件需求管理研究[J].研究与发展管理,2005(17):28-32.
[7]王雪瑞,刘文煌.知识管理系统中的CBR技术研究[J].计算机工程与应用,2002(2):181-183.
[8]王君,潘星,李静.基于案例推理的知识管理咨询系统[J].清华大学学报(自然科学版),2006,46(z1).