您的位置:首页 > 运维架构 > 网站架构

【SD2.0大会】现代软件开发之父Ivar 解读语言与架构

2007-11-30 12:47 471 查看
主持人:非常感谢二位精彩的阐释。此前我们就和您提到过,今天在这里我们为您呈现的是一场科技的盛宴,所谓盛宴,端上桌的当然道道是美味,道道是极品,所谓的极品和美味指的是来自我们现场7位国际的顶尖大师他们顶尖的思想和顶尖的技术,让我们共同来领略吧,首先来到我们身边的是有现代软件开发美誉的 Ivar Jacobson早年在爱立信担任首席架构师,95年加盟了Rational成为UML创始人之一,并且注有UML语言用户指南等软件的经典著作,掌声有请。

Ivar Jacobson:大家上午好。我今天来到这里感到非常激动,大家知道中国是我的第二个祖国,我每个月都要来中国,我们还会继续每个月在中国。北京我开设了一家公司来帮助出产更好的软件,我下午还会有一些发言,还会有一些动手的实践,我们会做很多的实践。

我的话题非常简单,我只会谈一些要点,在我们的工作当中,我们今天早上也听到了现在新的趋势,有很多的流行词汇。有一些以服务为导向的架构、企业、服务等等都是一些流行的词汇,这些东西我们怎么去处理呢?作为一个公司来讲,我们应该在乎哪些呢?这些东西都跟我们相干吗?我们都需要吗?也许。

我们回到一些最基础的东西上,我们在做些什么?我们是开发软件的,我们要获得一些创意,利用这些创意获得一些更好的软件,变得更软。我们的工作就是要创造好的软件,更快而且成本更低,这就是关键了。这就是我们所需要的吗?确实是这样的。我们需要一些什么东西呢?到底什么是好的软件呢?我们来看一下。我想讲的很简单,大家可以讲的很多,但是我们先抓住核心,好的软件到底是什么呢?它是有用的软件,它为你做你所做的工作,你需要做的时候就可以做,你需要用的上的时候就可以用得上,而且是可以扩展的。如果你在大银行或者一个运营公司,如果一个软件是工作五年的话是没问题的,如果你工作很有效率的话,你不想五年后这个软件又不可以用了,因此它需要有延展性,有些领域永远要延展的。

我的一个大的系统是一个架构,我建造的这个架构是很多你们出生之前我们就做出来的东西,是1967年的时候,这个产品还是一个旗舰的产品,是我们公司的产品,是最重要的产品,它存活了37年了。我们不想让这个产品死掉,我们要理解软件一定要需要成长,而且成长得很优美,无疑是能使我们想象力延展到最远方,这是软件应该做到的,我们也不应该让软件死掉,我们让它工作它就工作,这是它的可靠性,这才是好的软件。

另外是速度,我们如何出产软件呢?软件的发展是由人们来开发出来的,我们希望它是由工具开发的,我们也发明了一些工具,我们有时候认为利用人工智能来开发软件,但是主要来说还是要靠有能力和有动力的人,只有有能力的人,我强调这两个字眼“有能力的”跟“有动力的”,你可能有能力,但是你没动力,这是我们在强调的东西。

另外我们要强调的一点就是低成本,有很多方式你能够获得低成本,但是要用规模化和软件的再用性,也就是说你要再用,再用性对于降低成本是非常有用的。这是非常容易做到的,但是尽管如此,我们还是需要一些实践才能做到。

Jon Erickson刚才讲到程序语言是一种能力,但是它不是一切,我们所有的人都会掌握一些语言,刚才Jon Erickson举了一个游戏的例子,还有协议的例子,我要强调的是有一个长期的知识是非常重要的,就是你要有好的软件的话,你要理解一些实践的做法,相比其他来讲,有一些实践是比较基础的。我们今天有一些人要建立一些Component,在我做软件开发的时候,以Component为基础的不存在,以Component为主的开发是1977年在瑞典获得了很大的成功。

