📄 关于rose及uml的10个问题,请高手赐教。.txt
字号:
=====
原文(woodysteven于2001/03/16 16:25粘贴)
嘿,你是错的!
--------------------------------------------------------------------------------
我说UML是方法学,这句话的确不太准确(至少从字面上是这样)。但这实在是因为我并不特别在乎UML的Meta-Model而已。对我而言,真正的UML是UML背后的东西 —— 三位大师在OO建模领域所做的思考和探索。学习UML,重要的是学习Unified Method,而不是UM-Language。
我也知道思想需要借助形式来表达,但这种表达形式本身却是值得探究的!在UML0.9以前,OMT和Booch的方法在表达形式上就存在很大的区别,它们之所以走到一起来,是因为在这些不同的表达形式背后存在共同的语义和互补的方法。Booch 就曾经改变了它的著名的类图表示(从云图到UML的矩形框),关于这个,我又想说:这有什么关系呢?
我最近在看一本Buhr书,他介绍了一种新的方法用来填补UML中需求分析和系统设计之间的鸿沟。为了表示他的方法,自然也推出了一套新的Notation和Meta-Model,不过并不规范和完善,也就是说他没有精确地告诉你某个东西一定要放在什么地方。可是,这本书非常的好,连 Ivar Jacobson (Use Cases 创始人,Rational公司的首席科学家)也极力推荐。问题是,在这本书出来的时候并没有任何Case工具支持它的Notation,我们就更不可能在这里讨论它的关于“状态变量应该放在那里的问题”。那么,是不是就是说,我们就不能在实践中使用这种新的方法了呢?如果真是这样,这个世界就永远不会有鸡和鸡蛋了。
Alistair Cockburn教它的学生使用Use Case,然后布置了一道作业。有一个十分好学的学生几乎把他所知道的所有图形元素都用上了,结果他交给Cockburn一张十分庞大的Use Case图(包括用来描述Use Case的顺序图)。你想情况会怎样呢?本来Use Case是用来清晰表达系统功能需求的,可是从那张复杂的图来看,谁也无法知道这个系统准备做什么!
我想,你现在开始明白我想讲什么了:形式固然重要,可是并没有什么证据使我相信现有的图形表达方式一定是最好的,或者说存在某种唯一正确的表达方式。我知道国外有很多建模方面的专家,他们甚至讨厌Case工具,而宁愿使用字处理器。可是他们确实是在做OO建模,甚至也是在使用UML。
你是不是偶尔也会觉得,打开一个Rose工程文件,从那堆各种各样的图示里边,你其实很难对一个系统产生整体的把握?至于利用Rose来生成代码,我真的没有在这上面看到多大的希望。我很想知道这里有多少朋友,在整个工程周期中都一直在使用Rose的这一功能?如果有的话,你们的生活有没有因此感到惬意?
国内的软件人员有时侯是太遵循标准了,以致于没了标准就不知道该怎么走。殊不知,制定标准的人已经在思考下一个标准了。我觉得,OO是一个特边缘的领域,很多东西都没有成型(不像经典物理,被老牛一个人玩完了),如果在这里都不能有所考、有所创新,咱们就真的完了。
另外,我想告诉Jyemii:你关于状态变量的回答其实是错的。而《UML Programming Guide 设计核心技术》的相关内容并没有错。实际上你所说的并不是状态变量,而是守卫条件(guard-condition)。条件与变量是两码事,条件是变量和临界值构成的布尔表达式。举个例子,客人订票可能使某个航班的状态从Open变为Close。在这里,订票是触发事件,相应的Action是“扣减座位”。如果座位没有了,航班应该停止售票并且转入Close状态。为了跟踪这一变化,航班类显然需要维护一个“剩余座位数”变量,这个“剩余座位数”才是状态变量,它用来刻画航班的当前状态。由于这个变量实际上是一个普通的类数据成员,如果要表达出来的话,当然应该画在类框里面(根据UML关于类框的规范)。UML规格文档(version 1.3)在说明状态框的时候只规定了状态名称和Action List的画法(分别画在两个子框里),并不等于我们就不能把类的其他属性表达出来。正因为这个原因,《UML Programming Guide 设计核心技术》在有的地方把状态框分成了三个子框,加入了状态变量的表达,是一种更详细的表示方式。至于守护条件,在这里显然应该是“座位数 = 0”,它如果画在触发事件的旁边(形式为:Trigger[guard-condiction]),表示“当且仅当事件发生且布尔表达式成立时,状态转移才发生”。另一种形式是:守卫条件可能直接触发状态转移,此时,状态转移箭头上只有[guard-condition],而没有触发事件。
最后,我想告诉Homesoft,只要理解了状态变量和守卫条件的真正含义,即便不看UML的文档,你也绝不会把他写到纸的背面去。我想讲的就是这个意思。
====
回答非常出色!补充:UML是建模语言,因为没有定义过程,因而不是方法学。 - <0b> zjunerd 2001/03/16 20:03 (31次点击)
===
回复: 可能问题太难了,你们都不会! - <0b> homesoft 2001/03/11 21:34 (20次点击)
====
原文(Ms.OO于2001/03/11 22:17粘贴)
是比较难呀老兄,我用Rose做了两个项目了,还是回答不出你的问题
--------------------------------------------------------------------------------
你那个界面的图倒是可以探讨一下,能不能传一张真图到图片共享,文字看起来怪怪的。
====
回复: 图已经上传了,分别叫 教学界面与教学页面1、2 - <0b> homesoft 2001/03/14 21:00 (18次点击)
===
原文(woodysteven于2001/03/17 12:35粘贴)
回复: 图已经上传了,分别叫 教学界面与教学页面1、2
--------------------------------------------------------------------------------
这里线索太深了,我另外开了一个线索用于专门回答这个问题。
===
请问什么是状态变量? - <0b> lgjut 2001/03/12 09:34 (17次点击)
===
原文(dysang于2001/03/15 11:40粘贴)
回复: 请问什么是状态变量?
--------------------------------------------------------------------------------
状态变量是否是指生存周期仅限于对象处于该状态下的属性变量?可以用来存放同特定状态相关的数据?
====
原文(fact-finder于2001/03/16 19:52粘贴)
回复: 请问什么是状态变量?
--------------------------------------------------------------------------------
说具体点:设计范围?实现语言?英文名字?在哪里出现?
=====
原文(ken_xu于2001/03/14 20:32粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教。
--------------------------------------------------------------------------------
no.5
在rose中用Package(stereotype is "layer")表示三层结构中的层。你可以在Logical view中产生一个package(Design Model),然后在Design Model中建立三个Package,分别表示Application, business services, database, any other. It depends your project.
=====
原文(ken_xu于2001/03/14 20:38粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教。
--------------------------------------------------------------------------------
no.2
我不知你所说的类图中的空矩形是何意。
还有我也不知你上指的Document是何东东。
类图中只有Note,text box.
Note通常用来注释。Textbox通常用来加条件(For instance, [if a>2])。这只是我们使用当中的一个约定。我没有看到瑞理有什么Convention.
=====
原文(ken_xu于2001/03/14 20:44粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教。
--------------------------------------------------------------------------------
no.9
我也想选中所有的类,然后再操作。但是好象不可以。Rational软件在操作方面有很多bug.
no.10
在rose2000e中子系统用包表示,使用subsystem stereotype.
可能视觉上不怎么明显,但确实是这样的。
no.6
I think it don't run.
=====
原文(homesoft于2001/03/14 21:22粘贴)
回复: 整理一下答案 (还有1,3,4,7没结果)
--------------------------------------------------------------------------------
原文(homesoft于2001/03/14 21:14粘贴)
回复: 状态变量
状态变量 是 我在《UML Programming Guide 设计核心技术》看到的。page 81
原文(ken_xu于2001/03/14 20:32粘贴)
no.2
我不知你所说的类图中的空矩形是何意。
还有我也不知你上指的Document是何东东。
类图中只有Note,text box.
Note通常用来注释。Textbox通常用来加条件(For instance, [if a>2])。这只是我们使用当中的一个约定。我没有看到瑞理有什么Convention.
原文(ken_xu于2001/03/14 20:32粘贴)
no.5
在rose中用Package(stereotype is "layer")表示三层结构中的层。你可以在Logical view中产生一个package(Design Model),然后在Design Model中建立三个Package,分别表示Application, business services, database, any other. It depends your project.
原文(ken_xu于2001/03/14 20:32粘贴)
no.6
I think it don't run.
原文(john_zhu于2001/03/12 09:46粘贴)
no.8
将以前逆向工程生成的一个mdl按照包导出为patel file,再导入
原文(ken_xu于2001/03/14 20:32粘贴)
no.9
我也想选中所有的类,然后再操作。但是好象不可以。Rational软件在操作方面有很多bug.
原文(ken_xu于2001/03/14 20:32粘贴)
no.10
在rose2000e中子系统用包表示,使用subsystem stereotype.
可能视觉上不怎么明显,但确实是这样的。
====
原文(tacone于2001/03/17 15:01粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教之NO.7
--------------------------------------------------------------------------------
回复NO.7
等了好几天,未见有人应答此问,故冒昧发言:
答案很简单,两者相权,当毫不犹豫选图2(阅者可参见"图片共享"的原图)。
教学界面与教学页面图1(下简称图1)同教学界面与教学页面图2(下简称图2)虽颇相似,但境界截然不同,因为图2使用“教学页面”到“教学界面”的聚合,系统更具可塑性、可扩展性,抽象度更高。试想一下,如果页面太多,可能从“教学页面”派生“目录页面”,用于导航,另外可能还要从“基本知识教学页面”、知识问答教学页面”派生其他子类,这时候用图1则修改量大,并涉及到“教学界面”的修改,而用图1则只需做派生子类,系统逻辑保持完好。
基于以上理由,该模型作为原型还可以,要转化为系统还有如下几方面值得商榷:
1)界面控制不一定只有按钮一种,为保持扩展性,故应为“控制按钮”引入一超类“控制组件”,改成“控制组件”到“教学界面”的聚合。
2)增加“控制组件”到“教学页面”的聚合,使页面更具表现力。
3)口口口口口口口口(此处省略若干字)
4)口口口口口口口口(此处省略若干字)
(由于不了解需求和系统规模,第3第4点不敢妄提,会增加复杂度,有兴趣另帖探讨).
附:图1与图2差别是OOP建模与OOSE建模的差别,OOSE建模会更多地考虑REUSE、系统可塑性、系统表现力、用户需求及其变动,这也是中国PROGRAM强SOFTWARE弱的原因。
另:为何不直接采用BROWSER/WEBPAGE的方式开发,那样建模会大大不同。请回答。
===
原文(woodysteven于2001/03/18 00:39粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教之NO.7
--------------------------------------------------------------------------------
我们的观点基本一致。
另外我觉得Homesoft的模型里面并没有限制不可以用Web方式实现呀?
====
原文(tacone于2001/03/19 02:26粘贴)
回复: 关于Rose及UML的10个问题,请高手赐教之NO.7
--------------------------------------------------------------------------------
主要是对“教学界面”类有看法,如果它对应浏览器,则“控制按钮”类就显得没必要,在某CLIENT上浏览器的实例要有限制,否则会破坏约束。
====
原文(liaofan于2001/03/18 17:57粘贴)
回复: 关于association class
--------------------------------------------------------------------------------
只需要点击association class再连接关联和相应类就可以设置association class了
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -