- 浏览: 30081 次
- 性别:
- 来自: 广州
-
最新评论
软件开发中,分析和设计时,文档的编写和思想的交流,经常要绘制各种各样的图。相对于人类的自然语言,描绘复杂结构,图具有直观和整体的特征,有着不可替代的表现力。
软件开发是创造性的劳动,开发人员几乎在每一分钟都要做出某些选择,每一个选择都好像决定着最后的结果。绘图的时候也是如此,脑中有完整或不完整的想法,要清晰的表现出来时相当不容易。事实上,我发现许多老手不会画图。
在实践的过程中,我总结了一些经验,得出了一些结论。
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. 所有的规则都是用来遵守和打破的
。上面的所有道理,也并非是不变
的真理。但是,道理被打破以前,你应该了解它,熟悉它,批评它,忘记它(追求类似张三丰太极剑的境界)。古人云:事有反道而适权,伪经而和道者。笑傲江湖
说:独孤九剑,无招胜有招。萧大侠:删繁就简,取精用宏。 规劝朋友也规劝自己:连有招的境界尚未达到,应该知道自己该做什么。
发表评论
-
(转)Andriod是什么
2010-12-02 11:24 1621导读:Sans Serif是Google的 ... -
(转)SQLite入门与分析(六)---再谈SQLite的锁
2010-11-19 00:09 950写在前 面:SQLite封锁机制的实现需要底层文件系统的 ... -
(转)SQLite入门与分析(五)---Page Cache之并发控制
2010-11-19 00:05 1071写在前面:本节主要谈 ... -
(转)SQLite入门与分析(四)---Page Cache之事务处理(3)
2010-11-19 00:01 978Code 写在前面:由于 内容较多,所以断续没有写完的 ... -
(转)SQLite入门与分析(四)---Page Cache之事务处理(2)
2010-11-18 23:57 1177写在前面:个人认为pager层是SQLite实现最为核心的 ... -
(转)SQLite入门与分析(四)---Page Cache之事务处理(1)
2010-11-18 23:53 961写在前面:从本章开始,将对SQLite的每个模块进行讨论。 ... -
(转)SQLite入门与分析(三)---内核概述(2)
2010-11-18 23:48 1327写在前面:本节 是前 ... -
(转)SQLite入门与分析(三)---内核概述(1)
2010-11-18 23:41 806写在前面:从本 章开始, ... -
(转)SQLite入门与分析(二)---设计与概念(续)
2010-11-18 23:38 1050写在前面:本节 讨论事务,事务是DBMS最核心的技术之一 ... -
(转)SQLite入门与分析(二)---设计与概念
2010-11-18 23:35 810写在前面:谢谢各位的 ... -
(转)SQLite入门与分析(一)
2010-11-18 23:31 931写在前面:出于项目的 需要,最近打算对SQLite的内核 ... -
(转)深入研究B树索引(五)续
2010-11-18 15:10 9365.3 重建 B 树索引 ... -
(转)深入研究B树索引(五)
2010-11-18 15:07 12065. 重建 B ... -
(转)深入研究B树索引(四)续
2010-11-18 14:58 9374.2 B 树索引的对于删除( DEL ... -
(转)深入研究B树索引(三、四)
2010-11-18 14:44 7413. B 树索 ... -
(转)深入研究B树索引(二)
2010-11-18 14:20 7702. B 树索引的内部结构 ... -
(转)深入研究B树索引(一)
2010-11-18 14:12 1019摘要: 本文对B 树索引的结构、内部管理等方面做了一个全面 ... -
(转)B树、B-树、B+树、B*树都是什么
2010-11-17 23:46 680B 树 即二叉搜 ... -
你是个软件架构师吗?(转)
2010-07-14 11:11 676开发和架构的界限难以 ... -
(转)同曲异奏——高效能项目团队的五大特点
2010-03-29 00:24 872同曲异奏——高效能项 ...
相关推荐
几个注意点 71 自然语言分析: Abbott的试探法 72 第二节 标识实体对象 72 标识实体对象的试探法 72 例子:报告紧急情况用例 73 例子:报告紧急情况用例的实体对象 73 第三节 标识边界对象 73 标识边界对象的试探法 ...
用例图主要包括以下几个基本元素: 1. **参与者(Actor)**:指的是与系统交互的外部实体,它可以是人、其他系统或外部设备。 2. **用例(Use Case)**:代表了系统的一个特定功能,是系统执行的一系列动作的结果,...
软件发展有几个阶段?各有何特征? 答: ① 程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 ② 程序系统阶段。 硬件特征:速度、...
下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一个活生写意的树就画出来. 我上面这些描述其实都是一种模式,创建模式的人是大师,但是拘泥于模式的人永远是工匠. 再回到传统建筑中,中国的传统建筑是过分...
- Inverse、Lazy和Cascade是Hibernate中用于管理关联关系的几个关键属性。 **9. 继承关系映射** - Hibernate支持单表、表每类和表每子类等继承关系的映射。 **10. HQL** - HQL (Hibernate Query Language) 是一...