需求基础
一、需求工程
需求工程分为:需求开发、需求管理
需求开发:
-
需求获取
-
需求分析
-
需求规格说明
-
需求验证
需求工程的概念:知识点
所有需求处理活动的总和。它收集信息,分析问题,整合观点,记录需求并验证其正确性,最终描述出软件被应用后与其环境互动形成的期望效应
主要任务:
-
同时说明软件需要“做什么”,“为什么”需要做
-
将目标和功能映射为可行的软件行为
-
妥善处理目标和功能随时间演化的变动情况
需求工程的活动:知识点
需求开发过程模型:知识点
需求获取
从人、文档或者环境当中获取需求的过程,要利用各种方法和技术来发现需求
主要任务:
1、目标分析
-
根据问题确定目标
-
通过分析利害关系人确定目标
用户获取需求的方法:知识点
-
面谈
-
问卷
-
文档分析
-
头脑风暴
-
专题讨论
-
原型
-
民族志
-
竞品分析
需求分析
-
通过建模来整合出信息,以使人们更好的理解问题
-
为问题定义出一个需求集合,这个集合能够为问题界定一个有效的解决方案
-
检查需求当中存在的错误,遗漏,不一致等各种缺陷,并加以修正
知识点:
一、边界分析
-
定义项目的范围
-
系统边界的定义,要保证系统能够和周围环境形成有效的互动
-
系统用例图:通常用来定义系统的边界
二、需求建模
-
为展现和解释信息而进行的抽象描述活动
-
常用的技术包括类图、顺序图、状态图等建模技术
需求规格说明
在系统用户之间交流需求信息,要简洁、精确、一致和易于理解
-
定制文档模板
-
编写文档
标准:
-
每条需求正确反映用户意图
-
需求集在整体上具有完整性和一致性
-
组织方式和需求书写方式可读性可修改性
需求验证
方法:同级评审、原型、模拟
需求管理
-
保证需求作用的持续、稳定和有效发挥
-
进行变更控制
二、需求基础
什么是需求?
需求的定义:知识点
-
用户为了解决问题或达到某些目标所需要的条件或能力
-
系统或系统部件为了满足合同,标准,规范或其他正式文档所规定的要求而需要具备的条件或能力
-
对1或2中的一个条件或一种能力的一种文档化表述
需求的表述
-
系统应该…
-
在…时,系统应该…
-
用户可以通过系统…等
(系统应该允许顾客退回已经购买的产品)
需求开发的目标:知识点
问题域
现实世界运行规律的一种反映,是需求的产生地也是解决地。
最终的产品在现实中部署,可以影响问题域,但是不能任意改变现实
解决方法:需求规格说明
规格说明:知识点
软件产品的方案描述,以软件产品的运行机制为主要内容,
不是需求但实现需求,不是问题域但需要与问题域互动
规格说明要以对外交互的方式描述解决方案,既要从产品的角度而不是用户的角度描述又,不能太多地涉及软件产品的内部构造
需求层次性:知识点
-
R2:在系统使用三个月后,销售额度应该提高20%
-
R3:系统要帮助收银员完成销售处理
-
R4:收银员输入购买的商品时,系统要现实该商品的描述、单价、数量和总价
业务需求:知识点
-
战略出发点(Objective):表现为高层次的目标,描述了组织为什么要开发系统
-
特性(feature):为了满足用户的业务需求,需求工程师要描述系统高层次的解决方案,定义系统应该具备的特性
-
前景(vision):参与方对高层次的解决方案达成一致,以建立一个共同的前景
-
范围(scope):特性说明了系统为用户提供的各项功能,限定了系统的范围
例如:基于销售额提高20%的战略出发点,定义高层次的解决方案feature:(系统特性)
-
SF1:管理VIP顾客信息
-
SF2:提供VIP顾客服务,增加回头率
-
SF3:使用多样化的特价方案,吸引顾客购买,增加销售额
-
SF4:使用多样化的赠送方案,吸引顾客购买,增加销售额
用户需求:知识点
执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么
-
直接用户、间接用户(通用软件的销售人员和售后支持人员)
-
对所有的用户的需求,都应该有充分的问题域知识作为支持背景
特性:模糊、不清晰(适度的用形容词和副词);多特性混杂;多逻辑混杂(一个任务需要多次系统交互才能完成)
例如:针对SF1管理VIP顾客信息,可以建立用户需求:
-
UR1.1:系统应该允许客户经理添加、修改或者删除会员个人信息。
-
UR1.2:系统应该记录会员的购买信息
-
UR1.3:系统应该允许客户经理查看会员的个人信息和购买信息
-
UR1.4:系统应该允许客户经理查看所有会员的统计信息
补充问题域知识
获得用户真正的意图还需要背景知识,例如如果要系统允许客户经理修改会员个人信息,先要补充会员的个人信息有哪些?客户编号、姓名、联系方式、积分
系统需求
用户对系统行为的期望。每个系统级需求反映了一次外界与系统的交互行为,或者系统的一个实现细节。
描述了开发人员需要实现什么
例如:对用户需求UR1.3,系统应该允许客户经理查看会员的个人信息和购买信息,可以细分为系统级需求:
-
SR1.3.1:在接到客户经理的请求后,系统应该为客户经理提供所有会员的个人信息。
-
SR1.3.2:在客户经理输入会员的客户编号时,系统要提供该会员的个人信息
-
SR1.3.3:在客户经理选定一个会员并申请查看购买信息时,系统要提供该会员的历史记录
-
SR1.3.4:经理可以通过键盘输入客户编号,也可以通过读卡器输入客户编号
从功能需求的层次性看需求开发:知识点
练习:NBA数据分析应用
自己的答案:
业务需求:球迷希望知道比赛中选手在比赛中的综合水平
用户需求:
-
系统应该能够显示在一场比赛中每名选手的得分情况;
-
系统应该能够显示某名球员在每场比赛中的得分情况;
系统需求:
-
在接到球迷的选择比赛的请求后,系统应该为球迷提供某个比赛的详细信息和参赛球员
-
球迷可以通过输入姓名搜索某名球员
-
球迷点击某个球员的头像后,系统可以为其提供球员的详细信息
-
球迷点击统计后,系统可以生成球迷的得分情况折线图
三、需求分类
需求图谱
-
项目需求:(项目的成本要控制在60万元人民币以下)
-
过程需求:(开发者要提交软件需求规格说明文档)
-
其他需求:(系统要购买服务器,其规格不低于…)
-
不切实际的期望:(预测会员一周内会购买商品;表进行标准财务分析;收银员要在2小时内完成一个销售处理的所有操作)
-
正确的形式:如果2小时没完成则撤销已执行操作
需求的分类IEEE:知识点:
功能需求、性能需求、质量属性、对外接口、约束
-
功能需求:常见主要,能够为用户带来业务价值的系统行为
-
性能需求:速度容量吞吐量负载实时性(最低标准、一般标准、理想标准)
-
质量属性:系统为了满足规定的及隐含的所有要求而具备的要素
-
对外接口:系统和环境中其他系统之间需要建立的接口,包括硬件接口,软件接口,数据库接口等等
-
约束:进行系统构造时需要遵守的约束,例如编程语言,硬件设施等
知识点:
-
可靠性:数据下载上传中,如果网络故障,系统不能出现故障
-
可用性:系统的可用性要达到98%
-
安全性:收银员只能查看,不能修改、删除VIP顾客的信息
-
可维护性:如果系统要增加新的特价类型,要能够在2个人月内完成
-
可移植性:集中服务器要能够在1人月内从Windows7操作系统更换到Solaris10操作系统
-
易用性:使用系统1个月内的收银员进行销售处理的效率要达到10件商品/分钟
质量属性的开发:需求工程师,需要对照软件的质量属性检查每一项功能需求,尽力去判断质量属性存在的可能性
对外接口:知识点
解系统和其他系统之间的软硬件接口;用户界面
- 接口的用途/输入输出/数据格式/命令格式/异常处理要求
约束:知识点
总体上限制了开发人员设计和构建系统时的选择范围(运行环境、问题域内的相关标准、商业规则)
数据需求:知识点
功能需求的补充,存储的数据描述(各个功能使用的数据信息、使用频率、可访问性要求等等)
项目实践,有没有性能需求、质量需求、对外接口、约束、数据需求?