Java代诊断码系列——软件开发未来数年内发展趋势展望(转)

  Java代诊断码系列——软件开发未来数年内发展趋势展望(转)(@more@)   

Java/j-djc06173/# author1 "埃里克·艾伦(Mailto: eallen@cs.rice.edu”> eallen@cs.rice.edu)
博士。候选人,Java编程语言小组,水稻大学
2003年8月

  
在<我>诊断Java代码系列最后一部分,埃里克·艾伦讨论软件开发的当前动态并展望未来数年内的发展趋势。   

尊敬的读者:我非常遗憾的通知您这将是<我>诊断Java代码系列的最后一部分。我已经(最后)完成了我的博士学位工作,将前往行业实验室帮助开始新的编程语言调研项目。

  

在这最后一篇文章中,让我们来看看我们的水晶球。我们将讨论一些软件行业的流行动态,以及预计它们对软件开发的未来产生的影响。我们将重点讨论在过去两年半内,我们在这一系列文章中使用的有效软件开发。与往常一样,我们将特别关注有效错误预防和诊断在使我们实现在日益复杂的数据领域中自由翱翔扮演的关键角色。

  

当调查行业整体发展方向时有三种流行动态需要考虑。它们是:

  
      <李>广泛使用的无线计算的爆炸性增长   <李>开发可靠软件不断增长的开销   <李>计算性能持续的快速完善李
  

总之,这些动态正在重新塑造软件和软件开发过程中涉及的软件工程的基本特性。从高处看,软件开销及其普遍性正在把我们引向更广泛和更普遍的抽象概念,如强大的虚拟机器,具有精心定义的语义和安全特性,从而使我们能够在更多的平台上更轻松地开发和维系软件。

  

同时,计算性能的不断完善使我们能够构建这些抽象概念,不会蒙受无法接受的性能下降。我非常愿意尝试一些我认为我们可以构建新抽象概念的方法,它们将有助于创建下一代软件产品。

  

基于组件的开发
在基于组件的开发中,软件使用<我>模块进行开发,其外部引用从特定实施分解。然后这些模块可以动态进行链接,以构建一个完全成熟的应用。注意”外部引用“不仅仅包括引用的对象,还包括可以使用的类,甚至子类。(想一想Java编程中不同包互相引用的方法。现在考虑相互分解包)。在这一专栏中,我们已经讨论了一种关于基于组件的Java编程理念——Jiazzi(见“来源>参考资料,2002年月日11月专栏分解包相关性)。

  

基于组件的编程承诺两种互补性优势,随着上述态势变得越来越突出,这两种优势将变得日益重要。首先,基于组件的系统可以实现更大范围的重新使用,例如,考虑到目前的无数程序,它们提供文本编辑支持(邮件客户机,文字处理程序,ide等等)。同样,考虑众多提供处理电子邮件支持的客户机。姑且不管提供这些业务的程序的数量,很少程序能够处理电子邮件以及作为专用电子邮件客户机。而且没有邮件程序能够实现与专用文本编辑器相同级别的文本控制,但为什么所有邮件客户机(ide、文字处理程序等等)必须开发自己的文本编辑器呢?如果有一个各种第三方组件可以实施的标准“文本编辑器”api那该多好啊!邮件客户机等工具可以选择它们最喜欢的实施这一api的方法并把它加入。实际上,人们甚至可以想像,用户使用现成的组件(如他们最喜欢的编辑器,他们最喜欢的邮件客户机)来创建自己的环境,可以在应用运行时动态链接这些现成的组件。

  

基于组件的模式的另一种优势是更大范围测试的潜力。在爪哇语言中,类的外部引用,如I/O库类和类似类,都是硬连线引用,如未重新编译不能做任何更改。结果是,很难对单独依靠外部引用的程序部份进行测试。例如,实际上如果不允许一个程序从文件系统进行读和写,很难测试它是否正确使用了该文件系统。但在单元测试中读和写文件会减缓测试,增加更多的复杂性(如创建临时目录和在使用后清除文件)。理想状况是我们应分离程序和I/O库的外部引用以便测试。

  

有多种方式我们可以用来标准化一个组件模式.J2EE在对象级别为web业务提供这样一种模式.Eclipse为IDE组件提供一种模式.Jiazzi提供一种可以链接单独编译的软件“单元“以形成一个完整的应用的模式。每种公式在特殊的环境中使用,我们期望在接下来的数年内看到更多的公式。

  

断言和不变量联合基于组件的编程必须将越来越多的重点放在断言和确保实际上满足计划预留用于组件的不变量的其它方法。类型系统自身并没有表现得能够捕获所有计划的不变量。例如,我们不应期望文本编辑API的方法类型可以捕获所有与“只关闭打开的文件”类似的不变量。我们可以依靠非正式文件来规定这类不变量,我们标准化和检查的不变量越多,效果就越好。

Java代诊断码系列——软件开发未来数年内发展趋势展望(转)