侧边栏壁纸
博主头像
ZDREAM

一万年太久,只争朝夕

  • 累计撰写 35 篇文章
  • 累计创建 2 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

拒绝文档虚无主义:运维迭代期的必要文档清单

Thassarian
2023-09-28 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

在小团队的项目管理世界里,我们总是在与混乱作斗。手头的工作常常是一团乱麻:既要处理线上系统的日常维护,又要应对突如其来的紧急对接;既要按部就班地推进合同里的升级改造,又要见缝插针地实现那些计划外的“小需求”。

在这样的节奏下,“写文档”这三个字听起来就像个遥远的理想。当问题扑面而来时,第一反应是挽起袖子去解决,而不是坐下来先记录。但时间一长,我们付出的代价是惨痛的:同样的问题反复向不同的人解释;一个简单的修改引发了意想不到的连锁反应;核心成员一休假,某个模块就成了无人敢碰的“黑盒”。

这些经历让我不得不重新审视文档的价值。《GB/T 8567-2006 计算机软件文档编制规范》是一套完整的软件文档体系。虽然该标准非常全面,但完整照搬的话实在有点不切实际,但我们可以借鉴其核心思想,根据项目实际情况,选取最关键的文档进行编制和维护。

以下是根据实践经验,从该标准中提炼出的、在不同阶段应重点关注的核心过程文档。它们就像航海图和压舱石,帮助我们在信息的风浪中保持航向。

一、开发与改造阶段:打好地基,立好梁柱

无论是启动一个新项目,还是对现有系统进行一次“大手术”,前期的文档工作就是在打地基。地基不牢,上层建筑再华丽也终将动摇。

1.《软件需求规格说明书 (SRS)》:所有工作的“宪法”。

一份合格的SRS,从来不是功能的简单罗列。我踩过最大的坑,就是对需求的描述充满了“大概”、“尽快”、“更好”这类模糊的词。后来我们强制要求,每一条需求都必须是可验证的。“系统响应速度快”是空话,而“95%的查询请求在2秒内返回结果”才是可以写进测试用例的承诺。除了功能,性能、安全、兼容性这些非功能性需求也必须白纸黑字地写清楚,这能挡掉未来无数的扯皮。我们还会大量使用流程图和原型线框图,一张图往往比几百字更能清晰地表达业务逻辑和用户交互。最关键的是,这份文档必须经过所有关键角色的正式评审确认,一旦确认,它就是我们抵挡需求随意变更的第一道防线。

2.《软件(结构)设计说明书 (SDD)》:开发团队内部的“通用语言”

这份文档是写给未来的自己和同事看的。它不仅仅是画几个架构图、贴几段数据库表结构那么简单。我们最强调的一点是,不仅要写“是什么”和“怎么做”,更要写“为什么这么做”

比如,为什么要用Redis而不是Memcached做缓存?为什么这个模块要设计成策略模式?这些设计决策背后的思考,对于后来者理解系统、进行维护的价值,远超代码本身。在接口设计上,我们要求把请求方法、参数(包括类型、是否必填)、成功和失败的返回示例都写得一清二楚,这极大地减少了前后端联调时的沟通成本。

3.《软件测试计划 (STP)》:保证质量不是一句口号

测试不能是随意的“点点点”。一份测试计划,首先要明确“测什么”和“不测什么”,把测试范围框定清楚。接着,要定义好通过标准,比如我们会规定“不允许存在致命和严重级别的缺陷”是版本上线的红线。测试环境、测试账号、测试数据这些准备工作,也必须提前规划,否则到了测试阶段就会手忙脚乱。

二、运维服务项目:留好航迹,有据可查

如果说开发是造船,运维就是日复一日的航行。航行中最重要的,就是清晰的航行日志。

1.运维工作的核心,是一份动态的“问题与变更管理记录”

无论是用户反馈的Bug,还是内部提出的优化,我们都坚持走一个简单的工单流程。这个记录很简单,但必须包含几个要素:谁提的、什么问题、什么时候、怎么解决的、谁解决的。这个习惯的价值在半年后就体现出来了:当遇到类似问题时,我们可以快速翻阅历史记录找到解决方案;进行工作复盘时,我们能清晰地看到问题的分布和趋势。它把零散的工作,变成了一份可分析、可追溯的宝贵数据。

2.在代码层面,任何修改都要有迹可循。

动手修复一个Bug前,我们要求开发人员做的第一件事,就是去翻阅相关的设计文档(SDD)。这能帮助他们理解这部分代码的“前世今生”,避免好心办了坏事。如果某次修改涉及到底层架构或数据库结构的变更,那么同步更新设计文档就是一条铁律。否则,文档就会慢慢变成一堆废纸。

3.雷打不动的任务:更新《软件版本说明 (SVD)》。

