双向追溯(bidirectional traceability)的原理和应用

首席咨询 郑立 HiAgile 2023-11-17 08:30


前言

双向追溯(bidirectional traceability)是软件开发和质量管理领域的一个重要概念,它指的是在软件开发过程中对需求、设计、代码和测试之间的相互关联和影响进行系统地跟踪和管理。双向追溯不仅可以向前追溯,即从需求到实现的过程;也可以向后追溯,即从实现回溯到原始需求。这种机制的核心目的是确保软件开发过程中的每个部分都与其相关的需求和目标保持一致。

1

需求到代码的追溯

在软件开发的早期阶段,开发人员根据用户需求或业务需求编写代码。双向追溯机制要求每一块代码都能追溯到其对应的需求,确保开发工作符合预定目标。下面是个例子:

假设一个银行要开发一个新的在线银行系统。其中一个需求是:客户应能通过系统在线查看他们的账户余额。

追溯实施过程如下:

需求定义:首先,这个需求被定义并记录在需求文档中,例如:“系统应提供一个功能,允许客户登录后查看其当前账户余额。”

设计与开发:开发团队设计并实现了这一功能,编写了相应的代码模块。例如,他们可能创建了一个名为 AccountBalanceView 的类,该类包括显示账户余额的逻辑。

追溯链接:在开发过程中,开发人员确保这段代码与上述需求直接关联。这可以通过代码注释、文档记录或专用的追溯管理工具实现。

结果:当有人审查或评估 AccountBalanceView 类时,他们可以通过追溯链清楚地看到,这段代码是为了实现“允许客户查看账户余额”的需求。


2

代码到需求的追溯

在软件开发后期或维护阶段,双向追溯使得开发人员和测试人员可以从特定的代码片段追溯回其原始需求。这有助于理解代码的业务目的,尤其在进行错误修复、性能优化或功能改进时尤为重要。下面是个例子:

在对同一个在线银行系统进行维护时,开发团队发现了一个名为 TransactionHistoryComponent 的代码组件,该组件用于展示用户的交易历史记录。

追溯实施:

代码审查:在进行代码优化或修复漏洞时,开发人员需要理解 TransactionHistoryComponent 的业务目的和背景。

追溯过程:通过查阅追溯文档或工具,开发人员发现这个组件是为了满足特定需求而创建的,即:“客户应能在系统中查看其过去交易的完整历史记录。”

理解与应用:这种追溯帮助开发人员理解了该组件的重要性和使用上下文,确保在进行任何修改时都能维持其原有的业务目的和功能。

结果:这样一来,即使在系统迭代和维护过程中,TransactionHistoryComponent 的改动也能保持与原始需求的一致性,避免引入与需求不符的变更。

3

测试覆盖率与追溯

双向追溯还包括了测试用例与需求和代码的关联。这使得团队可以评估测试覆盖率,即测试用例是否覆盖了所有的需求和代码路径,从而确保软件质量。同样举个例子:

假设有一个软件项目团队正在开发一个电子商务应用。其中一个关键功能是“购物车”,允许用户添加、移除商品,并计算总价。

测试覆盖率的实施:

测试用例设计:针对“购物车”功能,测试团队设计了一系列的测试用例。这些用例包括:"添加商品到购物车;从购物车移除商品;计算购物车中商品的总价;检查在添加重复商品时的行为。"

测试执行与覆盖率统计:测试团队执行这些测试用例,并使用工具如 Hi-CC 来计算测试覆盖率。测试覆盖率工具跟踪了哪些代码行被测试用例执行覆盖。

覆盖率分析:测试覆盖率报告显示:“添加商品”和“计算总价”功能的代码覆盖率达到了100%,意味着所有相关代码都经过了测试。但是,“移除商品”的功能只有 75% 的代码覆盖率,说明有部分代码未被测试用例覆盖。

追溯的实施:

识别未覆盖代码:团队使用 Hi-CC 的追溯功能来确定哪部分代码没有被覆盖,发现是处理特定错误情况(如尝试移除不存在的商品)的代码未被测试。

增加测试用例:为了提高覆盖率,测试团队设计了额外的测试用例来覆盖这些情况。

再次执行测试:执行新的测试用例后,测试覆盖率提升,确保了代码的质量和健壮性。

通过这种测试覆盖率与追溯的结合,团队能够确保所有重要的代码路径都经过了测试,从而提升软件的质量和可靠性。这种方法帮助团队系统地识别和填补测试盲区,确保应用的每个功能都经过充分的验证,满足用户需求和业务目标。

4

变更管理

在软件开发过程中,需求可能会发生变化。双向追溯帮助团队理解这些变更对现有代码和测试的影响,从而有效管理变更带来的风险。下面举例说明下:

一个团队正在开发一个电子健康记录系统。在项目后期,由于法规变更,需要增加对患者隐私数据的额外保护措施。

变更请求的双向追溯过程如下:

向前追溯:团队首先审查当前系统的需求文档,确定哪些需求将受到新法规的影响。

向后追溯:从这些需求出发,使用追溯链接找到相应的设计文档、代码实现和测试用例。

影响评估:团队评估现有代码和功能如何改变才能符合新的隐私保护要求。这包括审查与隐私相关的所有代码模块和数据库结构。

实施变更:对相关代码进行修改,例如增加加密措施、改进访问控制等。同时更新设计文档和需求文档,确保文档反映了代码的变更。

测试用例更新与追溯:更新测试用例以覆盖新的隐私保护措施,确保测试用例的追溯链正确指向修改后的需求和代码。

验证与反馈:执行测试用例以验证新变更的正确实施。利用反向追溯确认所有相关的需求都已得到满足。

通过双向追溯,团队能够确保每次变更都精确对应于特定的需求,并且所有相关的代码和测试都得到了适当的更新和验证。这种方法提高了变更实施的精确性和效率,同时降低了遗漏重要变更或引入新错误的风险。在这个例子中,双向追溯帮助团队系统地管理对电子健康记录系统的法规遵从性变更,确保了软件的合规性和功能完整性。

图片

双向追溯的价值

图片

1. 提高质量与可靠性:通过确保代码实现与需求一致,双向追溯提高了软件的质量和可靠性。

2. 促进团队沟通:双向追溯促进了跨职能团队之间的沟通,帮助开发人员、测试人员和业务分析师更好地理解彼此的工作。

图片

双向追溯的难点

图片

1. 实施双向追溯需要强有力的工具支持和严格的过程管理。它可能增加一些文档工作和跟踪工作,需要团队成员投入额外的时间和精力。

2. 工具和技术的支持:例如,Hi-CC软件就提供了代码测试覆盖率统计和需求到代码的双向追溯功能,这有助于实现高效的双向追溯管理。

图片

结束语

图片

总的来说,双向追溯是提高软件开发效率和质量的关键机制,尽管它带来了一定的挑战,但其在现代软件开发中的价值是不可忽视的。通过正确的工具和流程,可以大大提升软件项目的成功率,确保产品满足用户需求并具有高质量标准。