软件的定义:
软件工程=程序+数据+文档
- 程序:计算机可以接受的一系列指令,运行时可以提供所需要的功能和性能。
- 数据:使得程序能够适当地操作信息的数据结构。
- 文档:描述程序的研制过程、方法和使用的图文资料。
软件的本质特性:
软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。
一致性:
- 软件不能独立存在,需要一幅于一定的环境(如硬件、网络以及其他软件)
- 软件必须遵循人为的惯例并适应已有的技术和系统
- 软件需要随接口不同而改变,随时间推移而变化,而这些变化时不同人设计的结果
可变性:
- 人们总认为软件是易修改的,但忽视了修改所带来的副作用
- 不断的修改最终导致软件的退化,从而结束其生命周期
不可见性:
- 软件是一种“看不见,摸不着”的逻辑实体,不具有空间的形体特征
- 开发人员可以直接看到程序代码,但是源代码并不是软件本身
- 软件是以机器