超越竞争对手的秘密武器-技术重用

热度3215票  浏览765次 时间:2009年9月15日 16:23

 

老调重弹——重用的好处

网上说软件重用的好处的文章特别多,这里只介绍几点。

l        让生产软件的速度更快。

让那些以重用设计要花更多时间而不原意进行重用设计的人滚一边去吧,软件重用的目的之一就是让软件生产更快。如果贵公司每做一个项目,有50%是重用以前的组件的时候,贵公司的软件生产速度会比你的竞争对手快多少?磨刀不负砍柴功,这个道理谁都懂,但一到现实工作中,还是有很多人直接拿钝刀就去砍大树了。很多软件公司生产了软件多年,还是没有一点技术积累,自己的类库、组件库、共享代码库为零,如果还不立下痛心来改变现状,那就等着被被人淘汰吧。

有一款PS2游戏叫“战神”,非常受欢迎,我也很喜欢玩,而“战神2”的面世比其前作快了很多,也比其他大型软件的开发速度快很多,因为 “战神2”重用了前作的图像引擎。在这个商业社会,不再是大鱼吃小鱼了,而是快鱼吃慢鱼。

l        让软件质量更高。

项目越临近发布,需要加班的几率就越高,开发时间严重超出了计划的时间,而测试的时间不断被压缩,甚至有些软件公司不进行测试了,美名其曰“给客户测试”!这样的软件质量如何让客户满意?如何抛离你的竞争对手?

测试是可以被重用的!如果软件重用了大量的组件,而这些组件之前是经过充分测试的,那么软件的质量就会得到极大的保证,这些组件不需要重复测试,软件需要测试的时间也会大大减少。

l        让管理成本更低。

我曾经花了很大的力气去抓项目的设计过程,但效果甚微,原因是我们没有足够多的利害高手,能把每个项目的设计做好。为了提高大家的设计水平,我们又进行了大量的培训。当我费劲心思提高我们的设计水平的时候,我们公司的技术副总却给了我另外一个思路,让我阔然开朗!

他认为与其从改进过程和提高大家设计能力的角度来改进,还不如编写一套生成项目框架的代码,并要求全部项目使用公司的组件库,这样做项目的人不需要很高的水平就能做出满足架构要求并且质量高的软件来。

每个公司的技术高手毕竟是少数的,要把这些高手用到刀刃上,并通过软件重用这个框架,保证高手们的智慧能贯彻到每个项目中去。这样公司管理过程的成本将会极大地降低,同时公司也不需要招聘大量的高水平的开发人员,把公司的管理重点放到能产生80%价值的20%的员工身上。

l        有利于保护公司的技术秘密。

前段时间我还在笑话一个案例:一名客户希望某系统能做成虚拟现实的效果,能有三维的场景,能从中取出所需要的物品,当时我的感想是:无言!不过不久前,我在网上瞎逛,居然点进一个三维购物网站,里面展示了一个类似于三维的场景,能在货架上取货还能跟店员谈话!我的天啊,太牛了!我觉得非常惭愧,我居然还敢笑话那个客户,看来该笑话的应该是我!那个三维购物网站虽然还不算很强,但已经接近那个客户想要的东西了。我想如果好好发展这个技术,该技术很可能会成为该公司很有竞争力的一个技术!

一个软件公司要成为龙头老大,没有核心技术是不行的。保护核心技术最好的办法,就是采用重用技术。有核心技术的公司,一般会有两套人马,一套人马研发该核心技术的,一套人马使用核心技术的,使用核心技术的人员只能得到编译后组件,而这些组件常常要给与授权码才能使用。

保护好这些可重用的核心技术,这些将成为公司重要的资产。

 

如何做到重用?

l        先做好项目内重用。

不知道你编写代码的时候,是不是经常Ctrl+CCtrl+V?我曾经见过一些软件的代码,相同的代码到处都是,不要说面向对象了,连基本的结构化代码都写不好。相同的内容要抽出来成为方法,相似的功能可以提取到公共类中。这是最基本的编码功底,也是最基本的重用要求,如果连这点都做不到,就不要空谈什么软件重用了。

还有一次,我检查一个VB写的Windows程序的缺陷列表,发现一批关于录入提示不友好的缺陷,后来一问,原来开发人员直接使用VBInputBox函数来让用户录入数据,开发人员还用一堆InputBox函数不好用的理由来说明这个缺陷是不能解决的。该软件存在大量的这种类似的录入窗体,我就问为什么不自己做一个录入窗体,然后在所有地方重用它呢?这样问题就不存在了,而且用户感觉更好,何况做这样的一个录入窗体时间最多也就是30分钟的事情。

做自己做起,从项目做起,马上把软件重用做好吧!

l        拿来主义——利用开源代码及共享组件。