大家听说过Abba吗?你们太年轻了,可能没有听说,Abba是一个乐团,是个歌唱组合,我不说这个了。以component为基础的开发是非常基础的东西,对开发者来说你们应该非常了解这一点。

还有架构,要了解如何建造架构,这种知识是长期的,你一生都需要,它不像语言,有流行的时候有不流行的时候,但是架构非常重要。除了整块开发,我们还可以用小块进行开发,每一次开发一小块,迭代开发是非常重要的知识,对任何来说都是基础。还有使用用例,Use Case,你要用用例开发,同时要测试用例、使用用例做测试。还有一些其他的做法,我们还有其他的一些东西,包括Scrum,也是非常重要的一个实践,还有用户故事也是非常重要的,这都是非常基础的东西,你要想成功、要想建造好的系统、好的产品,程序员当然是必要的,但是多数人都有了。你要想差异化,就要了解建造的系统,建造的系统是非常重要的,所以这些都是基础。

另外,我会在北大教一些协议方面的东西,如果大家感兴趣的话,可以到北大听我的课,这些都是基础的东西。如果想降低成本,你要有很多的在用,你要学很多高级的实践,比如Product Line Engineering,就是生产线的工程,你需要这些东西。另外还有面向服务的架构SOA,SOA现在成为了最流行的词汇,但是架构已经存在了30年了,这里面有一些新生事物,非常好的东西,我非常喜欢,也是非常有价值的东西,但是它只是大规模的Component而已。如果你在银行工作,你需要一些企业的架构,你可以把它们组合起来。这是另外一种新的实践,我们需要这种实践,才能够给我们建造好的软件,要取决于你工作于什么样的领域,建造软件还不够,我们还要很快的建造软件,因此我们要强调“有能力”跟“有动力”的人,只有这两个相加,这种人才是最厉害的。有动力是非常重要的,敏捷性也是最近的一个流行词汇,它也是很重要的,它是关于社会工程。

比如说我们推的一些东西,包括迭代开发,关键的一点都是社会工程的这个概念。我们要使一个团队共同做的很好,要有一个团队的经验,要建造一个好的环境,使得这个团队能够实现超越。要想社会工程非常敏捷,我们有很多好的一些做法,包括共同责任、自我指导的团队等等,我们都有一些大家特别喜欢的方式实现敏捷,大家有多少人在做敏捷?请举手。就这么几个人吗?在做敏捷的人请举手。好。你不做敏捷,不接触敏捷,好象就是在说自己懒惰,不想努力工作,你们多少人觉得自己是敏捷的?请举手。这次人数更多了,很好。我们都需要敏捷。我们怎么能够实现敏捷呢?你可以用旧的方式靠读一些书籍,书籍是静态的东西,而且并不总是相关的,我写过八本书,我也喜欢人们买我的书,但是书是静态的,它不能够走,所以我要跑到全世界宣传,当然我喜欢宣传我的书,只要大家买我的书就可以了。

但是现实是人们不读程序的书,人们不爱读如何开发软件的书,大家是通过动手做来学习。因此,当我们在培训的时候,我们不要期待人们读书,大学的时候人们可能会读书,但是不要期待他们会读书,新的做法是启动人们的大脑,训练的时候跟他们去做,训练的时候要有教室,做一些很简单的培训。我们有一成套的卡片,你可以将这些卡片组合,让里面加一些东西,你可以写一些自己的实践在卡片上,做一些混合,训练你的人员。这是很好的方法,如果今天下午大家听我的演讲的话,就知道我什么意思了。

你从一些基础的层面获得一些基础的实践,如果你想开发软件,你就不要停止。有些软件不会成功,有的时候不用改进,要做一些更高级的实践,做一些自己的实践,这是大家要发生的事情。
作为结果,就是能够获得好的软件,而且速度很快,而且成本很低,这就是所需要的,做到这些我们就能成功。所以说欢迎大家到我的会场上,我会给大家做一些演示,到我的展台上去,我会做一些演示,谢谢大家。

主持人:谢谢Ivar Jacobson先生。我们不仅感受到了Ivar Jacobson先生的思想,同时也感受到了他的幽默,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