作为技术人员,我们以往更多的关注的是技术,但是在做个多年后,发现做正确的事比正确的做事更重要,而软件中需求的好坏就很大程度决定了你这个软件是否正确,需求确定后不管你如何实现,功能给客户直接带来的价值远远比技术直接带来的价值要高。但是需求带来的问题一直是各个软件公司项目失败的首要原因,因此需求是很复杂的,我们希望能在不断地学习和实践中不断地理清需求、提高需求分析能力。
软件需求包括3个不同的层次:
【业务需求】
描述组织或客户的高层次目标,通常问题定义本身就是业务需求。这种目标通常体现在两个方面:
问题:解决企业/组织运作过程中遇到的问题,如物资供应脱节、用户投诉量大、客户流失率高等。
机会:抓住外部环境变化所带来的机会,以便为企业带来新的发展,例如电子商务、网上银行等。
业务需求就是系统目标,它必须是业务导向的、指导软件开发的高层需求。这类需求通常来自与高层,例如项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求从总体上描述了为什么要开发系统(why),组织希望达到什么目标。一般使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。组织愿景是一个组织对将使用的软件系统所要达成的目标的预期期望。比如“希望实施CRM后公司的客户满意度达到80%以上”就是一条组织愿景。
【用户需求】
用户需求是指描述用户使用产品必须要完成什么任务,怎么完成需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求。用户需求必须能够体现软件系统将给用户带来的业务价值,或用户要求系统必须能完成的任务,也就是说用户需求描述了用户能使用系统来做些什么(what),这个层次的需求是非常重要的。
作为需求捕获阶段的主要产物,主要具备以下特点:
零散:用户会提出不同角度、不同层面、不同粒度的需求,而且常常是一句话形式提出的,如通过电话、短信等非正式方式提出的需求。
存在矛盾:由于用户处于企业/组织的不同层面,因此难免会出现盲人摸象的现象,而导致需求的片面性。
因此,我们还需要对原始需求进行分析和整理,从而得出更加精确地需求说明。用例、用户故事、特性等都是表达用户需求的有效途径。
【软件需求】
由于用户需求具有零散、矛盾的特点,因此需求分析人员还需要对其进行分析、提炼、整理,从而生成指导开发的、更准确的软件需求,软件需求是需求分析与建模的产物。
软件需求是需求的主体,它描述的是开发人员如何设计具体的解决方案来实现这些需求(how),其数量往往比用户需求高一个数量级。这些需求记录在软件需求规格说明(Software Requirments Specification)中。SRS 完整地描述了软件系统的预期特性。SRS我们一般把它当作文档,其实,SRS还可以是包含需求信息的数据库或电子表格;或者是存储在商业需求管理工 具中的信息;而对于小型项目,甚至可能是一叠索引卡片。开发、测试、质量保证、项目管理和其他相关的项目功能都要用到 SRS。
分享到:
相关推荐
本书讲述了软件开发中一个至关重要的问题—软件需求问题。软件开发人员及用户往往容易忽略信息沟通,导致软件开发出来后,不能很好地满足用户的需要。而返工则不仅在技术上给开发人员带来巨大的麻烦,而且软件性能...
软件需求是一个广泛讨论的领域,在软件工程中占有核心地位。从给定文件的片段中,我们可以提炼出关于软件需求的几个关键知识点,它们涉及需求的概念、类型、获取、规范、验证和与利益相关者的关系。 首先,需求分为...
软件需求分为不同的层次,包括: 1. **业务需求**:高层次的目标,通常由业务分析师或产品经理定义,反映了组织的业务目标和策略。 2. **用户需求**:用户对软件功能的具体期望,通常包括界面、可用性、性能等方面...
信息系统的五个组成部分包括硬件、软件、数据、手册和人,而软件工程中,需求被分为业务需求、用户需求和软件需求三个层次,分别对应业务知识、用户问题和实际软件实现的细节。优秀的需求应具备完整性、无失真性、...
软件需求包括3个不同的层次 - 业务需求、用户需求和功能需求
根据软件需求规格说明规范,需求可以分为功能需求、非功能需求和设计约束三个主要类别。功能需求描述了软件必须实现的功能;非功能需求涉及性能、安全性、可用性等方面;设计约束则限制了软件的设计和实现方式。标准...
### 软件需求分析法则:提升软件质量的关键 #### 引言 在软件开发过程中,需求分析被视为项目成功与否的基石。一个清晰且全面的需求分析不仅有助于开发团队明确目标,还能有效避免后期的返工和修改,确保项目的顺利...
《软件工程卷3:领域、需求与软件设计》通过丰富的案例研究、理论讲解和实践指导,为读者提供了深入理解这三个关键领域的知识和技能。无论是对于软件工程专业的学生,还是对于从事软件开发的专业人士来说,这本书都...
软件需求的定义在IEEE的标准术语表中分为三个方面:一是用户为解决问题或达成目标所需的能力或条件,二是系统或组件必须符合的合同、标准或规范,三是这些条件或能力的书面表达。需求分为业务需求、用户需求、功能...
第三部分 软件需求管理 第16章 需求管理的原则与实现 133 16.1 需求管理和过程能力成熟度模型 133 16.2 需求管理步骤 135 16.3 需求规格说明的版本控制 135 16.4 需求属性 136 16.5 度量需求管理的效果 138 ...
### 软件需求分析报告的关键知识点 #### 一、软件需求分析的重要性 软件需求分析是软件生命周期中的关键阶段之一,其主要目的是明确软件需要实现的功能和性能要求,确保后续的设计、开发和测试活动能够围绕这些...
书中第一章介绍了软件需求的基本概念,指出需求是软件开发的核心,它分为不同层次,并强调高质量需求的重要性,包括清晰性、完整性和可验证性等特征。需求的开发和管理是一个动态过程,涉及需求的收集、分析、规格...
在软件开发过程中,软件需求分析与设计是两个紧密相连的阶段。软件需求分析的结果将作为软件设计的输入,软件设计的结果将作为软件开发的输入。因此,软件需求分析与设计是软件开发的关键阶段,它们对软件的成功起着...
功能需求通常被分为三个层次:业务需求、用户需求和系统需求。业务需求是从企业或组织的角度出发,描述了软件系统应该提供的价值和服务;用户需求是从最终用户的视角出发,描述了他们期望从软件系统获得的功能和服务...
软件需求分析是软件工程中的一個重要步骤,它是指对软件系统的需求进行收集、分析、记录和维护的过程。软件需求分析的目的是为了确保软件系统满足用户的需求和期望。 什么是需求?根据IEEE的定义,需求是指用户对...
软件需求分析过程可能会很复杂,特别是当项目涉及多个利益相关者、技术风险和不确定性时。使用建模工具,如用例图、活动图和顺序图,可以帮助团队更直观地理解需求。此外,持续的沟通和协作是确保需求被正确理解并...