软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构:文档是与程序开发、维护和使用有关的图文材料。
(1)软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
(2)软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。然而它存在退化问题,必须对其进行多次修改与维护。
(4)软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式。
(6)软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7)软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8)相当多的软件工作涉及社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及人的观念和人们的心理。它直接影响到项目的成败。
·系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的 软件和数据协调、高效地工作的软件。例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。
·支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软 件产品的工具,也包括帮助管理人员控制开发的进程的工具。
·应用软件:是在特定领域内开发,为特定目的服务的一类软件。其中包括为特 定目的进行的数据采集、加工、存储和分析服务的资源管理软件。
·项目软件:也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发的软件。例如军用防空指挥系统、卫星控制系统。
·产品软件:是由软件开发机构开发出来直接提供给市场,或是为千百个用户服 务的软件。例如,文字处理软件、财务处理软件、人事管理软件等。
按开发软件所需的人力、时间以及完成的源程序行数,可确定如表19-1所示的六种不同规模的软件。
规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。而规模小、时间短、参加人员少的软件项目也要有软件工程概念,遵循一定的开发规范。其基本原则是一样的,只是对软件工程技术依赖的程度不同而已。
·实时处理软件:指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制过程的软件。主要包括数据采集、分析、输出三部分。
·分时软件:允许多个联机用户同时使用计算机。
·交互式软件:能实现人机通信的软件。
·批处理软件:把一组输入作业或一批数据以成批处理的方式一次运行,按顺序 逐个处理完的软件。
有的软件开发出来仅供一次使用。例如用于人口普查、工业普查的软件。另外有些软件具有较高的使用频度,如天气预报软件。
有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。有的软件一旦失效,可能酿成灾难性后果,例如财务金融、交通通信、航空航天等软件,我们称这类软件为关键软件。
各省软考办 | ||||||||||