我们每天都说 软件测试 、软件 开发 、……,但是告真正全面理解什么是软件,大多数 人不敢肯定。那软件真正的含义是什么 ? 先看看一般教科书所给出的规" name="description" />

软件的含义

发表于:2009-06-17来源:作者:点击数: 标签:含义软件
MI LY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们每天都说 软件测试 、软件 开发 、……,但是告真正全面理解什么是软件,大多数 人不敢肯定。那软件真正的含义是什么 ? 先看看一般教科书所给出的规

MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们每天都说软件测试、软件开发、……,但是告真正全面理解什么是软件,大多数

人不敢肯定。那软件真正的含义是什么?

    先看看一般教科书所给出的规范、科学的定义,即软件是:

    ·  能够完成预定功能和性能的、可执行的指令(计算机程序)

    ·  使得程序能够适当地操作信息的数据结构。

    ·  描述程序的操作和使用的文档。

即“软件=程序+数据()+文档” 在这里给山了软件的最基本的组成成分。实际上,还少了一项内容:服务。我们可以用一个简甲的公式给出软件的定义:

软件=程序+数据()+文档+服务

    为了帮助读者更好地理解软件的含义,我们一起来看看软件有哪些特征。软件是相对

硬件而相对存在的。硬件是可以直观感觉到、触摸得到的物理产品。生产硬件时,人的创

造性的过程(设计、制作、测试)能够完全转换成物理的形式。例如,生产一个新的计算机,

初始的草图、正式的设计图纸和面板的原型一步步演化成为一个物理的产品,如模具、集

成芯片、集成电路、电源和掣料机箱等。

    正如我们政府官员经常提到的,我们不仅要搞好投资的硬件环境,更要搞好软件环境。

这里的硬件环境,包括交通、水电、办公楼和厂房等,而软件环境指的就是优惠政策、政

府职能转变和服务等。

软件则是逻辑的、知识性的产品集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化。因此,软件具有与硬件完全不同的特征。其主要表现在以下3个方面。

1软件是硬件的灵魂,硬件是软件的基础

    计算机硬件必须靠软件实现其功能,如果没有软件,硬件就好比一堆废铁,所以说软件是硬件的灵魂。同时,软件必须依赖于硬件,只有在特定的硬件环境上才能运行。

    虽然“软件工厂”的概念也已被引入,这并不是说硬件生产和软件开发是一回事,而是引用软件工厂这个概念促进软件开发中模块化设计、组件复用等意识的全面提升。

2软件是智慧和知识的结晶

    软件是完全的智力产品,是通过技术员的大脑活动创造的结果。软件现在被认为属于高科技产品。软件产业是一种知识密集型产业。

    一个价值很高的软件,可能就装在几张软盘上,包括程序和文档。少数不了解软件价值的领导,不愿意为此付出几十万人民币。他可能会说,几十万元钱可以买一大堆计算机,可以买一辆桑塔纳或奥迪小轿车,几张软盘哪会值那么多钱?在这里,这位领导只看到了软件的载体,也就是只看到其物理的表现形式,而没有看到其实质的内容以及开发这个产品过程中所投入的、高技术的大量人力。软件的主要成本在于先期的开发人力。软件成为产品之后,其后期维护、服务成本也很高。而软件载体的制作成本很低,如磁盘、光盘的复制是比较简单的,所以软件也就容易成为盗版的主要目标。

3软件不会“磨损”,而是逐步完善

    随着时间的推移,硬件构件会由于各种原因受到不同程度的磨损,但软件不会.新的硬件故障率很低,随着长时问的改变,硬件会老化,故障率会越米越高。相反,隐藏的错

误会引起程序在其生命初期具有较高的故障率,随着使用的不断深入,所发现的问题会慢慢地被改正,其结果是程序越来越完善,故障率会越来越低。

    从另一个侧面看,硬件和软件的维护差别很大。当一个硬件构件磨损时,可以用另外一个备用零件替换它,但对于软件,不存在替换,而是通过开发补丁程序不断地解决适用性问题,或扩充其功能。一般来说,软件维护要比硬件维护复杂得多,而且软件的维护周

期要长得多。软件正是通过不断的维护,改善功能,增加新功能,来提高软件系统的稳定性和叫靠性的。

12软件开发过程的特性

    在了解软件含义之后,我们就来了解软件是通过一个什么样的过程开发出来的,也就是了解软件的开发过程。软件开发过程是软件工程中的重要内容,也是进行软件测试的

基础。

121软件开发的基本过程

    软件开发的基本过程,可以被简单地分为需求分析、设计(概要设计、详细设计)、编程,测试和维护等几个阶段,即通常所说的“传统生命周期”,也就是著名的软件开发过程的“瀑布模型”,如图1I所示。通过这个模型,能比较直观地理解软件开发的全过程。

    需求分析

         设计

             编程

                 测试

 维护 

    时间  

I-1软件开发过程的瀑布模型

   

原文转自:http://www.ltesting.net