RUP与软件工程

本期嘉宾:Ivar Jacobson,陈致平,主持人
聊天标题:与Ivar Jacobson面对面
聊天主题:RUP与软件工程
聊天时间: 2004-12-8 (周三) 下午14:00 --------------------------------------------------------------------------------

嘉宾[主持人]: 大家下午好!欢迎来到CSDN嘉宾聊天室,我们今天下午非常高兴邀请到著名的软件开发方法学大师,软件工程界巨匠Ivar Jacobson博士做客CSDN嘉宾聊天室。

[2004-12-8 14:17:00] 嘉宾[主持人]:现在嘉宾已经到达聊天室,我们先向大家介绍一下今天到场的嘉宾。

[2004-12-8 14:18:00] 嘉宾[主持人]: Ivar Jacobson博士是Objectory方法的发明者,也是瑞典Objectory AB公司的创始人。他曾担任Rational Business Engineering部门的副总裁,在那里他负责UML的开发。Ivar Jacobson在这一前沿领域非常有名,他在使用对象方法设计大型实时系统方面已经有超过25年的经验,在大规模架构重用方面也做了大量的工作。Ivar Jacobson的用例驱动方法对整个OOAD行业影响深远,他因此而成为业界的一面“旗帜”。
 
[2004-12-8 14:18:00] 嘉宾[主持人]:今天到达CSDN聊天室的,还有IBM软件集团大中华区Rational软件总经理陈致平先生,IBM Rational技术经理李纪华先生,他们两位也曾做客聊天室跟广大网友进行过交流,今天他们由他们担任聊天的现场翻译。
 
[2004-12-8 14:21:00] 嘉宾[主持人]:今天我们主要的聊天话题,将集中在“RUP”和“软件工程”,现在聊天活动正式开始。
 
[2004-12-8 14:22:00] 嘉宾[主持人]:我们很高兴两年以后又看到Ivar Jacobson到中国来,您和我们《程序员》杂志也算是老朋友了。作为对老朋友的问候,我想请Ivar Jacobson聊聊这两年您大概做了一些什么事情,给介绍一下您的近况。
 
[2004-12-8 14:26:00] 嘉宾[Ivar Jacobson]:这两年我很好,谢谢大家的关心。这两年我主要从事的研究和我的活动集中在Active Software,我是发起者;还做有关AOP的研究;也写了新书,这本新书下个月会出版,是AOP方面的书;还有就是从事一些软件开发的研究,在这方面有一些新的研究发展是我个人喜欢的。尤其是在今年成立了一个公司,是做软件的咨询顾问公司。另外,我自己的公司已经在四个地方成立了,在新加坡、美国、欧洲还有韩国,现在正在筹备中国的咨询顾问公司。
 
[2004-12-8 14:27:00] 嘉宾[主持人]:刚刚进入聊天室的朋友,我们现在正在进行的是:“RUP、软件工程”主题聊天,现场的嘉宾是UML创始人之一的Ivar Jacobson博士
 
[2004-12-8 14:30:00] 嘉宾[主持人]:刚才也讲了对AOP的一些研究,能否请您讲一些软件过程和Use Case的关联?
 
[2004-12-8 14:32:00] 嘉宾[Ivar Jacobson]:首先,实际上AOP的思想的产生已经是很长时间了,在1986年的时候我写过一篇文章关于AOP的文章。AOP的核心思想就是编程的时候,拓展新工程的时候应该有新思路,这个和Use Case技术很相近,这种核心思想就是把各种特性分离。但从AOP到Use Case之间有一定的隔离性,对应到代码之间有一定的隔离性。所以,本质上来讲,AOP和Use Case技术是非常的相近。 我举一个例子说明AOP和UML的关联。如果有一个非常大的系统,是一个数据库的应用,大概有1000万行的代码。当中发现了一个问题,这个问题发生在登录模块上,需要让你增加一个新特性的话,这将会涉及到每一个数据库,每一个交易都要加新特性,改动就是非常大的。 也许登录这个模块,加入这个新特性也就是加一行、两行的代码,但是因为其它的部分还有一千万行的代码,所以,加进去之后会造成其它部分需要大量的修改,就会消耗相当长的时间,而且会具有相当的风险。 我们现在提出了另外一种思路去对待这种应用的修改,这种思路就是我们不动Base Code(基本代码),怎么做呢? 就是加一个新的模块,在这里指定改动什么代码,但是新加的模块背后有一个参照关系,是参照你的基本代码,所以,在这种方法下,实际上你改动的也许就是一行或者二十行代码,但是实际上起的效果是一样的。但这样做有更大的优点,这样你的程序修改的非常小,而且可以控制,不像第一种方法一样,有较大的风险,而且不可控。刚才举的这个例子,只是AOP里的一个想法,这种想法集中表现在当一个软件里想加新特性的时候优越性。AOP核心里面,这只是第一个主要的想法而已,实际上还有其他的核心的想法。
 
