明智软件开发——Ivar Jacobson博士上海英雄会演讲的主要思想

明智软件开发——Ivar Jacobson博士上海英雄会演讲的主要思想

作者:孟岩
9月5日在上海举办的CSDN英雄会上,Ivar Jacobson博士做了第一个主题演讲,演讲的题目是《明智软件开发》,概括了Jacobson博士最近一两年对于软件开发的最新思考,而且是他第一次对公众做这个演讲。很可惜由于某些意外事件,大会开场时间拖延了15分钟,本来可以给Jacobson博士的机动时间被拖没了,他到最后只要择其要者简单说几句,很多地方一带而过。会下很多在场的朋友都跟我说,这个演讲实际上是当天最好的演讲。这样一个精彩而重要的演讲,因为时间紧张而未能充分展开,非常令人遗憾。

当天演讲之前5分钟,Jacobson博士突然邀请我给他做现场翻译,并且说:“你只需要在你认为有必要的时候打断我,不要逐句翻译。”我当时压力很大,因为这个演讲我也没听过,一走上前台,我脑子里噌噌噌闪过无数杂念:这个题目到底讲什么?其中涉及的专业知识我不懂怎么办?Ivar博士带北欧口音的英语听不懂怎么办?我该站在他身边还是离他远点以保证大师的光辉形象?我该在什么地方什么情况下打断他?用什么方式通知他?这些问题如果在事前有准备,本来是可以从容应对的,但是事情发生得非常突然,我来不及思考就走到他身边,而且一上来就打开了错误的PPT。在后来将近40分钟的演讲里,我多少有点紧张,表现得不太好,听错听漏了一些地方,没有很好地完成Ivar交给我的任务,对于演讲效果的欠佳,我也负有不可推卸的责任。可能也是因为这个原因,当天我的状态一直不太好,在后面的演讲和主持环节,我始终兴奋不起来。借此机会向在场的朋友致歉。

会后很多朋友都向我索要这个演讲的PPT,可以在这里下载:http://download.csdn.net/source/613191

下面我凭记忆把这个Jacobson博士这个演讲的主要思想扼要列举出来。由于当时我比较紧张,而且人的记忆本身就有出错的可能,因此很有可能不准确。请IJI公司的朋友和在场的听众指出我的错误。

在演讲的一开始,Ivar首先革了旧思想的命。他回顾了软件开发思想从过程化,到面向对象,再到组件化、UML、UP、RUP、XP的沿革,然后说这些思想都曾经自以为银弹,但是都被证明并非银弹。事实上,银弹不存在,我们需要的仅仅是明智的软件开发方法(smart software development)。那么到底什么是smart呢?Ivar认为要搞清楚这个问题,就必须想现在一些流行的unsmart观念开火。比如,很多大型组织相信过程而不相信人,这就是unsmart。过程不能开发软件,只有人才能开发软件。所以软件开发以人为本就是smart。有的人相信工具,但是工具本身只是放大器。如果落在了笨蛋手里,“A fool with tools is still a fool, but a dangerous fool.” 有些人以文档为中心,但是文档并不能执行,而且最重要的是,没有人愿意读文档。机器读不懂文档,人又不愿意读文档,那么制造大量的文档有什么意义呢?还有人使用瀑布模型,相信事前能够产生完整的设计,甚至细节都能考虑清楚,但是随着开发的推进,越来越多的paperware最终把开发工作压垮。这些都是unsmart的观念。

而所谓smart,则是以人为本的,承认软件需求变化的不可避免和不可预知。在这一认识的基础之上,Ivar抛出了他的观念,即软件必须从一个小的可运行的skinny system开始,逐渐充实生长称为full-fledge的成熟系统。在PPT上,Ivar 用一只小羊骨架表示 skinny system,而这只小羊最后将长成又大又肥毛又多的澳洲美利奴羊,这就是成熟系统,相信很多在场的朋友印象深刻。Ivar强调,skinny system必须是skinny,抛弃一切细节,但是又必须可执行。在成长为成熟系统的整个过程中,都必须确保系统是可执行的。随着细节不断地被认识,系统逐渐充实完整。

(Ivar 讲到这里,我在脑子里问了一个问题:“这与我们熟知的非抛弃原型系统有何分别呢?后者不也是强调从一个原型出发,逐渐完善称为产品吗?而且就原型系统而言,实践证明抛弃原型效果比非抛弃原型要好,难道大师的smart就是指这个?另外,这跟敏捷思想有什么不同吗?敏捷不也是强调尽早交付可执行代码,并不断重构吗?”果然紧接着,Ivar就回答了这个问题。)

Ivar紧跟着提到了系统架构,他问在场听众,有多少人认为系统架构很重要,不少人举了手,他满意地说,不错不错,“China is fantastic!”,他在其他国家问这个问题,只有一小部分人认为架构很重要。他认为,对于架构的态度,人们容易走极端。要么认为完全不必要,要么就追求恢宏的企业架构,实际上都不是正确的态度。他认为基本而简单的架构是非常重要的,这是区别smart方法与敏捷方法的关键。他认为,尽管smart方法与敏捷方法共享很多相似的部分,比如重构,增量式的前进,程序员测试,但是在对待skinny system的态度是截然不同的。Agile认为,应尽快产生可执行代码,架构可以随后重构出来,而他认为,skinny system就是架构,开发skinny system的过程也就是确定架构的过程。而架构是一个系统中最重要的部分,对质量要求不折不扣的部分,因此必须精心设计,丝毫马虎不得,也别指望事后能够通过重构产生好的架构。另外一方面,也不要执迷于那些通用的庞大的企业级架构。正如skinny system暗示的,好的架构都是小而简单的。Ivar认为,软件各部分对于质量的要求是不一样的,与架构无关的部分,适当降低质量要求以求得开发效率的提升可以的,事后也完全可以通过重构等手段改善之。然而架构却是必须从一开始就认真对待的,Ivar甚至说,“唯一重要的质量就是架构的质量”,兹事体大,不可不察。在这一点上,Ivar还是坚持他在UP中 “Elaboration” 的思想,也即是说,系统早期设计阶段(skinny system)必须力求深思熟虑、精心设计,为后面的敏捷式开发提供良好的支撑。

由此可见,Smart方法,基本上可以看做是 UP 与 Agile 的一个有机组合。我没有实践经验,但是从道理上讲,这应该是一种好的方法。听 Ivar 说,他的得力合作者黄邦伟博士已经在多个重大项目中实践此方法,取得非常出色的成果。至于更进一步的细节,我也就不了解了。

以上,供有兴趣者参考,并请知情的朋友指出错误之处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值