需求开发指南1-需求的基本概念

文/fasiondog

作者:fasiondog  来源:http://fasiondog.cn/archives/1378.html

在进行需求开发活动之前,应该首先明白“什么是软件需求”?这个问题看似简单却不容易回答,也许很多人会简单的认为软件需求就是用户需要实现的功能加上一些非功能需求方面的要求。但这样的理解却并不完整,如果对用户所处的业务场景没有建立正确的认识,经常会给工作带来麻烦。另外,在软件工程活动实践中,由于不同的工作环境、经验经历等造成了不同人员之间“术语”含义的不同,而导致工作中沟通和理解的差异。因此,本章对一些与软件工程中需求活动相关的关键概念进行说明,并统一相关的需求术语。

1.1 需求定义

需求按接收、分析、分解的顺序,主要分为用户需求、业务需求、系统需求和模块需求。其中系统需求和模块需求才是通常所指的软件需求。这几类需求的具体含义见下:

用户需求:笼统来说代表了用户的期望及用户希望能够解决的问题。不同的用户有不同的期望,项目的发起人的期望通常对应着项目的业务目标;产品实际使用者的期望,则更多的是具体的操作要求、界面要求、方便性等。同样,用户需求的来源也多种多样,包括电话、便签、会议、规范、法律等等。从各个途径收集来的未经处理的需求,称为“原始需求”,而原始需求经过条目化和整理后,则称为用户需求。其最终的工作结果通常为一份清单(或者条目化的文字文档)。

用户需求来源

用户需求来源

业务需求:表示组织或客户高层次的目标。业务需求通常来自于项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统,即希望达到的目标。从系统范围的角度来说,业务需求明确了企业或组织作为一个整体(系统)是如何为其客户解决问题的。例如,将银行作为一个整体,银行是如何和其存款客户进行交互从而为客户提供存款服务。业务用例是业务需求的具体化,是规格化的语言描述和定义具体的业务需求。

系统需求:系统需求是在用户需求和业务需求的基础上通过抽象、提炼、拆分、合并等手段获得的待实现的系统功能、约束及其整体特性。通过行之有效的工程方法,需求人员能够更加快速、准确、完整的得到系统的功能,并对实现目标有更清楚的理解与深刻的认识。系统需求是和系统边界的划定密切相关的。由于边界划定的不同,经常导致大家混淆系统、子系统、模块的区别,详见第2.2节层次与边界。

模块需求:模块需求是指应用系统或项目中的软件子系统或子程序的功能和性能需求,这也是我们通常在软件项目开发过程中提到的“软件需求”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注