![]() |
项目管理者联盟 | 中国工程管理网 | 中国研发管理网 | ![]() |
会员中心 | ![]() |
资料库 | ![]() |
论坛 | ![]() |
博客 |
![]() |
|
![]() |
|
|
标题:软件技术发展历史
楼主
|
|
![]() draculaf PMB:3300 省份:北京 行业:教育科研培训 注册:2006/7/17 |
软件技术发展历史 随着计算机网络技术的发展,进入90年代以来,异构环境下分布式软件的开发已成为一种主流需求,预计在未来十年内,业务构件技术合成熟并得到普及,那时,整个软件的形态将彻底地发生变化,将引发出现软件经济的新模式、新生产方式与新商业规则。 软件技术之所以自50~60年代以来一直不断地发展,一个主要原因是人们至今尚没有一个能够高效率、高质量、低成本生产软件的满意方法。回顾软件技术发展近50年的历程,可以认为,软件技术的每一次进步,都促进了软件生产力水平的提高与改善。 一、软件技术发展历史回顾 软件技术的发展经历了五代历程。 第一代(50~60年代),是以Algol、Fortune等编程语言为标志的算法技术。那时,程序设计是一种任人发挥创造才能的活动,写出的程序只要能在计算机上得出正确的结果,程序的写法可以不受约束,程序往往是一件充满了技巧和窍门的“艺术品”。基于这种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序,过一段时间后自己也看不懂,这给软件的修改、维护带来极大的困难。60年代末出现了 “软件危机”。 第二代(70年代),是以Pascal、Cobol等编程语言和关系数据库管理系统为标志的结构化软件技术。这种技术以强调数据结构、程序模块化结构为特征,采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,从而大大改善了程序的可读性。伴随着结构化软件技术而出现的软件工程方法(包括CASE工具),使软件工作的范围从只考虑程序的编写扩展到从定义、编码、测试到使用、维护等整个软件生命周期。软件不仅仅是程序,还包括开发、使用、维护程序需求的所有文档,编程工作只占软件开发全部工作量的20%。结构化软件技术使软件由个人作坊的“艺术品”,变为团队的工程产品,大大改善了软件的质量与可维护性,但软件开发的成本却大大增加了。 第三代(80年代)的软件技术是以Smalltalk、C++等为代表的面向对象技术(OO)。 00以对象作为最基本的元素,它将软件系统看成是离散的对象的集合。一个对象既包括数据结构,也包括行为。一般情况下,一个对象与现实世界的一个事物相对应。对象技术的最大优点是帮助分析者、设计者及用户清楚地表述概念,互相进行交流,并作为描述、分析和建立软件文档的一种手段。显然,这将大大提高软件的易读性、可维护性、可重用性,进一步地,这使得从软件分析到软件设计的转变非常自然,因此可大大降低软件开发成本。而算法技术和结构化技术相应的转变就没有这种自然性,因为这两者的实现基础是计算机指令系统,而不是人思维中的概念。例如,循环和分支等语言机制就是对机器跳转指令的抽象。另外,OO技术中的继承、封装、多态性等机制,直接为软件重用提供了进一步的支持。OO技术开辟了通过有效的软件重用来达到提高软件生产率的新篇章。 第四代(90年代)的软件技术是以CORBA等为代表的分布式面向对象技术(DOO)。 随着计算机网络技术的发展,进入90年代以来,异构环境下分布式软件的开发已成为一种主流需求,OO技术对软件的重用,仅限于单台计算机上、同种操作系统与编程语言环境下软件重用,对象往往仅存在于一个程序中,程序的外界并不可能感知和访问这些对象。异构环境分布式系统中的软件重用,要求能够重用不同计算机上、不同操作系统或语言环境下,由不同人员不同时间开发的软件模块。具体地,就是要解决不同软件之间的组合性 (plug and play)、互操作性、可移植性等技术问题。DOO技术的核心是中间件技术,即是通过在系统软件与应用软件之间提供一个统一的软总线(Software Bus),以屏蔽不同操作系统、不同语言环境的差别,将异构分布式系统“转化”为,对软件开发人员而言,一个虚拟的单台计算机、单一开发环境。DOO不仅使00的优点在异构分布式环境下得到保持,更重要的是大大简化了异构分布式软件开发工作的复杂性。另外,DOO对于如何保留利用已有传统软件 (1egacySystem),并使已有传统软件与新开发软件能够互操作运行方面提供了有效的解决方案。 第五代(90年代中期至今)软件技术是以COM、COR—BA3.0、EJB和WebService等为代表的软件构件技术。 面向对象技术及分布式对象技术等支持的软件重用只是以程序源代码的形式进行的,而不是软件的最终形式一一可执行二进制码的重用。这要求设计者在重用别人的软件时,必须要理解别人的设计和编程风格。对于封装风格的类库,使用者不仅需要理解封装在库内的底层技术,还需要理解库本身强加的抽象概念。因此应用其他开发人员的代码往往比再实现这些代码要付出更多的代价。软件构件技术的突破,在于实现对软件可执行二进制码的重用。这样,一个软件可被切分成一些构件,这些构件可以单独开发、单独编译,甚至单独调试与测试。当所有的构件开发完成后,把它们组合在一起就得到完整的应用系统。 软件构件是一种定义良好的独立、可重用的二进制代码,包括功能模块、被封装的对象类、软件框架和软件系统模型等。软件构件技术是基于面向对象的,以嵌入后马上可以使用的即插即用型软件构件概念为中心,通过构件的组合来建立应用系统 |
回复 | 引用 发表时间:2009/2/6 16:28:32 |
! 您尚未登录,不能回复主题。 现在 登录 注册 |
|