软件工程(四)需求工程与需求分析

软件需求的定义

软件开发的首要任务是确定软件需求,软件需求指一个软件系统必须遵循的条件或具备的能力。这里的条件和能力可从两方面理解:一是用户解决问题或达到目标所需的条件或能力,即系统的外部行为;二是系统为满足合同、规范或其他规定文档所需具有的条件和能力,即系统的内部特效

软件需求一般包括三个不同的层次:业务需求、用户需求和功能需求

第一个层次是业务需求,这是客户或市场对软件的高层次目标要求,就是从业务的角度分析项目成功的预期效果。它好比需求过程中的基石,其他需求(如用户需求和功能需求)都必须与之相符

第二个层次是用户需求,即从用户使用角度来描述软件产品必须完成的任务。通常在用例模型文档中描述这个层次的需求,从用户需求还可引申出软件的质量属性。用户需求的重心是如何收集用户的需求,即确定软件系统为用户提供的功能以及软件与环境的交互

第三个层次是功能需求,定义软件开发人员必须实现的软件功能,以及为了有效实现这些功能而必须达到的非功能要求、约束条件等,从而使用户能完成他们的任务,满足业务需求。功能需求依赖于用户需求,是用户需求在系统上的具体反映

软件需求的特性

软件需求包括以下六个特性:功能性、可用性、可靠性、性能、可支持性和设计约束

  1. 功能性

    功能性需求是软件最重要的需求,可分普通功能和全局功能。普通功能泛指软件完成的一个功能或提供的一个服务。全局功能是适用于软件所有应用场景的功能

  2. 可用性

    泛指能使最终用户方便使用软件的相关需求

  3. 可靠性

    包括与系统可靠性相关的各种指标,主要有正常运行率、平均无故障时间、平均修复时间、精确度、最高错误或缺陷率等

  4. 性能

    记录与系统性能相关的各种指标,其中包括对事务的响应时间、吞吐量、容量、降级模式、资源可利用情况

  5. 可支持性

    定义所有与系统的可支持性或可维护性相关的需求,其中包括编码标准、命名约定、类库以及如何对系统进行维护操作和维护实用工具等

  6. 设计约束

    设计约束代表以及批准并必须遵循的设计约定,其中包括软件开发流程、开发工具、系统构架、编程语言、第三方构件库、运行平台和数据库系统

需求工程的由来

在引入生存周期的概念后,定义需求成为软件开发的第一项活动。随着软件规模不断扩大,需求定义与分析在整个软件开发与维护过程中越来越重要。人们逐渐认识到需求活动不仅限于软件开发的最初阶段,而是贯穿于系统开发的整个生存周期。所谓软件需求工程是一门分析、记录并维护软件需求的学科,它是软件工程的一个子领域,贯穿于软件整个生存周期的始终


需求分析与建模

需求分析通常指软件开发的第一项活动,而该活动目的主要是为待开发的软件系统进行需求与定义,并建立一个需求模型。需求分析是迭代过程,直到所编写的 SRS 真正符合用户需求为止

需求分析的步骤

软件需求分析一般包括如下的四个步骤:需求获取、需求建模、需求描述(即编写 SRS)和需求验证

  1. 需求获取

    顾名思义,需求获取就是得到正确的需求信息,常规的需求获取方法有建立联合分析小组、用户访谈与问题分析与确认等。快速原型法也可以用作一种有效的需求分析方法。在分析阶段,开发人员利用快速开发工具先建立一个系统原型,然后让用户参加评估并提出修改意见,进而逐步、准确地确定软件系统的外部行为和特征

  2. 需求建模

    建立分析模型是需求分析的首要任务,是可视化的说明软件需求的最好手段。其中占主导地位的需求建模方法有结构化分析建模和面向对象分析建模两种,这里主要介绍面向对象需求模型

    面向对象需求模型由三部分组成:用例模型、补充规约和术语表,其中用例模型又包括用例图和用例规约。用例图主要用于显示软件系统的功能,它包括用例和参与者两方面内容,而用例图下方的用例规约则是对软件系统中每个功能的具体描述。补充规约用于对全局性功能和可靠性、性能等非功能性需求进行文字性描述;后者则用于描述与系统需求相关的术语的定义。基于用例的面向对象需求建模方法,包括画用例图、写用例规约、描述补充规约和编写术语表等四步

  3. 软件需求描述

    编写软件需求规格说明书(SRS),必须用统一格式的文档进行描述,是开发人员在分析阶段需要完成的用于描述需求的文档,包括引言信息描述、功能描述、行为描述、质量保证、接口描述、其他描述

  4. 需求验证

    确保需求规格说明书可作为软件设计和最终系统验收的依据


需求管理

无论是贯穿于整个软件生存周期的需求工程,还是随需求分析建模而产生的用例模型,在定义需求的时候总伴有许多可变因素。因此,需求应该具有弹性结构,使之能适应可能的变更。一旦其中有某些需求发生变化,就能确定它可能带来的影响,进而制定出相应的策略

五个特定实践

获得对需求的理解
获取需求承诺
管理需求变更
维护对需求的双向可追溯性
标识项目工作与需求的不一致性

管理流程

上述的五个特定实践可归结为以下的三项活动,即需求确认、需求跟踪和需求变更

  1. 需求确认

    包括上述第一、第二两个特定实践。由开发方和客户共同对主要需求文档 “软件规格说明书” 进行评审,双方达成共识后作出书面承诺,使需求文档具有商业合同效力

  2. 需求跟踪

    包括上述第四、第五两个特定实践。为了有效地检验软件产品能否满足所有需求,对项目的需求进行跟踪管理,确保所有工作成果都符合用户需求

需求变更控制

需求变更的流程通常按变更申请、变更审批、变更修改、变更关闭

你可能感兴趣的:(软件工程)