考核说明: 本节主要介绍软件的相关概念,软件生命周期和软件开发方法、软件工具和软件开发环境。其软件的生命周期和软件开发技术是重点,也是本章重点考查的内容。
软件指的是计算机系统中的程序和有关的文档。程序是对计算机的处理对象和处理规则的描述,文档是为了便于了解程序所需的资源说明。
软件是用户与硬件之间的接口,是计算机系统的指挥者,是计算机系统结构设计的重要依据。
软件的发展受到其应用水平和硬件发展的推动和制约,其发展过程可分为3个阶段。
第1阶段:从第1台计算机上的第1个程序的出现到实用的高级程序设计语言出现以前(1945年~1956年)。
第2段:从实用的高级程序设计语言出现以后到软件工程出现以前(1956年~1968年)。
第3段:软件工程出现以后至今(1968年至今)。
结合应用观点和虚拟机观点,软件可分为系统软件、支撑软件和应用软件3类。系统软件居于计算机系统中最靠近硬件的一层;支撑软件是支援其他软件的开发与维护的软件;应用软件是特定应用领域内专用的软件。
随着计算机软件规模的扩大,软件本身的复杂性不断增加;研制周期显著变长;正确性难以保证,软件开发费用上涨,生产率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。具体表现为:供求关系失调、开发费用失控、可靠性差、难以维护、易移植性差。
软件危机的产生一方面与软件本身的特点有关,另一方面也和软件开发人员所使用的方法和经验有关。
与工业生产一样,软件生产也有一个生产、使用和消亡的过程,这一过程称为软件的生命周期。
20世纪70年代, B.W.Boehm 提出了软件生命周期瀑布模型( Waterfall Model ),较典型地刻画了软件生命周期的阶段的划分。瀑布模型描述软件开发是按照从一个阶段转到下一个阶段的线性次序而进行,该模型把软件开发过程划分成8个阶段,具体阶段为:问题定义、需求分析、可行性研究、总体设计、详细设计、编码、测试、维护。其中8个阶段又分为3个时期:计划期(问题定义、可行性研究和需求分析)、开发期(总体设计、详细设计、编码和测试)和运行期(维护)。由于各阶段的工作按顺序开展,形如自上而下的瀑布,故称之为瀑布模型。
为了摆脱软件危机,北大西洋公约组织成员国软件工作者于1968年和1969年两次召开会议(NATO会议),认识早期软件开发中所存在的问题和产生问题的原因,提出软件工程的概念。人们发现传统工程的原理、技术和方法应用于软件开发可以起到使软件生产规范化的作用。它有利于组织软件生产、提高开发质量、降低成本和控制进度。
软件工程概念的研究领域吸引了众多的学者,并开展了大量的理论和技术的研究,形成了“软件工程学”这一计算机科学中的分支。它所包含的内容可概括为下两点。
(1)软件开发技术:主要有软件开发方法学、软件工具、软件工程环境。
(2)软件工程管理:主要有软件管理、软件工程经济学。
软件开发技术包括软件开发方法学、工具和环境支持,其主体内容是软件开发方法学。软件开发方法学是从不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料做出规定,从而使软件的开发能够规范化和工程化,以克服早期的手工方式生产中的随意性和非规范性。
现代软件工程方法得以实施,重要的保证是软件开发工具和环境。软件开发环境是方法与工具的结合及配套的软件的有机组合。
软件工程管理包括软件管理学和软件工程经济学。软件工程管理是软件按工程化生产时的重要环节,它要求按照预先制定的计划、进度和预算执行,以实现预期的经济效益和社会效益。工程管理包括人员组织、进度安排、质量保证和成本核算等。
软件工程经济学是研究软件开发中对成本的估算、成本效益分析的方法和技术。它应用经济学的基本原理来研究软件工程开发中的经济效益问题。
软件开发方法是软件工程学的重要组成部分,是一种专门从事研究软件开发的模式、内容步骤和操作的学问。目前已形成了软件开发的多种模式,大致可归纳为3种类型:(1)基于瀑布模型的结构化生命周期方法;(2)基于动态定义需求的原型化方法;(3)基于结构的面向对象的软件开发方法。
根据软件在生存周期中的活动过程,软件工具分为软件开发工具、软件维护工具、软件管理与软件支持工具。这些工具是用来辅助软件开发、运行、维护、管理、支持等过程中的活动。
(1)软件开发工具:主要有需求分析工具、设计工具、编码工具、排错工具、测试工具等。
(2)软件维护工具:主要有版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再次工程工具等。
(3)软件管理与软件支持工具:主要有项目管理工具、配置管理工具、软件评价工具等。
软件工具通常也称为CASE工具。
软件开发环境是指支持软件产品开发的软件系统,它由软件工具和环境集成机制构成。
【试题2-1】 软件危机表现在多个方面,以下不属于这些表现的是_____。(2010年9月)
A.软件生产成本高
B.软件质量不易保证
C.软件依赖于硬件
D.软件可维护性差
答案: C
解析: 由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,人们称之为软件危机。软件危机主要表现在:软件需求增长得不到满足;软件生产高成本,价格昂贵;软件生产进度无法控制;软件需求定义不准确,易偏离用户需求;软件质量不易保证;软件可维护性差。