首页 新闻 论坛 小组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员

logo

您的位置:CSDN 首页−>新闻频道−>正文

Ivar上海交大激情演讲-下一个大的趋势是主动软件

2005.10.31  来自:CSDN管理频道   Shining   共有评论(0)条 发表评论    收藏

我认为下一个大的趋势是主动软件,软件不再是被动的模式,而是主动的模式。今天讲讲主动软件是什么,主动软件在软件开发过程中是什么样的。

主题:“下一代软件过程”
时间:2005年10月25日 9:00AM
地点:上海交大法华校区安泰楼演讲厅
活动主办方:
        CSDN
        雅各布森软件(北京)有限公司
        上海交大软件学院

技术发展有大趋势、小趋势。大趋势是什么样的趋势呢?计算机的诞生是大趋势,是大的发现。小趋势,比如在过程中我们改进的方法就是小趋势。我认为下一个大的趋势是主动软件,软件不再是被动的模式,而是主动的模式。今天讲讲主动软件是什么,主动软件在软件开发过程中是什么样的。

做软件开发,有三个阶段。第一阶段是根本不知道有什么过程,大家都是用随意的方法或者自己发明创造的方式做事情。第二个阶段是有过程的,大家都在谈过程、如何组织好团队等。第三个就是不可见的过程,并不是说必须要有一本书,只是在你需要的时候,自然而然呈现的一些过程规范。

我们是需要统一过程?还是敏捷开发呢?大家现在都在说"我是敏捷的",这个情况就像说自己很棒一样。每个人都会说自己很棒。不过敏捷开发是不是理想的过程呢?

大家可以看到,现在的软件开发要懂很多的平台、语言等。各种各样的技术、很多的东西,实际上最后都是需要很多的知识的。从哪里获得这些知识呢?有一种途径,可以读书。但读书有一个巨大的问题,同一个领域有超过30本的书,而这些书和书之间可能会有冲突,作者的思想不一致,有不同的意见。再说,我们也无法去阅读如此多的书,因此我们需求一个"smart"的过程规范。

我们和敏捷在开发上,有很多的原则是一样的。但有一个巨大的区别,统一过程和敏捷开发,对知识的理解、知识的处理方式是不一样的。

第一类知识是隐性的知识,来自于你的经验。可能有的人经验很多,而刚刚毕业的学生可能经验比较少。另外一类就是显性知识的。我们这个过程是工程化的、结构化的,是一个全面的,没有冲突的,没有重复的,可以比较容易的给大家做培训、做传授的知识体系。这个就是我们所说的显性知识。统一过程是聚焦在显性知识方面。

下面就是一个显性知识的例子。


 

大家看,整个过程,从大到小、从宏观到微观,都有细微的步骤说明,有条件,告诉大家在什么场景下应该怎么做。这可以用一系列规则来定义。

软件开发中UP和敏捷开发两个阵营,一个是显性的,一个是隐性的,各有各的优点和缺点。我们首先来看看敏捷开发的阵营。熟悉敏捷开发的朋友,可以看到敏捷开发的四条宣言。

 个体和协作 胜于 过程
 可工作的软件 胜于 完整的文档
 客户协作 胜于 合同
 响应变化 胜于 遵循计划

无论是左边的,还是右边的,都对你的软件开发都是有意义的。这个体现了一个价值取舍的问题。但是,因为敏捷开发最初诞生的原因,是因为UP变得过于繁重,对大多数人来说理解和掌握非常困难,所以才有四条宣言的出现。作为软件开发,有一个很重要的特点,过分依赖于隐性知识,告诉你几条原则,就让你自己去做,这不容易做好。就好象刚才问大家是否掌握了用例驱动方法,就没有很多的人举手,这说明隐性知识是不可靠的。这两个阵营有一些融合,但还是有区别。在敏捷开发中领导者实际是很重要的。想把一个东西变得敏捷,恰恰相反,可能会变得更不好。如果在这中间有一个领导或者思想领袖,能够领着大家一起往前走,大家都同意跟着他走,情况就好办。如果大家都不同意,这个时候就会陷入僵局。

