软件的定义

软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档

软件的定义由三部分组成

  1. 在运行中能提供所希望的功能和性能的指令集(即程序)
  2. 使程序能够正常运行的数据结构
  3. 描述程序研制过程、方法所用的文档

软件的地位

软件是一种产品,同时又是开发和运行产品的载体。作为一种产品,它表达了由计算机硬件体现的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。

软件的特征

  1. 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性
  2. 软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的
  3. 软件成为产品后,其生产只是简单的拷贝,不同于硬件制造
  4. 在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但维护过程比硬件复杂的多,甚至会引发新的错误

软件危机

指的是软件开发和维护过程中遇到的一系列严重问题。出现软件危机的原因:

  1. 软件维护费用急剧上升,直接威胁计算机应用的扩大
  2. 软件生产技术进步缓慢,大大落后于需求的增长,进一步加剧了软件危机

软件工程

是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

软件工程学

$$
\text{软件工程学}
\begin{cases}
\text{软件开发技术}
\begin{cases}
\text{软件开发方法学} \
\text{软件工具} \
\text{软件工程环境}
\end{cases} \
\text{软件工程管理}
\begin{cases}
\text{软件管理学} \
\text{软件经济学} \
\text{软件度量学}
\end{cases}
\end{cases}
$$

程序设计方法的两次飞跃

  1. 结构化程序设计的出现,程序设计风格从“追求技巧与效率”;变为“清晰第一、效率第二”;
  2. (1) 从结构化程序设计到面向对象的程序设计。

程序设计思想

  • 面向过程的程序设计思想:程序=数据结构+算法;

  • 面向对象的程序设计思想:程序=对象+消息。