| 加入收藏| 设为首页| 联系我们

首页 站长学习 站长之家 源码下载 建站素材 书籍教程 常用工具
 您现在的位置: 动力中国 >> 网络编程 >> 软件工程 >> 文章正文  
 [组图]探讨软件开发的未来
 

探讨软件开发的未来

http://www.domcn.org  文章来源:互联网  点击数:

  关键字:探讨软件开发的未来

        1975年,Frederick Brooks写了一本关于软件项目管理的经典书籍,名叫《人月神话》。在这本书中,提出了著名的论调,那就是在一个开发项目中,如果投入更多的人力,那么只会对工作能够更快完成起到阻碍作用而不是帮助作用。其原因就是,在一个项目中如果有更多的人在工作,就会带来沟通中非线性的间接成本费用。

    在Brooks的书出版前五年,一个名叫“瀑布模型”的软件开发方法论诞生了。这种方法是将成熟的工程学学科的内涵应用到了软件上。它的理念是这样的,首先汇集需求,接着进行设计开发,接着是实施,然后是测试,最后在一个线性的队列中让这个项目生产出来。

    从那时开始,我们已经走过了很长的一段路,并且学习了许多关于软件开发的东西。瀑布模型现在被认为是一种有缺陷的方法,因为它是过于定时并且不切实际的。在现实世界中,软件项目总是无法清楚界定,并且需求会不断变化,这样就使它不可能在同一时刻将所有的事都考虑清楚。相反地,如今最好的软件都是用一些较为敏捷方法来开发实施的。这些技术能够让工程师们不断地根据企业和用户的需求来对软件进行调节。

    随着现代程序语言的诞生(Java、PHP、Python和Ruby),一些像Amazon这样丰富资源以及前所未有的架构的服务的出现,我们也步入了整个进化过程的另一个阶段。Digg、del.icio.us、YouTube等网络新生代都仅是为数不多的程序员开发出来的。如今你要开发软件,所需要的只是几个人。在这篇文章中,我们将看看我们是如何走到今天这步,以及接下来我们将朝着什么方向前进。

    为什么“瀑布模型”会失败

    非技术的人们都会认为软件是软性的或者是很容易改变的。由于看不到任何可见的具体细节,并且也没有什么可让人们揭露的东西,因此人们总会认为软件是能够凭着一时的念头就进行修改。当然,实际上并非这样。软件,就像任何的机械系统,都有一定的设计和架构;它并非表面看起来那样软性。

    然而,商业的加速发展要求软件能够有更灵活的变化。旧的开发方法已经完全不能适应如今商业发展的需求。如果使用瀑布模型,这些改变就不可能做到,整个开发的周期就会过长,系统会导致过度设计,花费也会过多,并且整个工作的完成状况时常也不够好。

图1

    问题在于,瀑布模型是傲慢的。这种傲慢源于这样的事实,那就是我们相信我们总是能够在第一次的尝试中就设计出完美的系统。第二个问题是从本质上来说的,动态的系统并不是特别设计出的,而是逐渐形成的。这是一种敏捷开发方法的进化论理念。

    敏捷方法——进化软件

    在上世纪九十年代早期,一些软件开发的敏捷方法崭露头角。虽然它们在细节上有所不同,但它们大都认同,软件开发需要进行大量的重新构想。首先,软件必须接受改变。今天的假设和需求很可能在明天就会改变,而软件就需要很快地对这种改变作出反应。为了能够应对挑战,敏捷的方法提倡简明。用尽可能简化的系统,满足今天的需求,并且在明天来临的时候能够立即准备适应。

图2

    敏捷方法中有两种先驱级的技术特别值得一提——再分解以及开发者测试。Martin Fowler在它经典的著作中对再分解进行了优雅的描述,它的理念是,改进当前代码的设计而不改变它运行的方式。

图3

    再分解能够让敏捷的系统适应改变,并且是优雅而灵活的。就像一名室内装潢设计师不断地更改你的家具布局,敏捷方法的开发者在修订代码的时候也是将整个产品作为一个整体来改进。代码在不断地修改,这让我们能够获得最简单最有效的系统,并且它是反映出我们当前的需求的。

    为了确保所作的更改不会破坏代码,敏捷方法引入了单元测试。每个敏捷项目的展开,就构成了单元测试的基础。每项测试都是致力于系统的单个元素,并且保证这个元素能够按照预想的情况来工作。一般说来,这些测试都不断地对代码运行作出测试,并且在出现错误的时候就需要立即修复。

