text: 一：软件的概念、特点与发展
  （1）软件发展的三个阶段
  - 程序设计阶段（50~60年代）
  - 程序系统阶段（60~70年代）
  - 软件工程阶段（70年代以后）
  （2）软件的概念
  软件：是计算机系统中与硬件相互依存的另一部分，包括程序、数据及其相关文档的完整集合
  - 数据：是使程序能够适当处理信息的数据结构
  - 程序：是能够完成预定功能和性能的可执行指令序列
  - 文档：是开发、使用和维护过程中程序所需要的图文资料
  （3）软件的特点
  - 软件本身具有复杂性
  - 软件成本高昂
  - 软件未摆脱手工开发方式
  - 软件维护与硬件维护有本质区别，维护难度高
  - 软件开发不是传统的硬件制造过程
  - 软件是一种逻辑实体，无磨损性
  二：软件危机
  （1）软件危机的概念
  软件危机：在计算机软件开发和维护过程中所遇到的一系列严重问题。主要包含两个方面
  - 如何开发软件，以满足日益增长的软件需求
  - 如何维护数量不断膨胀的已有软件
  （2）软件危机的表现
  ①对软件开发成本和进度估算不准确
  - 实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量，从而不可避免地会引起用户的不满用户对已完成软件不满意
  ②软件质量不可靠
  - 软件可靠性和质量保证的确切的定量概念刚刚出现不久，软件质量保证技术(审查、复审、程序正确性证明和测试)还没有坚持不懈地应用到软件开发的全过程中，这些都导致软件产品发生质量问题。
  ③软件不可维护
  - 很多程序中的错误是非常难改正的，实际上不可能使这些程序适应新的硬件环境，也不能根据用户的需要在原有程序中增加一些新的功能。“可重用的软件”还是一个没有完全做到的、正在努力追求的目标，人们仍然在重复开发类似的或基本类似的软件
  ④没有适当的文档资料
  ⑤软件成本在计算机系统中所占比例逐年上升
  - 由于微电子学技术的进步和生产自动化程度的不断提高，硬件成本逐年下降，然而软件开发需要大量人力，软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升
  ⑥软件开发生产率低
  - 软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
  （3）软件危机产生的原因
  A：主观原因
  - 忽视需求分析
  - 轻视软件维护
  - 没有认识到程序只是软件的一部分（很多人的共性问题）
  - 没有认识到软件开发只是软件漫长生命周期中一个比较次要的阶段
  - 越到后期如果引入变动则代价越高
  B：客观原因
  - 软件是逻辑实体，具有不可见性，所以管理和控制较为困难
  - 软件不会磨损，维护意味着需要修改原来的设计，维护困难
  - 软件规模庞大，程序复杂性随规模增加而增加
  ①对计算机软件应该有正确的认识
  - 应该彻底消除在计算机系统早期发展阶段形成的“软件就是程序”的错误观念。软件是程序、数据及相关文档的完整集合。其中，程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料
  ②要吸取和借鉴人类长期从事各种工程项目积累的原理、概念、技术和方法
  ③积极开发和使用计算机辅助开发软件
  ④探索更好更有效的管理措施和手段对开发过程进行控制和管理