少女祈祷中...

需求基础

一、需求工程

需求工程分为:需求开发、需求管理

需求开发:

  • 需求获取

  • 需求分析

  • 需求规格说明

  • 需求验证

需求工程的概念:知识点

所有需求处理活动的总和。它收集信息,分析问题,整合观点,记录需求并验证其正确性,最终描述出软件被应用后与其环境互动形成的期望效应

主要任务:

  • 同时说明软件需要“做什么”,“为什么”需要做

  • 将目标和功能映射为可行的软件行为

  • 妥善处理目标和功能随时间演化的变动情况

需求工程的活动:知识点

需求开发过程模型:知识点

需求获取

从人、文档或者环境当中获取需求的过程,要利用各种方法和技术来发现需求

主要任务:

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件商品/分钟

质量属性的开发:需求工程师,需要对照软件的质量属性检查每一项功能需求,尽力去判断质量属性存在的可能性

对外接口:知识点

解系统和其他系统之间的软硬件接口;用户界面

  • 接口的用途/输入输出/数据格式/命令格式/异常处理要求

约束:知识点

总体上限制了开发人员设计和构建系统时的选择范围(运行环境、问题域内的相关标准、商业规则)

数据需求:知识点

功能需求的补充,存储的数据描述(各个功能使用的数据信息、使用频率、可访问性要求等等)

项目实践,有没有性能需求、质量需求、对外接口、约束、数据需求?