软件需求真的太重要了QAQ,切身体会。
定义
软件需求:以一种清晰、简洁、一致且无二义性的方式,描述用户对 目标软件系统在功能、行为、性能、设计约束等方面的期望,是在开 发过程中对系统的约束。
关心做什么
,而并不关心如何做的问题。
层次
业务需求
客户对于系统的高层次目标要求,定义了项目的远景和范畴
用户需求
从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性
功能需求
系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部的实现细节;
非功能需求
从各个角度对系统的约束和限制,反映了客户对软件系统质量和性能的额外要求,如响应时间、数据精度、可靠性等。检验起来非常困难,一般采用一些可度量的特性进行描述。
非功能特性 | 度量指标 |
---|---|
速度 | 每秒处理的事务、用户的响应时间、屏幕的刷新速度 |
存储空间 | 内存空间数、硬盘空间数 |
可用性 | 培训时间、帮助页面数 |
可靠性 | 平均失败时间、系统无效的概率、失败发生率 |
容错性 | 失败后的重启次数、时间引起失败的比例、失败时数据崩溃的可能性 |
约束条件
系统设计和实现时必须满足的限制条件,对其进行权衡或调整是相当困难的,甚至是不可能的。来源:法规政策、硬件/资源限制、开发语言、等等。
业务规则
对某些功能的可执行性或内部执行逻辑的一些限定条件。
外部接口需求
描述系统与其所处的外部环境之间如何进行交互,包括:
- 用户接口需求(UI)
- 硬件接口需求
- 软件接口需求
- 通信接口需求
好的需求
- 完整性
- 正确性
- 可行性
- 必要性
- 划分优先级
- 无二义性
- 可验证性
需求获取
面对面访谈、专题讨论会、现场观察、头脑风暴
总之,交流是关键