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