需求工程定义
找出、分析、文档化并且检查需求的过程被称为需求工程
需求的两个描述层次
- 用户需求,指高层的抽象需求。使用自然语言、图形描述需求。
- 系统需求,指底层的详细需求。使用系统需求文档(有时被称为功能规格说明)应该精确定义要实现的需求。
功能性需求:描述系统应该做什么。What
非功能性需求:描述系统应该做得怎么样。How
非功能性需求
- 产品需求:这类需求刻画或约束软件的运行时行为。如性能需求、存储需求、可靠性需求等。
- 组织需求:这类需求来自客户和开发方组织的政策和规程的一类宽泛的系统需求。如要求开发所使用的编程语言、开发环境、过程标准,系统运行环境等。
- 外部需求:这类需求源自系统及其开发过程以外的因素。如监管需求、法律需求、道德需求等。
FURPUS+(重中之重)
FURPS是一种识别软件质量属性的模型
- 其中 F 功能部份对应功能需求,
- 另外4项 URPS 则是软件系统中重要的4项非功能性需求,有时会特别用URPS来表示此4项产品非功能性需求。
- FURPS后面的 + 可以用来强调各种不同的属性(组织非功能性需求、外部非功能性需求)
FURPS可分为以下五项:(重中之重)
- Functional(功能性):功能;
- Usability(可用性):易于使用、人性化因素、帮助、文档;
- Reliability(可靠性):鲁棒性、安全性、故障频率、可恢复性、可预测性;
- Performance(性能):速度、规模、响应时间、吞吐量、准确性、有效性、计算资源利用率;
- Supportability(可支持性):可移植性、适应性、可维护性、国际化、可配置性
需求抽取技术
需求抽取和分析过程
- 需求发现和理解
- 需求分类和组织
- 需求优先级排序和协商
- 需求文档化
需求抽取方法
- 访谈法
- 观察法
- 体验法
- 单据分析法
- 报表分析法
- 问卷调查法
- 调研会法
- 竞品调研法
用例
用例是一种使用图形化模型和结构化文本描述用户与系统间交互的方式
用例与用例之间的关系
- 扩展:一个用例被定义为基础用例的发展
- 包含:包含其他用例的行为,减少用例之间的冗余
- 继承:一个用例被泛化成多个用例
需求确认
需求确认要检查的内容:
- 正确性
- 一致性
- 完整性
- 现实性
- 可验证性
需求确认可采用的技术:
- 需求评审
- 原型化
- 测试用例生成。需求应该是可测试的