1.1.1 软件的意义和特性

更新于 2026年10月10日 版权声明
1.1.1 软件的意义和特性

要想理解软件的真正含义,首先需要了解软件有哪些特征。我们应从软件的本质特性和软件的生产特性等方面剖析软件的特性。

1.软件的本质特性

(1)复杂特性。软件是个庞大的逻辑系统,一方面在软件中要客观地体现人类社会的事务,反应业务流程的自然规律;另一方面在软件中还要集成多种多样的功能,以满足用户在激烈的竞争中对大量信息及时处理、传输、存储等方面的需求,这就使得软件变得十分复杂。软件的复杂性使得软件产品难以理解、难以生产、难以维护,更难以对生产过程进行管理。

(2)抽象特性。软件是人们经过大脑思维后加工出来的产品,一般寄生在内存、磁盘、光盘等载体上,我们无法观察到它的具体形态,这就导致了软件开发不仅工作量难以估计,进度难以控制,而且质量也难以把握。

(3)依赖特性。软件必须和硬件保持一致,软件的开发和运行往往受到计算机硬件的限制,对计算机系统有着不同程度的依赖性。软件与计算机硬件的这种密切相关性与依赖性,是一般产品所没有的特性。为了减少这种依赖性,有关人员在软件开发中提出了软件的可移植性问题。好的软件在设计时就考虑到如何应用到不同的系统平台。

(4)使用特性。软件的价值在于应用,软件产品不会因多次反复使用而磨损老化,一个久经考验的优质软件可以长期使用。由于用户在选择新机型时通常会提出兼容性要求,因此,一个成熟的软件可以在不同型号的计算机上运行。

(5)废弃特性。在软件的运行和使用期间,存在退化问题,必须要对其进行多次修改与维护,直至其“退役”。如早期的DOS操作系统,就是进行了多次修改与维护,实在难以与Windows操作系统匹敌而“退役”了。图1.1和图1.2分别展示了硬件的失效率和使用时间的关系以及软件的失效率和时间的关系。

图示(https://www.daowen.com)

图1.1 硬件失效曲线图

图示

图1.2 软件失效曲线图

(6)应用特性。软件的应用极为广泛,如今它已渗入国民经济和国防的各个领域,现已成为信息产业、先进制造业和现代服务业的核心,占据了无可取代的地位。

2.软件的生产特性

(1)软件开发特性。由于软件固有的特性,使得软件的开发不仅具有技术复杂性,还有管理复杂性。技术复杂性体现在:软件提供的功能比一般硬件产品提供的功能多,而功能的实现具有多样性,需要在各种实现中做出选择,更有实现算法上的优化带来的不同,而实现上的差异会带来使用上的差别。管理上的复杂性表现在:第一,软件产品的能见度低,要看到软件开发进度比看到有形产品的进度困难得多;第二,软件结构的合理性差,结构不合理使软件管理复杂性随软件规模增大而呈指数增长。因此,领导一个软件开发团队进行规模化开发并非易事,软件开发比硬件开发更依赖于开发人员的团队精神、智力,以及对开发人员的组织与管理。

(2)软件产品形式特性。软件产品在设计阶段成本高昂,而在生产阶段成本极低。硬件产品试制成功之后,批量生产需要建设生产线。投入大量的人力、物力和资金,生产过程中还要对产品进行质量控制,对每件产品进行严格的检验。然而,软件是把人的知识与技术转化为信息的逻辑产品,开发成功之后,只需对原版软件进行复制即可。大量人力、物力、资金的投入,以及质量控制,软件产品检验都是在软件开发中进行的。由于软件的复制非常容易,软件的知识产权保护就显得极为重要。

(3)软件维护特性。软件在运行过程中的维护工作比硬件复杂得多。首先,软件投入运行后,总会存在缺陷甚至暴露出潜伏的错误,需要进行“纠错性维护”。其次,用户可能要求完善软件性能,对软件产品进行修改,进行“完善性维护”。当支撑软件产品运行的硬件或软件环境改变时,也需要对软件产品进行修改,进行“适应性维护”。软件的缺陷或错误属于逻辑性的,因此,不需要更换某种备件,而是修改程序,纠正逻辑缺陷,改正错误,提高性能,增加适应性。当软件产品规模庞大、内部的逻辑关系复杂时,经常会发生为纠正一个错误而产生新错误的情况。因此,软件产品的维护往往比硬件产品的维护工作量大且复杂。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)