[2004-12-8 14:34:00] 嘉宾[主持人]:我们做J2EE的应用的时候,AOP通常应用在以下几个应用,例如事务管理、安全性、登录、Remoting等等。但除了这几种之外,AOP还有什么方面能够用得到?
 
[2004-12-8 14:34:00] 嘉宾[Ivar Jacobson]:实际上AOP不光是用在刚才提到的那些方面,还可以用于整个软件开发的产品更新,比如说像业务建模,还有就是需求管理,这些和刚才提到的Use Case相关,实际上这些也和AOP相关。实际上AOP的核心理念,还有一个重要的观点就是在怎么发现你具有很好的设计的Pattern模式,怎么发现这些方式,实际上对AOP和软件开发来讲都是非常关键的
 
[2004-12-8 14:34:00] 嘉宾[主持人]:现在有很多的网友在提问。有很多的网友在学习UML,现在2.0发布以后,他们对新特点比较关心,想询问一下2.0和1.0有什么大的区别?
 
[2004-12-8 14:35:00] 嘉宾[Ivar Jacobson]:我想把这个问题稍微讲清楚一点,因为1.0是比较久远的版本,实际上很多方面都比较初级,如果和2.0相比,用来比较的上一个版本应该是1.5的版本。际上UML正式作为标准,作为使用是从1.1开始,2.0之前最上面的版本应该是1.5版本,这个我先和大家阐述清楚. 实际上在2.0,我记得不是很清楚具体的特性,但是2.0是非常大的语言,里面加入了非常多的特性。比如说对于分布式系统,实时系统,这里面加入了非常多的特性,加入了端口的概念,还加入了一些其他的标志性符号。里面有个序列图加入了很多的特性,在序列图原来只是单一的线路,现在加一些额外的线路。所以,这是都是2.0里面很重要的特性。2.0包括的语义改进更多。
 
[2004-12-8 14:37:00] 嘉宾[主持人]: 2.0比1.5有很大的改进,会不会这一块将来变得复杂或者趋于简单,这块的发展趋势是怎么样的?

[2004-12-8 14:37:00] 嘉宾[Ivar Jacobson]: UML2.0现在看起来外面的反映比较大,但是,我觉得UML2.0还不够大。大是有原因的,是因为现在的确开发者有很大的需求、需要一个比较大的语言或者比较完整的语言能够符合很多开发上面的需求。问题不在大和小的问题,问题在你学UML2.0的过程有没有一些好的方法,或者一些协助。我建议有些学习的方式比较循序渐进的方式来学习,从比较小的模组了解UML2.0是比较好的方法,另外可以靠一些工具。也还可以通过从事一些开发智能化代理的工作,这样学习UML2.0的时候学习的速度加快一点。我有一个网站叫做Jaczone.com,这是协助性的服务方式。

[2004-12-8 14:41:00] 嘉宾[主持人]:我到Jaczone.com的网站看过一些,我不知道究竟是怎样的服务,我想知道究竟是什么样的东西?
 
