软件需求笔记
软件需求笔记
JJuprising第一周
软件需求层次
业务需求
- 内容:表示组织或客户对系统、产品高层次的目标
- 描述方式:前景(视图)和范围文档
- 示例:为了让南海校区的同学和老师提供订餐便 利,节约排队打饭时间,同时减少食堂的浪费, 需要开发“南海校区网上订餐系统” 。
用户需求
- 内容:描述了用户要求系统、产品必须能完成的任务
- 描述方式:用例模型
- 示例:“订餐” 、 “变更订单” 、 “查看菜单” 、 “支付订单” 。
系统、功能需求
系统需求
- 描述子系统包含的需求,实现的功能。
- 示例: 系统需求:自动订餐系统要能实现选菜、选时间送餐功能等。 通过功能需求来进行细化描述。
功能需求
- 开发人员必须在产品中实现的软件功能, 用户利用这些功能来完成任务,满足业务需求。 有时称为行为需求。简而言之,描述的是开发人员需要实现什么。
- 描述方式:软件需求规格说明书(SRS)
- 示例:“订餐” Order.Place、 “创建浏览修改和 删除订餐” 、 “订餐支付” Order.Place.Pay 、 “请求送餐” Order.Deliver.Select等等
质量属性
声明各种系统操作特定的性能需求。影响功能需求
外部接口
a.用户接口;
b.硬件接口;
c.软件接口;
d.通信接口的需求。
业务规则
是对业务的某个方面进行定义或约束的语句。业务规则用于声明业务机构、或者控制、影响业务的行为。
需求的开发与管理
需求工程分为需求开发与需求管理
需求开发
需求获取
- 编写前景和范围文档
- 用户代表沟通确定用例
- 召开专门的需求获取讨论会
需求分析
- 绘制关联图
- 确定需求优先级
- 为需求建模
- 创建数据字典
规格说明
- 采用SRS模板
- 为需求分配唯一标号
需求验证
- 审查需求文档
- 测试需求
需求管理
在需求开发阶段,通过市场、客户、管理三方将需求通过分析、编写文档、评审、商议得到基准需求说明
在需求管理阶段,定义需求变更控制过程,通过基准需求说明获取当前基线。跟踪每项需求的状态,市场、客户、管理会进行需求变更,项目环境会产生项目变更,这个需求变更过程就需要对基准需求说明进行基线修正,建立基线和控制需求文档的版本。
第二周
关于签字:要建立需求协议的基线。将需求 变更控制在基线范围内。
需求分析
- 创建关联图
- 确定需求优先级
- 为需求建模
- 创建数据字典
需求验证
- 审查需求文档
需求管理
- 定义需求变更控制过程
- 建立基线和控制需求文档的版本
- 跟踪每项需求的状态
项目管理
- 选择合适的软件开发生命周期
- 管理与需求相关的风险及编写风险文档
需求分析员工作
- 获取需求
- 分析需求
- 编写需求规格说明
第三周
前景与范围文档
关联图
生态系统图
特性树
第四周
聆听客户的需求
需求获取的核心:发现用户需求
- 强调用户任务,而不是用户界面
- 强调根本需求,而不是用户表达
第五周
用例图
子系统
有时多个用例包含一组相同的步骤。为了避免每个用例都重复相同的步骤,可以定 一个单独的用例来包括这些相同的功能, 然后由其他用例来包含这个子用例。
包含关系
(2)一个用例的功能太多时,可以用包含关系创建多个子用例。
拓展关系
第六周
业务规则
是对业务的某个方面进行定义或约束的语句。业务规则用于声明业务机构、或者控制、影响业务的行为。
基本的业务规则是公司的重要资产,如果没有适当的记录和管理,就只会存在于个 人的大脑中,而不同的人对规则的理解可 能是相互矛盾的。如果知道每个应用程序在什么位置,如何实现引用与其相关的业务规则,那么当业务规则发生变化时,修改程序会容易很多。
业务规则影响了业务需求、用户需求、功能需求、质量属性
用特定数学公式货算法进行的计算:
例: 订单数量为6-10件,则单价降低10%; 数量为11-20件,单价降低20%; 数量超过20件,单价降低35%。 用表格形式表示更清晰。
一些业务规则目录的例子:
每条业务规则都有一个唯一的标识符,这样你就能从功能性需求追溯到对应的规则
规则类型:这里指出是事实、约束、动作触发规则、推论还是计算。
静态或动态:这一列说明该规则随时间变化的可能性有多大。
来源:公司政策、管理政策、主题专家、其他人士、政府法规、软件代码、数据库定义。
如何发现业务规则? 通过不同角度来提问
大作业:
第七八周
需求规格说明
优秀需求的特点
- 完整性
- 一致性
- 可修改性
- 可追溯性
避免使用有歧义的术语!!
实例
只叙述一个实体
时间起点和预防错误
标准宽泛,信息不清
歧义、信息不清
操作结果不清晰
例子
数据字典!!
是一个共享存储库,用于定义应用程序中使用的所有数据元素或属性的含义、数据类型、长度、格式、需要的精度以及数据允许的取值范围或数据值的列表。
离散值 [a|b|c]
重复项 3{a}8
基本数据元素 x=”a”
第九周
数据流图
泳道图
状态转换图
1.DF2 外部实体与实体之间不存在数据流
2.DF6 外部实体与数据存储之间不存在数据流
3.DF7 数据存储与数据存储之间不存在数据流
4.P4 加工的输入和输出不能同名
5.P1 P3 每个加工既有输入又有输出
电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+ 3 位数字 //后面继续
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
3位数字=3{数字}3 //3至3个数字
8位数字=非零数字+7位数字
7位数字=7{数字}7
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
数字=[0|1|2|3|4|5|6|7|8|9]
第十周
实体关系图 ER图
类图
关联
->
聚合
组合
依赖
泛化
实现
区别
关联VS聚合VS组合
三者都体现类之间的“拥有”关系,聚合和组合,都是整体和部分的关系,只是两种关系中类的生命周期不同。聚合是“弱拥有”,组合是“强拥有”。
关联VS依赖
这两种关系的区别很明显,关联体现的是“拥有”,依赖体现的是“使用”。
泛化VS实现
泛化体现两个类之间的关系,实现是类与接口之间的关系。泛化强调的是类之间的继承,实现强调的是类对接口的实现。
通过对比总结出类图之间4种关系的强弱:依赖<关联<聚合<组合<泛化=实现
十二周
V=E-N+2,11-10+2=3,环路复杂度为3
十三周
第一个空正推得到最长的、第二个空倒推,用最长的往前推,而且往前推要往耗时长的推,例如L是22,往BD推经过走LK,因为耗时长,找那个最需要满足的
如果是BF,最长22,到F是十六,就是十六天要到F,而BF路径最快只需要6天,因此可以拖10天。