【原创】软件架构技术发展历程总结及思考 1of2(待续)

软件架构技术的发展历程总结及思考1of2(待续)

骆金松

1   软件架构技术产生的背景

1.1     软件危机的出现

    20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

    20 世纪60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机(Software Crisis)开始爆发。

    早期出现的软件危机主要表现在:

    ① 软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。

    ②软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。

    ③生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。

1.2     软件工程的兴起

    1968 年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程(Software Engineering)”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。软件工程诞生于60年代末期,作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。

1.3     结构化设计技术

    作为软件工程重要的组成部分,结构化设计方法得到了极大的发展。软件模块化技术是软件架构技术中最早讨论的技术之一,模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。当时提出了“信息隐藏”、“提高内聚”、“减少耦合”、“提高开放性”等架构设计原则成为至今开发复杂系统所采用的基本架构技术,可以说结构化设计技术是软件架构技术的起源。

2   软件架构技术的发展

2.1  面向对象的编程

    “面向对象的编程(Object-Oriented Programming)”起源于挪威人Kristen Nygard于1962年发明的Simula语言,美国人Alan Kay于1970年发明了SmaUTalk语言,并首次使用OOP术语。为了使得开发更加真实的反映现实世界,人们开发了更多面向对象的语言,包括C++、Smalltalk、Ada 95等。面向对象编程语言使得在模块化设计的基础之上,实现了面向过程的编程过渡到面向对象的编程,同时架构技术也得到了巨大的发展。基于面向对象的设计语言,人们提出了面向对象的需求分析、面向对象的设计、面向对象的编程、面向对象的测试等技术,采用面向对象的技术,为了编写出高质量的代码,人们提出了面向对象的设计模式(Design pattern)的概念,使得人们可以采用面向对象的编程技术编写出更加优雅,支持规模更大、结构更复杂、更加容易维护和扩展的代码。

    在中小规模的软件中,对象和对象之间的协作关系就能够满足需要。但是当软件规模扩大,复杂度上升的时候,面向对象技术强调的协作却表现

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值