[2004-12-8 14:42:00] 嘉宾[Ivar Jacobson]:我先解释一下做这个的想法。是因为在学软件,软件本身就是一个很复杂的环境,本身因为它的本质是很复杂的环境,这里面包括各种不同的方法、步骤、开发不同的流程、不同的语言、开发环境。所以,当然会把环境变成相当的复杂。不过,在学习的过程当中,在软件的环境里面不容易成为一个十项全能的专家,这是一定。 就像我自己不是什么都懂,只是在某一个领域有特别的深造和了解。可是,就是因为这个环境来得很复杂的原因,如果有一个智能性的环境来提供给开发者,就好象是手边的一个专家一样随时在开发的过程中指导他,能够有问题及时的回答问题是比较好的事情。当然,类似的专家系统或者智能化的知识库,如果能够普及,对开发人员来讲,学习的过程障碍比较低一点。 我举一个例子,大家做软件开发的时候,实际上大部分的工作应该是不用大脑的工作,每天有大部分的时间都在做自己的本能工作,但是很少有时间去思考,所以,很多工作是重复做了一次又一次,实际上这些工作很多没有太高效率的。 这些工具的引入,实际上是在帮你减少这种不用大脑的工作的时间,在未来可能还会节省更多的时间,现在能节省比如说20%,未来可能会是节省了30%或者40%的时间。开发人员担心,如果这些工具这么智能,能够帮助我减少很多工作,但是,我的工作该怎么办?你是把我的工作都抢跑了,这个担心实际上没有必要的。 实际上当你节省了时间以后,开发人员可以把时间放在更有创造性的工作上去,这样可以创造更多的软件,而且还可以使软件的价格变得越来越便宜。
 
[2004-12-8 14:51:00] 嘉宾[主持人]: 有网友想听听您对敏捷方法的看法。中国现在很多的公司以做项目为主,比如说政府的项目,很多都要求必须通过CMMI,但同时这些公司也想节约成本,采用敏捷方法。我想问一下,对于做项目为主的公司究竟需要什么,是需要什么东西?
 
[2004-12-8 14:52:00] 嘉宾[Ivar Jacobson]:先谈一谈XP或者还有另外一个词叫敏捷编程,关于这两个方法,RUP和XP的比较,大概在三前年就写过一个论文,论文的英文叫“XP就是敏捷的意思”。这两种方法实际上是有公共点的,但是实际上在采取两种方法的时候,关键是两种方法采取了不同的方式,而且解决了软件里的一些问题。 XP的方法是以代码为核心的一种方法,而且这种方法里更多的是不管你脑袋里有什么东西就去实用它,更多的这种方法是不加定义的,而且很多的东西是未知的一种方法,那么,只要有这种想法就去使用它。但是RUP是一种统一的方法,这种方法更多的是有知识的收集、知识的表现和知识的定义过程。只有经过这个过程,知识才是可用的,所以,这两种方法是有不同的方式。
 
[2004-12-8 14:54:00] 嘉宾[主持人]:刚刚进入聊天室的朋友,我们现在正在进行的是:“RUP、软件工程”主题聊天,现场的嘉宾是UML创始人之一的Ivar Jacobson博士。请大家把问题提交给现场的chengyancy。一会儿,Ivar Jacobson先生就会回答大家的问题,谢谢!
 
[2004-12-8 14:58:00] 嘉宾[Ivar Jacobson]:实际上这两种方法,我讲的具体一点。敏捷编程的方法是侧重在比较个别的领域,所以,在每一个领域做软件开发的时候,可能用到不同的知识,所以,在用敏捷编程的时候,很难去抽取出来公共的东西。在做每一样事情实际上都是很具体的,出现的问题都不带有共性,是很难抽象和总结。 但是,Unifined Process,首先我提到了对知识有收集、整理、加工定义的过程,所以,强调在软件开发的时候要有非常好的体系结构。所以,出现问题的时候,当然也会出现另外一个可能性,就是因为缺乏具体的方面的影射,可能需要有大量的时间解决问题,所以,在这里也提到智能代理的这些方法,这些方法实际上帮你来通过对人员的培训是大大的减少了问题解决的时间。 实际上Unifined Process的这种方法,实际上有更广阔的空间,因为在往里加一些新特性的时候,实际上是非常容易的。实际上在这种Unifined Process里是没有止境的,可以做的东西很多的。
 
[2004-12-8 15:01:00] 嘉宾[主持人]: Ivar Jacobson先生,现场有一些网友问到,小企业如何利用RUP提高效率?
 
