软件需求可以按照不同的分类方式进行划分。以下是几种常见的分类方法:
常规需求、期望需求和意外需求
常规需求:用户认为系统应该做到的功能或性能,实现越多用户会越满意。
期望需求:用户想当然认为系统应具备的功能或性能,但并不能正确描述自己想要得到的这些功能或性能需求。如果期望需求没有得到实现,会让用户感到不满意。
意外需求(也称为兴奋需求):是用户要求范围外的功能或性能(但通常是软件开发人员很乐意赋予系统的技术特性),实现这些需求用户会更高兴,但不实现也不影响其购买的决策。意外需求是控制在开发人员手中的,开发人员可以选择实现更多的意外需求,以便得到高满意、高忠诚度的用户,也可以(出于成本或项目周期的考虑)选择不实现任何意外需求。
功能需求和非功能需求
功能需求:描述软件系统应该具有的功能,例如输入、输出、计算、报告等。功能需求是整个系统产生价值的基础,是使得一个软件应用得以存在的原因。
非功能需求:描述软件系统应该具有的性能、安全、可靠性、可用性、可维护性、易用性等方面的要求。非功能需求包括性能需求、质量属性、对外接口、约束等。非功能需求对设计和实现提出了限制,比如性能要求、质量标准,或者设计限制。
业务需求、用户需求和功能需求
业务需求:反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
用户需求:描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。
功能需求:定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
约束性需求
描述软件系统开发和使用过程中的限制和要求,例如技术、时间、成本、法律、政策等。
项目需求
描述软件项目开发和管理过程中的要求,例如项目管理、版本控制、代码审查等。
未来需求
描述软件系统未来的扩展和演化方向,例如支持新的业务需求、技术升级、平台迁移等。
这些分类方法并不是相互排斥的,它们可以相互结合使用,以全面、准确地描述软件需求的各个方面。在进行需求分析时,通常需要综合考虑这些分类,以确保需求的完整性、一致性和可行性。