软件工程复习资料10-11-2
第 1 章 1.1 基础知识1.1.1 软件工程的产生软件是计算机程序及其说明程序的各种文档。软件的生产经过三个阶段:程序设计时代、程序系统时代和软件工程时代。软件发展的第二阶段的末期,计算机硬件技术的进步,为计算机的广泛应用创造了条件。一些复杂的大型的软件开发项目提出来了,但是,软件开发技术一直未能满足发展的要求。在软件开发中遇到的问题,在找不到解决的办法时,问题积累起来,形成了尖锐的矛盾,导致了软件危机。软件危机主要表现在以下几点:(1)软件需求增长得不到满足。(2)软件生产成本高、价格昂贵。(3)软件生产进度无法控制。(4)软件需求定义不准确,而偏离用户需求。(5)软件质量不易保证。(6)软件的可维护性差归纳起来,软件危机主要表现在两个方面:(1)无法满足日益增长的对软件的需求。(2)难以满足对已有的软件系统的维护需求。软件危机得出现,使得人们去寻找产生人际危机的内在原因,发现其原因可归纳为两方面:(1)由于软件生产本身存在着复杂性。(2)与软件开发所使用的方法和技术有关。为了克服软件危机,人们提出了“软件工程”的概念,要用工程化的思想来开发软件。1.1.2 软件工程的概念软件工程是用科学知识和技术原理来定义、开发、维护软件的一门综合性的交叉学科。软件工程的目的是成功地建造一个大型软件系统,所谓成功是要达到一下的几个目标:(1)付出较低的开发成本。(2)达到要求的软件功能。(3)取得较好的软件性能。(4)开发的软件易于移植。(5)需求较低的维护费用。(6)能按时完成开发任务。(7)及时交付使用。(8)开发的软件可靠性高。软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境;在软件开发管理中,主要研究软件管理学、软件经济学、软件心理学等。1.1.3 软件开发环境软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。软件开发环境与软件生存周期、软件开发方法和软件处理模型是紧密相关的。其分类方法很多。按解决的问题分类,软件开发环境可分为程序设计环境、系统合成环境、项目管理环境。按软件开发环境的演变趋向分类,分为以语言为中心的环境、工具箱环境和基于方法的环境。按集成化程度分类,第一代:建立在操作系统之上;第二代:具有真正的数据库;第三代:建立在知识库系统上。1.1.4 软件工具软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。开发软件工具的主要目的是为了提高软件生产率和改善软件的质量。软件工具通常由工具、工具接口和工具用户接口三部分构成。工具通过接口与其他工具、操作系统或网络操作系统,以及通信接口、环境信息库接口等进行交互作用。软件工具的发展有以下几个特点:软件工具由单个工具向多个工具集成化方向发展;重视用户界面的设计;不断地采用新理论和新技术;软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。软件工具可分为六类:模拟工具、开发工具、测试和评估工具、运行和维护工具、性能测量工具和程序设计支持工具。1.1.5 计算机辅助软件工程计算机辅助软件工程(缩写为 CASE)是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE 系统所涉及到的技术有两类:一类是支持软件开发过程本身的技术,如支持规约、设计、实现、测试等。另一类是支持软件开发过程管理的技术,如支持建模、过程管理等等。1.2 单元练习1.2.1 填空题1软件工程需要解决的问题,有_、_、_、_和_。2到目前为止,软件生产的发展经历了三个阶段,即_、_、_。3.计算机科学中的研究成果均可用于软件工程,但计算机科学侧重于_,而软件工程侧重于_.4.软件工程要用管理科学的方法和原理进行_.5.软件工程是用科学知识和技术原理来_、_、_软件的一门学科.6.软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面.在软件开发技术方面,主要是研究_、_、_.在软件开发管理方面,主要是研究_、 _、 _.7作为一门交叉学科,软件工程具有很强的综合性,它涉及_、_、_、_等领域。8.软件工程要用工程科学的观点来进行_、_、_.9计算机程序及其说明程序的各种文档称为_。计算任务的处理对象和处理规则的描述称为_。有关计算机程序功能、设计、编制、使用的文字或图形资料称为_-。10.软件工程要用_的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型.11软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。通常,软件生存期包括_、_、_、_、_、_、等活动,可以将这些活动以适当方式分配到不同阶段去完成。12开发软件工具的主要目的是为了提高软件生产效率和改善_。1.2.2 选择题1. 软件是一种( )产品。有形 . 逻辑. 物质 消耗2软件工程学的目的应该是最终解决软件生产的( )问题。. 提高软件的开发效率 . 使软件生产工程化. 消耗软件的生产危机 D. 加强软件的质量保证3与计算机科学的理论研究不同,软件工程使一门( )学科。A. 理论性 B. 工程性 C. 原理性 D. 心理性4软件危机的主要原因有( ) 。(1)软件本身的特点 (2)用户使用不当(3)硬件可靠性差 (4)对软件的错误认识(5)缺乏好的开发方法和手段A .(3)(4) B. (1) (2) (4)C. (1) (5) D. (1) (3)5. 在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是( ) 。A. 文档质量 B. 开发效率C. 软件功能 D. 软件性能6软件工程与计算机科学性质不同,软件工程着重于( ) 。 A. 原理探讨 B. 理论研究C. 建造软件系统 D. 原理的理论7软件工程学科出现的主要原因是( ) 。A. 计算机的发展B. 其他工程科学的影响C. 软件危机的出现D. 程序设计方法学的影响8 软件工程方法学的研究内容包含软件开发技术和软件工程管理两个方面,其期望达到的最终目标是( ) 。A. 软件开发工程化 B. 消除软件危机C. 实现软件可重用 D. 程序设计自动化9由于软件生产的复杂性和高成本性,使大型软件的生存出现危机,软件危机的主要表现包括了下述( )方面。(1)生产成本过高 (2)需求增长难以满足(3)进度难以控制 (4)质量难以保证10软件工程方法学中的软件工程管理使其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标使( ) 。A. 管理开发人员,以开发良好的软件B. 采用先进的软件开发工具,开发优秀的软件C. 消除软件危机,达到软件生产的规模效益D. 以基本的社会经济效益为基础,工程化生产软件11软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( ) 。A. 硬件环境B. 开发人员的素质C. 软件开发工具和软件开发的环境D. 软件开发的环境12有关计算机程序功能,设计,编制,使用的文字或图形资料称为( ) 。A. 软件 B. 文档 C. 程序 D. 数据13 软件工程是一种( )分阶段实现的软件程序开发方法。A. 自顶向下 B. 自底向上C. 逐步求精 D. 面向数据流14 软件方法学是以软件方法为研究对象的一门学科。从开发风范上看,可分为(A) 。从性质上看,可分为(B) 。从适应范围来看,可分为(C) 。软件自动化方法是指利用计算机使软件的设计实现自动化的方法和相关的技术。软件自动化的实现途径有四种:过程途径,归纳途径, (D) 。形式方法的目的是把软件作为数学来重新发现。形式方法被用来避免系统中的(E) ,不一致性。供选择的答案:A:(1)面向对象开发方法与自底向上的开发方法(2)自顶向上的开发方法与结构化开发方法(3)面向对象开发方法与结构化开发方法(4)自顶向上的开发方法与自底向上的开发方法B:(1)面向对象开发方法与形式方法 (2)面向对象开发方法与结构化开发方法(3)形式方法与非形式方法(4)面向对象开发方法与非形式方法C:(1)整体性方法与局部性方法(2)面向对象开发方法与结构化开发方法 (3)面向对象开发方法与非形式方法(4)形式方法与非形式方法D: (1) 演绎途径,编译途径 (2)转换途径,编译途径(3)编译途径,解释途径 (4)演绎途径,转换途径E:(1)歧义性,不完全性 (2)歧义性,不安全性(3)歧义性,不适应性 (4)歧义性,不可靠性15 ( )是计算机程序及其说明程序的各种文档。A. 软件 B. 文档 C. 数据 D. 程序16 软件开发环境支持一定的( )或按照一定的软件开发模型组织而成。A. 软件生存周期 B. 软件过程C. 软件开发方法 D. 软件开发模型17 以下说法错误的是( ) 。A. 大多数开发系统都采用基于文件集成的策略B. CASE 开放式工作台或者提供控制集成机制,或者可剪裁,其数据集成或协议是独立的C. 在封闭式系统中,系统的集成的约定是该工作台开发商独有的D. 许多工作台都是封闭式系统,因为这允许更紧密地数据集成,表示集成和控制集成18软件开发环境中最主要的组成部分是( ) 。A. 软件工程 B. 项目管理工具C. 软件工具 D. 需求分析工具1.2.3 简答题1、什么是软件危机?软件危机表现在哪些方面?2、软件工程是指什么?软件工程的性质是什么?3、简要叙述软件工程目标和内容。4、软件产品具有哪些特性?5、软件生产的发展迄今为止经历了哪几个阶段?各阶段有何特征?6、软件工程面临的问题有哪些?7、试述软件危机产生的原因。1.3 参考答案一、填空题1.软件费用、软件可靠性、软件可维护性、软件生产率、软件重用2.程序设计时代、程序系统时代、软件工程时代3.原理和理论、如何建造一个软件系统4.软件生产的管理5.定义、开发、维护6.软件开发方法、软件开发过程、软件开发工具和环境、软件管理学、软件经济学、软件心理学7.计算机科