[2004-12-8 15:02:00] 嘉宾[Ivar Jacobson]:有很多小的公司里面有很多很好的开发人员、编程人员,也很聪明,所以,他们有时候自己能够创造出或者设计出一些方法,可是别忘了,就是因为他们有一些聪明、挺优秀的人员,这些公司特别的容易成长,不要忘了这一点。以我自己为例,我在瑞典开的Jaczone公司,有一个产品叫WPOIPVER,这个产品刚刚开始设计的时候只有五个人,要不要用UP或者RUP,我们最后的决定当然是要用。 怎么用?用RUP的时候,不是把RUP全盘的使用,而是在里面挑选一些适合他规模当时产品设计的使用。最简单的例子,就是用他的用例和测试用例,是我最常用的两个。很多的开发和测试都是遵循这两个方面使用,为什么这样做?最大的好处就是软件在未来当它要扩充和成长的时候,不要重新做一次,可以从五个人到五十个人,到未来五百个人,开发团队从瑞典到美国,到中国来都可以在RUP的上面扩展和开发,我自己也在设计这个过程当中。
 
[2004-12-8 15:06:00] 嘉宾[主持人]:我接触过很多的开发人员都说UML很好,RUP很好,但是觉得这个东西有一点难用或者用起来觉得有点空。想问一下,UML在这方面有没有提供很好的产品提供很好的环境?

[2004-12-8 15:06:00] 嘉宾[陈致平]:这个问题可以分成两个部分。我觉得在这部分可能设计、开发里的规模要分阶段,这个是必须要考量的。因为它是一个标准和方法,所以肯定有很多的经验、法则可以让学习过程的人比较容易攀爬上去,这不光是UML,任何的工程性的东西都有同样的过程。任何的工程环境里面,创造出来的标准都有知识和经验的积累,如果沿着知识和积累的经验,往上攀爬总是容易上去的方法。IBM有提供很多的顾问和服务,随着不同的阶段提供你不同的服务,我们有一些合作伙伴,对外开的一些课。更重要的就是我们有一些很有经验,很多成功的做成UML和RUP的人和大家分享。Ivar这边还有一些成功的例子可以跟大家分享。
 
[2004-12-8 15:09:00] 嘉宾[Ivar Jacobson]:小的机构和公司公司比较辛苦的原因最主要的原因是规模比较小,没有时间,所以,希望从开始写程序就进入,学习相对许多充裕的环境,很多人是从编码开始,当然,从编码开始,学习过程又不充裕,所以,久而久之问题就会出来。并不是代表不应该用UP或者RUP,因为UP和RUP是正确的事情,而是在于怎么协助,让他在使用UP和RUP过程中比较容易。我们刚才讲的是协助进入UP和RUP就是开发了智能的协助的专家环境,这个环境可以及时、实时的帮助一些初级或者先期学习UP或者RUP的人比较快速的成长。
 
[2004-12-8 15:10:00] 嘉宾[主持人]:现场网友问到:刚才提到了软件工程RUP这方面,请问Ivar对中国软件工程管理有多少了解,和对中国软件工程管理有什么建议?
 
[2004-12-8 15:11:00] 嘉宾[Ivar Jacobson]:我从1996年就来过中国,每隔一两年就来一次中国,所以,我对中国的环境有某种程度的理解。我发现我们用例用的比较多,也比较普遍,不过在用例使用上相对于UP的使用,我们深度的认识还是可以再提升的,再进步。我认为有几个原因和因素可以提供给大家做建议和参考。第一,培训是很重要的,尤其是和有经验的人,有这方面知识的人做学习是很重要的。 对于学习培训上的经费要花得更勇敢一些,因为不光只是在书本上就能取代学习的,而是需要在实际的培训上能够取得一些效果。另外,多多的利用这些最佳的方法和流程是很重要的,实际上最佳的方法和流程,是让学习软件的过程有一个很好的借鉴。另外,还有一个建议,开发的人员不要一心一意的天天在做开发的工作而忘了软件的复用的,如果做开发的同时,多多的想到软件的复用,这样可能更节省更多的人力,并且对软件的开发生产力有一个提升。
 
[2004-12-8 15:16:00] 嘉宾[主持人]: Ivar先生认为中国软件工程和其他国家的软件工程有什么不同?如何看待软件开发的地域性问题?
 
