当开发人员离开、开发供应商关系破裂或交付停滞,而业务仍依赖应用程序时,软件项目接手就变得紧迫。寻找另一个团队只是决定的一部分。您还需要确定您控制的内容、在生产中实际运行的版本以及新人是否可以在不中断客户的情况下更改软件。

软件项目接手应首先对访问、构建可重复性、数据恢复和关键业务行为进行基于证据的评估。将评估与实施承诺分开,然后商定新团队在接受责任之前必须展示的内容。一个工作网站和一个复制的存储库是有用的起点,但都不能证明该项目可以安全运行。

本指南适用于委托收购的企业,而不是评估收购的投资者。目的是保留有用的软件、发现交付风险并根据更好的证据做出下一个支出决策。它适用于内部业务应用程序、客户门户或外部团队维护的产品。

什么时候需要软件项目接手

应用程序可能需要新的所有者,而不需要新的架构。也许版本依赖于不可用的开发人员,重要的更改花费太长时间或支持责任变得不明确。在这些情况下,首要目标是连续性。建立可靠的开发和运营流程可能会带来以前看似不可能的改进。

在寻求技术解决方案之前先描述业务问题。在部署期间丢失提交的订单系统需要与根本无法构建的原型进行不同的评估。说明什么必须继续工作、下一个必要的改变以及错过它的后果。这为新供应商提供了优先调查的基础。

避免将挫败感变成立即重写概要。现有系统可能包含多年来无人记录的业务规则。替换它可以重现可见的屏幕,同时失去不可见的行为。在提出替代方案之前,接管评估应确定什么是有价值的、什么是不安全的以及可以独立进行哪些更改。

明确责任范围

用商业语言绘制应用程序边界。包括用户依赖的界面、保存记录的数据库、移动信息的集成以及在出现故障时做出响应的人员。存储库边界通常小于客户期望供应商接受的运营责任。

例如,供应商可以维护客户门户,而内部员工管理身份,而单独的公司负责计费。新团队需要知道谁可以授权每个系统中的更改。否则,一个看似很小的更新可能会引发有关访问、凭据或无人认为属于该项目的集成的争议。

记录排除的内容和记录包含的内容一样仔细。接管应用程序维护并不自动包括重新设计业务流程、清理历史数据或操作每个连接的服务。这些任务可能变得必要,但它们应该作为指定所有者的单独决策出现,而不是交付计划中的意外假设。

修改生产环境前确认访问权限与所有权

要求提供受控访问清单,涵盖源存储库、托管、域、部署系统、数据库和连接服务。确定帐户所有者、账单所有者和可以恢复访问权限的人员。在适当的情况下使用公司控制的帐户,并为新供应商提供适合评估的个人访问权限。

技术访问与使用或修改材料的合同许可是分开的。要求企业主通过适当的顾问解决有关代码权利、第三方组件和供应商协议的不确定性。技术报告可以识别缺失的证据,但它不应该假装拥有存储库可以解决所有所有权问题。

不要首先将每个凭证复制到与所有参与者共享的电子邮件或文档中。就每项任务所需的安全传输方法和最低访问权限达成一致。维护必须更换的凭据、依赖于它们的集成以及可以在不中断生产的情况下批准更改的人员的登记册。

转移代码仓库并不代表交接完成

GitHub 的存储库传输文档 指出关联的 Webhooks、服务、机密和部署密钥仍保留在传输的存储库中。它还描述了传输期间协作者的行为。这些细节很重要,因为更改显示的所有者不应被视为自动删除每个旧的集成或访问路径。

转移后查看实际的成员资格和自动化。确定哪些凭证仍属于传出供应商、哪些服务需要旧存储库位置以及目标组织应用哪些权限。通过依赖性检查规划凭证替换,因此改进访问控制不会禁用发布管道或必要的回调。

保留将存储库连接到操作系统的移交记录。它应该标识相关分支、部署源、构建配置和外部依赖项。如果生产应用程序是从不同的分支构建的或者包含从未进入版本控制的手动服务器更改,那么充满合理代码的存储库是不够的。

证明新团队能够重现应用程序

