51Testing软件测试论坛

标题: 软件需求管理:开启高效软件开发之旅 [打印本页]

作者: lsekfe    时间: 2024-9-18 10:48
标题: 软件需求管理:开启高效软件开发之旅
一、软件需求管理概述
软件需求管理在软件开发中占据着举足轻重的地位。它就如同软件开发过程中的导航仪,确保项目始终朝着正确的方向前进。
首先,软件需求管理对项目的顺利实施至关重要。有效的需求管理能够确保所有参与者的期望和需求得到清晰记录且达成共识。例如,通过广泛的利益相关者调研及需求优先级的设置,运用交流和谈判技巧,使各方对项目目标有一致的理解,减少日后变更的可能性。这为项目的顺利启动和推进奠定了坚实的基础。
其次,需求管理对高质量交付起着关键作用。一方面,它有助于提高需求开发的准确率。通过需求收集及分析,如采用访谈、问卷、观察、工作坊等技术获取信息,创造全面的需求清单,并进行细致的需求分析,评估其逻辑合理性、技术可行性和成本效益,确定优先级。这样可以确保开发团队准确理解需求,减少开发过程中的错误。另一方面,需求管理能够提升最终产品的质量及用户满意度。在需求验证与确认阶段,通过测试、评估和用户验收等多个环节,确保交付的产品不仅在技术上无缺陷,而且从用户体验层面达到预期。
此外,需求管理还能减少项目超支和延期的风险。通过控制需求变更,评估变更的必要性和影响,迅速做出调整,并确保每个变更都经过适当的审查和批准。同时,需求的跟踪与监控能够及时发现偏差并采取措施,持续监控确保项目保持在正确的轨道上,有效预防和管理风险。
综上所述,软件需求管理是软件开发中不可或缺的环节,对项目顺利实施和高质量交付起着至关重要的作用。


二、软件需求的分类与关系
(一)软件需求的三个层次
业务需求、用户需求和功能需求是软件开发中的三个不同层次的需求。
业务需求:业务需求代表了组织或客户高层次的目标,通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门等。它描述了组织为什么要开发一个系统,比如为了实现企业战略目标、提高市场竞争力等。业务需求强调的是组织的总体目标和业务流程,通常使用前景和范围文档来记录,也被称作项目轮廓图或市场需求文档。例如,有个公司要开发一款软件来提升企业内部管理效率,这就是业务需求的体现。
用户需求:用户需求描述的是用户的目标,或者用户要求系统必须能完成的任务。用户需求通常是通过对用户进行访谈、调查,整理用户使用场景而得出的。用例、场景描述和事件响应表都是表达用户需求的有效途径。用户需求强调的是如何满足用户的期望以及提供什么价值和功能。比如,用户希望软件能够快速响应操作、界面简洁易用等。
功能需求:功能需求规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求通常指软件或系统的行为规范和实现细节,包括输入、输出、行为和性能等方面。功能需求是需求的主体,其数量往往比用户需求高一个数量级。例如,软件应该具备数据加密功能、自动保存功能等。
这三个层次的需求相互关联、相互依存。业务需求为软件系统的开发提供了总体目标和方向,用户需求进一步细化了业务需求,而功能需求则是为了满足用户需求和业务需求而提出的具体实现方式。功能需求在软件需求中占据主体地位,因为它直接决定了软件系统的功能和特性,是开发人员进行设计和开发的主要依据。只有当业务需求、用户需求和功能需求相互协调和整合时,才能开发出满足用户和业务需求的高质量软件系统。


