一、背景
上一篇我们讲到了统一语言与各个方面因素的关系,从这些关系中可以看出如果要让统一语言统一,同时带来一定的收益,我们就要深入去了解统一语言可管理可控制的一些方法或者工具,本篇将从工具的角度来阐述一下统一语言在用工具管理过程中出现的一些问题,以及为什么这些工具没有发挥最好的效果。
二、统一语言来源简介
现在假设我们有很多术语或者配置类的配置项来表达系统业务或者系统场景,或者说我们已经或多或少的采取了一些行动来管理统一语言,那现在我们看一下这些已经被管理的统一语言我们可以从哪里找到。
2.1 口口相传
基于口口相传的场景其实大多数情况来源于产品和客户,有时候某些词语或者场景并不记录在笔记本上,而是在产品文档或者简单的技术文档上。
2.2 本地存储
这里的本地存储可以认为是自己写的笔记或者产品文档或者技术文档。当然有时候我们会用excel来记录一些生产上就用的一些配置数据,这种情况可能还缺少信息化。当然落实到项目里这种本地存储的形式可能就比较多了,比如properties文件或者说是数据库。
2.3 远程存储
关于远程存储的统一语言信息也包括公司的一些confluence,语雀文档等等,记载技术上的体现就是类似于nacos,apollo这种的配置服务,当然,传统企业可能更会从业务流程和业务模型上去下功夫来体现这些统一语言,比如字典系统等等。
三、统一语言管理工具
通过上面的统一语言我们可以看到很多时候我们的统一语言就是零零散散的,比如有些业务场景比较复杂,涉及到的合作方上下游比较多,那就会出现很多术语名称来表达业务场景,落实到建模上的统一语言是更加精炼的,可能已经不再完整的表达业务语意的概念,所以有时候产品会专门开会或者专门用一个文档来说明这个业务涉及到的概念规则等等。那另外一方面也有很多后人总结的文档,会有专门的一些名词解释,比如已经落地的系统,但是此时却没有一开始的解释,就相当于先写系统,后总结词语,然后后面的人再简单整理下解释一遍。
说了这么多,我们看一下有哪些工具可以作为统一语言的管理工具。
3.1 文档
目前看从文档方面来管理统一语言可能还是不太靠谱,事实证明用文档来管理统一语言具有一定的优势,但是也很容易达到瓶颈,比如文档需要人来维护,文档丢失,文档版本等等。另外有时候文档的内容并不能与真正落到程序里的配置项形成协同。
3.2 术语表
这里的术语表当然也是不错的,比如弄个excel表格来表达。由于excel的格式等可能编辑excel和理解单元格里的内容也容易令人头疼。这种方案的一个优势就在于可以帮忙管理不经常变化的一些术语名词,这些名词如果结构稳定的话术语表会更有优势。
这类似于白皮书或者规格说明,或者一份菜谱的那种。
3.3 代码
很多时候作为开发人员或者项目经理用DDD却只会关注到战略战术模式上的应用,DDD的一个魅力或者优势在于你需要编写很多领域文档,不仅仅包括接口文档,技术文档,需求文档,测试文档等等。这些领域文档是对整个业务系统的补充和改动依据。所以单从代码层面你无法更多的获取统一语言相关的更多概念,比如一个中台的产品经理或者开发者经常会被对接方问一些关于自己领域的一些概念名词。那么反过来这时候代码里的统一语言完全用不上,此时却没有更多的文档来支持这个统一语言相关的疑问。
落实到代码上不会有人写大段的词语解释和规则解释,所以代码上只是统一语言的使用者,无法更好的自我解释。
这时候对于代码而言,最好的方式就是及时Deprecated,同时在变量命名上下功夫。
3.4 字典系统
在一些大型公司中很多人都意识到了关于配置的管理方面,因此或多或少都有一份类似于业务字典或者配置数据的字典系统来承担各个业务的配置数据。最常见的场景就是对于类似于kv list的那种配置。说到这里这个字典系统可能跟代码一样无法表达更多的统一语言业务含义,更多的时候是作为一个运行时系统来接入的。
所以现在可以思考一个问题,这么多系统配置或者值对象配置,在业务中承担了什么角色,在我看来这些配置其实就是业务的骨架和灵魂。当然更多的就不再这个里面讨论了。
四、统一语言表达工具
上面说了关于统一语言的管理工具,这里我们简单看一下统一语言的表达工具
4.1 多媒体
- 文档类(word,excel,md,ppt,mind)
- 视频类(vedio)
4.2 书籍
白皮书,工具书
4.3 代码
代码工程文档
五、统一语言应用工具
这里也简单列一下哪些可以作为统一语言的应用工具
5.1 PlantUML
基于plantUML 可以与建模方法一起使用效果不错。
5.2 思维导图
思维导图方便对各个名词业务术语和业务规则做简单的描述
5.3 Excel
可以帮助整理归类统一语言术语
5.4 代码生成器
通过整理出的统一语言加上建模模型可以让代码生成器生成的代码更符合业务需求。
5.5 在线画图工具
在线画图工具可以帮忙在一些复杂业务流程场景下更好的表达统一语言,只是维护可能会有些麻烦。
六、总结
对统一语言的管理,表达和应用本身就是比较散乱的,所以在软件开发领域的不同上下文就无法持久的应用统一语言的模式。当然,如果你打算用统一语言来管理项目需求也需要先约法三章,这样才能更好的避免各种问题。
更多的可能还是没有一个比较好的规约来执行文档管理,通常来看文档管理的因素是由团队和人员变更导致的。另外一方面在互联网做软件文档更新本身也是一个体力活,所以对于软件开发和设计过程中文档编写和维护的时间会因为工期进度问题变得更少。那么在本系列的最后一篇文章中将直面统一语言落地管理的问题,敬请期待。
本文也总结了思维导图如下: