当前位置:文档之家› 软件工程第八章

软件工程第八章

软件工程第八章
软件工程第八章

第8章软件维护

软件投入使用后就进入软件维护阶段。维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。

8.1软件维护的内容

软件维护内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。

1.校正性维护

在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段来。这些隐含的错误在某些特定的使用环境下会暴露出

来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。校正性维护占整个维护工作的20%左右。

2.适应性维护

随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。为了使应用软件适应这种而修改软件的过程称为适应性维护。这种维护活动占整个维护活动的25%。

3.完善性维护

在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。这是因为用户的业务会发生变化,组织机构也会发生变化。为了适应这些变化,应用软件原来的功能和性能需要扩充和增强,为达到这个目的而进行的维护活动称为完善性维护,占整个维护活动的50%。

4.预防性维护

为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。这是为以后进一步的运行和维护打好基础,占整个维护工作的4%。

8.2 维护的特点

8.2.1非结构化维护和结构化维护

软件的开发过程对软件的维护过程有较大的影响。若不采用软件过程的方法开发软件,则软件只有程序而无文档,维护工作非常难,这就是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,这容易进行维护工作,这是一种结构化的维护。

1.非结构化维护

因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。这是软件工程时代以前进行维护的情况。

2.结构化维护

用软件工程思想开发的软件具有各阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。这种维护对减少精力、减少花费、提高软件维护效率有很大的作用。

8.2.2维护的困难性

软件维护的困难性是由于软件需求分析和开发方法的缺陷。软件生存周期中的开发阶段没有严格而又科学的管理和规划,就会引起软件运行时的维护困难。表现在以下几个方面:

1.读懂别人的程序是困难的。

2.文档的不一致性。

由于开发过程中文档管理不严所造成的,在开发过程中经常会出现修改程序却遗忘了修改与其相关的文档,使得文档前后不一致。

3.软件开发和软件维护在人员和时间上的差异

由于维护阶段持续时间很长,正在运行的软件可能是十几、二十年前开发的,开发工具、方法、技术与当前的工具、方法、技术差异很大,这又是维护困难的另一因素。

4.软件维护不是一项吸引人的事

由于维护工作的困难性,维护工作经常遭受挫折,而且很难出成果,不像软件开发工作那样吸引人。

8.2.3软件维护的费用

软件维护的费用在总费用中的比重是不断增加的。七十年代占35%~40%,八十年代上升到40%~60%,九十年代上升到70%~80%。软件维护费用不断上升,这只是软件维护有形的代价,无形的代价是要占用更多的资源,并在维护时对软件的改动,引入了潜在的故障,从而降低了软件的质量。用于软件维护工作的活动可分为生产性活动和非生产性活动两种。生产性活动包括分析评价、修改设计和编写程序代码等。非生产性活动包括理解程序代码功能、解释数据结构接口特点和设计约束。

维护活动总的工作两由下式表示:M=P+K×exp(C-D)

其中:M表示维护工作的总工作量;

P表示生产性活动工作量;

K表示经验常数;

C表示复杂性程度;

D表示维护人员对软件的熟悉程度;

上式表明,若C越大,D越小,那么维护工作量将成指数增加;C增加表示软件因未用软件工程方法开发,从而使得软件为非结构化设计,文档缺少,程序复杂性高。D表示维护人员不是原来的开发人员,对软件熟悉程度低,重新理解软件花费很多时间。

8.3维护任务的实施

8.3.1维护的组织

为了有效地进行软件维护,应事先开始组织工作,建立维护机构。这种维护机构通常以维护小组形式出现。维护小组分为临时维护小组和长期维护小组。

8.3.2维护的流程

软件维护的流程如下:

(1)制定维护申请报告。

(2)审查申请报告并批准。

(3)进行维护并做详细记录。

(4)复审。

1.制定维护申请报告

所有软件维护申请报告应按照规定的方式提出。该报告也称为软件问题报告。它是维护阶段的一种文档,由申请维护的用户填写。维护申请报告是一种由用户产生的文档,在软件维护组织内部还要制定一份软件修改报告,该报告是维护阶段的另一种文档。

提出维护申请报告之后,由维护机构来评审维护请求。评审工作很重要,通过评审回答要不要维护,从而可以避免盲目的维护。

2.维护过程

一个维护申请提出之后,经评审需要维护则按下列过程实施维护:

(1)首先确定要进行维护的类型。

(2)对校正性维护从评价错误的严重性开始。

(3)对适应性维护和完善性维护。

(4)实施维护任务。不管维护类型如何,大体上要开展相同的技术工作。这些工作包括修改软件设计、必要的代码修改、单元测试、集成测试、确认测试以及复审。每种维护类型的侧重点不一样。

(5)“救火”维护。在发生重大问题时,需要立即解决的问题。

3.维护的复审

在维护任务完成后,要对维护任务进行复审。

8.3.3维护技术

有两类维护技术,它们是面向维护的技术和维护支援技术。

1.面向维护的技术

面向维护的技术涉及软件开发的所有阶段。

2.维护支援技术

维护支援技术包括下列方面的技术:

.信息收集;

.错误原因分析;

.维护方案评价;

.软件分析与理解;

.代码与文档修改;

.修改后的确认;

.远距离的维护;

8.3.4维护的副作用

维护的目的是为了延长软件的寿命并让创造更多的价值,经过一段时间的维护,软件中的错误减少了,功能增强了。但修改软件会造成软件的错误,这种因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用。

维护的副作用有编码副作用、数据副作用、文档副作用三种。

1.编码副作用

在使用程序设计语言修改源代码时可能引入错误。

2.数据副作用

在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。

3.文档副作用

对数据流、软件结构、模块逻辑或任何其他有关特性进行修改时,必须对相关技术文档进行相应修改,否则会导致文档与程序功能不匹配、缺省条件改变、新错误信息不正确等错误,使文档不能反映软件当前的状态。

8.4 软件可维护性

软件的维护是十分困难的,为了使软件能易于维护,必须考虑使软件具有可维护性。

8.4.1可维护性定义

软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度。

软件的可维护性、可使用性、可靠性是衡量软件质量的几个主要特性,也是用户十分关心的几个问题。

软件的可维护性是软件开发阶段的关键目标。影响软件可维护性的因素较多,设计、编码及测试中的疏忽和低劣的软件配置,缺少文档等都对软件的可维护性产生不良影响。软件可维护性可用下面七个质量特性来衡量,即可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。对于不同类型的维护,这七种特性的侧重点也是不相同。

8.4.2可维护性的度量

目前有若干对软件可维护性进行综合度量的方法,但要对可维护性作出定量度量还是困难的。还没有一种方法能够使用计算机对软件的可维护性进行综合性的定量评价。

下面是度量一个可维护的软件的七种特性时常采用的方法,即质量检查表、质量测试、质量标准。

质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单。

质量测试与质量标准则用于定量分析和评价程序的质量。由于许多质量特性是相互抵触

的,要考虑几种不同的度量标准去度量不同的质量特性。

8.4.3提高可维护性的方法

从下面五个方面来阐述如何提高软件的可维护性:

1.建立明确的软件质量目标

如果要程序满足可维护性七个特性的全部要求,那么要付出很大的代价,甚至是不现实的,但有些可维护性是相互促进的,因此要明确软件所追求的质量目标。

2.使用先进的软件开发技术和工具

利用先进的软件开发技术能大大提高软件质量和减少软件费用。面向对象的软件开发方法就是一个非常实用而强有力的软件开发方法,用面向对象方法开发出来的软件系统,稳定性好,比较容易修改,比较容易理解,易于测试和调试,因此,可维护性好。

3.建立明确的质量保证

质量保证是指为提高软件质量所做的各种检查工作。质量保证检查是非常有效的方法,不仅在软件开发的各阶段中得到了广泛应用,而且在软件维护中也是一个非常主要的工具。为了保证可维护性,以下四类检查是非常有用的:

(1)在检查点进行检查。(2)验收检查。(3)周期性的维护检查。(4)对软件包的检查。

4.选择可维护的语言

程序设计语言的选择对维护影响很大。低级语言很难掌握,很难理解,因而很难维护。一般来说,高级语言比低级语言更容易理解,第四代语言更容易理解,容易编程,程序容易修改,改进了可维护性。

5.改进程序的文档

程序文档是对程序功能、程序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。程序文档对提高程序的可阅读性有重要作用。为了维护程序,人们必须阅读和理解程序文档。

软件工程导论复习笔记

