随着计算机硬件性能的极大提高和计算机体系结构的不断变化,计算机软件系统更加成熟和更为复杂,从而促使计算机软件的角色发生了巨大的变化,其发展历史大致可以分为如图1.1所示的四个阶段。

图1.1 软件的发展阶段

(1) 早期阶段
  在计算机发展的早期阶段,人们认为计算机的主要用途是快速计算,软件编程简单,不存在什么系统化的方法,开发没有任何管理,程序的质量完全依赖于程序员个人的技巧。
(2) 第二阶段
  计算机软件发展的第二阶段跨越了从60年代中期到70年代末期的十余年,多用户系统引入了人机交互的新概念,实时系统能够从多个源收集、分析和转换数据,从而使得进程的控制和输出的产生以毫秒而不是分钟来进行,在线存储的发展产生了第一代数据库管理系统。
  在这个时期,出现了软件产品和"软件作坊"的概念,设计人员开发程序不再像早期阶段那样只为自己的研究工作需要,而是为了用户更好地使用计算机,人们开始采用"软件工程"的方法来解决"软件危机"问题。
(3) 第三阶段
  计算机软件发展的第三阶段始于70年代中期,分布式系统极大地提高了计算机系统的复杂性,网络的发展对软件开发提出了更高的要求,特别是微处理器的出现和广泛应用,孕育了一系列的智能产品。软件开发技术的度量问题受到重视,最著名的有软件工作量估计COCOMO模型、软件过程改进模型CMM等。
(4) 第四阶段
  计算机软件发展的第四阶段是强大的桌面系统和计算机网络迅速发展的时期,计算机体系结构由中央主机控制方式变为客户机/服务器方式,专家系统和人工智能软件终于走出实验室进入了实际应用,虚拟现实和多媒体系统改变了与最终用户的通讯方式,出现了并行计算和网络计算的研究,面向对象技术在许多领域迅速取代了传统软件开发方法。

  在软件的发展过程中,软件从个性化的程序变为工程化的产品,人们对软件的看法发生了根本性的变化,从"软件=程序"发展为"软件=程序+数据+文档"。软件的需求成为软件发展的动力,软件的开发从自给自足模式发展为在市场中流通以满足广大用户的需要。软件工作的考虑范围也发生了很大变化,人们不再只顾及程序的编写,而是涉及到软件的整个生命周期。