软件具有以下特点:
无形的,没有物理形态:
软件只能通过运行状况来了解其功能、特性和质量。
渗透了大量的脑力劳动:
软件产品的关键取决于人的逻辑思维、智能活动和技术水平。
不会像硬件一样老化磨损:
但软件存在缺陷维护和技术更新。
依赖于特定的计算机系统环境:
软件对硬件有依赖性,为了减少依赖,开发中提出了软件的可移植性。
具有可复用性:
软件开发出来很容易被复制,从而形成多个副本。
抽象性:
软件是一种逻辑实体,具有抽象性而不具有物理性。
复杂性:
软件本身是复杂的,可能来自它所反映的实际问题的复杂性或程序逻辑结构的复杂性。
成本昂贵:
软件研制工作需要投入大量的人力、物力和财力,导致软件成本昂贵。
需要长期维护:
软件在运行期间需要随时对暴露出来的故障进行修改,并且随着社会及技术的变化,还需要进行功能更新和升级。
可移植性:
为了解除对特定计算机系统的依赖,软件开发中提出了软件移植的概念。
社会因素的影响:
相当多的软件工作涉及到社会因素,如体制、管理、法律等,这些因素直接影响到软件项目的成败。
这些特点共同构成了软件的基本属性和开发运行的基本规律。