这份文档连接了开发、测试和用户。我们把它格式化,固定包含“新增功能”、“优化改进”、“缺陷修复”和“部署注意事项”这几部分。每一个条目,我们都要求关联到最初的需求或问题工单ID。这样,任何一个版本的任何一个改动,我们都能一路追溯回它的源头。对于部署人员来说,这是一份清晰的操作手册;对于用户来说,这是一份透明的更新公告。

说给自己

文档工作确实会占用时间,但它是一种投资,而不是成本。它投资的是团队的沟通效率、知识的传承和项目的长期稳定性。在一片混乱中,正是这些看似“多余”的文档,为我们构建了秩序,让我们能更从容地应对未来的各种不确定性。

附文

《GBT 8567-2006 计算机软件文档编制规范》确实是一套非常完备的指南性规范,适用于从零开始的、非常规范的大型软件开发项目。

一、开发过程

文档名称 (代码)

主要内容简介

1. 规划与启动阶段

可行性分析(研究)报告 (FAR)

对项目的必要性、技术方案、经济效益、风险等进行全面分析,得出“做”或“不做”的结论。

软件开发计划 (SDP)

项目的总体管理蓝图。包含项目范围、目标、进度计划、资源分配、风险管理、交付物清单等。

2. 需求分析阶段

软件需求规格说明 (SRS)

极为核心的文档。详细、准确地描述软件的功能、性能、数据、接口、用户界面及非功能性需求。

系统/子系统规格说明 (SSS)

从更高层次定义整个系统的需求,特别是当项目包含硬件和多个软件子系统时。

3. 设计阶段

系统/子系统设计说明 (SSDD)

描述系统的高层体系结构,划分主要的子系统和组件,定义它们之间的关系和接口。

软件(结构)设计说明 (SDD)

详细描述软件的内部设计。包括模块划分、程序流程、算法、数据结构、模块间接口等。

数据库(顶层)设计说明 (DBDD)

专门针对数据库的设计。包括概念模型(E-R图)、逻辑设计(表结构)、物理设计、视图、索引等。

接口设计说明 (IDD)

详细描述软件与外部系统、硬件或软件内部模块之间的接口细节,包括数据格式、协议、调用方式等。

4. 实现与测试阶段

软件测试计划 (STP)

规划整个测试活动。定义测试范围、测试策略、测试环境、测试用例设计方法、通过/失败标准。

软件测试报告 (STR)

记录测试活动的结果。总结执行了哪些测试、发现了哪些缺陷、缺陷的修复情况,并对软件质量给出评估。

5. 交付与部署阶段

软件版本说明 (SVD)

"Release Notes"。描述特定软件版本的新增功能、修改内容、修复的缺陷、已知问题及安装方法。

软件用户手册 (SUM)

提供给最终用户的操作指南。说明软件的安装、配置、各项功能的使用方法、常见问题处理等。

计算机操作手册 (COM)

提供给系统操作员的指南(如有)。说明系统的启动、关闭、备份、恢复等日常操作流程。

6. 项目管理与支持

软件配置管理计划 (SCMP)

定义如何对项目的代码、文档等所有产物进行版本控制和变更管理。

软件质量保证计划 (SQAP)

定义为保证软件质量所要进行的各项活动、遵循的标准和流程。

项目开发总结报告 (PDSR)

项目结束后,对整个开发过程进行回顾和总结,分析成功经验和失败教训,为未来项目提供参考。

二、运维过程

文档名称

主要内容简介

软件需求规格说明 (SRS)

理解功能的原始设计意图,判断用户提出的问题或新需求是否在原范围之内。

软件(结构)设计说明 (SDD)

定位问题、评估修改影响时,必须参考的核心技术文档,用于理解代码逻辑和系统架构。

数据库(顶层)设计说明 (DBDD)

在处理数据相关问题或进行数据库变更时,用于理解数据表结构和关系。

软件用户手册 (SUM)

从用户视角复现问题,或在解答用户疑问时提供标准答案。

(变更/问题报告单)

通常为内部管理工具中的记录)运维工作的起点。记录问题的来源、描述、优先级、处理过程和结果。

软件测试计划 (STP)

针对某次变更(如Bug修复或小功能增加)制定测试方案,特别是回归测试的范围。

软件测试报告 (STR)

记录针对本次变更的测试结果,确认问题已修复且未引入新问题。

软件版本说明 (SVD)

运维阶段最重要的输出。每次发布更新都必须提供,清晰说明本次更新修复了什么、优化了什么。

(更新的)设计说明 (SDD)

如果变动较大,影响了系统原有架构或核心逻辑,必须同步更新此文档,保持文档与代码一致。

(更新的)用户手册 (SUM)

如果变更影响了用户操作界面或流程,必须同步更新用户手册。

软件移交计划 (STrP)

当运维责任需要从一个团队移交给另一个团队时,用于规划移交内容、时间、培训等事宜。

0

评论区