n年前,我曾经利用一个共享的软件,生成其中一个项目的数据操作层的代码,节省了我们不少时间。类似的这样的一些共享代码、组件、软件在网络上非常多,大家不妨多去搜索一下。

不过这里要给大家提个醒,必须测试好这些免费的东西。我曾经吃过亏,我拿了一个网上大家都鼓吹得很厉害的一套开源免费的论坛来做自己的网站,结果发现一堆bug,还有不少是导致网站无法访问的错误。使用免费的东西总是要付出代价的。

另外也要注意大家注意版权问题,很多免费的东西是不能用于商业用途的。

l        项目无可比性,如何做到项目间重用?

当我提到软件重用时,很多人跟我说,我们公司的项目每次都不一样的,很难提炼出可重用的东西。于是我回答,不管是什么项目,很多内容是可以考虑做成可重用的,如:权限管理、配置管理、日志管理、异常管理(出错管理)、缓存管理、数据层组件等。

很多共性的东西,只是我们没有抽取出来。不知道大家是否了解过微软的Enterprise Library,这个Library提供了很多个Block,项目能直接使用这些Block为项目服务,如:Data Access Application Block能提供数据访问的API,你无需再开发数据库访问的代码。微软为什么就可以对不同的项目进行抽象,提炼出这么多可重用的Block,我们是不是应该多动动脑筋?

另外不管你是不是采用.net技术去开发的,也建议去好好研究一下微软的Enterprise Library,看看他们是如何设计这些Block,好好学习人家的重用设计是怎样做的!

l        发掘有价值的重用。

项目中可重用的东西实在太多了,平时要好好发掘。

我的测试团队经常会报这样的一些缺陷,对录入数据的合法性没有做比较全面的判断,如输入电话号码的地方,可以输入“ABC,而系统没有报错。而我们的开发也经常说这类缺陷没必要修改,另外要满足这个要求的话,代码比较难写,而且要到处修改。

我比较纳闷,如果发现要不断地处理类似的问题,是不是应该考虑重用设计呢?如果经常要验证电话号码的合法性,是不是可以做一个电话号码控件,并到处重用这个控件呢?当然电话号码的合法性判断并不简单,这段代码也并不好写,不过我们有“正则表达式”,现在很多开发包都提供正则表达式引擎,这些不都可以利用吗?

注释:正则表达式是一种对录入数据格式和合法性的定义语言,如录入电话号码的要求,完全可以用正则表达式来表达。正则表达式的引擎,可以将正则表达式与输入值进行比较,判断输入值是否符合正则表达式的要求。

我们要有敏锐的触觉,凡重复的代码、凡类似的功能、凡经常遇到要解决类似的问题,都可以考虑采用重用设计。重用设计是有一些难度,不要畏惧这个困难,很多情况下可以用简单的办法解决的。

 

规划技术管理路线,打造核心技术

市场、技术、过程可能是软件公司最重要的三样东西,具备具有市场价值和竞争力的技术,并且通过软件过程管理来保持和扩大这种优势,对软件公司来说是至关重要的。纵观各大软件巨头,无一不是具备这样的特点的。中国要成为软件强国,也必须走这样的发展道路,什么发展外包只是权宜之计。

以前某软件老板曾经说过:他们公司不是研究机构,更不是慈善机构,公司存在的目的就是赚钱,所以他们公司没必要打造核心技术,能赚钱的就做。问题是,如果没有核心技术,能不能持续地赚钱并且赚大钱呢?n年过后,该老板的软件公司也不见得发展了多少,目前还在为公司生存而奋斗。

阿里巴巴的发展大家有目共睹,互联网刚在中国兴起的时候,马云看中了网上交易的前景,目前阿里巴巴网站已经为阿里巴巴带来丰厚的收益,马云把B2B的市场拓展到C2C——淘宝网,为了保障安全的网上交易,开发了支付宝。为继续扩大优势,阿里巴巴并购了中国雅虎,一下子拥有了全球领先的搜索技术。没有强劲的技术是难以保证持续领先的,一流的软件公司都在不遗余力地打造自己的技术优势。

各软件公司应该好好分析自己的市场前景,制定相应的技术路线,打造核心技术来支持公司的战略!而软件重用将是保持竞争力的杀手锏!


特别声明:
如需转载此文,请给出指向本网站的连接,如下:
作者:张传波
摘自:http://www.umlonline.cn
如不能按此要求,请不要转载此文。


顶:197 踩:207
对本文中的事件或人物打分:
当前平均分:-0.32 (879次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.47 (878次打分)
【已经有1054人表态】
190票
感动
117票
路过
110票
高兴
129票
难过
111票
搞笑
117票
愤怒
125票
无聊
155票
同情
上一篇 下一篇
首页 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页