软件需求
以清晰、简洁、一致且无二义性的方式,描述用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,是在开发过程中对软件系统的约束
软件需求分类
- 业务需求:是客户对于软件系统的高层次目标要求,定义了项目的远景和范围。通常涵盖以下内容:
业务:属于哪类业务范畴?为何目的?
客户:软件为谁服务?目标客户是谁?
特性:区别于其他竞争产品的特性是什么?
价值:价值体现在哪些方面? - 用户需求:从用户角度描述软件系统的功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性。
- 功能需求:描述软件系统应该提供的功能或服务,通常涉及用户或其它外部系统与目标系统之间的交互,不考虑目标系统内部的实现细节
- 非功能需求(性能需求):反映了客户对软件系统质量和性能的额外要求。比如,响应时间、数据精度、可靠性、可用性、安全性等。
非功能特性:速度,存储空间,可用性,可靠性 - 约束条件:软件系统设计和实现时必须满足的限制条件。
来源:规范/标准、硬件/资源限制、开发语言等。 - 业务规则:对某些功能的可执行性或内部执行逻辑的一些限定条件。
通常表达为“如果…,那么…”的形式;
通常是一些容易发生变化的功能。 - 外部接口需求:描述目标系统与外部环境之间的交互接口。
通常包括:用户接口需求(用户界面),硬件接口需求,软件接口需求 - 数据定义:当用户描述一个数据项或一个复杂的业务数据结构的格式或缺省值时,他们正在进行数据定义。
收集用户当前正在使用的各种数据表格、单据等,基于它们来获得对数据的详细定义。
需求工程过程
- 需求获取:通过与用户的交流以及对现有系统的观察分析,从而开发、捕获和修订用户的需求。