需求的分类与需求的层次
在需求工程当中,需求有不同的层次和分类。有业务需求,系统需求,用户需求等等,那么这些需求的具体含义和它们之间的相互关系你都了解吗?本文是一篇科普文章,旨在介绍下各类需求的含义及其关系。
业务需求
业务需求描述问题域中的业务目标和范围。客户或者用户提出开发一个软件系统的要求,都是为了解决他们在实际业务活动中遇到的问题,业务需求就是要描述清楚要解决哪些问题,要达到什么目标。
用户需求
如果说业务需求描述的只是一个目标或者方向,是概括性的、抽象的,相对而言,用户需求就比较具体。用户需求表达问题域中的用户期望和结果。也就是说,用户需求是用户根据他们在业务活动中的切身体会,给出的希望软件能够实现的功能和非功能的需求。
系统需求
系统需求是系统需求分析人员通过对业务需求和用户需求的分析,给出的待构建软件系统必须完成的全部任务和功能集合。系统需求定义了系统做什么。
软件需求
软件需求是指系统设计人员建立软件系统方案,将系统需求分配给软件,由软件来完成的那部分需求。
功能性需求
功能性需求是软件需求中为满足业务需求和用户需求所必须完成的各项功能。
非功能性需求
非功能性需求则是软件需求中除了功能需求以外的,关于软件特性、特征的需求。它包括性能、效率、可靠性等质量属性需求等等。
软件的质量属性需求大多来自于用户的期望,它主要包括:
性能,如吞吐量、响应能力、并发能力;
持续可用性,如操作有效性、操作效率;
可扩展性,如业务增加,组织扩张;
安全性,如数据访问安全,系统作业安全;
互操作性/可集成性;
可维护性;
可移植性,如硬件,os,数据库;
可靠性,如平均无故障时间;
可重用性,如通用功能提取,产品构件化,框架;
健壮性/鲁棒性,如容错能力;
易用性,如人机交互复杂性,操作导航能力;
可测试性,如设计可评估性,代码执行测试的效果。
以上各类需求的关系如下图:
业务需求是概要的顶层需求,用户需求是较为具体的下层需求,系统需求是由业务需求、用户需求转化而来,软件需求是系统需求的一部分,它包括功能性需求、质量属性需求以及其它非功能性需求。这些需求加上约束条件,形成软件需求规格说明。
这正是:
需求叫法各不同,自有含义在其中
相互关系理清楚,需求开发不发懞
参考书目:系统分析与设计,主编:李爱萍,出版社:人民邮电出版社