三、软件需求管理方法
(一)需求采集阶段
需求产生的原因多种多样,可能是高层制定的目标,比如企业为了拓展市场份额,决定开发一款新的软件产品以提升服务质量和效率。也可能是中层对工作流程的调整需求,例如部门之间协作不畅,需要软件来优化流程。基层碰到无法解决的问题也会引发需求,比如数据统计困难,需要专门的软件工具辅助。用户需要是常见的需求来源,用户对现有软件的功能不满意或者有新的需求期望。外部环境变化,如市场竞争加剧、技术进步等,也会促使软件需求的产生。竞争对手策略变化可能迫使企业开发新功能以保持竞争力,政府政策调整也可能对软件需求产生影响,比如数据安全法规的出台,可能需要软件进行相应的安全升级。
收集干系人要求 / 需求的方法众多。行业基准,即参考同行业成功案例,了解其他企业在类似问题上的解决方案,从而为自己的软件需求提供借鉴。业务规则分析,对现有业务流程中的规则进行深入剖析,找出其中可以通过软件优化的环节。头脑风暴则是召集相关人员,鼓励大家自由发表想法,激发创意,挖掘潜在需求。焦点小组可以邀请不同类型的用户代表,共同讨论软件需求,收集多样化的意见。功能分解将复杂的业务需求分解为具体的功能模块,便于更好地理解和管理需求。根源分析则是深入探究问题的根本原因,从而确定软件需求的方向。
(二)需求挖掘阶段
需求挖掘阶段的目标是找出干系人的真实需求。首先要确认干系人,包括最终用户、业务部门负责人、技术团队等。然后收集实际情况,可以通过访谈、观察、问卷等方式进行。访谈可以深入了解用户的需求和痛点,观察用户在实际工作中的操作流程,发现潜在问题。问卷则可以大规模收集用户意见,覆盖面广。整合多方面信息时,要将访谈、观察和问卷等收集到的信息进行汇总分析,交叉验证,确保信息的准确性。最后确认实际需要,通过对整合后的信息进行梳理和分析,确定真正的软件需求。
方法还包括可用性测试,让用户实际使用软件的原型或类似产品,观察用户的操作和反馈,找出需要改进的地方。竞品分析可以了解竞争对手的产品优势和不足,为自己的软件需求提供参考。数据分析可以通过对现有数据的分析,发现业务中的规律和问题,从而确定软件需求。文档分析则是对相关的业务文档、用户手册等进行分析,了解业务流程和用户需求。咨询专家可以获得专业的意见和建议,为需求挖掘提供新的视角。
(三)需求分析阶段
在需求分析阶段,需要对已经收集的真实需求进行规整。组织整理需求时,采用相同粒度描述需求,并描述需求间关系。功能分解可以将复杂的需求分解为多个子功能,便于理解和管理。业务规则分析有助于明确业务流程中的规则和约束,为软件设计提供依据。数据模型可以帮助确定软件需要处理的数据类型和结构。流程模型则描述业务流程的顺序和逻辑关系。范围模型明确软件的功能范围和边界。用户经历、场景和用例可以帮助更好地理解用户需求和使用场景。组织模型则从组织架构的角度分析需求。
需求优先级划分通过定义需求的优先级,为计划安排提供有价值的参考。可以参考的定义维度包括时间,紧急的需求优先处理;预算,在预算范围内的需求优先考虑;业务价值,对业务发展贡献大的需求优先级高;业务和技术风险,风险低的需求更容易实施;实施难度,难度小的需求可以优先进行;成功可能性,成功可能性高的需求优先安排;规范和政策,符合规范和政策的需求优先满足;与其他需求的关系,相互关联的需求可以一起考虑;与干系人的协议,根据与干系人的协议确定需求优先级;紧急程度,紧急的需求优先处理。可采用 3/4 级优先级定义,或者 MoSCoW 模型定义,其中 M = 必须、S = 应该、C = 能够、W = 将要。
(四)需求定义阶段
需求定义主要工作为根据前期整理的相关文档整理需求说明。输出包括业务需要,明确需求产生的背景和原因。需求陈述则是对需求的具体描述,清晰表达需求的内容和目标。组织整理后的需求是经过规整和优先级划分后的需求列表。需求优先级则明确了各个需求的重要程度和实施顺序。
需求说明主要包括业务需要,阐述业务需求的来源和目标。业务需求描述了业务流程和功能需求,明确软件需要实现的业务功能。系统需求则从技术角度出发,规定软件系统必须具备的条件和能力,包括性能、安全性、可扩展性等方面的要求。
(五)需求验证阶段
需求验证包括需求检验和确认,即需求过程中的检查和需求完成的测试。需求跟踪矩阵是验证需求是否得到实现的有效工具,它把产品需求从其来源连接到能满足需求的可交付成果,跟踪从需求到设计、从设计到编码、从编码到测试,从测试到可交付成果的全流程映射过程。通过需求跟踪矩阵,可以清晰地了解需求的状态,是否设计了、是否实现了、是否测试了。
验证需求的方面包括有效性,确保需求能够真正解决业务问题和满足用户需求。一致性,需求在不同阶段和不同文档中的描述要保持一致。完备性,需求要涵盖所有必要的功能和特性。现实性,需求要符合实际的技术和资源条件,能够在规定的时间和预算内实现。


