【系统架构师设计(9)】需求工程全生命周期管理:从定义到变更的完整体系
文章目录
- 一、需求定义:两种方法的战略选择
- 严格定义法:确定性环境下的精确制导
- 原型法:不确定性环境下的探索式发现
- 方法选择的战略逻辑
- 二、需求验证:质量保证的系统机制
- 三、需求跟踪:双向追溯的完整体系
- 四、需求变更管理:适应性的控制机制
- 需求变更管理过程
- 需求变更控制流程十大步骤
一、需求定义:两种方法的战略选择
严格定义法:确定性环境下的精确制导
严格定义法基于一个核心假设:所有需求都能够被预先定义。这个假设在确定性较高的环境中是成立的,比如传统行业的标准化业务系统开发。在这些场景中,业务规则相对成熟,用户需求相对稳定,开发团队与用户之间的沟通渠道畅通。
严格定义法的成功依赖于三个关键条件:需求的可预见性、沟通的准确性,以及表达方式的充分性。 当这三个条件同时满足时,严格定义法能够提供最高的开发效率和最低的返工成本。通过图形和文字说明,开发团队能够准确理解用户需求,用户也能够清晰看到最终系统的功能和特性。
然而,严格定义法的局限性在于它假设需求是静态的,这在快速变化的商业环境中往往是不现实的。当需求本身具有不确定性时,严格定义法可能导致项目后期的大量返工,甚至项目失败。
原型法:不确定性环境下的探索式发现
原型法承认一个现实:并非所有需求都能在开发前被准确说明。这个认知在创新性强的项目中尤为重要,比如互联网创新应用开发。在这些场景中,用户可能一开始并不清楚自己的确切需求,或者需求会随着项目推进而不断变化。
原型法的核心价值在于它通过实际的系统模型,将抽象的需求转化为具体的用户体验。 这种转化过程不仅帮助用户更好地理解自己的需求,也为开发团队提供了更直观的需求理解。更重要的是,原型法提倡的反复优化机制,使得需求能够在迭代过程中逐步完善。
方法选择的战略逻辑
选择需求定义方法的根本原则是:方法应该服务于项目目标,而不是相反。 对于需求相对确定、业务规则成熟的项目,严格定义法能够提供更高的效率和更好的控制。对于需求不确定、创新性强的项目,原型法能够提供更好的适应性和更高的成功率。
更重要的是,这两种方法并不是互斥的,而是可以有机结合的。在项目初期,可以使用原型法探索和发现需求;在需求相对稳定后,可以采用严格定义法进行精确的需求规格化。这种结合使用的方式,能够兼顾探索的灵活性和执行的精确性。
二、需求验证:质量保证的系统机制
需求验证是需求工程的重要环节,旨在确保需求的正确性、完整性、一致性等 。通常基于软件需求规格说明书(SRS )进行。
需求评审和需求测试
- 需求评审:对需求文档进行审查,检查需求是否准确、完整、一致等 。包括正式评审和非正式评审:
- 正式评审:遵循严格流程,由专业评审团队、客户等参与,全面审查需求 。
- 非正式评审:相对灵活,可能是团队内部交流、同行检查等形式 。
- 需求测试:通过测试手段验证需求能否在实际系统中正确实现,发现需求中的缺陷和问题 。
用户签字确认及作用
用户签字确认是需求验证的重要成果之一,代表用户认可需求文档内容 。它也是系统验收的标准之一,意味着用户对需求的认可,为后续开发和验收提供依据 。
三、需求跟踪:双向追溯的完整体系
需求跟踪通过正向和反向跟踪,结合需求跟踪矩阵,确保需求在整个软件开发生命周期中得到有效管理和落实,保证开发工作与需求的一致性 。
需求跟踪的方向
- 正向跟踪:从用户原始需求出发,跟踪到软件需求,再从软件需求跟踪到下游工作产品(如设计文档、代码、测试用例等 )。用于确认用户需求是否在后续开发工作中得到落实 。
- 反向跟踪:从下游工作产品回溯到软件需求,再从软件需求回溯到用户原始需求。用于确认开发工作是否与需求一致,是否存在需求遗漏 。
需求跟踪矩阵
- 用户原始需求与用例矩阵:矩阵左侧列出原始需求(如FR-1、FR-2等 ),上方列出用例(如UC-1、UC-2等 ),通过矩阵可查看每个原始需求对应哪些用例,明确需求与用例的关联关系 。
- 用例与下游工作产品矩阵:矩阵左侧列出用例(如UC-1、UC-2等 ),上方列出功能点、设计元素、代码模块、测试用例等下游工作产品元素,用于跟踪用例在各开发阶段的实现情况 。
四、需求变更管理:适应性的控制机制
需求变更管理过程
- 识别出问题:发现需求中存在的问题或需要变更的情况,这是需求变更的起点 。
- 问题分析和变更描述:深入分析问题产生的原因、影响范围等,并清晰准确地描述需求变更的具体内容 。
- 变更分析和成本计算:评估需求变更对项目进度、资源、质量等方面的影响,并计算实施变更所需的成本 。
- 变更实现:根据前面的分析结果,对需求进行修改并落实到系统中,得到修改后的需求 。
需求变更控制流程十大步骤
- 明确问题:清晰界定需求变更所针对的问题,确保对问题的理解准确一致 。
- 书面申请:提出需求变更的一方需提交正式的书面申请,详细说明变更的内容、原因等 。
- 判断变更需求类别:对需求变更进行分类,如功能变更、性能变更等,以便后续针对性处理 。
- 评估变更影响:分析需求变更对项目各方面(如进度、成本、技术实现等 )可能产生的影响 。
- 判断变更的紧急级别:确定需求变更的紧急程度,为安排变更实施顺序提供依据 。
- 沟通确认:与项目相关方(如客户、开发团队、测试团队等 )进行沟通,确认变更的必要性和可行性 。
- 明确解决方案:针对需求变更制定具体的解决方案,包括技术方案、实施计划等 。
- 审批管理:将需求变更方案提交给相关负责人或评审团队进行审批,确保变更符合项目整体目标和要求 。
- 执行变更:按照审批通过的方案实施需求变更,在系统中进行相应修改 。
- 版本控制:对变更后的需求及相关文档、代码等进行版本管理,记录变更历史,方便后续追溯和维护 。