软件具有8个特点:
(1)软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
(2)软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。然而它存在退化问题,必须要对其进行多次的修改与维护。
(4)软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5)软件的开发至今尚未完全摆脱人工艺的开发方式。
(6)软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7)软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8)相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。