程序员的自我修养系列(四):图形化表达

前言

对程序员来讲,咱们不少时候更专一于写代码,可是一个项目里代码只是整个交付的一部分,需求、设计、沟通不少时候比代码更重要,由于若是没搞清 "WHAT TO DO", 那么咱们 "HOW TO DO" 是没有意义的。网络

根据个人经验,大部分程序员在沟通这块儿是须要提升的,而项目中不少问题,都是由沟通问题形成的,而这种问题的主要变现有多种,一种是咱们不知作别人说什么,还有一种是别人不知道咱们说的是什么。而文字不少时候是形成歧义的一个很重要的因素。架构

不少时候,我都推荐你们能用图形表达的,就不要用文字表达,缘由以下:微服务

厘清思路

帮助咱们本身想清楚。若是咱们想用图形表达,那么咱们本身必须想清楚,否则图形就画不下去。工具

加速沟通反馈

图形是咱们思想的一个简化模型的体现,能够去掉不少干扰信息,让咱们快速理解,从而加快了沟通反馈速度测试

减小歧义

不少图形都是“通用语言”,就是已经在业界达成了共识,不用过多解释。设计

人脑更擅长理解图形

相对于文字,图像有画面感, 人脑更擅长记忆图像。3d

图像信息容量大

不少东西,若是咱们用文字,须要几十页的描述,而用图可能一张纸就表达了,这给交流带来了极大的便利性。日志

程序员须要掌握的经常使用图形

咱们知道不论是什么软件开发方法,传统瀑布,仍是如今的敏捷开发,都离不开需求分析、设计、开发、测试等等。blog

而如今愈来愈强调 “全栈程序员” ,也就是极可能,你一我的要作一个项目,并且一杆子撸到底。因此咱们必须掌握一些经常使用的图形表达工具。

在敏捷开发里,你们都用用户故事来表示需求,可是我老是以为光用户故事感受比较散,很难让人对总体有个了解,我以为下面两种图,对表示系统功能颇有帮助。

需求相关

用例图

用例图主要是从系统使用者的角度来描述每一个角色可使用哪些功能。

主要包括,角色(Actor),功能(Use Case),以及功能间是扩展关系(Extends) 仍是包含关系(Includes)

功能结构图

功能结构图,能够清晰的表达,功能之间的分组,好比大的功能块下的小功能,经过这样分组,有的时候咱们很容易把其中一个分支剪出来作一个子项目或者微服务。同时咱们也能够根据不一样的色块来标注功能的优先级。

脑图

有的时候,在早期阶段,咱们主要收集需求的时候,脑图给咱们带来了不少的灵活性,尤为是如今不少脑图软件,很方便的插入和修改。

设计相关

分层架构图

这是咱们最经常使用到的,这种图形很简单,基本用方框和线条就能够了,主要表达层次关系以及相互依赖关系,你们常常见到的三层或者多层图就是这样的。

三层架构图

每层里面包含多个部分

包含通用组件,好比多个层里会用到的日志,异常模块等

跨层调用图

上面分层架构,通常都不会跨层调用,而如今有一些架构,好比领域驱动,整洁架构,六边形等等均可以跨层调用,这类架构都强调领域核心的概念,就是外层能够跨层调用内层,但通常内层不容许调用外层。基本上都是强调隔离出容易变化的文件,网络和外部依赖,以业务为核心。这类图,通常都是圆形图。

整洁架构

六边形架构

交互相关

系统之间交互图

这类图,通常表示不一样子系统直接的交互关系,好比微服务

流程图

不少时候,咱们想表达一些业务的流程,好比若是XXX,那么就YYY, 或者A完成就开始B,而后开始C等,那么流程图就是咱们必需要掌握的

泳道图

主要用来表示不一样角色或者不一样组件之间的交互的顺序。

最后

咱们须要的是要掌握的是用图来展现咱们的想法,不要花太多时间让图很漂亮,好比色彩上。 大部分的图基本上均可以用笔能够很快在纸或者白板上画出来,或者Word通常就能够了。

固然,如今也有不少收费或者免费的软件,当你熟练了要表达的内容和结构后,使用这些软件就很容易。

相关文章
相关标签/搜索