一、理解
今天在课堂上被老师提问到软件需求的三个层次分别是什么,但是自己并不是很了解,于是就查阅了相关资料并进行了以下总结。
需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。
软件需求包括三个不同的层次——业务需求、用户需求和功能需求,当然也包括也包括非功能需求。
(一)概念
1、 业务需求( Business requirement )
-
描述组织或客户高层次的目标。业务需求就是系统目标,它必须是业务导向、可度量、合理、可行的。
-
业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。
-
业务需求描述了组织为什么要开发一个系统(why),即组织希望达到的目标。一般使用前景和范围( vision and scope )文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求( project charter 或 market requirement )文档。
-
组织愿景是一个组织对将使用的软件系统所要达成的目标的预期期望。这些最高级别的需求数量很少(2-5条)。
2、用户需求( user requirement )
-
描述的是用户的目标,或用户要求系统必须能完成的任务。
-
通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求。用例、用户故事、场景描述和事件等都是表达用户需求的有效途径。
-
用户需求必须能够体现软件系统将给用户带来的业务价值,并能够描述了用户能使用系统来做些什么(what)。
3、功能需求( functional requirement )
-
规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
-
功能需求有时也被称作行为需求( behavioral requirement ),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。
-
功能需求是需求的主体,它描述的是开发人员如何设计具体的解决方案来实现这些需求(how),其数量往往比用户需求高一个数量级。
-
这些需求记录在软件需求规格说明(Software Requirments Specification)中。 功能需求描述是开发人员需要实现什么。
4、补充
-
软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。
-
所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。
-
需求并未包括设计细节、实现细节、项目计划信息或测试信息。需求与这些没有关系,它关注的是充分说明你究竟想开发什么。
(二)层次之间关系
业务需求是需求定义的产物;
用户需求是需求捕获的结果;
软件需求是需求分析和建模的综合。
业务需求和用户需求只有经过需求分析的转化,变为产品的功能需求后,才能得以实现。
(三)区别
1、业务需求:公司想如何解决用户的问题,如何满足用户的欲望,并将利益最大化。
2、用户需求。用户需要在应用系统中实现什么东西,为实现这个目标,需要用户提供的全部的详细的业务说明,业务流程,表格样式等。
3、功能需求。将用户需求归类分解为计算机可以实现的子系统和功能模块,用设计语言描述和解释用户的需求,以达到可以指导程序设计的目的。
二、实例
1、这里以一个拼写检查器的软件为例。
业务需求可能是:“用户能有效地纠正文档中的拼写错误。”(即组织希望达到的目标)
用户需求可能是:“找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词。”(即用户能用系统来做些什么)
功能需求可能是:“找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换。”(即开发人员需要实现什么)
2、课堂上老师还举过一个用户自主邮寄快递的例子。
需求描述:某快递公司,就希望利用快递柜,来实现用户自助寄件的需求。
业务需求
案例的业务方是:快递公司,其业务需求就是:用户自助寄件。
业务方之所以要建设这个需求,其目的是:希望利用快递柜,实现更高效的收件服务,减少人工上门收件的等待、低效、人力投入成本高等问题。
用户需求
案例的用户是:每一个要寄快递的人,那么他们的需求就是:在进行“自助寄件”的过程中,你尽量让我简单、易用,高效、快捷。
功能需求
用户邮寄快递包含三个流程:填写快递单——找到快递柜子放快递——支付邮费
所以我们可以分别从这三个阶段具体的分析出功能需求:
-
填写快递单:一键登录、默认发货地址等。
-
找柜子放快递:验证码开启柜子、柜子使用概览等具体功能。
-
支付邮费:根据柜子体积制定相应价格等。
所以,在需求分析的过程中,我们首先要充分理解组织方的业务需求,在深入了解系统用户具体任务的需求,在经过详细的需求分析后,将业务需求和用户需求推理转化为系统的具体功能,即功能需求。