【现代软件工程】第五章

文章详细阐述了软件需求的定义、层次和分类,包括业务需求、用户需求和功能需求。它探讨了需求工程的基本活动,如需求获取、建模和验证,并介绍了各种技术,如面谈、调查和原型法。此外,文章提到了需求规格说明书的重要性和内容,以及需求验证和变更管理的重要性。
摘要由CSDN通过智能技术生成

软件需求

什么是软件需求?

需求是指用户对软件的功能和非功能的要求。

软件需求指用户对目标系统在功能、性能等方面的期望;主要有:功能需求、性能需求、可靠性需求、可用性需求、出错处理需求、接口需求等

软件需求的层次

业务需求
用户需求
功能需求
在这里插入图片描述

业务需求

业务需求反映了组织机构或客户对系统、产品高层次的目标要求
业务需求从总体上描述了为什么要开发系统(why),组织希望达到什么目标。
一般使用前景和范围(vision and scope)文档来记录业务需求,称作项目轮廓图或市场需求文档。
这些最高级别的需求数量很少(2-5条)

用户需求

用户需求(user requirement)描述了用户使用产品必须要完成的任务。
用例、场景描述和事件―响应表都是表达用户需求的有效途径。
在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立用户角度的需求。
描述了用户能使用系统来做些什么(what)

功能需求

系统分析员描述 开发人员在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
功能需求是需求的主体,它描述的是开发人员如何设计具体的解决方案来实现这些用户需求(how),其数量往往比用户需求高一个数量级。
这些需求记录在软件需求规格说明SRS(Software Requirments Specification)中。

软件需求分类

功能需求

描述系统预期提供的功能或服务
1.系统应提供的服务
2.系统如何对输入做出反应
3.系统在特定条件下的行为
4.系统不应该做什么

非功能需求

不直接与系统具体功能相关的需求。
产品需求:产品行为的需求,包括性能需求、可靠性需求和可用性需求等。
机构需求:客户和开发者所在机构中的政策和规定要求,如过程标准、实现要求、交付需求。
外部需求:所有的系统外部因素要求,如互操作需求

需求工程

需求工程的基本活动

起始—询问一系列问题,以确立:对问题的基本理解,谁需要解决方案,所期望解决方案的性质
导出—从所有利益相关者( stakeholders)处获取需求(需求获取)
精化—创建一个分析模型,定义问题的信息域、功能域和行为域 (需求建模)
协商—通过协商过程来调解客户提出的过高的目标要求和相互冲突的需求
规格说明—需求分析师的工作产品,为以下一种或几种:写好的文档、图形化的模型、形式化的数学模型、一组用户场景(用例)、原型
两种需求文档:
需求定义:客户要求的完整列表
通常由客户和需求分析师一起编写,是开发人员对系统功能的一个合同,主要给客户阅读
需求规格说明:要构建系统的规格化说明
由需求分析师编写,并由其他软件开发人员使用
确认(需求验证)—通过评审机制,寻找:内容或解释上的差错,可能需要进一步澄清的地方,丢失的信息,不一致 (开发大型系统时的主要问题),冲突或不现实的需求
需求管理,在项目执行过程中标识、控制和跟踪需求以及变更需求

在实际的开发过程中,获取、建模、编写规约和验证这些需求开发活动不会是线性地、顺序地完成。实际上,这些活动是交叉的、递增的和反复的。
在这里插入图片描述

需求获取技术

面谈
调查
观察实际业务过程
原型法
头脑风暴
基于场景的需求捕获方法

面谈

面对面交流是理解业务功能和规则的最有效方法
该方法比较耗时和资源
项目组成员与单个用户或用户组举行会议
面谈步骤:阅读背景资料,确定面谈目标,决定面谈对象,和面谈对象沟通,整理面谈报告.
非正式面谈和正式面谈

调查

向客户组织的相关人员发放调查表
关键:确定调查内容
非正式会谈,制定调查表,组织调查
使用场合:系统相关者较多,地理上分布广

观察实际业务过程

观察并记录业务流程
同用户进行交谈。
观察:有效收集信息的另一种方法
方式:直接在用户工作的地方观察他们的日常活动并记录下观察到的业务操作过程

观察方法
对办公室进行快速浏览
安排一定的时间观察用户的工作过程
同用户一道亲身实践体会工作过程

使用工作流图来进行记录
工作流 – 处理商业事务或客户请求的一系列步骤
工作流图:流程图、数据流图、活动图

原型法

软件原型是一种软件系统的局部实现技术,可以帮助软件开发人员、用户和客户更好地理解软件需求。
使用原型的主要目的:明确并完善需求,探索设计选择方案,发展为最终的产品原型

头脑风暴

一群人围绕一个特定的兴趣领域使用没有拘束的规则开展团队讨论。 提供一个能激发灵感、开阔思路的环境。
特点:自由畅谈,延迟评判,禁止批评,追求数量

基于场景的需求捕获方法

也称为情景实例的分析方法
基于对应用环境的某一特定情景的描述来阐述用户的需求
从场景的结构化描述中抽取活动图、场景、角色、数据关系图等,从而形成需求模型。

竞争性需求分析NABCD
  1. N (Need 需求)
    你的创意解决了用户的什么需求?
  2. A (Approach 做法)
    你有什么招数, 特别是独特的招数, 来解决用户的痛苦。
  3. B (Benefit 好处)
    那你这个产品用户带来什么好处呢?
  4. C (Competitors 竞争)
    与竞争对手相比你有什么优势?
  5. D (Delivery)
    你怎么让目标用户都知道你的产品? 并且让产品的用户量快速提高?
需求建模

是为最终用户所看到的系统建立一个概念模型,是对需求的抽象描述。

结构化分析

20世纪70年发展起来的面向数据流的方法
是一种自顶向下逐步求精的分析方法
根据软件内部数据传递、变换的关系进行分析的

考虑数据和处理的分析建模方法
数据作为独立实体转换
数据对象定义了对象的属性和关系
处理表明数据对象在系统内流动时的数据转换

数据流图(DFD)
数据字典(DD)
系统流程图

面向对象分析

定义类和类之间的协作方式

基于面向对象的情景分析方法
从用户角度出发考虑的功能需求
用例是系统向用户提供一个有价值的结果的某项功能

UML需求视图:
用例视图(Use case Diagram)
顺序图(Sequence Diagram)
状态图(State Diagram)
活动图(Activity Diagram)

需求规格说明书
作用

1、便于用户、分析人员和软件设计人员进行理解和交流。
2、作为软件设计的基础。
3、作为验收的依据。

语言

自然语言
是最自然的描述需求规格说明的语言
描述的内容会产生二义性,并造成软件需求理解上的错误。
形式化语言
基于数学方法而提出的一种抽象描述语言,具有严格的语法和语义。
需要具有较好的数学基础和经过严格的专门训练
结构化语言
介于自然语言和形式语言之间的语言
也称为半形式语言。

主要内容

对目标软件的各种描述:
信息描述
功能和行为描述
性能需求
设计约束
合适的验收标准。

需求验证

需求是正确的吗?
需求是一致的吗?
需求是完全的吗?
需求是实际可行的吗?
需求是必要的吗?
需求是可检验的吗?
需求是可跟踪的吗?
最后的签字

需求变更管理

确定需求变更控制过程
建立变更控制委员会(SCCB)
进行需求变更影响分析
跟踪所有受需求变更影响的工作产品
建立需求基准版本和需求控制版本文档
维护需求变更的历史记录
跟踪每项需求的状态
衡量需求稳定性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值