第4章 需求分析
标签: 软件需求工程
《软件需求工程》 毋国庆 第二版 个人笔记
- 软件需求分析的基本任务:提炼、分析和仔细审查已收集到的需求信息,找出真正的和具体的需求,以确保所有项目相关人员都明白其含义。此外,在分析过程中,通过建立软件系统的逻辑模型,发现或找出需求信息中存在的冲突、遗漏、错误或含糊问题等。
- 工作结果:获得高质量的具体软件需求
- 具体工作:
- 建立系统关联图
- 分析需求的可行性
- 构建用户接口原型
- 确定需求的优先级
- 需求建模
- 建立数据字典
1. 建立系统关联图
- 主要是根据需求获取阶段确定的系统范围,用图形表示系统与外部实体间的关联。
- 所谓关联图就是用于描述系统与外部实体间的界限和接口的模型,而且明确通过接口的信息流和物质流,(即数据流图的0层图)
2. 分析需求的可行性
- 可行性分析的基本任务:在允许的成本和性能要求以及系统的范围能,分析每项需求得以实施的可能性。
- 目的:在于明确与每项需求相关联的风险,包括一些与其他方面的冲突、外部环境的以来和某些技术的障碍等。
- 应考虑的风险类型:
- 性能风险(该项需求可能是系统性能下降)
- 安全风险(无法满足整个系统的安全需求)
- 过程风险(可能导致需求对常规的开发过程做修改)
- 实现技术风险(可能需要使用不熟悉的技术)
- 数据库风险(导致系统不支持的非标准数据)
- 日程风险(可能会遇到技术困难,危及原定开发日程)
- 外部接口风险(可能设计外部接口)
- 稳定风险(这项需求可能是以便的,将导致开发过程的重大变动)
3. 构建用户接口原型
- 基本任务:对于软件开发人员或用户不能明确化的需求,通过建立响应的用户接口原型然后评估该原型,是的项目相关人员能更好理解所要解决的问题。
- 抛弃型原型:指在原型达到预期目的后将其抛弃(快速,粗略)
- 进化型原型:是在需求清楚定义的情况下,以渐增式方式构建原型,并使原型最终能成为软件产品的一部分,(一开始就必须编制具有较好健壮性和高质量的代码)
- 构建用户接口原型的三种方法:
- 纸上原型化方法:通过书面材料呈现给用户
- 人工模拟原型化方法:根据用户的输入由人模拟系统的响应
- 自动原型化方法:用第四代语言或其他开发环境开发一个可执行的原型
4. 确定需求的优先级
- 划分优先级可以帮助项目相关人员判断系统的核心需求,并有助于项目相关人员集中于重点问题的交流和协商,特别是涉及需求风险分析的时候
- 优先级的分配应当由软件开发人员和项目相关人员共同完成,最好是在做了一些初始的分析工作后,再进行需求优先级的分配
优先级命名 | 含义 |
---|---|
高 –> 中 –> 低 –> | 一个关键任务的需求或是下一版本所需要的 支持必要的系统操作或最终要求。如果有必要,可以延迟到下一版本 功能或质量上的增强。如果资源允许,实现这些需求总有一天使产品更完美 |
基本的 –> 条件的 –> 可选的 –> | 只有在这些需求上达成一致意见,软件才会被接受 实现这些需求将增强产品的性能,如果忽略这些需求,产品也是可以被接受的 对一个功能类有影响,实现或不实现均可 |
3 –> 2 –> 1 –> | 必须完美地实现 需要付出努力,但不必做得太完美 可以包含缺陷 |
+ 在确定了所有需求的优先级后,必须把每个需求优先级记录到需求规格说明中,并通过设置相应的字段予以标识。
5. 需求构建
- 需求建模的工作就是导出目标系统的逻辑模型(或需求模型),以明确目标系统“做什么”的问题
- 模型:为了理解事物而对事物做出的一种抽象,是对事物无歧义的书面描述
- 代表性的分析方法:
- PSA/PSL
- SREM
- SADT
- SA:结构化分析方法
- UML(统一建模语言,面向对象的分析方法)
6. 建立数据字典
- 数据字典:是定义目标系统中使用的所有数据元素和结构的含义、类型、数量值、格式和度量单位、精度及允许取值范围的共享数据仓库