外包开发烂尾、开发商联系不上,系统还能救吗?接手前先做这几件事
RELIFT 技术团队发布 阅读约 4 分钟
大多数情况下能救,但第一步不是急着改代码,而是先把源代码、服务器、域名、数据库和各类平台账号拿回到企业自己手里,并确认合同中软件著作权的归属;然后评估代码能否独立构建部署、完成度和质量如何,再决定是继续交付、局部重做还是整体重做。
- 先拿回控制权:源码、服务器、域名、数据库、小程序和支付等平台账号,都要在企业自己名下
- 委托开发的软件,著作权归属以书面合同约定为准;没有约定的,依法属于开发方
- 评估三件事:能不能从源码独立构建部署、功能完成了多少、代码质量和安全隐患如何
- 先稳住再继续:修关键问题、建立部署和备份流程、补文档
- 值得继续就接着做,质量太差的部分逐块重做,不要为了“已经花了钱”硬撑
这类“新系统”通常卡在哪里?
和用了十几年的老系统不同,这类系统往往是这几年刚做的管理后台、小程序或业务系统,问题大多出在人和钱上:
| 情况 | 典型表现 |
|---|---|
| 开发商联系不上 | 外包公司收款后失联、倒闭或转行,出了问题找不到人 |
| 项目做了一半烂尾 | 能演示,但很多功能用不起来;原团队不愿意或没能力继续 |
| 预算花完了还没上线 | 继续按原方案投入不划算,推倒重来又舍不得 |
| 核心开发离职 | 一直是某个人在维护,走了之后没有交接、没人敢动 |
| 代码质量差 | 能跑,但每次改需求都会引出新问题,越改越慢 |
| 只有程序没有源码 | 当初没约定交付源码,或者交接时没拿全 |
这些情况的共同点是:企业对自己的系统失去了控制。所以接手的第一步,不是写代码,而是把控制权拿回来。
第一步:先把控制权拿回来
很多企业直到出事才发现,系统的关键资产都登记在开发商名下。接手时建议逐项清点:
| 资产 | 要确认什么 |
|---|---|
| 源代码 | 是否完整、是否是线上正在运行的版本、放在谁的代码仓库里 |
| 服务器 / 云账号 | 云账号是谁的、谁有登录权限、服务器密码和密钥在谁手里 |
| 域名和备案 | 域名注册人是谁、备案主体是谁 |
| 数据库 | 在哪台服务器、谁有账号、有没有备份 |
| 小程序 / 公众号 / App 账号 | 账号主体是谁、管理员是谁 |
| 支付商户号、短信、地图等第三方服务 | 开通主体是谁、接口密钥是否写死在代码里 |
| SSL 证书等其它配置 | 到期时间、续费账号 |
处理原则:
- 能转到企业名下的,尽快转。域名、云资源、各类平台账号的转移和主体变更,各平台都有自己的流程和条件,以官方最新规定为准。
- 能导出的数据,先导出备份。在控制权还没完全拿回来之前,先保住数据。
- 更换所有已知的密码和密钥。原团队掌握的服务器密码、数据库密码、第三方接口密钥都应该更换,代码里写死的密钥要改为配置文件管理。
一定要先确认:软件著作权归谁?
这是最容易被忽略、也最容易出问题的一点。根据《计算机软件保护条例》第十一条,接受他人委托开发的软件,其著作权的归属由委托人与受托人签订书面合同约定;无书面合同或者合同未作明确约定的,其著作权由受托人享有。
也就是说,如果当初的合同里没有写清楚,花钱请人开发的系统,著作权可能并不属于企业自己。这会直接影响能不能合法地修改、继续开发和交给第三方维护。
建议:
- 找出原始合同,看是否约定了源代码交付和著作权归属;
- 约定不清楚的,尽早和原开发方协商补签协议;
- 涉及纠纷时,请咨询专业律师。本文只做一般性说明,不构成法律意见。
第二步:评估现状,值不值得继续做?
拿回控制权之后,再做技术评估。重点看三件事:
1. 能不能从源码独立构建和部署?
用拿到的源码,在一台干净的环境里重新构建并部署一遍,看能否得到和线上一致的系统。如果做不到,说明源码不完整、不是线上版本,或者部署依赖于某些没有交接的配置,这本身就是需要优先解决的风险。
2. 功能完成了多少?
对照当初的需求文档或合同,逐项核对哪些功能已经可用、哪些只做了界面、哪些完全没做。很多烂尾项目“看起来完成了八成”,实际能用的往往少得多。
3. 代码质量和安全隐患如何?
- 有没有把密码、密钥写死在代码里;
- 有没有明显的安全问题,例如未校验权限的接口、可以被注入的查询;
- 代码结构是否清晰,改一个功能会不会牵连很多地方;
- 有没有任何文档和测试。
继续做、局部重做,还是整体重做?
| 评估结果 | 建议 |
|---|---|
| 能独立部署,代码基本清晰,完成度较高 | 先稳住,再按优先级继续交付剩余功能 |
| 能运行,但部分模块质量很差、频繁出错 | 保留能用的部分,质量差的模块逐块重做,新旧并行 |
| 无法独立部署,或大部分代码难以维护 | 以现有系统和数据为参照整理业务逻辑,评估整体重做 |
判断时要避免一个常见误区:因为“已经花了很多钱”而硬撑。已经投入的成本收不回来,决策应该只看接下来怎么做更划算、风险更小。
第三步:先稳住,再往下走
不管最终选择哪条路,都建议先做这几件事:
- 修复影响使用的关键问题,让业务先能正常运转;
- 建立可重复的构建、部署和备份流程,以后任何人都能照着部署;
- 补齐文档:数据库说明、接口说明、部署和运维手册;
- 把代码放进企业自己的代码仓库,每次修改都有记录。
做完这一步,系统就从“只有原来那个人懂”变成了“任何合格的工程师都能接手”,后面无论继续开发还是重做,风险都小得多。
以后怎么避免再次烂尾?
- 合同里写明源代码交付和软件著作权归属;
- 代码放在企业自己的代码仓库,开发方只开放协作权限;
- 服务器、域名、小程序、支付等账号用企业主体注册,开发方只授予必要的权限;
- 按里程碑验收付款,每个里程碑都要求交付可运行的版本、源码、部署文档和数据库说明;
- 关键系统至少有两个人了解,避免只依赖某一个人。
常见问题
- 开发商已经联系不上了,手里只有一个能用的后台网址,怎么办?
- 先确认服务器、域名、云账号是谁的。如果登记在企业名下,可以通过云平台和域名注册商找回控制权,再从服务器上取回程序和数据库。如果都在开发商名下,要尽快通过合同和法律途径处理,同时立即备份能导出的数据。
- 只有编译好的程序,没有源代码,还能继续开发吗?
- 可以评估。从编译好的程序里恢复出的代码通常不完整,也不适合长期维护;更常见的做法是以现有程序和数据库为参照,把业务逻辑整理清楚后逐块重做。是否合规,还要看合同对源码和著作权的约定。
- 原来的代码质量很差,是不是一定要推倒重写?
- 不一定。先区分哪些部分只是写得难看但能正常工作,哪些部分会持续出问题。前者可以暂时保留,后者优先重做。整体重写只有在大部分代码都无法维护时才值得考虑。
- 以后再找外包,怎么避免同样的问题?
- 合同里写明源码和著作权归属;代码放在企业自己的代码仓库;服务器、域名、各类平台账号用企业主体注册;按里程碑验收付款,每个里程碑都要求交付源码、部署文档和数据库说明。
本文由 长沙数分信息科技有限公司(RELIFT)技术团队撰写。文中涉及的厂商支持政策以官方最新公告为准;处理生产环境前,请先完整备份程序和数据。