一位CTO告诉我,项目中至少需要这3类文档

简介: 一位CTO告诉我,项目中至少需要这3类文档

前言

在项目管理中,不可避免的会涉及到技术文档。当讨论文档时往往会纠结于“要”还是“不要”这种是非选择中。而忽略了,如何最小化技术文档的同时,又能体现出文档的价值。


看到了一位CTO写的文章,才发现,我们讨论的出发点可能就错了。在我们习以为常当中,很多项目已经为我们展示了文档的魅力。


为了让开发人员快速的了解一个项目,帮助新加入者快速接手,项目中通常需要提供这三类文档:README文档、架构文档和API文档。下面逐一展开聊聊它们通常包含哪些内容。


README文档

看看GitHub上的开源项目,基于上都包含了一个README.md的文件,它就是README文档。这也是在GitHub上创建项目时会默认创建的一个文件。


这也是阅读源代码时第一个看到的文档。如果你的项目中还没有README文档,或者文档的内容为空,你需要反思一下了。通过README文档,可以方便的为团队成员或未来要加入信任描述这个项目的构成及基本操作。


README文档中通常会包含以下内容:


高层面的概述,至少用3到4句话来介绍这个项目的用途;

项目的CI和质量保障;

运行要求,比如编程语言、工具、环境配置等;

构建说明;

本地运行指令。通常包括,每一步执行命令的说明或基于docker容器的运行。

配置说明。开发人员需要了解的关键配置说明,比如,修改端口号等。

相关联的重要服务。比如,CI服务(Jenkins、GitHub等)、项目管理工具(JIRA等)、原型工具等。

以开源框架Nacos为例,它的READM文档部分内容如下:


image.png很显然,最开始告诉我们Nacos这款开源框架能够做什么,能够提供什么功能。image.png说明如何去做,如何启动部署。image.png紧接着是关联项目、文档、相关资源库等。


通过上面的说明,我们基本上知道Nacos是用来干什么的,怎么一步步操作,然后相关的资料、文档、类库等怎么查找。很简单的一个文档,却能够对使用者或开发者提供很有效的帮助。


架构文档

架构文档通常从系统架构层面来描述项目的,以便于任何想了解项目技术细节和架构体系的人进行查看。架构文档,通常涵盖了那些不会经常变动的架构和细节。


针对架构文档,通常包含以下内容:


约束条件。设计系统时遇到的任何业务或技术约束项,并指出这些约束如何影响到了系统设计;

非功能性要求。达到业务目标所需的最重要的质量指标;

架构设计。基于质量指标,哪些架构设计可以满足;

解决方案上下文图。将系统实现作为黑匣子,主要展示用户角色和外部集成与系统直接的关系;

解决方案容器图。展示系统架构中是有哪些组件构成,组件之间有什么样的关系,还要展示出它们依赖的类库还是服务;

技术栈及版本信息。展示用于构建系统的核心技术栈及版本信息,以及选择使用它们的原因。

文档也是项目的一部分,也应该像代码一样进行审查和迭代。关于架构图这里推荐Draw.io这款开源的画图工具。


关于架构文档,这里看一个名叫JetLinks的物联网开源项目的架构图:


image.pngimage.png看了这个项目提供架构和设备接入流程图,是不是一下子就从宏观上了解了这个系统的架构和功能了?如果我们的系统同样提供类似的架构文档,无论是编写者自己(过一段时间也会遗忘)还是其他协作者、新加入者来说,都是极大的福利。


API文档

关于API文档,这个不用多说,无论是前后端分离项目,还是对外提供接口的项目,API文档都是必不可少的。目前大多数项目都采用基于Swagger的REST API。Swagger是基于YAML或JSON格式展示,也可以在线浏览。如果你想更方便的阅读离线文档,可使用swagger-markdown这款插件生成基于markdown格式的文档。


Swagger的在线文档我们都知道,如果导出为离线文档,效果类似下图:


image.png是不是比在线的看起来更加舒服,更加方便。关键是查看文档的时候不用再启动服务了。


小结

好的文档,可以让项目走的更加长远,可以让新加入的成员更快速的了解系统的架构与设计。对于开发者自己来说,也可以通过阅读文档来节省时间。建议每经过三四个功能迭代之后,花半天时间更新一下文档,这将为团队提供长期的效益。作为团队的管理者或参与者,上面讲的三类文档,都值得你思考,值得你推行。



目录
相关文章
|
12月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1562 0
|
存储 人工智能 数据可视化
Serverless Devs 介绍
## 开篇 2020年11月份,阿里云智能开源了Serverless 社区的开发者工具Serverless Devs(后简称S) 弥补了国内在Serverless 开发者工具的一个空白。通过高度灵活的配置设定,实现了无厂商锁定的支持;直观易懂的可视化配套也带来了极致的开发者使用体验。通过S你可以体验Serverless hello world 以及 构建生产级Serverless 应用 。你
1734 0
|
数据采集 SQL 运维
巧用指标平台DataIndex,五步法轻松实现指标管理
在业务发展初期,企业需要做好规范的指标管理,以保证随着业务的不断发展,数据化决策能够成为业务强有力的支撑。本文将为大家详解如何通过袋鼠云指标管理平台DataIndex 进行规范化的指标开发管理,轻松开发指标,避免各类指标问题。
1473 0
|
Dubbo 应用服务中间件
java.io.IOException: invalid constant type: 18
java.io.IOException: invalid constant type: 18
932 0
java.io.IOException: invalid constant type: 18
|
9月前
|
人工智能 自然语言处理 数据挖掘
企业数字化转型的关键:如何利用OA系统实现自动化与智能决策
在数字化时代,传统办公系统已无法满足现代企业的需求。通过将RPA(机器人流程自动化)和AI(人工智能)技术与OA系统结合,企业能实现业务流程自动化、智能决策支持,大幅提升工作效率和资源配置优化,推动数字化转型。RPA可自动处理重复任务,如审批、数据同步等;AI则提供智能数据分析、预测和决策支持,两者协同作用,助力财务管理、人力资源管理、项目管理和客户服务等多个领域实现智能化升级。未来,智能化OA系统将进一步提升个性化服务、数据安全和协作能力,成为企业发展的关键驱动力。
|
存储 关系型数据库 数据库
在 Postgres 中使用更改列类型
【8月更文挑战第11天】
538 0
在 Postgres 中使用更改列类型
|
运维 监控 架构师
如何进行系统架构评审:全面指导与实践
【8月更文挑战第18天】系统架构评审是确保软件项目成功的关键环节之一。通过科学合理的评审流程和严格的评审要点控制,可以显著提高架构设计的质量和项目的整体成功率。
|
C++ Python
【Pybind11】pybind11在visual studio中的配置
【Pybind11】pybind11在visual studio中的配置
|
消息中间件 测试技术 领域建模
DDD - 一文读懂DDD领域驱动设计
DDD - 一文读懂DDD领域驱动设计
39064 5
|
存储 前端开发 JavaScript
反射型 XSS 攻击演示(附链接)
反射型 XSS 攻击演示(附链接)