好久没看到UML的论战了

来源:互联网 发布:扬州大学怎么样 知乎 编辑:程序博客网 时间:2024/04/29 17:29

经过2000年前后那一阵红火,现在已经不太听到关于UML争论了,难得又见到CSDN首页推荐一篇,十分高兴,不过感觉那有些观点难以苟同。正好快下班了,抒发一下感慨吧。

 

 

我们要先搞清楚几个名词:Notation、Modeling、Methodology、Process。

 

 

Notation,表示法,是一套符号系统或者说书面语言,是软件工程师用以描述其程序的工具。最初UML仅仅就是表示法,并且是90年代面象对象表示法大战的胜出者。

 

 

Modeling,建模,就是为复杂系统建立模型以便进行分析研究的活动。模型是对复杂系统的简单抽象,但已经包含理解该系统的必要信息,人们可以用模型来可视化抽象问题、进行模拟、操纵模型,从而不断加深对系统的理解和认识;建立的模型需要使用某种可视化的形式来记录,以便人们能够实施和记录这些思维活动。

 

 

Methodology,方法学,在软件开发这个行当里,就是完成分析、设计、编码、测试、交付等技术活动的方法集,每个方法具体反映为若干原则和步骤,遵循之即可保质保量的完成相应环节的任务。

 

 

Process,过程,则是帮助项目相关各方了解项目状态、调控项目,降低项目风险而制定的规章和流程。作为软件开发人员来说,无论项目大小,都需要有办法表达自己对系统的理解、做出的分析和设计。每个人都可以定义自己的语言,不过既然已经有普通话了,为什么还要训练对方先掌握自己的方言呢? UML或许有其不足之处,但一般人拍拍脑袋想出来的符号集只怕问题更多。况切,在每篇文档上都附一个方言速成指南,总是比较搞笑的。

 

 

看看科学技术书籍前面都要附一个凡例,为啥呢?因为没有标准。可是读者又有多少人会耐心看呢?看了就能立马记住?换家出版社就得记一套,有意思?

 

 

从这个层次出发,我总是建议周围的人都尽可能多用UML,一些小细节一时领会不了就避而不用好了,用的有些不规范也不打紧,总比完全没规范的强点。相信用得多了,就有感觉了,再时不时看一眼资料,自然就随心所欲不逾矩了。

 

 

那么用UML的时候,用IBM Rational Rose这类建模工具好,还是MS Visio之类的画图工具好呢?这要具体对待,如果这个设计需要反复讨论修改,那最好还是用建模工具;如果基本上只是个别方面的描述或者讲完就拉倒,那画图工具可能更方便。意识到其中的差别,有针对性的选择,可能有意义。

 

建模工具并不只是画画图形而矣,如果你需要为一个系统提供不同局部的视图,那你将不必每幅图都从头画起;更重要的是,如果你打算对分析设计逐步求精,那么在模型上做出的修改很容易同步到所有视图上。

 

模型的好处并不仅限于图形输出便利,不管是不是利用UML建模,我们的软件分析设计工作不外乎确定静态结构、描述动态过程,往往是一个逐步细化的迭代过程,有一个模型可视化的进行操作是很方便的。比如,有了基本的类设计之后,用序列图来看看是不是各个需求都能用这个结构完成,中间可能发现得再加点类或者属性或者操作。

 

 

至于代码生成、MDA、可执行模型,在特定领域其实也已经有一定可用性了,不过做为通用的开发手段,为时尚早。

 

 

比较不幸的是,很多人一提UML,就要跑到方法学和过程的范畴里去纠缠不休。个人以为,今时今日,方法学还是有些进展,如何有效的识别出对象及其关系,如何设计出满足可靠、易维护等要求的结构还是颇总结出了一些方法,而过程跟人这个因素关系太密切,我们的认识还粗浅得很。上来就把简单的事情复杂化,自然用着不顺手啦。

原创粉丝点击