四、软件需求管理的目标与原则

(一)需求管理原则
需求分类管理
软件需求管理必须对软件需求进行分类管理,划分出层次。不同层次需求的侧重点、描述方式、管理方式是不同的,一般我们进行三级分类管理。例如,可以将需求分为业务需求、用户需求和功能需求三个层次。业务需求代表组织或客户高层次的目标,用户需求描述用户的目标或任务,功能需求规定开发人员必须在产品中实现的软件功能。
通过分类管理,可以更好地理解和处理不同类型的需求,提高需求管理的效率和准确性。
分优先级
在软件项目中,如果需求没有进行优先级排序,一旦工期吃紧,开发进程很容易出错,该实现的没有实现,实现了也没有进行验证,从而导致问题频出,影响项目进度。因此我们需事先对需求进行优先级排序,这样开发人员可以从容地实现开发需求,并完成必要的验证,减少不必要的问题出现。
可采用多种维度定义需求优先级,如时间紧急程度、预算、业务价值、业务和技术风险、实施难度、成功可能性、规范和政策、与其他需求的关系、与干系人的协议等。也可采用 3/4 级优先级定义,或者 MoSCoW 模型定义,其中 M = 必须、S = 应该、C = 能够、W = 将要。
文档化
需求必须有文档记录。该文档必须是正确的、最新的、可管理的、可理解的,是经过验证的,是在受控的状态下变更的。
文档化的需求可以作为开发团队的重要参考依据,确保开发过程中的一致性和准确性。同时,也便于需求的跟踪和管理,以及在需求变更时进行有效的评估和控制。
评估变更影响
需求一旦变化,就必须对需求变更的影响进行评估,无论需求变化的程度如何,只要需求变化了就必须进行评估走正式的变更流程,这是基本的原则。
需求管理的意义就在于通过正规的流程对需求变更进行控制。如果需求变化不经过申请就进行需求变更,往往会导致软件不清楚,而不经过验证的需求变更,更是会引起新的项目缺陷。
与其他活动紧密结合
需求管理必须与需求工程活动相整合。需求管理必须与需求工程的其他活动紧密整合,进行需求管理一定不能脱离需求工程,需求工程包括了需求获取、需求分析、需求描述、需求验证、需求管理,因而需求管理必须与前面的几个需求阶段保持密切相关。
有效的需求管理与需求工程的其他活动相互配合,可以提高整个软件开发过程的效率和质量。
(二)需求管理目标
确保人员对需求理解一致
通过需求收集、分析、整理、定义和验证等过程,使所有参与软件开发的人员,包括开发人员、测试人员、项目经理、业务部门等,对软件需求有一致的理解。
例如,在需求评审阶段,各方对需求进行确认,达成统一认知和共识,推进需求实现落地。在需求评审的过程中,一定要说明清楚需求的背景、价值、意义,而不是纯粹的需求讲解,这样有助于各方对需求的理解。
确定变更管理流程
建立规范的需求变更管理流程,确保需求变更得到有效的控制和管理。
当需求发生变更时,按照变更管理流程进行评估、审批和实施,防止因需求变更导致项目进度延误、成本增加和质量下降。例如,甲方向乙方提出需求变更的请求后,乙方项目负责人对变更请求进行分析,评估对开发的影响,填写《项目需求变更申请表》,与甲方沟通确认后,双方负责人签字确认。
建立双向跟踪机制
建立需求跟踪矩阵,实现从需求到设计、从设计到编码、从编码到测试、从测试到可交付成果的全流程跟踪。
通过需求跟踪矩阵,可以清晰地了解需求的状态,是否设计了、是否实现了、是否测试了。及时发现需求在不同阶段的偏差,采取措施进行调整,确保需求得到正确的实现。
提高软件质量和可靠性
通过有效的需求管理,提高需求开发的准确率,减少开发过程中的错误。
在需求验证与确认阶段,通过测试、评估和用户验收等多个环节,确保交付的产品不仅在技术上无缺陷,而且从用户体验层面达到预期。同时,采用提高软件可靠性的方法和技术,如建立以可靠性为核心的质量标准、选择合适的开发方法、软件重用、加强测试等,提高软件的质量和可靠性。


