论文部分内容阅读
软件需求的一致性是保证软件可信性的一个重要方面。资料显示,由于需求不符而导致的系统失败高达40%。需求一致性的检查一般来说,分为三个方面:一是检查系统设计是否满足系统原本的需求,二是检查设计被细化过程中是否满足系统原本的需求,三是检查系统实现是否满足系统原本的需求。在需求检查的第一、第二个方面,可以通过一些静态分析方法来对设计模型或细化后的模型进行检查来发现需求是否一致。在软件设计被逐步实现的过程中,可能会有错误或故障出现,因而在实现后的软件或系统中会存在bugs。故对于一个开发完成的系统,我们仍然需要对其进行检查,以确定实现后的系统是否仍然满足系统初始的需求,即第三个方面的需求检查。针对第三方面需求检查的方法主要有两种:测试与模型检查。测试通常被用来检查实现后的系统的正确性,其测试用例是由需求得到的。由于单个测试之间是无关的,在每一次测试中只有部分系统得到检查,因此测试是无法保证其完整性的,也就是说,测试不能检查到系统的完整的行为。模型检查的方法可以检查系统的完整性,但是由程序代码建立一个模型是很困难的。本文主要对web应用进行第三方面的需求检查。由于web应用自身的一些特点,如导航、超媒体等,本文利用它的可导航性来提出一些新的检查方法,具体思路如下。1)构建实现阶段的需求。基于用户导航获得包含用户行为相关信息的log file,然后借助自然语言处理技术(Natural Language Processing)对log file进行处理,得到基于系统实现的use cases,即系统实现阶段的需求。2)模型转换。基于系统初始的需求与实现阶段得到的需求,分别建立相应的use case模型,然后分别将use case模型自动转换为基于SCA(Service Comoponent Architecture)的组件模型。3)需求检查。通过比较两个SCA组件模型来检查系统实现是否满足系统初始需求。基于SCA的组件模型不仅包含静态信息描述,还包含了系统的行为,因此它可以被用来从静态层面与动态层面进行比较。我们开发了一个原型(prototype)来支持我们的方法,并借助Market Information System[3]实例,来说明我们的方法并作具体的分析。