最近在看《Agile Principles,Patterns,and Practices in C#》, written by Robert C. Martin and his son Micah Martin. 其中写到他们关于UML、CASE使用的观点,有点颠覆传统的意味,觉得很好玩儿,贴出来和大家共享。我的理解也许还有偏差,不能完全代表Robert的观点,纯属标题党吸引眼球,呵呵。

1、要对完全掌握UML的n多种图形么?

UML有类图啊、状态图啊什么的好多种,但对程序员来讲,一般用到的也无非就那么几种:类图(Class Diagrams)、对象图(Objects Diagrams)、顺序图(Sequence Diagrams)、协作图(Collaboration Diagrams)和状态图(State Diagrams);

2、为什么要建模?

有人可能说:架构设计师不用UML画上一大堆的图形那还叫架构师么?可Robert说,非也,架构师是用代码而不是一大堆乱七八糟的UML图形,UML图形只是用来交流的工具,是用来画在白板或者白纸上,用完就扔的,而不是把它弄成一段貌似正式的文档装订成册装点门面。

3、开发过程一定要建模吗?

非也,建模的目的是为了测试某个方案是否可行,既然是测试,当然那个成本低就用哪个,如果直接用代码和画复杂的UML图代价差不多的话,还不如直接用代码。

4、什么时候要画UML图,什么时候不用画?

需要画的情形:

  • 几个人需要同事做某件事,从而他们都要了解整个结构,需要画UML图统一思想。大家达成共识了,这些图形也就功德圆满,可以擦掉扔掉了。
  • 你想让团队达成共识,但有那么一两个不同意你的方案。你需要在固定的时间段内来讨论一下,讨论时间用完了就应该把结果定下来,不要总没完没了的讨论、扯来扯去的。可以通过投票或者权威人士判定。
  • 当你在思考一个设计时,可以用UML来辅助思考,想清楚了就可以把这些图形扔掉了。
  • 你要把你的代码解释给别人听时,需要画一些。
  • 项目要结束了,客户非要你提交UML图当做文档时,得画吧。

下面的情形就不用画了:

  • 貌似软件开发过程要求了要画UML然后在coding?
  • 你觉得要不画点UML图什么就会觉得内疚,其实大可不必。
  • 创建复杂的UML比写代码还麻烦呢,这种情况还不如不画

5、关于CASE工具

在你打算投资购买一套CASE工具之前,要仔细想想清楚哦~

  • CASE工具不是能让我们在画UML图时更容易么?不,他只能是增加复杂度。因为你学习这个软件也得费半天劲。
  • CASE工具不是能让一个大的团结在画UML图时能更方便的合作么?只是有时候是,但是一般一个很大的团队根本用不着画那么多那么复杂的UML图形。
  • CASE工具不是能自动生产代码么?的确是,但是维护修改这些生产的代码估计和你自己写也省不了多少事,所以建议在花钱买CASE工具之前好好衡量一下到底能给你提高多少的生产力。
  • 那把CASE工具和IDE集成在一起的怎么样?嗯,这个想法不错。但是坦率的说,我宁愿把投入到CASE的这部分钱花在IDE在编程方面的改进上。

6、有的时候使用文本格式的比图形更简单。还有机会使用自动化工具做进一步处理。比如针对State Transitions Tables的SMC(Statce Machine Compiler) 可以参考 http://www.objectmentor.com

嗯,结论:

不要为了UML而去UML;UML只是交流工具,交流清楚了就可以扔掉了;在画UML图形时应该能够想像到对应的代码实现,否则就别画了。

转载于:https://www.cnblogs.com/junqilian/archive/2008/03/14/1105328.html