[2004-12-8 15:18:00] 嘉宾[Ivar Jacobson]:我发现,中国国内和国外最大的差别,而且是显而易见的差别就是中国的软件开发的人员的年纪都非常年轻,软件从业人员平均年纪比西方和国外平均年轻十岁以上,这里不乏包括非常多的聪明的软件开发人员,但是却要负担非常重要的软件开发。 所以,可能在开发的速度上面还有它的开发的热度上面是非常大的,可是,这些人不见得有非常强而深的使用的方法和经验,所以,现在国内成长过程中的一个自然现象,就是你的开发的速度可能非常快,可是你开发软件的成熟度可能还在进步当中。所以,这个可能是我观察到现在认为差距最大的现状。
 
[2004-12-8 15:21:00] 嘉宾[主持人]:将来您在中国开公司,会招聘什么样的开发人员在您的公司?从事什么样的职位?
 
[2004-12-8 15:21:00] 嘉宾[Ivar Jacobson]:可能会有两方面是我寻求的对象。第一个是比较基础的一个问题,肯定这个软件从业的人员未来寻找的一定要具备很强的软件方面的能力,还有就是在这方面聪慧的程度。第二,就是可能会找一些起码有二到五年工作经验的人,给他们一些积极的培训,包括把国外的一些资源调到国内来,让这些有经验的开发人员带领新进来的人手做一些软件方面的积极培训。这些人经过六到十二个月就会更有能力和更自信的直接面对客户,这是我们未来招的人。 我想扮演的角色和组成的团队有点像足球,例如韩国的足球在过去十年以前还是一支默默无闻的团队,大家知道这两年韩国的足球有很大的长进,大家去观察,最主要的使他们长进的原因是因为他们在过去的十年当中做了一些有效的方法和步骤。包括他们从欧洲聘请了很有经验的教练,同时,也积极的邀请世界各地,包括欧洲很好的队员还有球队到韩国去做比赛、较量,也因为经过这个过程,一步一步的提升,让他们的足球运动会到今天的地步。 同时,我也希望能够扮演同样的角色,扮演在软件发展过程中教练的角色,同时,我也会带一些国外的软件开发有经验的人员进来做各种不同的交流,我希望通过这样的过程当中,对软件的发展在国内有一个影响。中国实在太大了,我也不能直接的影响到每个人,但是,我希望我扮演一个像触媒的角色,因为做这样的事情引起软件的发展和开发的变化。
 
[2004-12-8 15:26:00] 嘉宾[主持人]:我们网友说,RUP在开发过程中扮演什么角色,为什么要特别地强调它?
[2004-12-8 15:27:00] 嘉宾[Ivar Jacobson]: RUP之所以重要的原因,是因为软件的开发它不是一个艺术,不是用艺术的境界来形容,而是用工程来形容它更为恰当。RUP在这里为什么起的重要作用的原因,软件开发不光是方法、测试、编程,这些所有的工作必须在最后非常无缝、非常有序的能够接续整合起来,才能完成软件开发之前的原始的设计和定义。想想看,这么复杂的工程,需要有一个非常好的方法以及流程来做指导才能够完成这项艰巨的工作。
 
[2004-12-8 15:28:00] 嘉宾[主持人]:聊天的现场图片:http://www.csdn.net/subject/IJ/

[2004-12-8 15:32:00] 嘉宾[主持人]:网友:我是一名高校的教师,请问一下在UML和RUP之间,中国的高等学校可以做些什么?我补充一下这个问题,很多行业里面的人会反映,中国的学生从大学出来以后特别没用,什么都不会,学生也反映,从大学里出来找不到工作非常的麻烦?
 
[2004-12-8 15:33:00] 嘉宾[Ivar Jacobson]:学校当中要去教导UML和RUP,千万不可以忘掉实际应用和实践的部分,不要只是把它当做一个课在教授,实际应用和实践是很重要,可以从Use Case了解,更重要的就是让学生们有实际的工作的分派,这个工作的分派应该让学生非常完整的理解到从软件设计开发,最原始的需求,设计、开发、编程、测试以及到最后软件的项目的完成,而且不能只是用手工做这件事情,而是要配合一些自动化的工具,让学生在过程当中能够非常明确的知道到底软件工程的开发它的一个生命周期的原貌是什么样的,同时在这个过程当中尽早的学习和体会到软件开发过程应该会遭遇到的环境和状况。我以我们公司为例,新进的员工必须有两个礼拜到三个礼拜的集训,集训的过程中将会分派到相当艰难的软件开发工作,从分析到编程,让他们亲临软件开发的过程,从这个过程中体会到RUP和UML的精髓。
 
