以史为鉴 软件开发未来路在何方?

 【IT168 技术分析】1975年Frederick Brooks写出了软件项目管理的经典著作——《人月神话》。在这本书中,他最著名的观点就是,软件项目中并非总是人多力量大,他认为增加更多的人到软件开发项目中非但不会让项目进展更快,相反会起到阻碍作用。理由是让更多的人在一个项目上工作会因交流中的不顺畅而造成诸多问题。
 
    在《人月神话》面世的五年之前,瀑布模型软件开发方法就已经诞生。这种方法将成长工程学的观点运用到软件中。其指导思想是,首先收集需求,然后进行设计,接下来实施,然后经过测试,最终得到我们需要的软件成品,这种方法指导下的软件开发是一个线性的过程。
 
    自此以后在软件开发方面我们已经走过了一段很长的路,已经学习到了许多相关的知识。我们现在知道,瀑布模型是一种有缺陷的方法,因为它非常不灵活和不符合实际情况。在真实的世界中,软件项目通常会存在定义不清和不断变化的需求,要想一次把所有事情都考虑到是一件不可能的事情。取而代之的是,今天最好的软件是使用敏捷方法来创建和改进的。这类技术可以让软件开发工程师根据业务和客户的需要来不断的继续重新设计软件。
 
    随着现代编程语言的到来,诸如Java、PHP、Python和Ruby等,以及丰富的代码库和来自类似Amzon的空前的底层服务的出现,我们正在进入另一个革命性的阶段。Digg、del.icio.us、YouTube等新的Web时代的典范只是由一小部分程序员所开发的。为了创建今天的软件,你只需要有一些真正有才华的程序员就可以了。在这篇文章中,我们将描绘出软件开发走到今天的轨迹,以及未来将走向何方。

为什么瀑布模型会失败
 
    非技术领域的人一般会认为,软件是一个非常灵活或容易修改的东西,认为它没有可以看得见摸得着的东西的约束,因此可以在任何时候任意的修改。当然,这是一种错误的看法。和任何机械系统一样,软件具有设计和架构;它并不像看起来那么灵活。
 
    然而,加速发展的业务需要人们对软件进行不断的修改。老的开发方法已经完全不能满足这种需要。使用瀑布模型,这些修改是不可能的,开发周期会非常长,系统会会耗费过多的人力、物力成本,而且通常情况最终开发出的软件却并不好用。


图1、瀑布软件开发模型


    瀑布模型落伍的问题在于傲慢自大。这种傲慢自大则来自于这样一个因素:我们相信可以一蹴而就的制作出一个完美的系统。瀑布模型存在的第二个问题是它是一个成长性方法,不适合动态系统,而正是这种进化的思想导致了敏捷方法的推出。

敏捷方法—为不断发展的软件而生
 
    在90年代初,许多敏捷软件开发方法就已经出现。尽管它们在细节上有所不同,在总体上思想上一致的:它们都认为对于软件开发方法需要进行重新思考。首先,软件应该不得不接受被修改的现实。今天的设想和需求在明天可能已经发生变化,软件需要迅速的响应这些变化。为了面对这种挑战,敏捷方式主张简单化。制作能够满足今天需求的最简单的系统,而且要做好明天修改的准备。


图2、敏捷软件开发原则


    敏捷方法所倡导的两个技术值得特别关注:重构和开发测试。Martin Fower在他的经典著作中将一种开发思想优雅的称为重构(refactoring):在不改变现有代码工作方式的前提下改善其设计。


图3、重构


    重构可以允许敏捷的系统接受修改,同时又保持软件的稳定和效率。如同一个装潢设计师不断的改变和完善你的家具的布局,敏捷开发者为了从整体上改进他的产品可以不断的修改代码。代码被不断的修改,可以确保我们最终拥有一个可以反映我们目前需要的最简单、最合适的系统。
 
    使用敏捷方法创建的软件系统要成功的多,因为它们已经采取了改进,可以适应需求不断改变这个问题。这些系统如同一个有生命的东西,可以不断的变化以适应一直变化的需求。毫无疑问,敏捷方法在两方面对今天我们开发软件的思维方式带来了很大的冲击:动态编程和连续编程。

代码库让软件开发更轻松
 
    在我们发现了软件开发的更好的方法的同时,我们还发现了更好的编程语言。C语言被C++所替代,接着又出来Java语言。Perl虽然非常伟大,但是PHP和Python更进一步优化了它。最近又除了Ruby,由于其在表达代码时非常自然的特点,它已经成为最受欢迎的编程语言之一。综上所述,今天我们拥有了许多优秀的编程语言。
 
    尽管编程语言的选择通常是一个敏感的话题,不过事实上我们选择的并不是语言本身,而让我们作出不同选择的是语言所带的代码库的强弱。是什么让Java把C++取而代之?是的,Java是一个更简单的语言,但是在十年的时间中人们一直很好的使用C++,它难道不如Java?问题就在于代码库。C++从来没有Java所拥有的标准库。让Java具备优势的正是其丰富的可重用的代码库。PHP也是如此。它已经成为最适合Web开发者的选择,因为它具有非常丰富的功能来支持Web和数据库处理。


图4、比比谁的库里东西多


    除了现代编程语言所带来的丰富代码库外,开源运动也为全球软件界贡献了大量的代码。最为显著的是,仅仅Apache基金会自己就创造了大量的高质量可重用代码。我们现在已经进入了一个新时代,我们在创建复杂软件系统的时候,已经拥有了一个强大的基础。现在我们既拥有了方法,又拥有了工具,这对未来的软件开发意味着什么呢?

软件开发的未来:有才华的程序员的天下
 
    在软件开发的的早期时代,人们为了创建一个好的系统而苦苦奋斗。越来越多的人加入进来以实现这个目标,却使事情变得更加糟糕。但是,随着最近社交网站的爆发,我们看到了一个新的有趣现象:少数开发者现在能够创建可以被数百万人使用的系统了。这是如何实现的呢?
 
    秘密在于这些系统只是一些有才华的软件开发人员独自完成的。只要遵循一点软件开发的纪律并具有高涨的热情,高效的工程师们能够自己搭建出一个伟大、复杂的系统。
 
    掌握了一门现代编程语言,借助于伟大的代码库和敏捷编程方法,许多在车间中的聪明的家伙可以比那些由普通开发者所组成的正规军更快、更好的把事情搞定。


图5、软件开发的三种利器


    在未来的数年中我们极有可能看到以下变化:
 
    •热情的高级软件工程师将供不应求,当然他们也将会得到更高的回报。
 
    •那些不具备伟大的编程技能的开发者将不得不另谋生路。
 
    •我们今天在社会软件市场所看到的改变将逐渐在企业级别的市场上演。
 
    •软件外包将具有越来越少的经济意义。
 
    •计算机科学将继续是一个竞争激烈受人尊重的领域。
 
结论
 
    可笑的是,软件开发的发展完全遵循了《人月神话》中描述的轨迹。二十年前正确的的东西在今天依然适用,只是论证其正确的理由发生了改变。众多令人惊喜的编程语言、基础类库与敏捷方法结合在一起,让我们可以老的软件开发教条中解放出来。只有少数伟大的工程师现在能够成功的创建出具有高度复杂性的系统。技术最终又重新回到软件工程学中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值