1.软件的概念

软件:是计算机系统中与硬件相互依存的另一部分,其中软件包括程序数据相关文档的完整集合。
    程序:是按事先设计的功能和性能要求执行的指令序列。
    数据:是使程序能正常操作信息的数据结构。
    文档:是与程序开发、维护和使用有关的图文资料。

2.软件的分类
按照应用范围来划分,一般软件被分为系统软件支撑软件应用软件三类:

1.系统软件:支持计算机基本运行的软件。

2.支撑软件:支持各种软件开发和维护的软件。又称为软件开发环境(SDE)

3.应用软件:为某一领域某一目的建立起来的软件。

照许可方式来划分,一般软件被分为专属软件自由软件共享软件免费软件公共软件五类

1.专属软件:此类授权通常不允许用户随意的复制、研究、修改或散布该软件。违反此类授权通常会有严重的法律责任。传统的商业软件公司会采用此类授权,例如微软的Windows和办公软件。专属软件的源码通常被公司视为私有财产而予以严密的保护。

2.自由软件:此类授权正好与专属软件相反,赋予用户复制、研究、修改和散布该软件的权利,并提供源码供用户自由使用,仅给予些许的其它限制。以Linux、Firefox 和OpenOffice 可做为此类软件的代表。

3.共享软件:通常可免费的取得并使用其试用版,但在功能或使用期间上受到限制。开发者会鼓励用户付费以取得功能完整的商业版本。根据共享软件作者的授权,用户可以从各种渠道免费得到它的拷贝,也可以自由传播它。

4.免费软件:可免费取得和转载,但并不提供源码,也无法修改。

5.公共软件:原作者已放弃权利,著作权过期,或作者已经不可考究的软件。使用上无任何限制。

3.软件的作用

软件技术具有产品产品生产载体的双重作用。

作为产品,软件显示了由计算机硬件体现的计算能力,扮演着信息转换的角色:产生管理查询修改显示或者传递各种不同的信息。

作为产品生产的载体,软件提供了计算机控制(操作系统)信息通讯(网络)以及应用程序开发和控制的基础平台(软件工具和环境)。

4.软件的十大特性

1)形态特性:软件是无形的不可见得逻辑实体

2)智能特性:软件是复杂的智力产品

3)开发特性:到目前为止软件开发任未实现自动化,其中包含了相当分量的个体劳动,使得这一大规模知识型工作充满了个人行为和个人因素。

4)质量特性:软件产品的质量控制存在着一些实际困难,难于克服,表现为以下几个方面:

①在软件开发初期对于需求的不确定性,以及软件开发过程中的变更性,导致软件质量控制失去可参照性。

②软件测试技术存在不可克服的局限性。任何测试都只能在极大数量的应用实例数据中选取极为有限的数据进行测试。

③即使是已经长期使用或者多次反复使用的软件没有发现问题,也并不意味着今后的使用不会出现问题。

★警惕软件的质量风险,在某些重要的应用场合,需要提前准备好应对策略!

(5)生产特性:软件产品的成本主要是设计开发的成本。

(6)管理特性:由于上述的几个特性,使得软件的开发管理显得尤为重要,也更为独特。

(7)环境特性:软件开发和运行都离不开相关的计算机系统环境,包括支持它的开发和运行的相关硬件和软件。软件对于计算机系统的环境有着不可摆脱的依赖性

(8)维护特性:往往是修正开发时遗留下来隐蔽的那些在特定运行条件下才暴露的缺陷。或是未来扩充与提升软件的功能或性能,以及为了适应运行环境的变更。

(9)废弃特性:软件的运行环境变化过大,或是提出了更大更多的需求变更,实施维护已不划算,该软件便走到它的生存期终点而被遗弃(或称退役)。因此,以硬件不同,软件并不是由于“用坏”而被遗弃的

(10)应用特性:软件的应用极为广泛,如今它已渗入国民经济和国防的各个领域,现已成为信息产业。

5.软件危机

定义:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。


背景:由于软件的发展熟读远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。再加上软件开发周期长成本高质量差维护困难,最终导致60年代末软件危机的爆发。


除了软件本身的特性,软件危机发生的原因最要有以下几个方面:

(1)缺乏软件开发的经验和相关软件开发数据的积累,使得开发工作的计划很难制定。

(2)软件开发人员与用户的交流存在障碍,使得获得的需求不充分或存在错误。

(3)软件开发过程不规范,缺乏方法论和规范的指导,开发人员各自为战,缺乏整体的规划和配合,不注重文字资料工作,软件难以维护。

(4)随着软件规模的增长,其复杂性往往会呈指数型增长。

(5)缺乏有效的软件评测手段。