软件工程的新技术及其面临的挑战
    有人认为软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则,也有人认为软件工程是以工程的形式应用计算机科学和数学原理、从而经济有效地解决软件问题。世界上比较公认的、IEEE在软件工程术语汇编中的定义:软件工程是①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。
当今时代,随着软件工程的高速发展,普适计算、网络资源、开源软件等新技术逐步得到了大多数软件工程师的青睐。在此仅以开源软件为例,简单地说明一下软件工程的更新发展、以及未来面临的挑战。开源软件英文表示是open source software,简称为OSS,直接的字面意思是公开源代码的软件。软件既然连源代码都公开,因此开源软件具备可以免费使用和公布源代码的主要特征。然而开源不仅仅表示开放程序源代码从发行角度定义的开源软件必须符合如下条件:
1、自由再发行
  许可证不能限制任何团体销售或赠送软件,软件可以是几个不同来源的程序集成后的软件发行版中的其中一个原件。许可证不能要求对这样的销售收取许可证费或其他费用。
  2、程序源代码
  程序必须包含源代码。必须允许发行版在包含编译形式的同时也包含程序源代码。当产品以某种形式发行时没有包含源代码,必须非常醒目的告知用户,如何通过 Internet免费的下载源代码。源代码必须是以当程序员修改程序时优先选用的形式提供。故意地扰乱源代码是不允许的。以预处理程序或翻译器这样的中间形式作为源代码也是不允许的。
  3、派生程序
  许可证必须允许更改或派生程序。必须允许这些程序按与初始软件相同的许可证发行。
  4、作者源代码的完整性
  只有当许可证允许在程序开发阶段,为了调整程序的目的将“修补文件”的发行版与源代码一起发行时,许可证才能限制源代码以更改后的形式发行。许可证必须明确地允许按更改
后的源代码所建立的程序发行。许可证可以要求派生的程序使用与初始软件不同的名称或版本号。
  5、无个人或团体歧视
  许可证不能都有针对任何个人或团体制在专门奋斗领域内的任何人使用该程序。例如不能限制程序应用于商业领域,或者应用于遗传研究。
  7、许可证发行
  伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证签字盖章。
  8、许可证不能特制某个产品
  如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只以来于这一发行版。如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。
  9、许可证不能排斥其他软件
  许可证不能限制随该许可证软件一起发行的其他软件。例如,许可证不能要求所有与之一起发行的其他软件都是开源软件。
  10、许可证实例
源代码下载开源社区GNU GPL、BSD、X Consortiun和Artistic许可证都是我们认为符合开源软件定义的许可证。MPL也是一样。
开放源码软件运动是计算机科学领域的一种文化现象,源自黑客对智慧成果共享、自由的追求。开源运动发展到现在,这种能够积极促进人类文明发展的文化已经渗透到信息、教育、健康等领域,融入了哲学范畴。由于开源思想源于计算机软件界,所以发展至今,计算机类开源产品的种类、数量都是很多的,使用也比较广泛。如在操作系统领域,Linux在服务器市场就占据了相当大的份额,并持续扩张,IBM公司销售的薄片式服务器中大约有75%就运行着Linux操作系统;Web方面,全球有百分之五十以上的Web服务器在使用开源的Apache系统;数据库,有针对互联网应用的轻量级数据库MySQL,也有针对大型应用
的PostgreSQL,中国最大的门户网站Sina的后端数据库就采用了开源的MySQL数据库软件。其他还有各种非常流行的软件,如GNU的编辑软件Emacs、Linux的图形处理界面Xfree86、排版软件TeX等等,都获得了广泛的应用。开源被很多黑客认为是计算机科学的一种文化复兴,是计算机科学真正成为科学并能够与其他科学一起同步发展的手段。开源发展到今天,不仅仅有数以万计的黑客在积极地参与,像IBM、HP、CA、SUN等一些软硬件厂商也在加大在开源方面的投入并积极向开源社区贡献优秀开源软件,因为开源催化了软件业快速向服务也蜕变的速度并为IBM这样的硬件和集成服务提供商提供了新的商机。
软件工程面临的挑战主要有:遗留系统的问题、异构系统的问题、高可信软件开发的要求和软件开发方式的变化。而开源软件开发技术的发展,主要带来了软件开发方式的变化,它同Web工程一样共属于网络时代带来的冲击,这使得当今软件工程师们面临着研究分布式的软件体系结构和开发模式、探索与之相适应的软件工程策略的巨大挑战。在追求数字革命给商业经济带来的极限利益过程中,我们不能简单地依赖于过去几十年在计算能力、带宽和存取能力方面取得的巨大成功,技术、经济和社会因素促使我们最大限度地、无止境地发展软件开发方法和技术,只有这样,才能保证新经济下大规模的、以软件为中心的系统获得可持续健康发展。纷繁复杂的数字化世界呈现出分布性、并行性和协同性三大态
势。海量信息散落在世界的各个角落,一台主机集中控制一切的时代一去不复返了;虽然用户面对的是一个整体的服务体系,它的后面却隐藏了一个巨大互联网络系统;一方面,“并行”是人类活动时空分散的必然产物,无论是电子化经济过程还是软件开发的生命周期,网络计算控制下的“多线程”方式给我们带来了巨大的社会和经济效益;另一方面,由于快速便捷的网络构成了信息时代的社会基础,协同工作代表了数字化世界的社会特征,是一条服务“供应链”将人们紧密地联系在一起。
由此可见,过去的梦想是今天的现实,服务、网络和经济的相互渗透,促进信息产业迅速的发展,同时也给软件开发带来前所未有的困难,2000年以Rational公司首席科学家的Grady Booch为首的100位软件界权威对新经济下的软件业预测是:软件将变得越来越复杂;无线网将具备远程获取能力;新经济要求软件能够持续更新;软件在无限制地发展的同时,问题也在不断出现。然而我们相信,随着软件工程的发展和一些新技术的不断涌出,当今的许多问题将被接二连三地解决,随之而来的是更加严峻的挑战。
                                    07070401
                                任 竹

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。