[2004-12-8 15:35:00] 嘉宾[主持人]:现场还有网友提问:在UP里面对人的因素是怎么定义的?还是只要照这个过程做,什么人都可以?以及,您如何看待软件开发中、软件、硬件和人之间的关系,谁最重要?
 
[2004-12-8 15:42:00] 嘉宾[Ivar Jacobson]: RUP里面最关键的因素就是人的因素,当时原来在开发RUP的时候,或者开发软件的时候,实际上已经考虑这个因素,因为在软件开发里面最重要的因素就是人的因素。不管是RUP还是其他的方法论,实际上都会带来流程的改变,就是软件开发过程的改变。而软件开发过程的改变,实际上在改变人的工作方式或者说软件开发人员的工作方式,所以,开发工作方式的改变,和银行里做银行业务的改变是一样的。 所以,如何去适应这个变化,如何让开发人员感觉到比较舒适,这个变化对他不会造成太多的负面影响,实际上是一个公共的课题,不光是软件上的课题。实际上这个话题,对人的变化可能已经有十万年,人类可能也有十万年有这个问题存在,软件没有任何的例外。所以,问题就是怎么把公共的东西在软件领域加以适用,因为有一些书在讲这些问题,就是怎么能发生变化的时候让人感到轻易的接受这个变化,比较轻松的接受这个变化。这些书里面相关的领域内容对软件怎么样进行适用或者对应的映射是现在的课题。嘉宾[主持人]:请问您怎样看待自由职业者?就是自由参与开发只接受项目管理,不接受或可自由接受企业管理的人,这种自由职业者怎么发展起来的?您会在您的公司里用到这些自由职业者吗?

[2004-12-8 15:47:00] 嘉宾[Ivar Jacobson]:作为自由从业者首要条件就是一定要非常的出色,要比一般的员工要出色很多,而且他还要有一些和约的限制,因为最主要的是因为作为自由从业者,只要是他们的员工,不管是什么人员都会给一些适当的培训和投入,如果他随时随地的就掉头就走,这个人对合作关系上是难以维持的。所以,如果是非常优秀的人也有合约上面的形式的约束,还是能够愿意使用的。
 
[2004-12-8 15:48:00] 嘉宾[主持人]:我记得两年以前做采访的时候,我当时问你未来有什么新技术的趋势,你提到可执行的UML,现在可执行的UML的发展怎么样呢?
 
[2004-12-8 15:50:00] 嘉宾[Ivar Jacobson]:可执行的UML实际上并没有如我所预期的发展。原因可能实际上存在着不同的标准,从UML到可执行的UML,因为要和具体的软件的代码要相关,而在软件代码,从UML到软件代码这方面不同的厂商有不同的做法,现在看上去大概有三种途径都可以从UML快速转到代码,包括IBM,包括微软,还有Borland都可以做。但是,事实上这几家最终没有达成共识性的东西,所以,可执行的UML作为标准提出,实际上还是有待时日。 实际上MDA(就是模型驱动的体系结构),这种开发方法和可执行的UML的现状是完全相同的,实际上由于各家在标准上还没有达成共识,实际上对开发人员来讲,对最终用户来讲,还没有一个非常统一的一个解决办法。 IBM现在实际上在领导和倡导一个标准的形成,IBM采纳了比如说UML这样的技术,另外IBM也积极的倡导像开发源码,像Eclipse,像IBM所做的一切,都是为软件领域做一个非常好的贡献。但是,实际上我也担心,在这个圈子里面其他的厂商未必去沿着IBM的路线去走。
 
[2004-12-8 15:53:00] 嘉宾[主持人]: RUP有没有简化版本,适合中型或者小型项目的?怎么样判断裁减后的RUP,还能体现RUP的精髓?
 