Robert C. Martin关于UML、CASE的观点相关推荐

  1. 《敏捷软件开发-原则、方法与实践》-Robert C. Martin

    Review of Agile Software Development: Principles, Patterns, and Practices 本书主要包含4部分内容,这些内容对于今天的软件工程师 ...

  2. Robert C. Martin列举的专业软件开发人员必须精通的技能

    在世界顶级软件开发大师Robert C. Martin(Bob大叔)最新力作The Clean Coder: A Code of Conduct for Professional Programmer ...

  3. Robert C. Martin The Principles of OOD 面向对象设计原则

    本文由来自美国业界大牛--Robert C. Martin(俗称"Bob大叔) 发布在 butunclebob.com 上,已获得翻译授权. 英文原文链接:http://butunclebo ...

  4. 《UML正日薄西山的13个理由》读后感

    原文链接:http://littletutorials.com/2008/05/15/13-reasons-for-umls-descent-into-darkness/ 中文版本:http://ne ...

  5. 基础(UML类图,设计原则)

    序言: 面向对象是PHP5之后增加的功能,是PHP走向现代语言的一个标志. 在过程式设计时代,PHP以学习成本低.入门快的特点赢得很多WEB开发者的青睐,但同时也限制了PHP的发展. 借鉴Java和C ...

  6. 敏捷史话(八):敏捷的破局之道——Martin Fowler

    在 Martin Fowler 的世界里,任何事情都有最优解. 1963年,Martin 出生于英格兰的沃尔索尔(Walsall),也在同样位于沃尔索尔的玛丽女王文法学校中接受中等教育.在这里的乡村中 ...

  7. 敏捷软件开发:原则、模式与实践——第14章 使用UML

    第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它.UML的误用和滥用已经对软件项目造成了太多的危害. 14.1 为什么建模 建模就是为了弄清楚某些东西是否可行.当模型比要 ...

  8. UML建模工具EA和Rose比较

    UML建模工具EA和Rose比较 自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场.这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软 ...

  9. EA与Rose UML建模工具比较

    自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场.这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软件应用程序开发需求,达到最好的投资 ...

最新文章

  1. 程序员缺乏经验的 7 种表现
  2. PHP 错误抛出及自定义处理
  3. 神鬼传奇小技巧:教你如何修改自己想要的时装
  4. python小白逆袭大佬_飞桨深造学院百度深造7天打卡第6期:python小白反攻大神的经验,深度,学习,日,第六期,Python,小白逆袭,结营,心得...
  5. PHP解析JSON数据的源代码
  6. R语言--如何退出terminal下的环境
  7. centos7自带python版本_CentOS7保留默认Python版本并安装更新Python2和Python3共存
  8. 《Java 核心技术卷1 第10版》学习笔记------日志
  9. nginx配置websocket_Ingress-nginx代理websocket
  10. LeetCode 1450. 在既定时间做作业的学生人数
  11. php curl nginx post 空_【青藤云安全研究】绕过php的disable_functions(上篇)
  12. 把偷快递的贼炸到怀疑人生!不愧是NASA工程师,奇思妙想
  13. Django 实现第三方账号登录网站
  14. webConfig中System.Web 和 System.WebServer节点读取
  15. Oracle连接数据库的方式
  16. android 通过platform.pk8,platform.x509.pem生成jks签名文件
  17. Python 信号处理——包络分析
  18. java List转Map
  19. 计算机word上下左右边距,Word页边距调整设置(上下左右边距,2003-2013)
  20. 浅谈IPv6网络安全问题及解决对策

热门文章

  1. 『ACM-算法-数据结构』信息竞赛进阶指南--树状数组 (模板)
  2. 数学--数论--欧拉降幂--P5091 欧拉定理
  3. 第K短路+严格第K短路
  4. Linux16.04安装Matlab2016b详细教程
  5. [深度学习] 自然语言处理 --- Huggingface-Pytorch中文语言Bert模型预训练
  6. Optical_Flow(2)
  7. (Z)托尼?施瓦茨:六大关键几乎可以改变一切
  8. expect安装编译方法
  9. js与c语言效率_JavaScript控制流及关键字与C语言之比较
  10. python莫比乌斯_莫比乌斯函数 - osc_7eqzxl4g的个人空间 - OSCHINA - 中文开源技术交流社区...