论文部分内容阅读
随着软件越来越多的应用于许多关键领域、以及软件本身和其运行环境变得越来越复杂,软件可信性引起人们越来越多的关注。人们不仅希望软件系统能够解决现实世界的问题,还希望它是可信的,希望它能够在解决问题的同时避免带来各种新的问题。这就要求软件开发人员在需求分析的过程中,不仅要抽取和建模软件系统的功能性需求(即软件系统为了解决问题应该做什么),还要抽取和建模软件系统的可信性需求(即软件系统还应该如何做来保障自身的可信性)。然而,对于如何抽取和建模软件系统的可信性需求,目前仍然缺乏系统有效的方法。
本文提出了一个基于控例的方法来抽取和建模软件系统的可信性需求。该方法认为软件系统的功能性需求是由软件系统将要解决的问题所驱动的,而软件系统的可信性需求则是由各种影响其可信性的威胁(也即软件系统在运行过程中可能面临的各种干扰)所驱动的。基于此,该方法以基于用例从用户的角度出发抽取和建模软件系统的功能性需求为前提,提出基于控例从系统可能面临的威胁、以及由威胁引起的系统行为偏差的两个角度出发,抽取和建模软件系统的可信性需求。这种“用例+控例”模型,一方面,提供了一种统一的框架使得软件开发人员可以在需求分析层次同时建模软件系统的功能性需求和可信性需求;另一方面,也帮助软件开发人员在需求分析层次分离功能性需求和可行性需求的两种不同关注点。此外,由于“用例+控例”模型提供了软件系统功能性需求和可信性需求的总体视图,即它不仅表达了软件系统的功能性需求和可信性需求,还表达了二者之间的依赖关系,因此它也将有助于用户和开发人员理解软件系统的可信性需求。第三,由于控例继承了用例的风格,并且基于用例来抽取和建模软件系统的功能性需求、以及进行系统的设计已经有许多成熟的方法,因此基于“用例+控例"来抽取和建模软件系统的功能性需求和可信性需求,也可以使得软件开发人员能够充分利用现有的工具、技术和知识。
本文工作主要有如下几个方面:
1,提出“用例+控例”需求模型,来以一种统一的框架同时表达软件系统的功能性需求和可信性需求
基于控制论,本文将一个可信的软件系统建模为一个前馈-反馈控制系统。
在这样的一个系统中,被控对象是软件系统的核心系统,它向外提供用户需要的各种服务。为了应对威胁对软件系统的影响,系统的前馈控制器实现一组控制措施来应对可识别的威胁,而反馈控制器则实现一组控制措施来应对由未知的威胁所引起的系统行为偏差。通过前馈和反馈控制器的作用,系统能够提高其所提供服务的可信赖程度,并以此来保证自身的可信性。基于此,本文提出“用例+控例”需求模型来对软件系统的功能性需求和可信性需求进行建模。在这个模型中,用例用来建模软件系统的功能性需求(即描述软件系统向用户所应提供的服务),而控例用来建模软件系统的可信性需求(即描述软件系统为了应对威胁和系统行为偏差来保障自身的可信性所应采取的各种控制措施)。其中,前馈控例描述软件系统在应对一个可识别的威胁时所应采取的控制措施,而反馈控例则描述软件系统为了应对系统行为偏差所应采取的控制措施。
2,提出基于HAZOP的控例识别和建模过程
由于基于用例来抽取和建模软件系统的功能性需求已经有许多成熟的方法,本文主要关注于如何建立软件系统的控例模型,也即如何基于控例来抽取和建模软件系统的可信性需求。对此,本文提出了一个基于HAZOP的迭代过程。HAZOP是一个结构化的安全性分析过程。以用例所表达的软件系统功能性需求为输入,本文采用HAZOP过程来系统的识别软件系统可能面临的威胁或者其本身可能出现的系统行为偏差,并定义相应的控例来表达软件系统为了应对威胁或者系统行为偏差所应采取的控制措施。
3,提出一种“用例+控例”驱动的面向对象的系统设计方法,以获得既满足功能性需求又满足可信性需求的系统设计模型
在获得软件系统的用例(表达功能性需求)和控例(表达可信性需求)之后,如何同样以一种统一的方式推导出既满足功能性需求又满足可信性需求的系统设计,是本文所要解决的另一个问题。对此,本文扩展了用例驱动的ICONIX方法的系统设计过程,来从软件系统的用例和控例出发,推导软件系统的设计。以用例和控例为输入,该过程最终输出即满足功能性需求又满足可信性需求、体现系统静态结构的类图,和体现系统动态行为的序列图。
4,设计并实现基于“用例+控例”模型的需求抽取和建模工具
本文设计并实现了基于“用例+控例”模型的需求抽取和建模工具。该工具可以在线支持用户基于用例和控例来抽取和建模软件系统的功能性需求和可信性需求。在确定了用例所表达的软件系统功能性需求之后,该工具遵循HAZOP过程来诱导分析人员识别用例可能面临的威胁或者其可能出现的行为偏差、应对威胁或者系统行为偏差的控制措施,并生成相应的控例。该工具还内含了一个描述领域中可能存在的威胁、以及可以采取的控制措施的知识库。基于该知识库,该工具在诱导控例的过程中可以提供一些候选的威胁和应对威胁的控制措施。