UP统一过程,则是努力把知识变得显性的。爱立信在60、70年代,还是一个小公司。当时有很多的电信的巨头,在这些巨头中,他打败了一个又一个竞争对手。爱立信的成功是瑞典有史以来的一个很大的商业成功故事。爱立信到了80年,已经达到了5000人的开发团队。在最初时,基本上没有任何的文档、书籍去说明如何开发一个好的软件。一直到90年代,这个状况都没有太大的改观。如何开发好的软件,如何教会大家使用软件,没有一个很好的方法。从86年开始,我当时的心愿,就是要帮助回答这个问题,"如何开发好的软件?",这个"好"要加一个着重点,因为开发软件是一回事,开发好的软件是另一回事。这中间有很多的步骤,每个步骤有很多的决策、决定,有很多具体的规则决定什么是"好"的。这些无论是好的设计、需求、好的架构,如何将它们做到 "好"?这背后有很多的规则。我从86年开始寻找、搜集针对如何开发好的软件的相应规则和知识。这些关于如何开发好的软件的规则,才真正是我们所说的统一过程的"皇冠上的宝石"。在过程中把知识变得显性化,我用这个模型做了努力。

但是显性知识也有一个巨大的缺点。因为显性知识很多,就会成为一个很复杂、很庞大的知识体系。在掌握这个知识体系的时候,对一般的人来说就变得超级困难。大家可以看到,在UP中定义了四个阶段以及各种不同的工作流,想使用的话,需要经过这张图上的一个循环,这个循环是一个比较复杂的过程。这么几圈走下来,会发现确实很笨重。UP在这个意义上,是不够敏捷的。

给大家讲一个小笑话。有两个傻瓜,在马路上讨论怎么致富。这时开过一辆宝马,有一个年轻人在车上。一个傻瓜说,这个人肯定很有钱。一个傻瓜走到年轻人的车旁,问他怎么能够致富。年轻人说:需要很聪明。傻瓜问:聪明是什么意思?……有钱人就说,不要被别人打到,这就是聪明的事情。……
 


这个图,还是很重要的。作为敏捷开发,下一步该如何发展?如果知识都是隐性的知识,只是一些原则,怎么可能开发出敏捷开发呢?但统一过程就不一样,必须能表达出很多很多的知识。Smart的含义就是,你需要的时候,把知识自然而然的展现在你的面前。UP现在由6600页文档组成,可能还有更多,这都没有关系。只要是这个过程,在真正需要的时刻,才把相关的知识传达给你。对你来说,有多少页都没有关系。举例说,开车的时候踩刹车,实际有很多的活动在发生,但你不用关心这些,只要刹住车就行了。我们也要达到这样的程度。在开发软件的时候,有多少时间你是没有在思考的呢?而且一再地思考如何解决重复出现的问题呢?这种思考所占的百分比是多少?

现场回答:大概30%  。

这个比例非常低了。有已经比较重要的概念,就是思维的定式、行为的定式。开发中,我们的思维的定式、行为的定式,如果有很多的经验,有很多的思想的定式、模式,这种模式在运作的时候,平均来看,有超过80%的时间是在解决相同的问题。我们要把更多的时间放在有效的工作上。我们在设想的解决方案是什么呢?是一个智能的代理。它是从AI过来的,是智能化的,以规则为基础的,基于规则的小的机器人,首先它能够教会你做一些事情,也能帮助你做一些事情。背后有一系列的规则组成,这个规则是你的相应的显性知识的凝聚体,它可以教你、指导你做一些事情,帮助你做一些事情,还可以帮助你检查一些东西。这就是我们所说的智能代理。

结对编程。跟结对编程相类似的是用Agents完成的。只有UP才有丰富的知识,把格式形式化,形成智能中间的一些规则。针对显性知识,刚才提到的问题,如果有智能器做帮助,就会大大的缩减。

我们也产生了一个关于Smart的宣言,有四条。

 让众所周知的知识显式化 胜于 知识的隐性化
 主动过程 胜于 被动过程
 让模型成为代码 胜于 让代码成为模型
 团队能力 胜于 核心个体

这四条中,头两条是我今天演讲的比较重要的内容,第四条是指整个团队的能力的提高,而不是指某个个人能力的提高。关于过程的变迁,从隐性到显性,直到Smart,我2000年就组建了一个公司,叫做雅各布森。这个工具叫做waypointer,曾经获得过Jolt大奖,这个工具能够实现智能化,帮助你在开发中做很多的事情。

Smart真正的含义有三个重要的环节,主动指导、主动观察、主动协助。

由于时间关系,演讲必须要结束了。希望大家带回家的很重要的一点就是,以后工作的时候,不需要书,有一个主动的过程可以帮助你。

总结一下我今天的演讲就是:希望以机器为中心的世界转变到以人为中心的世界。评判标准就是:是不是能够以人类特有的能力,创造力,在开发过程中间获得乐趣。

更多活动报道和相关技术内容,请访问IJS技术专区(http://www.csdn.net/ijs/)

从技术到管理,从优秀到卓越!CSDN管理频道,实现你的卓越梦想!

发表评论 0条】
其他文章
相关文章
最近评论
正在载入评论列表...
热点评论

     
    网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号 世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved