`
softstone
  • 浏览: 472445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

《UML三大硬伤》的16条硬伤

阅读更多

除了Think在“谁的硬伤”一文中列举之外,Dr. OO又列举出了“三大硬伤”一文的16条错误。我代他转贴到CSDN。

 <!----><o:p></o:p>

 <o:p></o:p>

1 “图 3是采用UMLUse Case 图来描述组织结构,它只能描述到岗位职责,对岗位职责中的工作步骤无法描述。”<o:p></o:p>

活动图用来描述执行算法的工作流程中涉及的活动。活动状态代表了一个活动:一个工作流步骤或一个操作的执行。
活动图的用途是对人类组织的现实世界中的工作流程建模。
活动图也可以包含动作状态,它们是原子活动。
[UML
01]

实际上活动图很像大家熟悉的一种功能更强的流程图。

所以对于“岗位职责中的工作步骤”是完全可以描述的。
此处,留给作者作为练习。<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

2)“UML根本无法从微观上描述业务信息的操作过程,只能等到编程时再由有经验、责任心强的程序员去了解,”<o:p></o:p>

在业务建模阶段,UML通过活动图、交互图可以很好地描述信息的操作过程,说明实体、Worker之间的数据、消息交换内容和顺序,怎么叫“根本无法”?<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

3)“所谓“下不着地”是指费尽心力地使用UML建模后,很难让处于软件开发下游的程序员直接接受去编程,因为UML的表达方式不直接支持详细设计,程序员还得费尽周折地琢磨如何把建模结果转换成程序代码”<o:p></o:p>

什么叫不支持“详细设计”?
难道OOD围绕类的设计不是详细设计?感觉他不懂OO

现在的UML Tools都支持框架代码,甚至可以根据模式生成(比如Rose, TogetherJ);在实时UML领域,有的还支持从UML的状态机直接生成可执行代码。

作者再一次混淆了UML语言和UML工具的差别。

所以,以上完全是瞎说。这一点对程序员的误导最大。<o:p></o:p>

 <o:p></o:p>

4)“另外,UML没有对系统级、模块级接口的考虑,这在大型复杂系统开发重视不可想象的”<o:p></o:p>

这一点又是大错特错!

UML
的核心思想就是Model driven architecture,而从SystemArchitectureSubsystemComponent,强调的都是接口(interface)的设计

接口也是OO的核心思想。<o:p></o:p>

 <o:p></o:p>

5 UML建模图形之间的内部联系十分松散”?<o:p></o:p>

原文:
1 状态转移图中,事件与外部ActorClassPackage等无关;
2
无法从语法上建立状态转移图与顺序图的联系;
3
无法从语法上活动图应与顺序图在流程描述关系;
4
协作图和顺序图中与Message相伴的参数与类图无关。


错在何处:
1
、难道事件不是来自外部类、Actor及其所在的包吗?
UML
状态图中事件有几种类型:
信号事件、调用事件、改变事件、时间时间等。
其中信号和调用事件都是与对象相关的。

原句不知从何而来?似乎是使用某种工具的体会?

2
、不知何意?什么叫“语法上”
UML语法,还是实现代码的语法?想建立何种联系?

原句含义指向不清。

3
、不知何意?什么叫“语法上”
UML语法,还是实现代码的语法?想建立何种联系?

原句含义指向不清。


4
、该现象只与具体UML工具的实现有关,比如Rose已经实现了,UML的定义是完整的,完全是软件的功能不同而已。

总结:

在已经出版大量UML规范文献和中文书籍的情况下,作者再一次把UML工具的某些现象说成了UML语言的问题,在全文中都不加任何区分,可见概念不清。

OO
理论是一个有序、统一的整体,从这些非常局部细节的现象(基本上是实现的差异)根本得不出UML“建模图形之间的内部联系十分松散”、“一盘散沙”的结论,相反UML是高度统一,有非常严格的结构、定义和描述的。<o:p></o:p>

 <o:p></o:p>

6)疑点:图 4 采用全程建模方法的顺序图描述业务协作流程<o:p></o:p>

仔细看了一下,无非是把UML的顺序图和活动图画在一张图中,似乎更乱。<o:p></o:p>

 <o:p></o:p>

7) "UML顺序图缺少条件分支的表达方法,表达内容不完整"<o:p></o:p>

错!

分叉的画法见《UML参考手册》第334页图13-162“具有过程控制流的顺序图”

即使作者用的旧版软件不能画,也有替代的方法。
而且这本书是1年之前出的,当时很轰动,不会不知道吧。
不做调查就下结论,过于草率!<o:p></o:p>

 <o:p></o:p>

8 “使用UML描述业务流程很难让人放心,因为描述业务流程时产生的遗漏、不一致、不完整,同样会给项目带来灾难。这是纠缠不清的胡子工程问题点之二。”<o:p></o:p>

这明明是UML使用者的问题,又怪到UML身上,犯了概念不清的毛病。
UML
业务流程的建模可以不遗漏、很一致、很完整,你自己学不好、用不好,这能怪谁呢?<o:p></o:p>

 <o:p></o:p>

9)“问题其三是UML顺序图和活动图从形式上到内容上不存在等价关系”<o:p></o:p>

作者概念不清,估计UML规范看得太粗心大意了。

形式上,顺序图和交互图等价;活动图是一种特殊形式的状态机(图),用于对计算流程和工作流程的建模[UML01]

作者硬要把顺序图和活动图拉上等价关系干什么?

但其实顺序图和活动图在语义上是存在联系的(不是等价):活动图描述对象内部的计算步骤,类似于流程图;顺序图则描述对象之间的消息交换。所以,它们两者之间是互补的。<o:p></o:p>

 <o:p></o:p>

10 UML根本无法从微观上描述业务信息的操作过程,只能等到编程时再由有经验、责任心强的程序员去了解,这无疑于边盖楼边考虑在哪里开窗户,最后各种问题盘根错节,摁倒葫芦起了瓢。”<o:p></o:p>

前半句简直胡扯!

在业务建模阶段,UML通过活动图、交互图、类图可以描述几乎任何工作流步骤的细节信息,至少不比你的PAD少。

后半句借题发挥,谈错误业务分析失败的体会,博得同情,借机怪到UML身上。<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

11)“采用UML无法对这种功能需求直观地定位,结果是开发人员好心好意地实现了电子签名,而客户却毫不领情,应为中国用户不相信计算机的签名,去掉这个功能也是一件麻烦事”<o:p></o:p>

此处更是荒谬!

你怎么知道UML不能描述到“原子工作步骤级”?
UML
怎么不能“对这种功能需求直观地定位”?

我真弄不明白,“签字入库”和“签字需要手工”在UML的活动图上不是很容易表示吗?

后面半句明明是需求管理的问题,却要牵强附会。
我用UML画了一个“手工签字入库”的工作状态(原子步骤),开发人员怎么会去实现电子签名?
这是管理问题,与UML何干?

这段话,看出文章的思路是多么混乱!<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

12[05/21] “与现代编译器对接的是结构化程序设计,如伪代码、PAD(问题分析图),前者为80%的美国公司使用,后者为80%的日本公司使用。”<o:p></o:p>

毫不严谨!

难道JavaC++编译器不是现代编译器,知不知道还有面向对象设计?
为什么不说“与现代化编译器对接的是OOD”,而这似乎更符合主流。

两个80%是从哪里来的,有何依据?
是美国、日本的哪些类型的公司,即什么当中的80%

含糊其词,说了等于白说,有糊弄嫌疑。<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

13)“伪代码的优点是从语法结构上与通常的高级语言非常接近,PAD由于可视化的特点十分便于人的理解,在图 9中,全程建模方法建立了这两种详细设计的联系,可以轻松地将PAD转换成伪代码。”<o:p></o:p>

毫不掩饰地乘机推销!

澄清一个概念,伪代码毕竟不是真正的源代码,不能执行。
你把PAD“轻松地”转换成伪代码,有什么了不起,不也就是框架吗? 而且还不是真正的代码。
人家UMLUML工具比你更高明得多!
UML
用详细设计的图形直观、一致地指导程序员编程,谁还需要用伪代码?
UML
可视化模型其实可以完全取代伪代码。

UML
工具可以把UML类图、状态图直接转换各种高级语言,甚至可立即执行的程序,估计全程建模工具还达不到吧。

这段话根本论证不了UML的“下不着地”,无非是吹嘘自己,结果却恰恰证明了全程建模方法的“下不着地”!<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

14) 疑点:全文没有一处提到IDEF,而不少高手看出全程建模是基于IDEF的,为什么不老实说出来?<o:p></o:p>

结尾:
“本文对UML攻击颇多,实际上全程建模方法从UML及其前身OMTObject Modeling Technique)获益匪浅,作者也是经过对OMTOOSEUML以及OOA/OOD的深入剖析,取长补短而建立了全程建模方法,所以理所应当向相关的面向对象大师们表示敬意。”

在这里点了一堆OO名字,却只字未提全程建模建立的核心来源——IDEF

我看,全程建模是不是独创、发明、创新,甚至是不是所谓的方法论,都值得研究。<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

15[05/21] UML是造成信息不对称的‘功臣’”<o:p></o:p>

信息不对称和一种作为表达工具的业务描述语言有什么必然联系?

如果甲乙双方沟通不畅,对概念、问题的看法不同,即使用再好的建模方法、图形,也可能出现理解不一致,需求分析错误等情况,因为无论什么建模语言都不过是建模者思维的一种反映。

你能保证全程建模方法丝毫不遗漏、无二义地反映甲方的业务和需求吗?笑话,
这不过取决于建模者与客户的沟通罢了。

这又是一个比较迷惑人的概念混淆问题。

“可以说UML为用户(甲方)与开发方(乙方)的信息不对称提供了“有力的手段”,双方都互占“便宜”,因为这种信息不对称不但表现在有关信息产品和信息技术的知识上,还表现在乙方对甲方的业务理解上。由于乙方对甲方的业务术语理解不一定全面和准确,有可能在乙方看来含义非常简单的一个业务功能在甲方的经典著作或国家标准中含义非常丰富,需要做大量的工作。这样在使用UML的情况下,乙方按照自己的理解与甲方签了协议,但真正实施时却必须按甲方的国家标准去实施,这种扯皮的事在项目实施过程中大量存在。在信息项目的对策模型中,很难说乙方就一定能在合同中处于优势。


你怎么知道甲方一定熟悉你的全程建模方法?他们不了解,同样可能存在信息不对称。
如上所述,这段话逻辑混乱,而且看不出几句话之间有何必然的因果联系,即使作者误认为UML不能业务建模成立,也得不出这样的结论。
如果把其中的"UML"换成“全程建模方法”我看也同样成立。

我们可以说,全程建模方法也是造成信息不对称的“功臣”。<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

16) “由于信息化热潮的影响,许多公司纷纷进入IT项目建设市场,这些公司中难免有不少是属于鱼目混珠一类的,...<o:p></o:p>

分享到:
评论

相关推荐

    UML期末大作业

    **UML期末大作业** 本项目是一份针对UML(统一建模语言)的期末大作业,涵盖了多种UML图表的使用,旨在帮助学生全面理解和应用UML在软件设计中的重要性。通过这份作业,你可以深入学习如何用UML来描述、可视化、...

    UML期末大作业——PDF

    文档中虽然没有提供实际的UML图表,但提到了“UML期末大作业”,说明了作业内容中应包含了UML图表的设计,如类图、用例图等,以展示系统的结构和行为。UML图表是文档设计和描述系统功能的重要组成部分。 6. 系统...

    uml期末大作业

    《UML期末大作业实践指南》 UML(Unified Modeling Language),统一建模语言,是软件工程领域一种广泛使用的建模工具,它以图形化的方式描绘软件系统的结构和行为,帮助开发者理解和沟通软件设计思想。在期末大...

    UML 大学讲义PPT

    UML全称为Unified Modeling Language,由Grady Booch、Ivar Jacobson和James Rumbaugh三位先驱在1997年共同提出,旨在为软件开发提供一种标准化的建模方法。它综合了各种面向对象的建模技术,包括Booch方法、...

    UML期末大作业.zip

    UML期末大作业,包括word,pdf 格式文档,以及所需要的部分visio图,作业要求如下: 以一个实际的应用系统为对象,完成以下内容:对系统进行概述、对系统进行用例建模、对系统进行静态建模、对系统进行动态交互建模...

    uml大作业学生管理系统

    《UML大作业:学生管理系统》 在信息技术领域,UML(统一建模语言)是一种通用的、可视化的建模工具,广泛应用于软件工程中,用于描绘系统的需求、设计和实现。本大作业以“学生管理系统”为例,将深入探讨如何运用...

    基于UML的大学图书馆图书信息管理系统设计实验.docx

    《基于UML的大学图书馆图书信息管理系统设计实验》是一份详细阐述如何运用统一建模语言(UML)来设计和构建大学图书馆图书信息管理系统的实验报告。这份文档旨在通过实践,帮助学生理解和掌握软件工程中的需求分析、...

    吉林大学UML旅游管理系统大作业.zip

    《吉林大学UML旅游管理系统大作业》是一份深入学习和实践UML(统一建模语言)的优秀资源,主要用于构建旅游管理系统的模型。这个大作业是吉林大学课程的一部分,通过四次实验课的学习与实践,学生得以掌握UML的核心...

    uml实例uml实例uml实例uml实例uml实例

    UML(Unified Modeling Language)是统一建模语言,是一种用于软件工程领域中系统建模的标准语言,它通过图形化的方式帮助我们理解、设计和沟通软件系统。UML实例通常包括了类图、对象图、用例图、序列图、协作图、...

    UML大作业-旅游预定系统.docx

    旅游预订系统是一个旨在简化旅游规划和预订流程的软件应用,它结合了UML(统一建模语言)的设计方法,以实现高效、用户友好的服务。本文将深入探讨该系统的需求、设计模型及其功能。 一、项目概述 旅游预订系统的...

    UML图设计模式、三层架构、MVC.EAP

    UML图设计模式、三层架构、MVC.EAP

    uml 作业 uml 作业 uml 作业

    UML是由Grady Booch、Ivar Jacobson和James Rumbaugh三位软件工程大师于1997年联合提出的,旨在统一各种建模方法,提高软件开发的效率和质量。随着版本的迭代,UML逐渐成为业界广泛接受的建模工具,涵盖了多种图表...

    UML课件 UML课件UML课件

    **六、UML课件内容** "uml课件"可能包含以下内容: 1. UML基础知识介绍,包括术语、基本图形和关系。 2. 深入解析各种UML图表,提供实例讲解和绘制技巧。 3. 如何将UML应用于实际项目,包括需求分析、设计和测试阶段...

    北京航天大学的uml教材的ppt

    UML是由Grady Booch、Ivar Jacobson和James Rumbaugh三位先驱者共同提出的,他们在1997年合并了各自的建模方法,形成了统一建模语言。UML的主要目标是提供一种标准化的方式来表达软件系统的结构和行为,使得开发者、...

    重庆大学uml课件 。

    1. UML简介:UML由Grady Booch、Ivar Jacobson和James Rumbaugh三位专家共同提出,旨在为软件工程提供一套标准化的建模语言。它结合了各种面向对象方法的优点,包括Booch方法、Objectory方法和Rational统一过程(RUP...

    UML精粹.pdf

    UML精粹一书中介绍了UML的基本元素、结构以及各种UML图,目的是为了帮助读者快速理解和掌握UML的核心知识,整理业务逻辑。 本书详细介绍了UML的几种重要图,包括用例图、类图、序列图、活动图等。用例图关注于系统...

    uml 基础、案例与应用(第三版)

    UML基础、案例与应用(第三版) 目录 第一部分 基础知识 第1章 UML简介 3 1.1 在纷繁复杂中寻求解决问题的办法 3 1.2 UML的诞生 4 1.3 UML的组成 5 1.4 其他特征 12 1.5 UML 2.0中的新图 13 1.6 为...

    UML资料(UML 基础、案例与应用 (第三版))

    UML 基础、案例与应用 (第三版) 作者:[美]施穆勒 著,李虎,赵龙刚 译 出版社:人民邮电出版社 ISBN:7115123357 印次:1 纸张:胶版纸 出版日期:2004-7-1 字数:516000 版次:1版1次 内容提要: 本书教...

Global site tag (gtag.js) - Google Analytics