一、软件可靠性工程与需求工程的关系
软件需求分析是软件产品开发设计的第一步,也是最重要的一步。其工作质量的高低,不仅直接影响后续工程的质量,而且决定着所开发软件产品的价值。当然,完整、严密地描述用户需求,并不是一件十分容易的事。有些软件产品之所以功能不完善、性能差、可靠性低、可用度差、甚至不能使用,多数是因为用户需求分析工作不彻底所致。但是,目前软件可靠性工程研究与实践的重点,在于软件测试等一些事后的验证性工作,对软件可靠性设计重视不多,这在需求分析等前期阶段尤为突出。
二、软件需求分析
软件需求分析是软件设计的基础。它采用一系列行之有效的技术、方法和工具来分析用户需求,通过特定的形式系统地描述拟开发软件的功能、性能,以及行为特征和相关约束,定义所有内外部特征,最后形成既能指导软件设计、又能同用户沟通的软件需求规格说明。它覆盖了软件设计之前的各项活动。
软件需求分析是从用户最初的非形式化需求,到满足用户要求的软件产品设计的一个映射。
在软件计划的基础上,从深入分析用户需求出发,把用户的需求变换成以计算机为基础的系统需求。需求分析实际上是调查、评价、以致肯定用户对软件的需求的过程,是一个对用户意图不断进行揭示和判断的过程。其目的在于细化、精化软件的作用范围,确定拟开发软件的功能和性能,分析并确认其过程,确定软件成分及接口。
1.软件需求分析的任务与步骤
软件需求分析可分为四个步骤。
①归纳整理用户提出的各种问题和要求,弄清用户企图通过软件达到的目的,并把它作为要求和条件予以明确。即分析人员借助各种工具和方法,获得对用户需求的基本理解,然后在需求获取方法的驱动和指导下,从非形式需求陈述中提取出用户的实际需求。由此确定软件的功能、性能、接口关系及有关属性、软件条件、限制和边界等,标定软件的作用范围,确认支持性的软硬件环境及辅助工具与条件。此阶段还为软件需求分析活动提供了相应的过程控制机制。
②在需求获取的基础上,建立逻辑模型,使用自顶向下、逐层分解的方法,把用户对软件的需求分解成若干子系统或软件成分,将外部需求赋予软件的各个功能成分,定义软件成分的内部功能,并标定它们之间的接口。
③用准确、简练、无二义性的语言将用户需求规格化为软件需求规格说明,使用户和开发人员对拟开发软件有共同的理解,它同时还是软件确认、测试、验收和交付的基准。
④通过需求评审,对需求获取、需求定义等进行全面审查,力图发现需求分析中的错误和缺陷,最终确认软件需求规格说明。同时,以需求规格说明为输入,通过符号执行、模拟或快速原型等方法,向用户展示需求规格说明所刻划的系统外部行为和相应特征。
2.软件需求定义方法
在需求分析的前期,用户往往难以对其要求进行准确、完整的描述,因此获取并定义软件需求特别重要。常用的需求定义方法是需求背景描述法。它可以通过对下面问题的获取与分析,来获得对用户需求的定义。
- 用户需求的数学、物理和工程技术等背景。
- 相关数据量及其数据的准确性和提供方式。
- 用户需求的规模和一般限制。
- 精度要求。
- 原始数据的诊断要求和参数缺省处理要求。
- 操作控制与环境要求。
- 可靠性要求。
在规范用户需求的基础上,分析用户的需求背景,应特别注意其差异。根据开发和运行环境限制,得到软件功能和性能的初始集合,最终形成需求集合。
另一种方法是问题求解过程定义。因为有些需求难以用简练的原始问题模型或输入/输出规格予以定义,需要把解决问题的过程逐步描述出来,即指定每一步的数学模型、数