遗留系统现代化实战
姚琪琳
Thoughtworks 资深咨询师
5615 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
用户故事 (1讲)
遗留系统现代化实战
15
15
1.0x
00:00/00:00
登录|注册

04 | 如何降低认知负载:活的文档能救命

你好,我是姚琪琳。
在第三节课,我带你了解了认知心理学中的一个概念——认知负载。这个看似与软件开发毫无瓜葛的知识,实际上却决定了软件系统的成败。因此在遗留系统现代化中,我们把“以降低认知负载为前提”作为首要原则。
有些同学这时就会问了,你总说认知负载如何如何,降低认知负载又是多么重要,那怎么才能真正降低认知负载呢?别着急,我们今天就来看看有哪些方法能降低认知负载。其中最重要的工具,就是活文档。

什么是活文档

活文档(living document),顾名思义,就是指活着的文档,也就是在持续编辑和更新的文档,有时候也叫长青文档或动态文档。比如维基百科中的一个词条,随时都有人更新和维护,这就是一个活文档。与之相对的是静态文档,也就是一旦产生就不会更新的文档,比如大英百科全书中的一个条目。
你可以想象一下,在软件开发过程中,无论是瀑布模式还是敏捷,我们拿到的需求文档或故事卡是“维基百科”还是“大英百科”呢?我想大多数情况可能是,在最终需求还没有敲定时还是“维基百科”,也就是还会随时更新,而一旦敲定开始开发后,就变成了“大英百科”,再也不会更新了吧。
然而随着需求的不断叠加,“大英百科”作为当时系统的一个“快照”,早就已经失去了时效性。只有将不同时段、不同模块的文档片段合并在一起,才能得到当前系统的快照。但这个合并放在现实中是很难操作的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

活文档:降低认知负载的利器 活文档是降低认知负载的重要工具,通过在代码中添加注解,并利用工具生成脑图,可以将复杂的业务代码转化为易于理解和记忆的结构,从而降低认知负载。实例化需求的方式编写的测试也是一种活文档,能展示业务知识,随代码更新,提高系统的可维护性和可扩展性。依赖分析工具可以展示系统知识,帮助理清系统内的依赖关系。活文档为软件开发带来了新的思路和方法,对于降低认知负载、提高系统的可维护性和可扩展性具有重要意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《遗留系统现代化实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • Kent
    活文档是个好东西 - 产品文档、技术文档常常是项目在某一个时刻的快照,不一定准确 - 代码里留下归纳性的注释表明代码意图(函数、控制流) - 修改功能、重构结构时,也应当及时更新对应的注释文档 - 单元测试代码也能表明代码的用途和边界 - 代码和文档(注释)放在一起,比分开在wiki中要轻松方便 - 用好代码分析工具能事倍功半(虽然往往没有这种现成的工具[doge])

    作者回复: 感谢分享

    2022-05-08
    3
  • killer
    DDL(Data Definition Language)迁移到代码库中,进行版本化,楼主你们用的什么工具?

    作者回复: Flyway

    2022-04-21
    1
  • Jack_1024
    有木有开源的轮子呀

    作者回复: 目前还没有哦,可以自己开发一个

    2022-04-23
  • 西米
    活文档工具 通过注解扫描,.NET 有类似的工具吗?

    作者回复: 应该没有线程的,Java的工具其实就是扫描字节码,.NET就扫描IL就可以了,自己可以开发一个

    2022-04-21
  • killer
    工具分为两种一种是动态的,一种是静态的 1、动态的可以利用SKyWalking 全链路追踪等 2、静态的需要在api,mq,enum加上注解,依赖编译预处理javax.annotation.processing, 提取项目的源信息

    作者回复: 感谢分享👍

    2022-04-21
    2
  • aoe
    之前只知道测试可以作为文档,今天看了老师生成的知识图谱,感觉效果更好。 关于发布/订阅模式(尤其是发出一个消息,多个消费者订阅的场景)有如下问题: 1、有没有适合这个场景的插件? 2、SkyWalking 可以看到完整的调用链路(本地方法调用、RPC调用、Redis、MySQL、消息中间件),但是调用链路总体太长(一个Http请求几百个),虽然有图展示出来,但看到后依然惊人崩溃!(我觉得这样的代码还是优先调整代码结构,使其向单一原则、不要和陌生人说话方向发展比较好) 补充:很多链路追踪工具也可以查看调用链路(例如:ZipKin)

    作者回复: 确实对于调用链复杂的遗留系统来说,用工具可视化出来的图表也是相当吓人的,并不能显著降低认知负载,还是要先进行一些局部优化。

    2022-04-18
  • 静✨
    唉…不管是代码还是数据库 老师都做了我想做的事情(感叹自己技术不足 伟大!期待开源的那天到来
    2022-07-17
    2
  • _立斌
    老师你好,针对遗留系统动辄三五千行的方法,估计得重构过后才能变成注解活文档了?因为大量逻辑都写在同一个方法里,并且大部分逻辑并没有抽取方法出来,这种老大难方法应该如何构建活文档呢
    2023-10-07归属地:广东
  • 子夜枯灯
    期待有开源的工具分享
    2022-04-26
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部