请最初没有构建该系统的人根据提供的说明和干净的结帐创建一个工作环境。记录所需的运行时、依赖项、配置和数据先决条件。缺失的步骤应该成为记录的发现,而不是其他开发人员笔记本电脑上看不见的解决方法。

演示应将已知的源修订版连接到已知的应用程序制品。如果现有部署管道可用,请检查它并在合适的非生产环境中运行它。如果唯一的工作副本位于服务器上,请在覆盖之前确定可以恢复和比较的内容。先保护再整理。

可重复的构建并不能证明每个功能都是正确的,但它改变了接管对话。该团队现在可以调查行为、添加测试并排练更改,而无需依赖个人的记忆。如果复制失败,评估应解释阻塞证据并建议有界恢复任务,而不是将不确定性隐藏在固定的实施价格内。

评估代码质量前先梳理业务行为

从创造、移动或保护商业价值的旅程开始。对于客户门户来说,这可能意味着注册、权限、订单提交和状态更新。对于内部应用程序,这可能意味着导入记录、纠正异常情况以及生成用于做出财务决策的报告。

要求操作人员展示正确和错误结果的示例。观察异常路径,而不仅仅是销售演示中使用的快乐路径。应用程序可能会正确接受标准订单,但会错误地处理已取消的订单、重复导入或具有异常帐户权限的客户。这些细节成为验收测试的基础。

代码风格可以逐步完善。改变客户余额或丢失记录的未记录行为值得尽早关注。评估应将技术发现与业务后果、拟议的行动以及解决问题所需的证据联系起来。冗长的杂乱文件目录不如对阻碍安全操作的原因的简短解释有用。

确定安全验证的范围和要求

OWASP ASVS 为测试 Web 应用程序安全控制和安全开发要求提供了基础。新加入的团队可以使用适当的需求选择来明确其安全评估。该提案应说明将审查什么内容以及企业将收到哪些证据。

优先考虑与实际应用程序相关的控制:身份验证、授权、敏感数据处理和公开接口。依赖性扫描可以提供证据,但并不能确定用户无法读取其他客户的记录。同样,在有限的审查中没有发现明显问题并不能保证应用程序是安全的。

在风险允许的情况下,将接管发现与专门的安全测试活动分开。在测试前定义环境访问、测试权限和操作约束。有用的结果是一组按优先顺序排列的发现结果和补救证据,并明确说明限制,以便企业了解哪些内容尚未检查。

实际验证数据恢复能力

显示成功备份的仪表板令人鼓舞,但接管需要证据证明企业可以恢复可用数据。确定备份的内容、它依赖于哪些应用程序组件以及谁可以访问恢复材料。如果应用程序需要它们来解释数据库记录,则包括附件、配置和其他状态。

在隔离环境中演练恢复并检查有意义的业务成果。恢复后的门户能否显示订单及其相关文档?授权员工可以完成必要的工作流程吗?记录步骤、观察到的持续时间以及任何缺少的先决条件。不要用未经测试的恢复承诺来代替经过深思熟虑的演练。

与企业主商定可接受的数据丢失窗口和服务中断。这些是评估的要求,而不是新供应商应该猜测的数字。如果当前设置无法满足这些要求,请显示差距和改进选项。将恢复更改与不相关的功能工作分开,以便可以仔细检查其效果。

检查系统集成与后台定时任务

业务应用程序通常依赖于主用户界面中缺少的作业和回调。计划的导出、付款通知、电子邮件传送和隔夜同步可以继续运行,即使没有人记得它们的创建原因。要求即将离任的团队和运营用户识别这些流程以及它们的配置位置。

跨越每个重要边界追踪代表性记录。确定当目的地不可用、同一消息再次到达以及用户在传输后更正记录时会发生什么情况。在演示中运行一次的集成可能仍会创建重复项或在中断后使记录永久卡住。

为每个重要的集成提供操作所有者和检测故障的方法。在切换中包括访问到期、服务凭证和手动恢复。这项工作可以解释为什么接管比阅读代码花费更多:新加入的团队正在继承一个依赖关系网络,其行为会影响应用程序本身之外的业务。

约定以证据为基础的交接验收

