论文部分内容阅读
众所周知,解决问题的基础在于对该问题有着准确和全面的理解。软件开发也是如此,要想开发出令人满意,质量上乘的软件产品,没有好的分析和规划是不可想象的。需求工程作为软件工程的一个重要分支,着重于研究参与者对预期系统的期望和要求,并使之文档化,从而成为后续开发工作的依据和评判标准。通常,人们总是希望用客观、统筹和全面的眼光来看待复杂的现实问题,并使用局部化,分而治之等方法来解决它。在软件开发中,这样一些原则也得到了关注和运用。多视点需求工程方法正是贯彻了这一思想,并将其具体化到需求工程这一特定领域中。与经典的需求工程方法不同之处在于,多视点需求工程方法将“视点”作为一类实体显式地加以考虑。强调了每个视点都对于预期系统有着独到的理解,尽管这些理解有可能是部分的,片面的和不准确的。如果能够有效的将这些来自于不同视点的需求有机的结合在一起,由此形成的对预期系统的刻画,也必然比仅从一个角度考虑问题要全面和准确得多。由此,可以产生出更加高质量的需求规约说明书—需求工程的产出物。想法虽然美好,但要解决的困难问题却很多。诸如:如何建立合理的视点模型;如何理解非形式化语言所表达的需求;如何准确地集成各方面的需求;如何准确地判断需求之间的不一致性,并提供相应的解决手段等等,都是需要解决但又难以解决的问题。开宗明义,本文希望解决的问题,都围绕着如何处理多视点需求工程中的不一致性这一主题展开。研究的重点主要包括不一致性管理过程中的三个关键步骤:重叠需求的发现;不一致性的判断和不一致性的消解。准确地说,本文关注的问题是如下四个部分:1.如何划分视点之间的关系,并建立合理的多视点模型和框架?2.如何发现哪些有可能产生不一致性的需求,也就是所谓的重叠需求?3.如何判断某一重叠需求是否是不一致的?4.一旦确认某一需求具有不一致性,又该如何解决呢?如果用更加容易理解的语言进行表述,那就是,本文希望建立这样一个处理过程:它将不同参与者对预期系统的需求作为输入,在利用本文中提出的各种方法对其进行分析后,要么可以告诉这些参与者,他们之间的需求是一致的,没有冲突的,可以有效地集成到一起,形成一个完备的对目标系统的描述;要么告诉参与者,哪些需求是存在冲突的,并为解决这些冲突提出一个可以令各方都能接受的解决方案。既然是从计算机科学的角度来考虑以上问题,本文主要还是利用形式化方法这一工具来解决这一系列相关的问题。总体说来,本文的主要贡献有如下几点:1.对现有的各种多视点分析方法进行了较为全面的总结和分析,以此为基础,讨论了各种方法的优缺点和适用范围;2.在借鉴了相关的方法,并在本实验室其他研究人员的研究成果基础上,提出了结合特征来建立基于问题域和视点代理的多视点建模框架(PDVMF),并提出使用需求团来刻画参与者的需求;3.利用PDVMF形成视点框架后,本文提出使用认知逻辑来对该框架进行解释。从而将发现参与者之间的重叠需求的工作,转换为对认知逻辑中普遍知识和公共知识的研究。由此,可以利用软件工具来帮助参与者,更快的找到存在于他们之间的重叠需求。4.对于不一致性需求的检查,本文将其划分成两类不同的情况加以分析。即同种图形符号和异种图形符号之间的不一致性判断和检测。出于现实情况的考虑,本文将研究的范围限定于UML的子集。对于前者,本文将UML的用例图转换为认知逻辑公式,并给出相关的判断公式。从而将该问题变为对认知逻辑公式的可满足性的判断。对于后者,本文详细讨论了时序图和状态图解释为行为时序逻辑(TLA)的变换规则,从而将该问题转换成模型检测问题。并通过实例来说明该检测方法的有效性。为了得到准确的转换结果,本文对相关的转换规则进行了详细地讨论。5.不一致性的消解过程,可以看成是整个不一致性管理过程中的产出阶段。本文提出将博弈论中若干概念,应用到不一致性消解的过程中。充分考虑到参与者之间交互的局部性,本文利用前面所建立的多视点框架,将不一致性消解的过程看成是各个利益相关方的静态非合作博弈过程,并用图博弈的形式来刻画这一博弈过程。从而,将消除不一致性的过程,转换为计算该图博弈上的纯Nash均衡点。通过这个方法所找到的不一致性消解方案,可以令所有参与方都感到满意。这意味着,该方案将有可能得到更好地执行。本文以在线图书馆为实例,依次对视点及多视点框架的形成、重叠需求的发现、不一致性需求的检查以及需求不一致性的消除等问题进行了展开讨论,以此展示了本文所提方法的有效性和可行性。