软件需求

Posted by mtt on November 1, 2017

软件需求真的太重要了QAQ,切身体会。

定义

软件需求:以一种清晰、简洁、一致且无二义性的方式,描述用户对 目标软件系统在功能、行为、性能、设计约束等方面的期望,是在开 发过程中对系统的约束。

关心做什么,而并不关心如何做的问题。

层次

业务需求

客户对于系统的高层次目标要求,定义了项目的远景和范畴

用户需求

从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性

功能需求

系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部的实现细节;

非功能需求

从各个角度对系统的约束和限制,反映了客户对软件系统质量和性能的额外要求,如响应时间、数据精度、可靠性等。检验起来非常困难,一般采用一些可度量的特性进行描述。

非功能特性 度量指标
速度 每秒处理的事务、用户的响应时间、屏幕的刷新速度
存储空间 内存空间数、硬盘空间数
可用性 培训时间、帮助页面数
可靠性 平均失败时间、系统无效的概率、失败发生率
容错性 失败后的重启次数、时间引起失败的比例、失败时数据崩溃的可能性

约束条件

系统设计和实现时必须满足的限制条件,对其进行权衡或调整是相当困难的,甚至是不可能的。来源:法规政策、硬件/资源限制、开发语言、等等。

业务规则

对某些功能的可执行性或内部执行逻辑的一些限定条件。

外部接口需求

描述系统与其所处的外部环境之间如何进行交互,包括:

  • 用户接口需求(UI)
  • 硬件接口需求
  • 软件接口需求
  • 通信接口需求

好的需求

  • 完整性
  • 正确性
  • 可行性
  • 必要性
  • 划分优先级
  • 无二义性
  • 可验证性

需求获取

面对面访谈、专题讨论会、现场观察、头脑风暴

总之,交流是关键