接受应该需要可观察的演示,而不是诸如“团队理解代码”之类的宽泛声明。要求供应商展示干净的构建、受控部署、关键工作流程和恢复演练。评估结束时记录所有限制以及谁拥有未解决的工作。

以下矩阵是讨论的起点。在散文中,其核心信息是控制、交付、商业行为和恢复都需要各自的证据。通过一项并不意味着通过其他项。在将测试包含在工作声明中之前,根据应用程序的职责调整测试。

面积要求提供的证据支持的决定
访问指定所有者并审查权限业务是否控制系统
构建干净的结帐产生已知的人工制品未来的变化是否可重现
行为与用户核实的关键旅程是否保留所需的结果
恢复隔离恢复和工作流程检查连续性计划是否切实可行
运营监控、升级和操作手册团队是否能够支持事件

区分评估费用和接手实施费用

请求评估范围内的GBP报价,包括指定的可交付成果、访问假设和停止点。即使企业选择了另一个实施供应商,输出也应该支持决策。一份只建议购买未定义的后续项目的报告让买家几乎没有独立价值。

然后,交付成本取决于评估发现的内容:缺少构建基础设施、分散的访问、薄弱的测试、脆弱的集成或大量的恢复工作。单独索取这些工作包。在更广泛的架构改进之前,紧急的连续性任务可能需要资金,而未解决的所有权问题可能会完全阻碍开发。

比较经常性支持成本以及初始工作。明确事故范围、维护责任、第三方账单以及未来移交的安排。在废弃的原型和关键业务生产系统中,没有可靠的通用价格范围。可靠的估计可以解释不确定性以及减少不确定性所需的证据。

按报价能够支持的决策进行比较

两个评估建议可能具有相同的价格,但提供的价值却截然不同。一种可能只检查代码,而另一种则包括构建复制和恢复演练。在将其总数视为相等之前,先比较可交付成果、应用程序边界和访问假设。询问哪些活动需要即将离职的供应商或您的员工参与。

一种说明性的预算方法是要求单独的项目用于发现、连续性工作和计划的改进。这是构建报价的一种方式,而不是市场价格主张。保持意外事件可见,并将其与指定的不确定性联系起来,例如未记录的集成,而不是接受附加到整个项目的无法解释的缓冲区。

同意其他调查结果将如何影响范围。供应商应在扩大工作之前解释调查结果、其后果以及可用的选项。企业应该能够推迟非必要的改进,而不会丢失已收集的证据。这使得评估成为一个有用的购买工具,而不是一个开放式的承诺。

选择稳定现状、替换或分阶段迁移

当应用程序支持正确的业务流程并且可以隔离其直接弱点时,稳定性就很有吸引力。重建部署管道、记录配置或通过测试保护关键旅程可能使下一个版本成为可能,而无需更换产品。根据选项所带来的结果来判断选项,而不是根据代码的年龄。

当需求发生根本性变化或有界评估表明无法经济地解决重要约束时,更换就变得更加合理。即便如此,该计划仍需要数据迁移、集成连续性以及现有业务规则的验证。新界面并不能消除了解以前系统的功能的需要。

分阶段迁移可以保留有用的组件,同时替换有问题的边界。例如,在应用程序的其余部分发生变化之前,脆弱的报告导出可能会转移到稳定的界面后面。同意共存规则和回滚路线。避免创建两个相互竞争的事实来源,员工必须每天手动协调。

假设案例:开发人员不再可用的门户

考虑一个假设的分销商,其客户门户仍然接受订单,但其原始开发人员不可用。该企业拥有存储库访问权限和托管发票,但没有人可以演示发布。这是一个说明性情况,而不是 Mecanik 客户结果或典型接管持续时间的证据。

第一次评估保留正在运行的系统,确认公司访问权限并在暂存中重现构建。工作人员展示了正常订单、取消订单和权限受限的账户。调查发现,有一次未记录的计划出口,该出口将订单发送到仓库。该过程必须包含在验收中,即使它对客户来说是不可见的。

建议的下一步是连续性工作:记录导出、添加故障可见性以及演练部署和恢复。请求的重新设计需单独定价。这个决定变得更加清晰,因为企业可以区分持续接受订单所需的工作和旨在改善外观的工作。重写可能稍后仍会发生,并有更好的证据表明必须保留哪些内容。