[2004-12-8 15:54:00] 嘉宾[Ivar Jacobson]:使用RUP要做裁减的时候有几个地方只要稍微留意,可以适合各种不同的公司的要求。包括第一是使用用例,就是你在使用RUP的过程中,用例的使用是非常重要的。用例的使用要从需求一直到测试,用例要能够相连续的使用它,让开发过程更为流畅。第二,一定不能少的就是迭代式开发,能够精确、准确的掌握所开发的原始的目标,迭代式的开发也是相辅相成的。第三,很重要的就是一定要有非常精简的架构,在做设计的时候。软件的开发有一个非常好而且很精简的设计的架构,让你在未来的软件和扩充上面会节省非常多的资源。
 
[2004-12-8 15:55:00] 嘉宾[主持人]:请介绍一下RUP和UML方面的学习资料?
 
[2004-12-8 15:55:00] 嘉宾[Ivar Jacobson]:有两个建议,第一个就是《统一软件开发过程》那本书,其实是对RUP很完整的书,这本书写的非常的细和多,可能是因为做著作的时候希望讲的非常的详尽,但是阅读的时候是一个很好的开始。另外,在网上有许多RUP和UML的参考资料,如果上IBM的网站,到上面搜寻,就可以打Rational Edge就可以找到上百上千的RUP和UML的文章,那是一个很好的学习的地方。
 
[2004-12-8 15:57:00] 嘉宾[主持人]:您是怎么看待新出的《AOSD with Use Case》这本书,还没有引进中国,因为现在有些出版社正在考虑引进您的这本书,请介绍给中国的开发人员?
 
[2004-12-8 15:59:00] 嘉宾[Ivar Jacobson]:这本书是一个软件开发过程的一个里程碑,这本书用两年多的时间去撰写它的。同时,这本书为什么会是一个很值得参考学习的原因,是因为这么多年来Use Case上面的使用经验非常的丰富,之后再回过头来探讨AOP的使用更为实际和贴近开发的环境和角色。
 
[2004-12-8 16:00:00] 嘉宾[主持人]:写这本书的潘为是中国人吗?
 
[2004-12-8 16:00:00] 嘉宾[Ivar Jacobson]:对,他是华人,他是新加坡人。
 
[2004-12-8 16:01:00] 嘉宾[主持人]:长时间的复用一个模块,如果几年都在复用的话是不是好的做法?复用一个东西的粒度究竟多大比较合适?小一点的粒度还是多大的粒度是比较合适的?
 
[2004-12-8 16:03:00] 嘉宾[Ivar Jacobson]:谈到软件的复用,实际上要理解软件的结构一般都是分层的,比如说最底层的还有中间层的,中间层一般有系统层的,在系统层之上还有一些是大量的应用,首先理解软件是分层的。第二点,首先你要想做好好的软件复用,必须对你的领域和知识有相当的了解,比如说电信行业,银行、金融行业,对这个行业有非常好的了解。 软件复用粒度,我举一个例子,在面对类或者CLASS的复用是非常低级的,而且是不可取的,要复用什么东西,要复用很好的架构或者框架,重用子系统,重用组件等等,在这些粒度上重用才是真正有意义的。我在几年前写过一本书关于软件重用的,我写过一点,在软件重用非常困难的一点,就是在你的组织里面,怎么样在项目开发的时候去重用、判断,哪些部分是可以重用的,可以部分是不可能重用的。判断的前提就是对你的软件有一个非常好的建模的过程,要有很好的架构分析以及领域知识的掌握。
 
[2004-12-8 16:06:00] 嘉宾[主持人]:《程序员》的采访有一个习惯,请大师给中国的程序员说一句话,上一次您说的是“让中国的开发者赶紧去学习RUP”,而这次您会说什么呢?
 
[2004-12-8 16:07:00] 嘉宾[Ivar Jacobson]:好的软件来自于聪明的开发者,聪明的开发者来自于有能力的编程人员,有能力的编程人员需要更多的经验以及方法来支撑他,要有更好的软件开发的经验和方法,一定要继续苦读RUP。
 
[2004-12-8 16:08:00] 嘉宾[主持人]:补充一下,陈致平先生还有什么要和开发人员沟通的?
 
