UML之父Ivar Jacobson:精益思想的复兴

作者: 来源:未知 2012-03-05 16:52:16 阅读 我要评论 直达商品

我们从三个方面来解释,我们做的时候不只要可执行,而且要想好它往哪个方向去发展,就是要有个蓝图。我们需要架构,这样会知道它会往哪个方向去发展,有架构但是没有可执行的方面,更是一种海市蜃楼不可靠的。很多人想架构的时候是纸上谈兵,这对我们来说是海市蜃楼,它是虚幻的。另外的情况是,我们今天有很多代码,它也形成了这样的系统,但是没有架构,我的问题是,像这样的东西你认为是什么?(可执行的代码,但是没有架构)就是一些堆积在一起的东西。

所以要关注,要有一个可执行的框架系统,同时要知道它往哪个方向去发展。开始去构造一个骨架系统然后再往下面去加它的肌肉,让它更有力气,变大。

价值和原则,你去做架构层的时候不止是画图,应该知道它的原则是什么,它的一些基本的核心价值是什么。我觉得做一个软件系统这三个方面的东西都要有,我们要从这儿开始,而且这不是非常难做的事情。

如何构建软件工程中的“核”蓝图

UML之父IvarJacobson:精益思想的复兴

这是从美国的西部扩展到美国的东部,这是1976年的事情,那时候发展得更大,现在是无处不在,基础的东西是骨架系统开始,并且它有一定的自己的原则,基础性的东西。左下角写了,当时的Internet发展是有自己的原则性的指导的东西在这里。做事的方式是一样的,我们有一些基本的原则,包括做任何的系统,酒店的系统、航空系统都会有一些基本的原则,用这些基本的原则引导你后面往正确的方向去发展。

我们怎么去改变你现有的工作方式,从刚刚讲的情况来看,后一个例子一般会比前一个例子讲得更细致一些,这个例子会有一些更细节的方面。每个开发人员都知道怎么去开发自己的软件,但是软件开发作为一个社区和群体我们没有一个共识应该怎么做。而这个又是非常重要的,有共识这件事对软件开发非常重要。

软件工程被一些不成熟的实践严重妨碍了它的进步,主要表现在首先软件工程行业看起来更像是一个时尚行业,不像是工程的行业。在20年前我很年轻,这样的面向对方的很流行,27世纪90年代的时候组建化技术也很流行,接下来在20世纪90年代之后大家都开始使用UML,就是UP(统一的过程)。几年前大家都在谈极限编程,现在谈得不多,现在大家谈敏捷和其他的技术,也许明年会有一个新的东西来,大家是一会儿跟这个,一会儿跟那个,跟的同时把自己原来擅长的东西扔掉了。并不是说所有新的东西都不好,其实都有好的东西,比如说敏捷使我们能够快速获得反馈,能够快速交互,但是有可能在扩展性上存在一些问题。所以把原来所有的东西都扔掉跟时尚行业一样,这是很愚蠢的做法。

第二点我们缺乏一个正确的被大家所广泛接受的理论,从过去的一段时间到现在,大概有超过十万种到五十万种这样的方法在市面上流转。这个数字本身并不是最严重的问题,因为我们有不同的人员,不同的竞争力的人,所以需要有不同的方法来应对,问题是在于我们不知道怎么把这些好的东西能够融合在一起,有一些方法在那有可能你都不知道。

还有一个问题我们的学院派的东西跟实际的应用技术间,有些时候有很大的障碍。刚刚提到可能只有1%的一些东西被在实际中应用到。

刚才讲了很多问题,所以我们要去重建软件工程,它是基于比较可靠的理论,以及被证明过的一些原则和最佳的实践,这里用到一个非常震撼的词“革命性”。这里非常关键的是我们需要一个“核”,这样才能抓住问题的本质,把目前很多这样的方法、理论和一些好的东西,能够把它们抓到一起。