简答题: 1.什么是软件? 答:软件是: (1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。 (2)数据结构,使得程序可以合理利用信息。 (3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用。 2.How do software characteristics differ from hardware characteristics? 软件的特性是如何不同硬件的特性? 答:(1)软件是设计开发的,而不是传统意义上生产制造的(2)软件不会磨损,但会退化 (3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的 3.What do people mean by the expression "software crisis"? 人们是怎样理解“软件危机”这个短语的?

答:软件危机主要表现在两个方面: (1)无法满足日益增长的对软件的需求。 (2)难以满足对已有的软件系统的维护需求。 软件危机出现的原因: (1)由于软件生产本身存在着复杂性 (2)与软件开发所使用的方法和技术有关 “软件工程”的概念用工程化的思想来克服软件危机。 4.What myths about software still exist ? 软件仍然存在着什么神话? 答:管理者的神话;用户的神话;开发者的神话。 简答题: 1.What are the three generic phases of software engineering? 软件工程的三个一般的阶段是? 答:定义阶段、开发阶段、维护阶段 (软件生存周期的三个阶段:软件定义、软件开发、软件维护) 2.What are the names of the five levels of the SEI Capability Maturity Model?

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

《软件工程导论》考试夹带

1.软件危机的概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。 2.产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。 3.软件工程的定义:是指导计算机软件开发和维护的一门工程学科。具体如下: 开发进度难以估计,开发质量难以衡量 设计中的错误很难维护 规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。 4.怎样解决软件危机? (1)对软件要有正确的认识 (2)软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 (3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法。 (4). 应该开发和使用更好的软件工具。 5.可行性研究的任务? (1)需要进一步分析和澄清问题定义。 (2)导出系统的逻辑模型。 (3)最根本的任务是对以后的行动方针提出建议。 6.需求分析 1. 功能需求 这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。 2. 性能需求 软件开发的技术性指标。 例如:存储容量限制 执行速度、响应时间 吞吐量 7.形式化说明技术 Z语言:形式化的规格说明语言中,较典型的一种语言。 用Z语言描述的,最简单的形式化规格说明含有四个部分: (1)给定的集合,数据类型及常数; (2)状态定义; (3)初始状态; (4)操作; 8.总体设计 模块化:采用模块化原理可以使软件结构清晰,容易设计也容易阅读和理解、测试。 抽象:抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 逐步求精:逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 信息隐蔽和局部化:该原理有利于提高模块的内聚性。 模块独立:模块独立重要性理由:

软件工程导论试题集46172(1)

第一章:软件工程学概述 一.填空题 1. 计算机科学中的研究成果均可用于软件工程,但计算机科学更侧重于(原理和理论)、而 软件工程侧重于(如何建造一个软件系统) 2. 计算机程序及其说明程序的各种文档称为(文件)。计算任务的处理图像对象和处 理规则的描述称为(程序)。有关计算机程序功能、设计、编制、使用的文字或图形资 料称为(文档)。 3. 软件开发环境是相关一组(软件工具)的集合,它支持一定的软件开发方法或按照一定 的软件开发模型组织而成的。 4. CASE这一术语的英文是(Computer Aided Software Engineering)。 5. (平台集成)是指工具运行在相同的硬件/操作系统平台上。(数据集成)是指工具使 用共享数据模型来操作。(表示集成)是指工具提供相同的用户界面。 6. 根据支持的范围,CASE工具可分为(窄支持)、(较宽支持)和(一般支持)工具。 7. 软件危机的主要原因有(软件本身的特点)和(缺乏好的开发方法和手段)。 8. (增量)模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发处理的, 开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。 9.结构化方法总得指导思想是(自顶而下逐步求精)。它的基本原则是功能的(分解)与(抽象)。它是软件工程中最早出现的开发方法,特别适用于数据处理领域的问题。 10. 面向对象开发方法包括(面向对象分析)、(面向对象设计)、(面向对象实现)、三部分。 11. 瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。它包括(可行性分析)、项目开发计划、(需求分析)、(概要设计) 、(详细设计)、_ (编码)、(测试)、(维护),它规定了由前至后、相互衔接的固定次序 ,如同瀑布流水,逐级下落。 12. 瀑布模型本质上是一种(线性)顺序模型。 13. 构造原型时,必须注意(功能性能)取舍,忽略一切暂时不关心的部分。 14. 属性指的是类中对象所具有的(性质(数据值))。不同对象的同一属性可以具有相同或不同的(属性值)。 15. 结构化方法和原型化方法是软件开发中常使用的两种方法,在实际的应用中,它们之间的关系表现为(相互补充)。 二.判断题 1. 瀑布模型的存在问题是缺乏灵活性。(√) 2. 软件是一种逻辑产品。(√) 3. 软件工程学科出现的主要原因是程序设计方法学的影响。(× ) 4. 有关计算机程序功能、设计、编制、使用的文字或图形资料称为文档。(√) 5. CASE开放式工作台或者提供控制集成机制,或者可剪裁,其数据集成或协议是独立的。(× ) 6. 在软件的开发与维护过程中,用来存储、更新、恢复和管理一个软件的多版本,它是版本控制工具。(√) 7. 平台集成是指工具运行在相同的硬件/操作系统平台上。(√) 8. 软件生存周期模型有多种,功能模型是软件生存周期模型。(× ) 9. 从结构化的瀑布模型看,在软件生命周期中得8个阶段中,详细设计阶段出错,对软件

软件工程导论第七章课后答案解析

第七章习题答案 2.研究下面给出的伪码程序,要求: ⑴画出它的程序流程图。 ⑵它是结构化的还是非结构化的?说明你的理由。 ⑶若是非结构化的,则 (a)把它改造成仅用三种控制结构的结构化程序;(b)写出这个结构化程序的伪码; (c)用盒图表示这个结构化程序。 ⑷找出并改正程序中的逻辑错误。 COMMENT: PROGRAM SEARCHES FOR FIRST N REFERENCES TO A TOPIC IN AN INFORMATION RETRIEVAL SYSTEM WITH T TOTAL ENTRIES INPUT N INPUT KEYWORD(S) FOR TOPIC I=0 MATCH=0 DO WHILE I≤T I=I+1 IF WORD=KEYWORD THEN MATCH=MATCH+1 STORE IN BUFFER END

IF MATCH=N THEN GOTO OUTPUT END END IF N=0 THEN PRINT ”NO MATCH” OUTPUT: ELSE CALL SUBROUTINE TO PRINT BUFFER INFORMATION END 解:⑴程序流程图(如图2.1所示) ⑵此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体转到循环体外的一个条件语句部。

图2.1 ⑶修改后的伪码如下:

INPUT N,T 输入N INPUT KEYWORD(S) FOR TOPIC 输入有关话题的关键字 OPEN FILE 打开文件 I=0 MATCH=0 DO WHILE I≤T 循环—最多可做T次 I=I+1 READ A WORD OF FILE TO WORD 从文件里读一个字到变量WORD IF WORD=KEYWORD THEN MATCH=MATCH+1 IF MATCH=N THEN EXIT 搜索到了N个关键字,就跳出循环END IF END IF END DO IF MATCH =0 THEN PRINT ”NO MATCH”若MATCH =0就打印“没有相匹配” ELSE PRINT “共搜索到”; MATCH;“个匹配的关键字”否则打印信息 END IF 修改后的程序框图(盒图)

软件工程第八章作业PHTRS精编版

某学院学科办公室决定开发基于Web 的毕业设计管理系统。说明如下: 毕业设计从选题开始。首先是指导教师提供多个毕业设计选题,通常一个毕业设计选题包括题目、指导教师姓名、选题意义、设计内容、技术指标等;学生可以从网上选题,确定自己的毕业设计题目,如果多个同学同时选同一个题目则先提交的同学选中该题目,而其他同学需要继续选题;学生可以查看自己所选的题目;教师可以查看是哪些学生选了自己的题目。 毕业设计以评价为结束。首先是指导教师评价自己所指导的学生,给出百分制分数,占最终成绩的40%;然后是评阅教师评价学生(不能是自己所指导的学生),给出百分制分数,占最终成绩的30%;接下来是答辩评价,多个教师(2-6人)对学生答辩情况打分,各自给出百分制分数,得平均值,占最终成绩的30%;学生可以查看自己的最终成绩;教师可以查看自己指导的学生的各项成绩;学院学科办公室可以查看所有的学生的各项成绩,并可以查看各项统计结果。 ①确定参与者;确定用例(包括用例名,用例简述);绘制用例图;对“网上选题”这个用例绘制活动图,并撰写用例详述(包括用例标识、用例名称、用例类型、用例描述、参与者、涉众利益、前置条件、基本事件流、扩展事件流、异常事件流、后置条件等项)。 参与者:指导教师、评阅教师、答辩教师、学生、学科办公室。 用例: 指导教师的用例:出题、评价所指导的学生、查看学生选题情况、查看学生成绩; 评阅教师的用例:评价所评阅的学生; 答辩教师的用例:评价答辩的学生; 学生:网上选题、查看选题情况、查看成绩; 学科办公室:查看统计结果、查看学生成绩; 用例图: 网上选题查看成绩毕业设计管理系统登录注册学生查看选题情况<>学科办公室查看学生成绩 查看统计结果

软件工程导论(第五版)课后习题测验答案

《软件工程导论》课后习题答案 第一章软件工程概论 1-1 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。 (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.软件危机有那些典型表现? (1)对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 3.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 1-3、

软件工程导论简答题整理版

第一章 4.什么是软件工程?它与软件工程方法学有何关系? 软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。 7.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。 答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。 第三章 一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电器机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。 答:jackson图善于描绘复杂事物的组成。用jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的jackson图。

用Jackson 图描绘一列火车的构成 第四章 3.假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发生多少个错误?为什么? 答:经验表明,在类似的程序中,单位长度里的错误数Er/Ir近似为常数。美国的一些统计数字告诉我们,通常 0.5ⅹ10-2 <= Er/Ir <= 2ⅹ10-2 也就是说,在测试之前每1000条指令中大约有5-20个错误. 假设在该程序的每1000条指令中大约有10个错误,则估计在对它进行测试期间将发现的错误数为 25000ⅹ10/1000=250 第五章 3、某软件公司拟采取下述措施提高他们开发出的软件产品的可维护性。请判断那些措施是正确的,那些措施不正确。 (1)在分析用户需求时同时考虑维护的问题。 正确。在分析用户需求的同时考虑维护问题,列出将来可能变更或增加的需求,就可以在设计时为将来可能做的修改预先做一些准备,使得在用户确实提出这些维护要求时,实现起来比较容易一些。 (2)测试完程序后,删去程序中的注解以缩短源程序的长度。 不正确。程序中的注解是提高程序可理解性的关键的内部文档,删去程序中的注解必然会降低程序的可读性和可理解性,从而降低软件的可维护性。 (3)在软件开发过程中尽量保证各阶段文档的正确性。 正确。完整准确的文档对提高软件的可理解性有重要贡献,保证文档的正确性是提高软件可维护性的关键。 (4)编码时尽量多用全局变量。 不正确。程序中使用的全局变量多,不仅违背局部化原理而且会使得具有公共环境耦合的模块数量增多,从而降低程序的可理解性,可修改性和可测试性,因此,这样的软件可维护性较差。 (5)选用时间效率和空间效率尽可能高的算法。 不正确。一般说来,效率高的算法的可理解性较差,选用效率尽可能高的算法将降低软件的可维护性。事实上,程序的效率能够满足用户的需求就可以了,没有必要盲目地追求尽可能高的效率。 (6)尽可能利用硬件特点以提高程序效率。 不正确。程序对硬件特点依赖越多,运行程序的硬件变更适应性维护的工作量也就越大。(7)尽可能使用高级语言编写程序。 正确。用高级语言编程时,用户可以给程序变量和程序模块赋予含义鲜明的名字,通过名字能够比较容易的把程序对象和它们所代表的实体联系起来。此外,高级语言使用的概念和符号更符合人的习惯。上述事实都使得用高级语言编写的程序更容易阅读,因此也就更容易维护。 (8)进行总体设计时加强模块间的联系。 不正确。模块间耦合越紧密,程序就越难理解和修改,修改后测试也比较困难。因此,加强模块间的联系将降低软件的可维护性。 (9)尽量减少程序模块的规模。 不正确。程序模块的规模很小,就会使程序中包含的模块很多,这将使模块间的接口数量大

软件工程第八章知识点

一、选择 1、软件维护工作的最主要部分是(A ) A.改正性维护B.适应性维护 C.完善性维护D.预防性维护 2、软件维护工作中大部分的工作是由于(D )而引起的。 A.程序的可靠性 B.适应新的硬件环境 C.适应新的软件环境 D.用户的需求改变 3、在软件生存周期中,时间最长,所花费的精力和费用也最多的阶段是 B 。 A.详细设计 B.维护 C.概要设计 D.测试 4、修改软件以适应外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输出/输入方式、数据存储介质)发生变化是指?( B ) A.改正性维护B.适应性维护 C.完善性维护D.预防性维护 5、软件的可维护性是评价软件质量的一个重要标准,下面关于提高软件可维护性的措施描述正确的有 A 。 (A)在进行需求分析的同时考虑维护问题 (B)设计时选择时间效率和空间效率尽可能高的算法 (C)提高程序可读性,尽量使用高级语言编程 (D)测试结束时,删除程序中的注解以缩短源程序长度 6、可维护性的特性中,相互矛盾的是 B 。 A.可理解性与可测试性 B.效率性和可修改性 C.可修改性和可理解性 D. 可理解性与可读性 7、各种软件维护的类型中最重要的是 A . A.完善性维护 B.纠错性维护 C.适应性维护 D.预防性维护 8、软件维护困难的主要原因是 C 。 A.费用低 B.人员少 C.开发方法的缺陷 D.维护难 9、维护阶段的文档是 C 。 A.软件需求说明 B.操作手册 C.软件问题报告 D.测试分析 10、产生软件维护的副作用,是指 C 。 A.开发时的错误 B.隐含的挫样 C.因修改软件而造成的错误 D.运行时误操作 二、填空 1、在软件产品被开发出来并交付用户使用之后,就进入了软件的阶段。(运行维护)3、软件生命周期的最后一个阶段是软件的阶段,也是持续时间最长、代价最大的一个阶段。(维护) 2、软件工程的主要目的就是要提高软件的可性,减少软件所需要的工作量,降低软件系统的。(维护,维护,总成本)

软件工程导论答案(第三章)

第三章 1.为什么要进行需求分析?通常对软件系统有哪些需求? 为了开发真正满足用户需求的软件产品,需求分析是软件开发工作获得成功的前提条件,不能满足用户需求的程序只会令用户失望,给开发者带来烦恼。 功能需求、性能需求、可靠性和可用性需求、出错处理、借口需求、约束、逆向需求、将来可能提出的要求。 2.怎样与用户有效地沟通以获取用户的真是需求? 访谈是最早开始使用的获取用户需求的技术,也是目前广泛使用的需求分析技术,访谈有两种形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具体问题。在非正式访谈中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。其中情景分析技术往往非常有效。 3.银行计算机储蓄系统的工作过程大致如下:储户填写的存单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码等信息。并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。 流程图上一章节已有 4.分析习题2第3题所述的机票预订系统。试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能 流程图上一章节已有 5.分析习题2第4题所述的患者监护系统。试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能,画出本系统的顶层IPO图。

流程图上一章节已有 6.复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没有纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印室发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。 试用状态装换图描绘复印机的行为。

软件工程导论张海蕃 课后习题答案

第一章 1-1 什么是软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分 成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了 软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程它与软件工程方法学有何关系 z软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 z软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。 适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发

软件工程导论复习要点

软件工程导论复习要点 第一章 1.软件的定义: 软件是计算机程序、数据以及运行计算机系统可能需要的相关文档。 (1)程序:程序是计算任务的处理对象和处理规则的描述。(软件!=程序) (2)数据:使程序能正常操纵信息的数据结构(即数据的组织形式)。 (3)文档:文档是为了便于了解程序所需的阐明性资料。 2.软件工程的定义: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究上面提到的途径。 3.软件工程三要素: 过程:开发软件产品的一组活动及其结果。 方法:为软件开发过程提供“如何做”的技术。 工具:为软件开发方法提供自动的或半自动的软件支撑环境。4.软件过程的四个基本活动: 规格说明:定义软件功能以及对其使用的限制。 软件开发:设计和实现满足规格说明的软件。 软件确认:验证软件足以保证能够满足客户的要求。

软件演化:改进软件以适应不断变化的需求。 5.两种主要的开发方法: 结构化(面向过程)的方法、面向对象的方法。 第二章 1.软件工程发展历史: (1)第一阶段:软件危机——是指计算机软件的开发和维护过程所遇到的一系列严重问题 主要表现:软件开发费用和进度失控;软件的可靠性差;生产出来的软件难以维护;软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要。(1968年10 月软件工程大会在德国由北约出资举办) (2)第二阶段:传统软件工程——一是从管理的角度,希望实现软件开发过程的工程化(软件生命周期模型;确定了一些重要文档格式的标准);二是侧重于对软件开发过程中、分析设计的方法的研究(结构化)。 (3)第三阶段:现代软件工程——从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。 发展趋势:模块化;开放计算;合理的开发治理;全球化软件协作交付。

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露程序中潜在的错误。

《软件工程导论》张海蕃 课后习题答案

第一章 1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分 成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了 软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程?它与软件工程方法学有何关系? z软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 z软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。 适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发

第8章 软件工程 习题与答案

本章习题(P206-208) 一、复习题 1.简述软件的特点 答: 软件相对硬件而言有许多不同特点。了解这些特别之处能够帮助我们全面.正确地理解计算机软件。 (1)软件是一种逻辑实体,而不是具体的物理实体,具有很强的抽象性。我们只能把它记录在介质上,或在系统上运行,但却无法直接通过我们的眼睛看到软件的形态。 (2)软件是一个逻辑上复杂而规模上庞大的系统,涉及技术.管理等多方面的问题。如果将代码比作零件,则一个软件是由成百上千万个零件组成的复合体,而且其结构远较机械装置复杂。应该说软件的复杂程度高于同等规模的硬件产品。 (3)软件是智力产品,其价值体现在解决问题的知识和能力,而并不体现在软件载体本身。软件的生产方式与硬件明显不同,设计方法和制造阶段不同;软件的生成成本主要在研发设计上,而大量复制几乎没有成本。 (4)在软件的运行和使用期间,没有硬件的磨损.老化问题。但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。 (5)软件的开发和运行对硬件有较强依赖关系。在软件开发有可移植性的问题,现在通常把软件的可移植性作为衡量软件质量的重要因素之一。 (6)软件工作涉及许多社会因素。软件与人的关系密切,涉及到语言.文化等多方面,甚至关系到的道德领域。 {P182} 2.什么是软件危机?主要有哪些表现?其产生的原因是什么? 答: 软件危机是软件开发领域,特别是在大型软件开发和维护过程中遇到的一系列严重问题的统称。 软件危机主要表现为费用高.开发过程不易控制.工作量估计困难.软件质量低.软件项目失败率高.无法判断大型系统能否正常工作以及软件维护任务重等现象。 产生软件危机的主要原因,一方面是软件本身所固有的抽象性.复杂性等特性;另一方面是人们当时对软件和软件开发过程的不正确认识。 {P182-183} 3.简述什么是软件工程 答: 软件工程是应用计算机科学.数学及管理科学等原理开发软件的工程。它借鉴系统工程的原则.方法,以提高质量,降低成本为目的。软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。采用工程化方法和途径来开发与维护软件。 {P183-184} 4.简述软件工程研究的基本内容与目标 答:

软件工程导论复习整理(最新)

第一章 1..软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。 2.软件与硬件的区别:软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。 3.软件:程序、数据及相关文档的完整集合。 4.软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,以经济地开发出高质量的软件并有校地维护它。 5.软件工程方法学三要素:方法、工具和过程。 6.传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。 7.面向对象方法学把数据和行为看成同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。 8.软件生命周期划分为三个时期:1软件定义(问题定义、可行性研究、需求分析),2软件开发(总体设计、详细设计、编码和单元测试、综合测试),3运行维护(软件维护)。 9.4类软件维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件,为将来的维护活动预先做准备。 10.“瀑布模型”的缺点:它是由文档驱动的,仅仅通过写在纸上的静态的规格说明,很难全面正确地认识动态的软件产品;瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的产品不能真正的满足用户的需要。 11.快速原型模型的优点:原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求;开发人员通过建立原型系统已经学到了很多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。 第二章 1.可行性研究的三个方面:技术可行性:使用现有的技术能实现这个系统经济可行性:这个系统的经济效益能超过它的开发成本操作可行性:系统的操作方式在这个用户组织内行得通 2.数据流图的4个基本符号及画法P41 3.数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 4.符号含义:=表示“等价于”或“定义为”;+表示连接;[]表示“或”,用“|”分隔;{}表示“重复”,()表示“可选”用“,”号隔开;1{A}5表示上限和下限。 5.高校电话号码数据的定义P54 第三章 1.需求分析3种模型:数据模型:实体-联系图,描绘数据对象及数据对象之间的关系;功能模型:数据流图,描绘当数据在软件系统中移动时被变换的逻辑过程;行为模型:状态转换图,指明了作为外部事件结果的系统行为,描绘了系统的各种行为模式。 2.ER图3种基本成分:实体(数据对象),关系,属性。P64 3.软件需求验证的四个方面:一致性,完整性,现实性,有效性。 第四章 1.总体设计2个主要阶段:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。

(完整word版)软件工程导论(第6版)

第一章、软件工程学概述 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。 2.如何维护数量不断膨胀的已有软件。 具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。 2.用户对“已完成的”软件系统不满意的现象经常发生 3.软件产品的质量往往靠不住。 4.软件常常是不可维护的。 5.软件通常没有适当的文档材料。 6.软件成本在计算机系统总成本中所占的比例逐年上升。 7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。 软件配置:程序、文档和数据。 软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。 软件:是程序、数据及相关文档的集合。 程序:是能够完成预定功能和性能的可执行的指令序列。 数据:是使程序能够适当地处理信息的数据结构。 文档:是开发、使用和维护程序所需要的图文资料。 软件工程:指导计算机软件开发和维护的一门工程学科。 软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。2.软件工程的中心课题是控制复杂性。3.软件经常变化。4.开发软件的效率非常重要。5.和谐地合作是开发软件的关键。6.软件必须有效地支持它的用户。7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。2.坚持进行阶段评审。3.实行严格的产品控制4.采用现代程序设计技术。5.结构应能清楚的审查。6.开发小组的人员应该少而精。7.承认不断改进软件工程实践的必要性。软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。 软件工程方法学(包括传统方法学、面向对象方法学)包含三个要素:方法、工具和过程。 方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题。 工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境。 工程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 面向对象方法学:把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。 面向对象方法学具有下述四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件。 2.把所有对象都划分成类。 3.按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。 4.对象彼此间仅能通过发送消息互相联系。 面向对象方法学的优点:降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。 软件生命周期:软件定义、软件开发和运行维护。软件定义:问题定义、可行性研究和需求分析。软件开发:总体设计,详细设计,编码和单元测试,综合测试。 1.问题定义:问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”。 2.可行性研究:这个阶段回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?” 3.需求分析:确定目标系统必须具备哪些功能。 4.总体设计:这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”总体设计又称为概要设计。 5.详细设计:这个阶段应回答的关键问题是:“应该怎样具体地实现这个系统呢?” 6.编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。 7.综合测试:这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。 8.软件维护:关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。

软件工程(第五版)--习题及答案---第八章

一、判断题 1、(√)使用括号改善表达式的清晰性。 2、(×)对递归定义的数据结构不要使用递归定义的过程。 3、(×)尽可能对程序代码进行优化。 4、(√)不要修改不好的程序,要重新编写。 5、(√)不要进行浮点数的相等比较。 6、(×)应尽可能多地使用临时变量。 7、(√)利用数据类型对数据值进行防范。 8、(×)用计数方法而不是用文件结束符判别批量数据输入的结束。 9、(×)程序中的注释是可有可无的。 10、(√)使用有意义的标识符。 11、(×)应尽量把程序编写的短一些。 12、(×)应尽量使用goto语句。 二、选择题 1、在编码中首先要考虑的是(B)。 A、程序的执行效率 B、程序的可读性 C、程序的一致性 D、程序的安全性 2、(D)。不属于序言性注释内容的是 A、模块设计者 B、修改日期 C、程序的整体说明 D、语句功能 3、序言性注释应置于文件或模块的(A)位置。 A、起始 B、结束 C、中间 D、起始和中间 4、如果编写系统软件,可选用的语言是(C)。 A、FoxPro B、COBOL C、C D、FORTRAN 5、选择程序设计语言不应该考虑的是(B)。 A、应用领域 B、语言的功能 C、用户的要求 D、用户的使用水平 6、与编程风格有关的因素不包括(D)。 A、源程序文档化 B、语句构造 C、输入输出 D、程序的编译效率 7、最早用于科学计算的程序设计语言是(C)。 A、PROLOG B、Smalltalk C、FORTRAN D、COBOL 8、功能性注释的主要内容不包括(B)。 A、程序段的功能 B、模块的功能 C、数据的状态 D、语句的功能 9、对建立良好的编程风格,下面描述正确的是(A)。 A、程序应简单、清晰、可读性好 B、符号名的命名只要符合语法即可 C、充分考虑程序的执行效率 D、程序的注释可有可无 10、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括合适的标识符、注释和(A)。 A、程序的布局组织

相关主题
文本预览
相关文档 最新文档