软件维护服务:运维支持、功能迭代与接手他人项目
软件维护服务,是让产品在发布之后持续健康运行的工作:修复错误、适配新的平台版本、监控故障、保障安全,并不断完善功能。JEEKSSHIRE 24 自己维护着自有产品,也承接客户项目的维护,包括由其他团队编写的代码。我们先读代码,弄清实际情况,再给出清晰的计划。
软件维护服务包含哪些内容
维护不是“以防万一”的值班,而是对产品持续、定期的工作。具体内容取决于项目,通常包括:
- 修复用户、员工反馈或告警发现的错误;
- 运行监控:故障告警、日志、备份,以及验证备份能否真正恢复;
- 更新依赖库,修补已发现的安全漏洞;
- 适配新版本的iOS、Android、macOS、Windows和浏览器;
- 功能迭代:新增功能、页面、系统对接和报表;
- 构建安装包,向应用商店发布更新;
- 持续更新说明产品结构和发布方式的文档。
谁需要应用维护与功能迭代
来找我们的客户,大多处于以下四种情况之一:
- 产品已经上线,但开发它的团队已经离开或转做其他项目;
- 应用能用,但每次更新都会弄坏一些东西,而且没人知道原因;
- 产品需要继续发展:新功能、新语言、新平台或新的系统对接;
- 操作系统、应用商店或支付服务修改了规则,产品必须跟进。
如果产品还处于构想阶段,可以先看软件定制开发或MVP开发:从第一个版本就规划好维护,比事后再补要容易得多。
我们如何接手项目并开始维护
- 了解任务。弄清现在最大的问题是什么、谁在使用产品、什么情况算作故障。
- 交接权限。代码仓库、服务器、应用商店账号、支付和邮件服务:我们列出清单,并确认这些账号确实归您所有。
- 审计代码和基础设施。阅读代码,从零构建项目,检查依赖、备份和发版流程。
- 制定计划。把发现的问题分类:哪些优先修复,哪些需要重写,哪些最好保持原样。
- 配置监控。设置故障告警和备份,让您从我们这里得知问题,而不是从客户那里。
- 日常工作。需求、优先级和发版按约定的流程进行,每次发布都必须在所有检查通过后才进行。
客户能得到什么
- 持续更新、不会落后于新平台版本的产品;
- 源代码及其权利始终归您所有,各类账号和权限也在您手中;
- 最新的产品结构和发布方式说明文档;
- 已经配置好的故障告警和备份;
- 清晰的变更记录:做了什么、为什么做、在哪个版本中发布;
- 维护和开发由同一个团队完成,不转包给第三方。
项目交接时应检查哪些内容、索取哪些文档,详见指南软件验收与项目交接。
我们自己的例子:我们如何维护自有产品
JEEKSSHIRE 24 有十多款自有产品在线运营,全部由编写它们的同一个团队维护。因此,我们对维护工作的理解来自实践,而不只是合同条款。
Wallet是一款用于支付海外数字服务的钱包,支持Mac、Windows和浏览器,提供包括阿拉伯语在内的四种语言。支付流程的更新需要格外谨慎:订单通过带状态的队列执行,并支持自动退款,金额在服务器端计算。
Legal是一款带人工智能的文档编辑器,提供Mac和Windows版本,界面支持184种语言。每次更新在上线前都要通过构建、代码检查和测试,桌面版与Web版同步发布。
JEEKSSHIRE 24 官网也由我们自己维护:四个语言版本由生成器从同一个源构建,因此一次修改就能同步到所有语言,无需手动搬运。
软件维护的四种类型:纠错、适应、完善、预防
业内通常把软件维护分为四种类型。它们有助于双方就优先级以及什么算紧急情况达成一致。
| 我们做什么 | 示例 | |
|---|---|---|
| 纠错性维护 | 修复产品运行中的缺陷 | 付款成功了,但订单状态没有变化 |
| 适应性维护 | 让产品适应外部环境的变化 | 新版iOS、应用商店新规、更换支付服务 |
| 完善性维护 | 根据用户和业务需求改进功能 | 新增报表、角色或界面语言 |
| 预防性维护 | 降低未来出故障的风险 | 更新依赖、简化代码、为薄弱环节补充测试 |
接手其他团队的项目:代码审计与交接
把项目交给新的开发团队是很正常的事,我们也接手他人编写的代码。第一步是代码审计:按照现有说明从零构建项目,检查架构、依赖、密钥的存放方式、发布前的检查流程以及备份机制。
- 风险清单,并说明每个风险可能带来的后果;
- 哪些需要立即修复,哪些可以延后,哪些保持原样;
- 缺少的权限和文档,以及需要向原团队索取的内容;
- 由我们负责的前几个版本的计划。
我们找问题的根源,而不是在表面打补丁。这样代码不会越积越多临时修补,维护成本会随着时间下降,而不是上升。
老旧软件现代化改造与平台升级
老旧软件很少需要整体重写。更常见的做法是分步改造:先隔离最脆弱的部分,更新依赖和平台,补充测试和检查,再把功能逐个迁移到新的实现上,而业务不必停摆。
这也包括把应用迁移到新版iOS或Android、为桌面版本签名和公证,以及增加界面语言,包括从右到左的排版。桌面产品详见桌面应用开发,Web产品详见Web应用开发。如果不确定是升级现有系统还是换成现成服务,可以阅读软件定制还是成品。想讨论您的项目,请通过需求表单联系我们。
常见问题
软件维护服务包括哪些内容?
包括修复错误、故障监控和备份、更新依赖和修补漏洞、适配新的平台版本以及功能迭代。针对您产品的具体内容会写入合同。
你们会接手其他团队开发的项目吗?
会。我们从审计开始:阅读代码,从零构建项目,弄清实际情况。然后给出计划,说明哪些先修复、哪些保持原样。
代码审计能带来什么?
一份附有说明的风险清单,对架构、依赖和安全性的评估,缺少的权限和文档清单,以及第一阶段的工作计划。审计之后,您能清楚了解产品现状,据此做出判断。
故障响应和SLA如何安排?
我们配置故障告警,争取在您的客户发现之前先发现问题。响应时间和紧急需求的处理流程会在维护开始前商定并写入合同。
如何适配新版iOS或Android?
我们在新系统版本上测试产品,更新依赖和构建工具,修复发现的问题,然后按常规检查流程发布更新并提交应用商店。
软件维护服务怎么收费?
价格取决于产品规模和所需的维护强度,因此没有固定价目表。了解项目之后,我们会提出合作模式和评估。
安全和依赖方面怎么处理?
我们定期更新依赖、跟踪漏洞、把密钥放在代码之外,并校验每一个输入字段。这是对每一次修改的要求,而不是单独的阶段。