五、软件系统需求整理方法

(一)多种收集方法
需求收集是软件系统需求整理的基础,多种收集方法能够全面获取利益相关者的观点和期望。
需求收集会议:组织需求收集会议,邀请项目团队、利益相关者和最终用户一起讨论和收集需求。这种方法有助于获取各个利益相关者的观点和期望,据统计,通过需求收集会议可以收集到约 70% 的关键需求。例如,在某大型企业的软件项目中,通过组织需求收集会议,让不同部门的人员共同参与,成功收集到了关于业务流程优化、数据管理等方面的需求,为后续的软件开发提供了明确的方向。
面谈访谈:面谈和访谈是一种直接与利益相关者交流的方法,通过与他们一对一或小组交流来收集需求。这有助于深入了解他们的需求和问题。在实际操作中,面谈访谈可以根据不同的利益相关者制定不同的访谈提纲,提高需求收集的针对性。例如,对于业务部门的负责人,可以重点了解业务目标和流程中的痛点;对于最终用户,可以关注操作的便捷性和功能需求。
问卷调查:发布问卷调查以获取利益相关者的反馈和需求。这可以帮助在较大范围内收集数据,并分析调查结果。问卷调查可以覆盖更多的利益相关者,尤其是那些无法直接参与面谈访谈的人员。通过精心设计的问卷,可以收集到定量和定性的数据,为需求分析提供有力支持。例如,在一个面向消费者的软件项目中,通过问卷调查收集了数千份反馈,了解到用户对界面设计、功能需求等方面的期望,为软件的优化提供了重要依据。
(二)协作与验证
需求工作坊:组织需求工作坊,邀请不同利益相关者一起参与,通过协作和讨论来整理需求。这有助于促进需求的共识和理解。在需求工作坊中,利益相关者可以共同探讨需求的优先级、可行性等问题,提高需求的质量。例如,在某软件开发项目中,通过组织需求工作坊,让开发团队、业务部门和最终用户共同参与,对收集到的需求进行整理和分析,达成了共识,为后续的开发工作奠定了良好的基础。
原型和模型:创建原型或模型来可视化和验证需求。这可以帮助利益相关者更好地理解系统的预期功能和外观,从而识别和澄清需求。原型和模型可以是低保真的草图,也可以是高保真的交互式模型。通过展示原型和模型,可以让利益相关者直观地感受软件系统的功能和界面,提出更有针对性的意见和建议。例如,在一个移动应用开发项目中,开发团队制作了高保真的原型,让用户在实际操作中体验应用的功能,收集到了很多宝贵的反馈,对原型进行了多次优化,最终确定了满足用户需求的设计方案。
用户故事和用例:使用用户故事或用例来描述系统的功能和用户需求。这有助于从用户的角度整理需求。用户故事和用例可以帮助开发团队更好地理解用户的需求和使用场景,提高开发的针对性。例如,在一个电商平台开发项目中,通过编写用户故事和用例,描述了用户的购物流程、支付方式、订单管理等方面的需求,为开发团队提供了清晰的开发方向。
优先级排序:根据项目目标和约束条件对需求进行优先级排序。这有助于确保关键需求首先得到满足。优先级排序可以采用多种方法,如 MoSCoW 模型(M = 必须、S = 应该、C = 能够、W = 将要)等。通过优先级排序,可以合理分配开发资源,提高项目的成功率。例如,在一个时间紧迫的项目中,通过对需求进行优先级排序,优先开发了关键功能,确保了项目在规定时间内上线。
验证确认:与利益相关者一起验证和确认需求,以确保它们准确地反映了他们的期望。这可以通过原型演示、需求审查或用户验收测试来完成。验证确认是需求整理的重要环节,通过与利益相关者的互动,可以确保需求的准确性和完整性。例如,在一个软件项目中,通过原型演示和需求审查,发现了一些需求理解上的偏差,及时进行了调整,避免了后期的开发风险。
变更管理:设立一个有效的需求变更管理流程,以确保新的需求得到适当的评估和整合,同时确保对现有需求的变更被文档化并追踪。需求变更在软件开发过程中是不可避免的,因此需要建立有效的变更管理流程。变更管理流程应包括变更申请、评估、审批、实施和验证等环节,确保变更的合理性和可控性。例如,在一个大型项目中,通过建立严格的需求变更管理流程,有效地控制了需求变更的范围和影响,确保了项目的顺利进行。


