7.1 知识子域:软件安全开发生命周期
7.1.1 软件开发概念及特点
1.软件基本概念
软件是与计算机系统操作相关的计算机程序、规程、规则,以及可能产生的文件、文档及数据。一般来说软件具有以下特点:
1)软件是一种逻辑实体,而不是具体的物理实体,它具有抽象性
软件是一种逻辑实体,与硬件这种物理实体不同,软件具有抽象性,必须经过测试、 分析、思考、判断来了解它的功能、性能及其它特性。‘
2)软件是开发出来的,而不是制造出来的
软件是通过人们的智力活动,把知识和技术转化成信息的一种产品,是在研制、开发的过程中被创造出来的。一旦某一软件项目研制成功,之后就可大量地复制同一内容的副本,即其研发成本远远大于其生产成本。软件拷贝不会改变软件本身,这也使得软件具有唯一性,而任何两个硬件不可能完全相同。
3)在软件的运行和使用期间,不会出现硬件那样的机械磨损、老化问题
硬件产生故障的原因有四个方面:设计问题、生产过程中的问题、超载及损耗。硬件故障主要是由于耗损(物理退化)所致,而软件不存在物理退化现象,这就决定了软件正确性与软件的可靠性密切相关,一个正确的软件任何时刻均可靠;然而一个正确的硬件元器件或系统则可能在某个时刻故障。
软件没有耗损问题不等于没有可靠性问题,因在开发过程中常有一些随机因素,不可避免地会给软件留下缺陷,因此软件也可能有可靠性问题。所以硬件的故障机理是耗损,而软件的故障机理则是残留缺陷在一定环境下造成的软件错误。
在软件的运行和使用期间,软件没有硬件那样的机械磨损、老化问题,但是软件也会出现故障,软件维护比硬件维护要复杂的多,与硬件的维修也有着本质的差别。