[2004-12-8 16:09:00] 嘉宾[陈致平]:首先谢谢所有参加今天在线聊天的网友,我们其实一直在不停的在过去的这么长时间里把非常有经验的大师和人员带进国内,和所有的读友进行交流,最主要的目的没有其他的,就是希望让我们的开发环境、我们的开发经验以及我们的开发视野更加的丰富,我当然在这里特别的感谢CSDN和我们一起努力做了这么多回的推广,我决定相信这个事情我们会继续的持续做下去,带给国内的开发环境更丰富和充实的未来。
 
[2004-12-8 16:10:00] 嘉宾[主持人]:谢谢嘉宾、谢谢各位网友,也要感谢Ivar Jacobson先生,感谢陈致平先生。
 
[2004-12-8 16:11:00] 嘉宾[主持人]:感谢大家今天的积极参与,大家的热情远远超过了我们的预期,我们今后还会举办类似的聊天活动,希望得到大家一如既往的支持。对于想了解RATIONAL的网友,可以去DW的RATIONAL专题和www.ibm.com/cn/software/rational,今天的聊天实录,将会在近期发布的CSDN网站上,请大家关注CSDN网站!今天的聊天就到这里,感谢大家的参与! [2004-12-8 16:16:00]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RUP模型是一种敏捷软件开发方法,其主要优点包括:具有迭代和增量开发的特性,使得项目开发周期短,进度易于掌握;注重需求分析和设计阶段,可以提高软件质量;具有灵活性,可以根据项目需求进行定制和调整。此外,RUP模型还可以促进开发团队的协作,提高项目管理的效率。 ### 回答2: RUP模型是一种软件开发过程的方法论,具有如下优点: 1. 适应性强:RUP模型具有高度的灵活性和可定制性,能够根据项目需求进行调整和扩展。开发团队可以根据项目规模、风险和资源等因素,灵活选择并定制适合的迭代和增量开发过程。 2. 风险管理:RUP模型重视风险管理,项目在每个迭代周期都会进行风险分析和评估,及时发现和解决问题,降低项目风险。通过风险管理,能够在项目早期进行风险评估并采取相应措施,提高项目成功率。 3. 高质量产品:RUP模型强调需求分析和设计阶段的重要性,确保产品和项目满足用户需求。通过迭代和增量的开发方式,能够及时获取用户反馈并进行调整,保证产品质量。 4. 注重项目管理:RUP模型强调项目管理的重要性,有详细的工作流程和角色定义,通过工作分解结构来管理项目进度和资源。有效的项目管理能够提高团队的协作效率,并保证项目按时交付。 5. 可视化:RUP模型提供了丰富的项目文档和工具支持,能够帮助团队成员更好地理解项目需求和进度。通过可视化的项目管理工具, 团队成员可以清晰地了解项目进展, 并能够更好地进行沟通和协作。 总的来说,RUP模型具有灵活性、风险管理、高质量产品、项目管理以及可视化等优点,能够帮助软件开发团队更好地实现项目目标。 ### 回答3: RUP(Rational Unified Process)是一种基于迭代和增量的软件开发过程模型,具有以下优点。 首先,RUP模型强调迭代开发。通过将整个软件开发过程分解为多个迭代阶段,每个迭代周期都能够产生可执行的软件版本。这种迭代的方法使得团队可以快速验证和反馈,及时修正和改进软件,减少风险。而且,迭代的方式也能让需求和设计逐渐清晰,帮助团队更好地理解客户需求。 其次,RUP模型注重风险管理。在整个软件开发过程中,RUP模型提供了各种风险管理策略和工具,帮助团队及时识别和解决风险。通过风险驱动的方式,团队可以在早期发现潜在问题,并采取相应的措施来减少风险对项目的影响。 此外,RUP模型鼓励团队实施可重用性和组件化的开发。模型提供了一系列的最佳实践和指导原则,帮助团队设计和实施可重用的组件和框架。这种组件化的开发方式能够减少重复的工作,提高开发效率和质量。 最后,RUP模型强调团队协作和共享知识。通过定义清晰的角色和责任,在整个软件开发过程中促进跨职能团队的协作和沟通。同时,模型还提供了一系列的文档模板和指南,帮助团队共享和传递知识,从而提高整个团队的能力和效率。 综上所述,RUP模型具有迭代开发、风险管理、可重用性和组件化开发,以及团队协作等优点,能够提高软件开发过程的质量和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值