六、做好软件需求管理的维度

(一)需求挖掘
需求挖掘是软件需求管理的重要环节,它能够深入了解用户的真实需求,为软件的开发提供有力的支持。
需求挖掘的过程:
首先,进行业务方向分析。通过对企业的战略目标、市场定位、竞争对手等方面的研究,了解企业的业务需求和发展方向。例如,一家电商企业想要开发一款新的购物 APP,就需要分析当前电商市场的趋势、用户的购物习惯、竞争对手的产品特点等,从而确定自己的业务需求。
其次,进行调研报告。通过收集和分析行业数据、用户反馈、市场趋势等信息,了解用户的需求和痛点。调研报告可以采用问卷调查、访谈、数据分析等方法,收集大量的数据,并进行深入的分析和总结。例如,通过问卷调查了解用户对购物 APP 的功能需求、使用体验、满意度等方面的意见和建议;通过数据分析了解用户的购物行为、偏好、消费习惯等方面的信息。
最后,进行用户访谈。通过与用户进行面对面的交流,了解用户的需求和期望。用户访谈可以采用一对一访谈、小组访谈等形式,深入了解用户的使用场景、需求痛点、期望功能等方面的信息。例如,通过与用户进行一对一访谈,了解用户在购物过程中遇到的问题和困难,以及对购物 APP 的功能需求和期望。
需求挖掘的典型方法:
除了业务方向分析、调研报告、用户访谈等方法外,还有一些其他的典型方法,如竞品分析、头脑风暴、数据分析等。
竞品分析是通过对竞争对手的产品进行分析,了解竞争对手的产品特点、优势和不足,从而为自己的产品开发提供参考。例如,通过分析竞争对手的购物 APP 的功能、界面设计、用户体验等方面的信息,了解竞争对手的优势和不足,从而为自己的购物 APP 的开发提供参考。
头脑风暴是通过组织团队成员进行自由讨论,激发创意和灵感,挖掘潜在的需求。例如,组织团队成员进行头脑风暴,讨论购物 APP 的功能需求、用户体验、界面设计等方面的问题,激发创意和灵感,挖掘潜在的需求。
数据分析是通过对用户数据、业务数据等进行分析,了解用户的需求和行为,为产品的开发提供数据支持。例如,通过分析用户的购物行为、偏好、消费习惯等方面的信息,了解用户的需求和行为,为购物 APP 的功能设计和优化提供数据支持。
老产品经理的技巧:
老产品经理在需求挖掘方面有着丰富的经验和技巧。他们通常会采用多种方法进行需求挖掘,如业务方向分析、调研报告、用户访谈、竞品分析、头脑风暴、数据分析等,从多个角度了解用户的需求和痛点。他们还会注重与用户的沟通和交流,深入了解用户的使用场景和需求期望,从而为产品的开发提供有力的支持。此外,老产品经理还会注重需求的验证和确认,通过原型演示、用户测试等方法,验证需求的可行性和有效性,确保产品的开发符合用户的需求和期望。
(二)需求分类与排序
需求分类及排序是软件需求管理的关键环节,它能够帮助开发团队更好地理解需求,合理分配资源,提高开发效率。
需求分类:
需求可以分为功能需求、非功能需求、业务需求等不同类型。功能需求是指软件系统必须具备的功能,如购物 APP 的商品展示、购物车管理、订单处理等功能。非功能需求是指软件系统的性能、安全性、可靠性等方面的需求,如购物 APP 的响应速度、数据安全性、系统稳定性等方面的需求。业务需求是指软件系统必须满足的业务目标和需求,如购物 APP 的提高销售额、提升用户满意度、降低运营成本等方面的需求。
需求排序的定性分析工具 KANO 模型:
KANO 模型是一种常用的需求排序定性分析工具,它将需求分为必备属性、期望属性、魅力属性、无差异属性和反向属性五种类型。必备属性是指用户认为必须具备的功能,如果不具备会导致用户非常不满意;期望属性是指用户期望具备的功能,如果具备会提高用户的满意度;魅力属性是指用户意想不到的功能,如果具备会极大地提高用户的满意度;无差异属性是指用户对该功能无所谓,具备或不具备都不会影响用户的满意度;反向属性是指用户不希望具备的功能,如果具备会降低用户的满意度。通过对需求进行 KANO 模型分析,可以确定需求的优先级,为开发团队提供决策依据。
需求优先级划分规则:
需求优先级划分可以采用多种规则,如业务价值、用户需求、技术难度、时间紧迫性等。业务价值是指需求对业务目标的贡献程度,业务价值高的需求优先级高;用户需求是指需求对用户满意度的影响程度,用户需求强烈的需求优先级高;技术难度是指需求的实现难度,技术难度低的需求优先级高;时间紧迫性是指需求的紧急程度,时间紧迫的需求优先级高。通过综合考虑这些因素,可以确定需求的优先级,为开发团队合理分配资源提供依据。
变更流程化的重要性:
需求变更在软件开发过程中是不可避免的,因此需要建立有效的变更流程,确保需求变更得到有效的管理和控制。变更流程化可以帮助开发团队更好地应对需求变更,减少需求变更对项目进度、成本和质量的影响。变更流程化可以包括需求变更申请、评估、审批、实施和验证等环节,确保需求变更的合理性和有效性。
(三)保障需求分析质量
保障需求分析质量是软件需求管理的重要目标,它能够提高软件的质量和可靠性,降低开发成本和风险。
CoCode 平台提升用户需求质量的方法和工具:
CoCode 平台采用了多种方法和工具来提升用户需求质量,如需求三级分类、需求分析工具等。需求三级分类是指将需求分为业务需求、用户需求和功能需求三个层次,每个层次又可以进一步细分,从而更好地理解和管理需求。需求分析工具是指 CoCode 平台提供的一系列需求分析工具,如需求条目化、自动分解子需求、需求测试和一致性检测、UML 用例图自动生成等工具,这些工具可以帮助开发团队更好地分析和理解需求,提高需求分析的质量和效率。
例如,CoCode 需求分析工具可以快速分析用户需求缺陷,对用户完整性以及全面反应用户需求有非常重要的警示作用。工具能够在几分钟内快速分析用户需求缺陷,如歧义、重复、遗漏、不一致和复杂性等问题,精准锁定需求问题,从而有助于高效地修改需求缺陷,提高用户需求分析质量。另外,工具自动生成 UML 用例图,直观表达用户需求,为系统设计提供基础并为估算项目规模提供依据。







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2