计划第一次可控变更

一旦存在必要的访问和操作证据,请选择足够小的更改以进行观察和逆转。它应该在执行发布过程时满足实际需求。从未触及重要工作流程的外观更改可能效果太小,而重大数据迁移会为首次发布带来不必要的暴露。

描述开发开始前的预期行为。确定将验证它的用户、要观察的操作信号以及触发回滚的条件。排练舞台中的相关步骤并记录与制作的差异。与可以做出继续或恢复决定的所有者一起安排发布。

部署后,验证业务成果以及技术运行状况。服务器可能会正常响应,而导出会静默停止。记录发生的情况并在细节新鲜时更新操作手册。第一次成功的受控变更是移交过程有效的有用证据,但它并不能结束所有未完成的评估结果。

与原开发供应商建设性合作

要求具体的移交议程,而不是模糊地要求“发送所有内容”。提前共享应用边界、所需访问和演示。使用会话来捕获决策、操作怪癖和未解决的问题。如果同意的话,记录会有所帮助,但是当系统发生变化时,可搜索的书面操作手册更容易维护。

当供应商关系紧张时,保持讨论的真实性。区分不可用的证据和已确认的缺陷。丢失的指令可能会在短时间内恢复,而可疑的问题可能需要在成为修复任务之前进行测试。指定负责人并采取后续行动,而不是在会议记录中留下含糊不清的陈述。

不要使连续性无限期地依赖于即将离任的团队回答问题。在可能的情况下商定有界的过渡安排,然后验证新上任的团队是否能够独立完成基本任务。如果无法合作,请在评估范围和估算中反映这一限制。它改变了恢复工作,而不是接受所需的证据标准。

围绕业务连续性委托项目接手

准备一份简短的简介,其中包含应用程序的目的、当前问题、已知访问、关键工作流程和所需的下一步更改。通过商定的渠道提供可用的架构说明和匿名示例。确定可以解释例外情况并批准接受的员工。这些输入可帮助供应商确定评估范围,而无需要求您了解每个技术组件。

Mecanik 的软件开发服务 可以帮助评估继承的应用程序并定义维护或进一步开发的受控路径。请求进行评估,并提供涵盖访问、构建、行为和操作的明确可交付成果。要求制定一份范围明确的 GBP 提案,将证据收集、紧急连续性工作和可选改进分开。

有用的结果是企业可以在负责任的支持下操作和更改系统。将接管视为一系列已展示的能力,每个决策都存在未解决的风险。与令人放心的代码审查或立即重写承诺相比,这为下一个供应商提供了现实的责任,并为您提供了更清晰的支出基础。



常见问题

如果没有原开发人员的帮助,新开发人员可以接管吗? 通常这是可能的,但缺少访问权限、构建说明和操作知识会增加不确定性。从保留现有系统并识别可恢复证据的有限评估开始。在新团队了解基本依赖关系之前,不要承诺交付日期。

存储库转移是否会删除先前供应商的访问权限? 不要假设它确实如此。转移后查看协作者、组织权限、部署凭据和连接的服务。关联机密和部署密钥的 GitHub 文档仍保留在已转移的存储库中,因此凭证和访问审查是单独的移交任务。

我们应该在接管期间重写申请吗? 仅当评估支持该决定时。稳定交付或更换有限的组件可以以更少的干扰解决紧迫的问题。重写仍然需要了解业务规则、迁移数据和保留集成,因此它应该有自己的评估范围。

什么决定软件项目接手成本? 访问准备情况、构建可重复性、关键工作流程、集成、安全范围和恢复要求决定了工作。请求范围内的GBP评估报价,然后将紧急的连续性工作与改进分开。比较可交付成果和假设,而不是将每次代码审查视为相同的服务。

我们如何知道移交已完成? 提前同意验收演示:审查访问、干净的构建、受控部署、关键工作流程检查以及需要时的恢复演练。列出运营负责人的姓名并记录未解决的问题。完成意味着新上任的团队可以有证据地履行商定的职责,而不仅仅是文件已易手。