这是我们在做软件工程“核”的蓝图,这个“核”中会包含很多基本的东西,大概有20多个这样的元素,这里我们只提到四个,做软件工程和软件开发的方法中必须要用到。我们有很多种可以做需求的方法,但是在所有的软件开发中做需求这个事是一定会有的。不管用什么样的开发语言和技术来做软件开发,你总是希望最后得到一个软件系统,不管是用敏捷的方式,还是用传统的方法,还是其他的方式,总是要有一些工作要做。

团队开发中“核”的重要性

在软件的开发中需要团队,尽管有很多种不同的组织的方式,比如说跨功能的方式,但是一定需要团队来做软件开发。

我们有这样的大家达成共识的软件工程,价值在于我们能用大家所都认可的词汇来去沟通,这样可以解释我们的实践,不同的实践可以组装在一起,也可以用到比较好的实践。我们把这些我们认为标准的东西放在一起,它就形成了软件工程的“核”,它不多不少的时候正好就是反应软件工程的本质。

如图,有个要图标,这就是软件工程方法这个“核”的时候,它是可执行的,有了一个“核”之后,有很多其他的六边形的,它们很容易组装在一起,形成一个可以让大家容易去采用的软件开发和软件工程的方法。

我要以打纸片的方式来做软件的开发,一种卡片是“核”当中的元素卡,元素卡它会描述这个元素不同的状态。刚才讲的“核”的元素卡。这个卡片可以用在做培训,也可以用在平时的软件开发中。元素卡中有很多的状态,我们可以用更小的卡片表示,需求卡,这个状态要通过怎样的手段来达到呢?如果都达到了最终的状态,可以理解为你要做的事情都做完了。刚才我们谈的是“核”当中可执行的这部分。

现在给大家介绍一个实例,用软件工程“核”的方法去组织它的软件开发方法这样的例子。这是一家做软件咨询的公司,他们也做一些外包开发。在屏幕的左手边是一个相当于实践库,然后可以根据我不同的需求,不同的开发项目,去组装出开发项目所需要的软件开发方法,它是由“核”加上它的实践来的。这里面是两种不同的项目,一个是老的维护的项目,另外是新的开发项目,虽然有很多实践是来自于同一个库,但是它们会组装成不同的方法来适应不同的项目。

如图,做再保险的公司,他们有20个实践,9个“核”,在这个基础上开发出四套它的软件开发方法,一个是针对探索性的软件,比如说一些新的东西,然后有一些标准开发的,有一些是针对维护性的,还有一些是用支持这样的项目。

现在我们的方法拿出来之后,已经成为在描述工程方法方面的一个标准,就是用“核”的方式来做描述,可能它会有相应的描述的语言会出来,应该在明年会成为一个标准。

在四年前发起的宣言和声明中,有35个知名人士,16所大学和公司以及1600个开发人员,他们是通过SEMAT网络把他们聚在一起的,SEMAT的意思是软件工程方法和理论,SEMAT解决方案创造了一个容器,因为所有的方法它无非都是很多实践的组装或是融合。刚才我们提到几乎有50万种方法,但是实际上比较常用只有250个实践,通过这么多实践,不同的组装,就形成了很多的方法。我们希望所有的实践都是用软件工程“核”提供的语言的描述,这样大家都达成共识。我们的语言应该是用标准化的方式来描述,到时候不管做什么都可以用到他。


  推荐阅读

  林仕鼎:大数据处理 架构师的三板斧

2月18日,CSDN(微博)在北京举行了TUP第19期活动:大数据系列研讨会——从12306谈起。本次研讨会汇集了来自百度、豆瓣(微博)网、搜狗、淘宝、土豆、凡客诚品(微博)、新浪微博、IBM等公司的众多业内技术高管,就大数据>>>详细阅读


本文标题:UML之父Ivar Jacobson:精益思想的复兴

地址:http://www.lgo100.com/a/kandian/20120305/36942.html

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
我的评论: 人参与评论
验证码: 匿名回答
网友评论(点击查看更多条评论)
友情提示: 登录后发表评论,可以直接从评论中的用户名进入您的个人空间,让更多网友认识您。
自媒体专栏

评论

热度