软件开发中,分析和设计时,文档的编写和思想的交流,经常要绘制各种各样的图。相对于人类的自然语言,描绘复杂结构,图具有直观和整体的特征,有着不可替代的表现力。

软件开发是创造性的劳动,开发人员几乎在每一分钟都要做出某些选择,每一个选择都好像决定着最后的结果。绘图的时候也是如此,脑中有完整或不完整的想法,要清晰的表现出来时相当不容易。事实上,我发现许多老手不会画图。

在实践的过程中,我总结了一些经验,得出了一些结论。

1. 不画没有必要的图。如果简单的文字就能说得很清楚,还画图干什么?对代码级别的细节,不要画图来表现;不要借助图来让你的文档得变大;画蛇莫要添足。

2. 忽略底层的细节。软件是一个多层的东西,一个图只展现恰当抽象层次之上的细节。一个过细的图,大量的信息会掩盖真正重要的东西。比如:在一个流程图上,不需要把“文件打开的错误判断”也作为一个分支画在图上,除非你“无聊到”要强调这个显而易见的异常处理;
  
3. 图不要太大。如果一个图上包含上百个对象,看起来不舒服,应该化整为零,使用多个图,每个图描述不同的部分。
  
4. 画纯种的图。图传递的信息应该明确,无歧义。一定要明确图中的各个组成元素都是什么东西,整个图要表现什么。尽量使用规范的图。比如:流程图中,应关注控制的传递,不要有从文件中读取数据的数据流;软件结构图中,描述模块之间的父子关系的同时,不要有模块之间的数据流。我常见到这样的图:在图中既有“控制流”,也有“数据流”,不伦不类,名之曰“示意图”。个人认为,交流时,这种示意图在白板上随手画画还可以,决不应该出现在正式的文档上。这些图中的控制流,实是一个模糊概念,A->B可以表示:1)A调用B,把控制传递给B;2)A启动B,把控制传递给B;3)A向B传递一个控制信号;4)有一个第三者调用A完成后,马上调用B。

5. 图的布局要简洁,美观。我听说:书写大幅的毛笔字,特别讲究布局。同样道理,画软件图,尽量密度分布均匀,减少连线的交叉。 为了减少连线的交叉, 同样的单元可以在图中出现多次。

6. 其实并不需要完备的图。使用UML有三种方式:UML as sketch(草图),使用不完备的图进行系统某一部分或某一方面的内容进行交流;UML as blueprint(篮图),通过完备的UML图表现详细设计的所有决定;UML as programming language,自动精确的UML图,直接编译成可执行的代码(现在好像还没有实现)。Martin Fowler说:使用UML绘制草图的人,真正关注UML的精髓(大师就是大师,说话就是不一样)。所谓“不足胜有余”,不管什么图,图应该集中表现其关注的方面,恰当的忽略一些细节时必要的。类图中,往往没有必要包含类的所有函数合成员说明;在表现对象之间协作的顺序图中,大多时候也没有必要表现存在的分支和循环。
  
7. 所有的规则都是用来遵守和打破的。上面的所有道理,也并非是不变的真理。但是,道理被打破以前,你应该了解它,熟悉它,批评它,忘记它(追求类似张三丰太极剑的境界)。古人云:事有反道而适权,伪经而和道者。笑傲江湖说:独孤九剑,无招胜有招。萧大侠:删繁就简,取精用宏。 规劝朋友也规劝自己:连有招的境界尚未达到,应该知道自己该做什么。

如何写设计文档之画软件图相关推荐

  1. Google工程师是怎么写设计文档的?

    文章来源:[公众号:分布式实验室] 一份好的设计文档需要提供清晰的问题描述.整体的概要设计.涵盖各个细节的详细设计等. 这篇有趣的英文小短文通过一个简单的小例子介绍了Google工程师是怎么写设计文档 ...

  2. 谷歌软件工程师是怎样写设计文档的?

  3. 如何才能写出好的软件设计文档?

    作为一名软件工程师,我花了很多时间在阅读和撰写设计文档上.在磨砺了数百篇文档之后,我发现,优秀的设计文档与项目的成功之间有着密切的联系. 这篇文章将介绍怎样才能写出一份优秀的设计文档. 为什么要写设计 ...

  4. 写好一份软件开发设计文档

    如何写好一份软件开发设计文档 转载: 设计文档 - 也被称作技术规范和实现手册,描述了你如何去解决一个问题,是确保正确完成工作最有用的工具,其目的是迫使你对设计展开缜密的思考,并收集他人的反馈,进而完 ...

  5. 软件设计文档如何编写,设计文档内容都包括什么

    我们经常听到这样的话: "设计文档没有用,是用来糊弄客户和管理层的文档": "用来写设计文档的时间,项目开发早就做完了": "项目紧张,没有时间做设计 ...

  6. 一般性网络错误 请检查网络文档_如何编写好的软件设计文档

    原文链接 作为一名软件工程师,我花了很多时间阅读和编写设计文档.在研究了数百篇这样的文档之后,我发现好的文档与项目成功之间有很强的关联性. 在本文中,我尝试去说明如何才能编写好的设计文档. 本文分为4 ...

  7. 怎么写出一份令人惊叹的设计文档?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 一份好的设计文档 ...

  8. 如何写出令人惊叹的设计文档?

    与优秀的人在一起,自己也会优秀起来,点击加入 来源:DeepNoMind 一份好的设计文档需要提供清晰的问题描述.整体的概要设计.涵盖各个细节的详细设计等. 这篇有趣的英文小短文通过一个简单的小例子介 ...

  9. 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

    朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助 ...

最新文章

  1. 基恩士上位机链路通讯_【原创分享】ABB机器人与视觉控制器的通讯
  2. php中连接两个值,php - 如何从两个表的连接中选择一个值? - SO中文参考 - www.soinside.com...
  3. keepalived and heartbeat
  4. php 公共的 受保护的,php-不使用$this-gt;调用受保护的属性
  5. String类(二)
  6. SpringBoot基础系列-SpringCache使用
  7. Linux源代码编译安装详解
  8. 纪中模拟赛——接苹果
  9. c语言程序设计稀土,稀土掺杂Tarkall-C合金多尺度设计及计算
  10. C++学习——C++中的四个智能指针
  11. 构建一个ASP.NET Wiki来解释TDD
  12. Vosviewer图谱相关指标详细解释1
  13. 山寨游戏之超级奥巴马(SUPER OBAMA WORLD)
  14. 别催了,医药行业数字化转型真的“急不得”
  15. 微信铁通服务器地址,铁通dns服务器地址大全
  16. 泰坦尼克号电影 完整字幕 中英文对比 完整版
  17. app启动速度优化实践
  18. 什么是ring0-ring3
  19. 使用xpath爬取学院新闻
  20. 日本麻将记点器APP

热门文章

  1. C语言实现(封装、继承和多态)
  2. Linux终端查看当前时间和时间戳
  3. mysql 11关系图_用实体关系图进行数据库建模(PD11+Visio)
  4. (专业文章) 什么是内生肌酐清除率 http://www.jiganqingchulv.com/
  5. Linux一键安装xrdp,centos7安装xrdp
  6. scrapyd服务器报错processing failed
  7. MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别
  8. 微信8.0|微信8.0安卓版
  9. windows server 2008 R2实现磁盘阵列raid1与raid5,数据备份与恢复
  10. 可调电源LM317 的内部原理 - 特殊的电压跟随器