图4

    使用敏捷方法开发的软件系统是更为成功的,这是由于它们是不断进化并且能够适应新的问题的。就像有生命的有机体,这些系统总是不断地重构,动态地适应变化的需求。毫无疑问,敏捷方法对如今我们开发软件的思考有着重大影响——动态的并且是持续不断的。

    一切皆与程序库有关

    在我们发现开发软件的新方法的同时,我们也发现了更好的编程语言。C被C ++所替代,接着又出现了Java。Perl非常棒,但PHP和Python却让它有了更进一步的发展。更新的还有Ruby,由于它表达代码的自然方式而广为流行。由于这些进化的发展,如今我们已经有了大量优秀的,并且实际上是等同的编程语言。

    虽然对编程语言的选择总是一个敏感话题,而事实就是,并不是语言本身的问题,但加上程序库就会让它们之间产生不同。C++从来没有Java所具备的标准程序库。是的,Java是更简单的语言,但人们使用C++也已经十年有余。真正赋予Java优势的是它丰富的可多次使用的程序库。对于PHP来说也是一样的。它是那些网络开发者们的选择,因为它对网络数据库处理有着丰富的支持。

图5

    除了现代语言的程序库之外,开源运动也为全球的软件架构贡献了很大力量。特别是Apache开发除了大量高质量可重复使用的代码。如今,我们已经拥有开发复杂软件系统的雄厚基础。我们知道方法并且具备相关的工具,那么这意味着什么呢?

   软件开发的未来:仅是一些优秀的人

    在软件开发的早些时候,人们都竭力地为开发好的系统而奋斗。越来越多的人被投入于解决问题,而结果就是让事情变得更糟。但随着最近我们亲眼所见的一个新的有趣的现象:那就是少数几个开发者如今能够开发出成百上千万人使用的系统。那么这是怎么做到的呢?

    其中的秘密在于,其中有效的努力仅是由很少的一部分人完成的。只需要一点的纪律加上澎湃的激情,高素质的工程师就能够独立开发出高度精密复杂的系统。

    加上现代编程语言,良好的程序库以及敏捷方法,比起一群中庸的开发者大军,这个领域的一些聪明的人就能够将事情做得更快更好。

图6

    在接下来的几年我们很可能看到如下的一些改变:

    高素质、高热情的软件工程师将会有很高的需求,并且他们也确实能够赚更多的钱。

    那些不具备优秀的变成技术的开发者将为工作四处奔波。

    我们如今在社会软件市场中所目击到的改变将会触及到企业级别。

    软件外包将越来越没有经济意义。

    计算机科学将属于高度竞争以及涉及名望的领域。

    结论

    很可笑的,我们又随着人月神话回到原点。二十年确实过去了,今天也是现实的,但有很多道理都是新的。众多著名的编程语言以及架构程序库加上敏捷方法,让我们打破了旧式软件开发的教条。仅仅是少数几个优秀的工程师现在就能够成功地开发出高度精密复杂的系统。工艺技巧将真正来到软件工程当中!


探讨软件开发的未来
  • 上一篇文章:

  • 下一篇文章:
  •  热门文章
    普通文章 电子邮件改头换面 四公司畅谈未
    普通文章 PC病毒史上最声名狼藉的八大病
    普通文章 Rails系统中的AJAX开发技术简析
    普通文章 基于ASP.NET AJAX框架实现表单
    普通文章 开发ASP.NET AJAX客户端定制行
    普通文章 用JFreeChart对JSP报表进行增强
    普通文章 SQL Server 2005上的CLR和ADO.
    普通文章 SQL Server 2005的XML支持机制
    普通文章 Firefox中标签式浏览技巧大全
    普通文章 Tomcat中的Session和Cookie大揭
     
     推荐文章
    推荐文章 把Google地图嵌入网页 就是这么
    推荐文章 迅雷搜索候选资源出错的解决
    推荐文章 轻松去除迅雷里的各种广告和资
    推荐文章 突破限制 免费领养到QQ空间五级
    推荐文章 Rational统一过程RUP贴近中小软
    推荐文章 构建自己的轻量级XML DOM分析程
    推荐文章 WPS Office 2007技巧:妙用配置
    推荐文章 Excel 2007:求余数函数实用进阶
    推荐文章 浅谈ASP.NET的Postback
    推荐文章 软件开发中项目需求管理简述
     
     相关文章
    没有相关文章
    设为首页 | 加入收藏 | 广告合作 | 联系站长 | 版权申明 |
    动力中国为网友提供免费学习资料,可用资源,如果您认为我们的相关内容侵害到了您的权利请联系管理员
    Copyright © 2006-2008 domcn.org All Rights Reserved.