良好软件设计的第一步就是知道它需要做什么。软件需求包括以下几个不同类型的需求:
- 业务需求 - 以业务术语描述软件价值,即,如何发现组织需求。
- 功能需求 - 描述软件行为,即,软件打算完成什么功能。
- 非功能需求 - 描述软件必须达到的质量标准,即,软件完成的有多好。
什么是功能性需求?
功能性需求是理解你要构建什么的一种简单的方法,以便你不会吧时间和金钱浪费在错误的事情上。也是实现优雅设计的必须的信息。在软件开发阶段属于分析阶段。
- 你可以通过举行会面,会议或向用户提问题来获取需求:
- 预期完成什么任务?
- 从用户观点来看什么是最有的工作流?
- 什么是所有潜在的输入,包括它们的类型和合法的范围?
- 什么是所有预期的输出,包括类型,格式和范围?
- 必须支持什么文件格式和类型?
- 如果有,这个问题领域应该有什么思想模型?
- 他们使用什么域术语?
非功能性需求也支持功能性需求。非功能性需求描述的是操作的限制而不是实际行为。这些质量属性可能对于用户非常关键。非功能性需求通常包括:
- 性能 - 某些操作的响应速度。
- 平台兼容性 - 必须能运行在什么平台?
- 安全性 - 数据安全,包括访问和隐私。
- 可测量性 - 系统能处理真实世界的数据输入吗?
- 灵活性 - 是否能够扩展
- 可用性 - 系统容易理解,学习和使用吗?
- 并发性
- 成本
功能性需求通常有需求文档管理,每个需求都有独一无二的ID和描述。也可以提供必须的理由来陈述为什么需要这个需求。良好的功能性需求通常有以下特征:简单,易读,无歧义,可验证,使用术语。
很重要的一点:别过度描述技术细节:功能性需求应该描述要做什么,而不是如何做。
维护需求
需求总是变化,应该总是预期随着时间的推移,需求会变化。随着系统发展,用户对所需要的东西会更加清晰,因此会发生需求变化。因此,你要确保记录需求的版本和日期,方便以后了解需求的发展。需让客户知道,随着需求的变化,会延长项目的交付日期和增加开发成本。