第17章.需求管理主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查1.需求管理——意图需求的影响力整个后续的产品生命周期VS需求开发阶段需求规格说明文档后续的开发工作都应该以软件需求规格说明文档的内容为标准和目标来进行需求管理在需求开发之后的产品生命周期当中保证需求作用的有效发挥1.需求管理——任务交流涉众需要什么;将需求应用、实施到解决方案;驱动设计和实现工作;测试和验证最终产品;将需求分配到子系统;控制变更;控制迭代式开发中的变化;辅助项目管理1.需求管理——活动交流涉众需要什么驱动设计和实现工作测试和验证最终产品辅助项目管理将需求应用到解决方案将需求分配到子系统控制变更控制迭代式开发中的变化维护需求基线实现需求跟踪控制变更需求管理1.需求管理——回顾:需求管理≠需求工程的管理需求获取需求分析需求规格说明需求验证系统环境涉众硬数据需求基线需求跟踪信息变更控制项目活动当前基线修订的基线项目当前状态项目进展需求变化系统开发需求开发需求管理主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查2.需求基线已经通过正式评审和批准的规格说明或产品,它可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能修改它是被明确和固定下来的需求集合,是项目团队需要在某一特定产品版本中实现的特征和需求集合不同的需求看法没有正式文档总是处于变化之中共同的需求理解纳入配置管理的文档变更控制需求管理需求开发建立需求基线2.需求基线——描述内容标识符(ID),为后续的项目工作提供一个共同的交流参照。当前版本号(Version),保证项目的各项工作都建立在最新的一致需求基础之上。源头(Source),在需要进一步深入理解或者改变需求时,可以回溯到需求的源头。理由(Rational),提供需求产生的背景知识。优先级(Priority),后续的项目工作可以参照优先级进行安排和调度。状态(Status),交流和具体需求相关的项目工作状况。成本、工作量、风险、可变性(Cost、Effort、Risk、Volatility),为需求的设计和实现提供参考信息,驱动设计和实现工作。需求创建的日期;和需求相关的项目工作人员,包括需求的作者、设计者、实现者、测试者等;需求涉及的子系统;需求涉及的产品版本号;需求的验收和验证标准;…2.需求基线——维护活动:配置管理标识配置项递增数值,例如1,2,…x;层次式数值编码,例如1.1.1,1.2.1,…x.y.z;层次式命名编码,例如Order.Place.Date,Order.Place.Register,…Task.Step.Substep版本控制每一条单独的需求需要进行版本控制相关的需求文档也需要进行版本控制变更控制访问审计记录和审计访问的情况状态报告反映需求基线的成熟度(变化的幅度越大,成熟度越低)、稳定性(改变的次数越多,稳定性越差)等2.需求基线——维护活动:状态维护状态定义已提议(Proposed)该需求已被有相应权限的人提出已批准(Approved)该需求已经被分析,它对项目的影响已进行了估计,并且已经被分配到某一特定版本的基线中。关键涉众已同意包含这一需求,软件开发团队已承诺实现这一需求已实现(Implemented)实现这一需求的系统组件已经完成了设计和实现。这一需求已经被跟踪到相关的设计元素和实现元素已验证(Verified)已在集成产品中确认了这一需求的功能实现是正确的。这一需求已经被跟踪到相关的测试用例。这一需求目前可以被认为是已完成了已删除(Deleted)已批准的需求又从需求基线中取消了。要解释清楚为什么要删除这一需求,以及是谁决定删除的已否决(Rejected)需求已被提议,但并不在下一版本中实现它。要解释清楚为什么要否决这一需求,以及是谁决定否决的主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查3.需求跟踪避免在开发过程或者演化过程中与需求基线不一致或者偏离的风险前向跟踪是指被定义到软件需求规格说明文档之前的需求演化过程向前跟踪到需求:说明涉众的需要和目标产生了哪些软件需求从需求向后回溯:说明软件需求来源于哪些涉众的需要和目标后向跟踪是指被定义到软件需求规格说明文档之后的需求演化过程从需求向前跟踪:说明软件需求是如何被后续的开发物件支持和实现的回溯到需求的跟踪:说明各种系统开发的物件是因为什么原因(软件需求)而被开发出来的涉众需要/目标软件需求(软件需求规格说明文档)后续开发物件跟踪跟踪回溯回溯3.需求跟踪——用途(1)需求的后向跟踪可以帮助项目管理者:评估需求变更的影响;尽早发现需求之间的冲突,避免未预料的产品延期;可以收集没有被实现的需求,并估算这些需求需要的工作量;发现可以复用的已有组件,从而降低新系统开发的时间和精力;明确需求的实现进度,跟踪项目的状态。需求的后向跟踪可以帮助客户和用户:评价针对用户需求的产品的质量;可以确认成本上没有(昂贵的)镀金浪费;确认验收测试的有效性;确信开发者的关注点始终保持在需求的实现上。3.需求跟踪——用途(2)需求跟踪中针对具体需求的设计方案选择、设计假设条件以及设计结果等信息可以帮助设计人员:验证设计方案正确的满足了需求;评估需求变更对设计的影响;在设计完成很久之后仍然可以理解设计的原始思路;评估技术变化带来的影响;实现系统组件的复用;需求跟踪信息还可以帮助维护人员:评估某一个需求变化时对其他需求的影响;评估需求变化时对实现的影响;评估未变化需求对实现变更的允许度。3.需求跟踪——内容最低层次:低端用户捕获各个系统组件之间的关系更高层次:高端用户捕获组件之间的联系捕捉各个组件的工作背景例如实现的理由、实现方案的选择、实现技术的假设、决策依据、变化历程等等最高层次:高端用户捕获更高层次信息捕获项目的组织过程例如负责人、时间安排、资源消耗、最终成果等产品对象依赖满足演化理由过程对象涉众资源作用结果创建3.需求跟踪——内容低端用户业务需求用户需求、用例、外部接口需求、质量属性软件需求设计组件测试用例项目计划安排实现组件扩展细化被...满足由...验证影响被...实现验证3.需求跟踪——内容高端用户——前向3.需求跟踪——内容高端用户——后向3.需求跟踪——实现方法矩阵:简单二维关系实体关系模型:数据库交叉引用:超链接用户需求功能性需求设计组件实现组件测试用例UC-28Catalog.query.sortClasscatalogCatalog.sort()Search.7Search.8UC-29Catalog.query.importClasscatalogCatalog.import()Catalog.validate()Search.12Search.13Search.143.需求跟踪——建立过程1.明确需求跟踪需要解决的问题2.说明需求跟踪过程的目标3.明确需要捕获的跟踪联系4.组织提供资源支持和技术支持5.制定有效的过程策略6.便利需求跟踪信息的使用3.需求跟踪——需求依赖大多数的需求并不是完全独立的,它们在一种复杂的机制中互相影响需求依赖联系的特殊性并不在于它的重要性,而在于它是难以发现、建立和维护的需求交互作用管理用于发现、管理和部署(disposition)需求之间关键联系的活动依赖R1R2R3R4R5R6R1**R2**R3**R4*R5*R6主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查4.需求变更控制——需求变化需求的变化是正当和不可避免的问题发生了改变环境发生了改变需求基线存在缺陷用户变动用户对软件的认识变化相关产品的出现4.需求变更控制——变更控制过程以可控、一致的方式进行需求基线中需求的变更处理,包括对变化的评估、协调、批准或拒绝、实现和验证修改者变更控制委员会验证者评估者接收者提请者提请需求变更接受变更请求:需求变更表单变更评估变更决策执行变更验证变更决定变更拒绝变更4.需求变更控制——变更记录项目名称:请求编号:提请人:提请日期:变更请求描述:评估人:评估日期:变更评价:提请理由及优先级:评估优先级:变更类型:工作量估算:影响范围:提交CCB日期:CCB决策日期:CCB决定:修改人:修改日期:修改结果:验证人:验证日期:验证结果:备注:4.需求变更控制——变更控制委员会变更控制委员会(CCB)评价需求的变更,做出批准或者拒绝变化的确定,并确保已批准变化的实现变更控制委员会可能由来自下列部门的人员组成项目或程序管理部门;产品管理或者需求分析部门;开发部门;测试或者质量保障部门;市场或客户代表;编写用户文档的部门;技术支持或帮助部门;配置管理部门。4.需求变更控制——注意事项(1)认识到变更的必要性,并为之制定计划定义明确的变更控制过程,建立变更控制的有效渠道所有提交的需求变更请求都要进行仔细的评估是否进行变更的决定应该由变更控制委员会统一做出必须对变更的实现结果进行验证需求的变化情况要及时的通知到所有会受到影响的项目涉众4.需求变更控制——注意事项(2)维护需求基线,审计变更记录管理范围蔓延根据业务目标、产品前景和项目范围,评估每一项提议的新增需求和特性灵活应对变更请求推迟产品的交付时间。要求增派人手:在有限的情况下有效要求员工加班工作:只能适度的使用。推迟或者去除尚未实现的优先级较低的需求容许产品质量的降低:尽量不使用4.需求变更控制——注意事项(3)使用辅助工具工具应该具有以下几个特性,以支持需求变更过程:可用定义变更请求中的数据项。可用辅助项目涉众完成变更控制过程中的协作。可以帮助维护需求基线,审计变更记录。能够将变更情况及时的通知到相关人员。可以生成标准的和定制的报告和图表。主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查5.需求管理的作用增强了项目涉众对复杂产品特征在细节和相互依赖关系上的理解增强了项目涉众对需求(尤其是复杂需求)的掌握。增进了项目涉众之间的交流减少了可能的误解和交流偏差。减少了工作量的浪费,提高了生产力需求管理能够更加有效的处理需求的变更准确反映项目的状态,帮助进行更好的项目决策需求跟踪信息能够更加准确的反映项目的进展情况改变项目文化,使得需求的作用得到重视和有效发挥使得项目涉众认识到需求在项目工作中的重要性主要内容1.需求管理概述2.需求基线3.需求跟踪4.需求变更控制5.需求管理的作用6.需求管理的实践调查6.需求管理的实践调查——需求的变更有效处理变更非常重要新增(Added)需求影响最大,缺陷修复最为频繁范围蔓延常见80%信息系统;70%军事项目;45%外包项目需求可变性很高每月1~3.5%;如果每月2%,则每年1/4可变性48%变更控制还需要继续完善6.需求管理的实践调查——需求跟踪重视和关注了对后向跟踪联系的处理忽视了对前向跟踪联系的处理最低层次需求跟踪策略存在广泛高端用户的需求跟踪实现仍需努力需求之间的依赖关系困难和复杂只有大概20%的需求是完全独立的20%左右的需求产生了所有依赖关系的75%。6.需求管理的实践调查——需求管理工具非常需要需求管理工具需求数量27%:100~50036.5%:500~100036.5%:1000通用的文本处理器(WordProcessor)和电子表格(Spreadsheet)使用最为广泛部分组织自己开发了专用需求管理工具很少有组织使用专用的商业需求管理工具无法和软件的开发过程以及其他辅助工具进行有效的集成实例分析经常出现一个