软件工程概论答案

软件工程概论答案
软件工程概论答案

第1章软件与软件工程的概念

举出你所知道的应用软件的例子。

办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。

认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么?

认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。

首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。

如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?

可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。

什么是软件危机?它有哪些典型表现?为什么会出现软件危机?

软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

典型表现:

(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用

迅速普及深入的趋势。

产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:

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

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

(3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。

(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。

(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

什么是软件工程?

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?

(1)问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。

可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?”。

(2)需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标

系统必须做什么”这个问题。

(3)软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段

中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都是意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的

工作,为源程序编写打下基础,此即所谓详细设计。

(4)程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要

选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。

(5)集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起

来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。

(6)运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若

干年。软件在运行中可能由于多方面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。

常见的软件生存期模型主要有哪些?每种模型的优缺点是什么?

常见的软件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。

(1)瀑布模型

优点:可强迫开发人员采用规范化的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。

适用范围:瀑布模型只适用于项目开始时需求已确定的情况。

(2) 快速原型模型

优点:有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。

缺点:要求开发人员快速建立原型。

适用范围:适用于需求不明确的软件项目。

(3) 增量模型

优点:

●能在较短时间内向用户提交可完成一些基本功能的产品,即从第一个构件交付之日起,

用户就能做一些有用的工作。

●逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新

的软件可能给用户组织带来的冲击。

●项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能

够成功地交付给客户。

●优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系

统服务将接受最多的测试。

缺点:

●在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产

品。

●软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、方便。

适用范围:适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。

(4) 螺旋模型

优点:

●对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开

发的一个重要目标;

●减少了过多测试或测试不足所带来的风险;

●在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。

缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。

适用范围:适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。

(5) 喷泉模型

优点:在开发过程中使用统一的概念和方法,各阶段之间没有明显的界限,容易实现各个开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。

缺点:由于各个阶段之间的界线不明确,容易造成软件开发过程的无序。

适用范围:适用于面向对象的软件开发。

(6) 统一过程

优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供了较大的通用性。

缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。

适用范围:适用于基于构件的软件开发。

第2章软件工程方法与工具

软件工程的三种基本要素是什么,各自的作用是什么?

软件工程的三种基本要素是方法、工具和过程。

(1) 软件工程方法(method)为建造软件提供技术上的解决方法(“如何做”)。目前使用得最广泛的方法是传统方法(结构化方法)和面向对象方法。

(2) 工具为方法的运用提供自动的或半自动的软件支撑环境。

(3) 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

简述传统方法和面向对象方法的特点。

(1) 传统方法的特点

传统方法也称为生命周期方法或结构化范型。它采用结构化技术来完成软件开发的各项任务。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。每一个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准。

传统方法的主要缺点是在适应需求变化方面不够灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。

(2)面向对象方法的特点

面向对象方法把数据和行为看成同等重要,是将数据和对数据的操作紧密地结合起来的方法,这也是面向对象方法与传统方法的重要区别。

面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。

形式化方法的特点是什么?

形式化方法的主要特点是:

(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;

(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。通过一系列变换将形

式的规格说明细化成为程序。

第3章软件需求获取与结构化分析方法

为什么结构化分析要叫“结构化”?有其他可替代的术语吗?

“结构化”一词应来源于“结构化程序设计”,先有“结构化程序设计”的思想,后有结构化设计及结构化分析。有时称传统的分析方法,指的就是结构化分析方法。

顶层数据流图或称环境图的作用是什么?

顶层数据流图(或称环境图)仅包括一个数据处理过程,也就是要开发的目标系统。其作用如下:

(1) 确定系统在其环境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。

(2) 通过确定系统的输入和输出与外部实体的关系确定系统的边界,也就是要确定哪些功能或处理属于系统范围之内,哪些属于系统范围之外,需要由其他系统处理或人工处理。在对数据流图进行分解时需要注意哪些问题?

在对数据流图进行分解时,需要注意以下两个问题:

(1) 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。

(2) 注意分层细化时对编号的处理方法。

银行存款业务如下:客户到银行柜台存款时,首先填写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、电话、是否留密码)。填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。最后印出开户单或存款单给用户。请画出银行存款业务的分层数据流图(至少画出两层)。

(1) 识别外部实体及输入输出数据流

外部实体:储户、业务员。

输入数据流:存款单,开户单,密码。可以将存款单和开户单抽象为事务。

输出数据流:存款单,开户单。

(2) 顶层数据流图

(3) 一层数据流图

对银行储蓄系统进行分解,从大的方面分解为接收事务、处理开户、处理存款三部分,得到一层数据流图。

(4) 二层数据流图

对“处理存款”及“处理开户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数据流图。

处理存款的数据流图

处理开户的数据流图

按照以下描述,画出ER图。

一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。

ER图如下:

第4章 结构化设计方法

当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?

在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。

是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响?

通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高内聚、低耦合的,这样才能减少工作量,否则,虽然每个模块的工作简单了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。

用面向数据流的方法设计第3章习题所描述的银行存款业务的软件结构,并使用改进方法对模块结构进行精化。

(1) 对第3章习题给出的数据流图进行精化,确定其边界,如下图所示。

教材 章 节

小结

习题

序号 标题 序号 标题

(2) 对上图按事务型数据流进行处理,完成第一级分解,得到顶层和一层模块结构图。

第一级分解后的结构图

(3) 完成第二级分解。对上图所示的“输入数据”、“输出数据”和“调度”模块进行分解,得到未经精化的输入结构、输出结构和事务结构。

未经精化的输入结构

存款业务 输入数据 调度 输出数据

输入数据

输入事务

输入密码

输出数据

打印存款单

打印开户单

未经精化的事务结构

将上面的三部分合在一起,得到初始的软件结构,如下图所示。

初始软件结构图

(4) 对软件结构进行精化。

1) 由于调度模块下只有两种事务,因此,可以将调度模块合并到上级模块中,如图所示。

将调度模块合并到上级模块后的软件结构

2) “记录密码”模块的作用范围不在其控制范围之内(即“输入密码”模块不在“记

3) 提高模块独立性,对模块结构进行调整,如下图所示。

调整后的模块结构图

将大的软件划分成模块有什么好处?是不是模块划分得越小越好?划分模块的依据是什么? 存款业务 输入数据 调度 输出数据 输入事务

输入密码 打印存款单 打印开户单

处理存款 处理开户 记录存款信息 记录开户信息

记录密码

存款业务

输入数据

输出数据

输入事务

输入密码 打印存款单 打印开户单 处理存款

处理开户

记录存款信息 记录开户信息 记录密码 存款业务 输入事务 输出数据 输入密码 打印存款单 打印开户单 处理存款 处理开户 记录存款信息 记录开户信息 记录密码 存款业务 输入事务 打印存款单 打印开户单 处理存款 处理开户 记录存款信息 记录开户信息 记录密码

将大的软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责。这种方法有利于将复杂的问题简单化,是分而治之策略的具体表现。

尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。

划分模块的依据是,模块只具有单一的功能且与其他模块没有太多的联系。

结构化程序设计禁止使用goto 语句吗?如果程序中使用了goto 语句,是否就可以断定它是非结构化的?

结构化程序设计并不禁止使用goto 语句。如果程序中使用了goto 语句,并不能断定它是非结构化的。

对于给定的算法,如何判断它是否是结构化的?

对于给定的算法,如果符合以下三条原则,就可以判断它是结构化的。 (1) 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。 (2) 选用的控制结构只准许有一个入口和一个出口。

(3) 程序语句组成容易识别的块(Block ),每块只有一个入口和一个出口。 对于图4-49所示的流程图,试分别用N-S 图和PAD 表示之。

图4-49 流程图

对应的N-S 图如下: 对应的PAD 如下:

图4-50所示的流程图完成的功能是使用二分查找方法在table 数组中找出值为item 的数是否存在。

(1) 判断此算法是否是结构化的,说明理由。

(2) 若算法是非结构化的,设计一个等价的结构化算法,并用N-S 图表示。 F

START A

B

Q END

T

F T

P

while P

A B until !Q

while P

A

until !Q

B

图4-50 二分查找算法的流程图

(1) 不是结构化的,最上面的循环有两个出口,最下面的分支有三个入口。

F

F

F

T

F

F

table(i)>item

(finish-start)>1

table(start)=item

table(finish)=item

flag=0

flag=1

i =(start +finish)/2

table(i)=item

table(I)

finish=i-1 start=i+1

T

T

T F

T

T

开始

结束

或者

或者

使用自顶向下、逐步细化方法设计算法,完成下列任务:产生一个10 10的二维随机整数(FINISH-START)>1 && TABLE(I)!=ITEM

I =(START +FINISH)/2 TABLE(I)

I =(START +FINISH)/2

T

F

START=I+1

FINISH=I-1

TABLE(START)==ITEM || TABLE(FINISH) ==ITEM || TABLE(I)==ITEM T F

FLAG=1

FLAG=0 (FINISH-START)>1 && FLAG==0 I =(START +FINISH)/2 TABLE(I)==ITEM

FLAG =0 T F FLAG=1 TABLE(I)

TABLE(START)==ITEM || TABLE(FINISH) ==ITEM T F FLAG=1

START=I+1 FINISH=I-1 (FINISH-START)>=0 && FLAG==0 I =(START +FINISH)/2 TABLE(I)==ITEM

FLAG =0 T F FLAG=1 TABLE(I)

START=I+1 FINISH=I-1

方阵,先求出每一行的最大值和每一列的最小值;然后求10个最大值中的最小者,10个最小值中的最大者;最后求这两个数之差的平方。

(1) 首先写出下面的程序框架:

main (){

定义10?10的二维整数数组A,长度为10的一维数组B, C;

建立10?10的二维随机整数数组A;- - - - - - -- -- - - - - - - - - - - - 1

求A中每一行的最大值→数组B;- - - - - - - - -- - - - - - - - - - - - 2

求A中每一列的最小值→数组C;- - - - - - - - -- - - - - - - - - - - - 3

求数组B中的最小值→minOfB; - - - - - - - - -- - - - - - - - - - - - 4

求数组C中的最大值→maxOfC; - - - - - - - - -- - - - - - - - - - - - 5

(minOfB- maxOfC)^2 →result;

}

(2) 对后面加标记的部分进行细化

main (){

定义10?10的二维整数数组A,长度为10的一维数组B, C;

/*建立10?10的二维随机整数数组A*/ - - - - - -- -- - - - - - - - - - - - 1

for (i=0; i<=9; i++)

for (j=0; j<=9; j++)

产生随机整数→ A[i,j];

/*求A中每一行的最大值→数组B*/ - - - - - - - - -- - - - - - - - - - - - 2

for (i=0; i<=9; i++) {

求数组A第i行的最大值→B[i];

}

/*求A中每一列的最小值→数组C*/ - - - - - - - - -- - - - - - - - - - - - 3

for (j=0; j<=9; j++) {

求数组A第j列的最小值→C[j];

}

/*求数组B中的最小值→minOfB*/ - - - - - - - - -- - - - - - - - - - - - 4

minOfB = B[0];

for (i=1; i<=9; i++) {

if (minOfB < B[i]) {

minOfB = B[i];

}

}

/*求数组C中的最大值→maxOfC*/ - - - - - - - - -- - - - - - - - - - - - 5

maxOfC = C[0];

for ( i=1; i<=9; i++) {

if (maxOfC>C[i]) {

maxOfC = C[i];

}

}

(minOfB- maxOfC)^2 →result;

}

(3) 下一步可以继续对和进行细化。具体略。

设计算法完成下列任务:输入一段英文后,无论输入的文字都是大写,还是小写,或大小写任意混合,都能将其整理成除每个句子开头字母是大写外,其他都是小写的文字。

假设在输入的文字中,两个单词间只允许是空格、,、.、?、!,则在输出的文字中,大写的情况有以下几种:

(1)整段文字的第一个字母是大写;

(2)“.”后的第一个字母是大写;

(3)“?”后的第一个字母是大写;

(4) “!”后的第一个字母是大写;

设变量a 存储输入的字符串,变量b 存储结果字符串,变量c 存储当前处理的字符,变量e 存储c 之前的字符(当c 为第一个字符时除外)。算法如下:

第5章 编码

有人说程序编好后能上机运行就可以了,为什么还要讲究风格和可读性呢?你觉得对吗?为什么?

对于学生的练习题和作业题,程序编好后能上机运行,一般认为任务就完成了。但对于实际开发的项目来说,任务并没有结束。编码人员编写完程序后,要对自己的程序进行单元测试,测试人员要进行集成测试和系统测试,提交用户使用后,还需要对软件进行持续的维护修改工作。在软件开发和维护过程中,都需要阅读程序。道理很简单,如果需要对某段程序进行修改,首先要读懂,阅读程序是软件开发和维护过程中的一个重要组成部分,而且读程序的时间比写程序的时间还要多。所以,程序的风格和可读性很重要,具有良好的程序风格和可读性的程序,有助于对程序的正确理解,可以大大减少阅读理解程序的时间,从而提高维护工作的效率。

一般情况下,程序的效率和清晰性相比哪一个更重要?

在计算机发展的早期,由于CPU 效率低,内存小,程序在运行时容易出现运行时间太长或内存溢出问题。因此,人们在编写程序时,很注重程序的时间效率和空间效率,而不太注重程序的清晰性。

随着计算机硬件性能的飞速发展以及软件规模和复杂性的急剧增加,这种情况已经发生了根本的转变,程序的清晰性越来越受到重视,程序的清晰性不好会给测试、维护修改带来困难,这对于规模庞大和复杂的软件尤其明显。

软件运行的效率主要取决于软件的体系结构及算法,编码阶段虽然也有机会提高效率,但效果并不明显。对于效率没有特殊严格要求的系统来说,要将程序的清晰性放在第一位,在不影响清晰性的情况下,去改进效率。

在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。许多程序设计语言允许在一行内写多个语句。但这种方式会使程序可读性变差。下面是一段排序程序,请对其编码风格进行改进,以增加其可读性。

for (i=1; i<=n-1; i++) for (j=1; j<=n-i; j++) if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;}

输入字符串a, n = strlen(a)

如果a 的第一个字符是字母,则转成大写。 b[0]=a[0] for ( i=1; i

c 是字母

T F

e 属于".?!" T F c 改大写 c 改小写 b[i]=c

给b 加字符串结束标志 输出字符串b

改进后的代码如下:

for (i=1; i<=n-1; i++)

for (j=1; j<=n-i; j++)

if (a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

请对下面代码的布局进行改进,使其符合规范其更容易理解。

for (i=1; i<=n-1; i++){

t=i;

for (j=i+1; j<=n; j++)

if (a[j]

if (t!=i) {

temp=a[t];

a[t]=a[i];

a[i]=temp

}

}

改进后的代码如下:

for (i=1; i<=n-1; i++)

{

t=i;

for (j=i+1; j<=n; j++)

{

if (a[j]

t=j;

}

if (t!=i)

{

temp=a[t];

a[t]=a[i];

a[i]=temp

}

}

使用你熟悉的语言编写出习题的程序,注意编码风格。

下面为使用C语言编写的习题的程序:

#include ""

#include ""

#include ""

#include ""

/* 求10 10的二维数组a的每一行的最大值存入一维数组b,每一列的最小值存入一维数组c,minOfB存储数组b的最小值,maxOfC存储数组c的最大值,result存储minOfB 与maxOfC之差的平方。*/

int main()

{

int a[10][10], b[10],c[10];

int i,j,minOfB, maxOfC, result;

/*产生随机数种子*/

srand((unsigned int)time(NULL));

/*建立10 10的二维随机整数数组a*/

for(i=0;i<=9;i++)

for (j=0; j<=9; j++)

a[i][j]=rand()%100+1; ?、!),将其整理成每个句子开头字母是大写、其他都是小写的字符串存储在变量b中。变量c存储当前处理的字符,变量e存储c之前字符。*/

void main()

{ char a[1000], b[1000], c,e;

int i,n;

gets(a);

n=strlen(a);

!后面的字母改为大写,其他改为小写。

for (i=1; i

{ c=a[i];

e=a[i-1];

if (isalpha(c))

{ if(strchr(".?!",e))

c=toupper(c);

else

c=tolower(c);

}

b[i]=c;

}

b[n]='\0';

puts(b);

}

第6章软件测试方法

假设汽车的车牌号可由车主人在规定范围内自选,若其规定为:

(1) 车牌上应有7个字符;

(2) 为首的字符限定为汉字“京”;

(3) 第2个字符可任选一字母(A~Z);

(4) 第3~7个字符可选任意数字。

请为相关的处理程序采用等价类划分方法设计等价类表及相应的测试用例。

等价类表

输入数据有效等价类无效等价类

字符个数7个(1)0~6个(2),>7个(3)

首字符“京”(4)非“京”(5)第2个字符字母(6)非字母(7)

第3~7个字符数字(8)非数字(9)

测试用例如下:

1)京H87774 }(1),(4),(6),(8)

2)京H8777 }(2)

3)京H877745 }(3)

4)冀H87774 }(5)

5)京987774 }(7)

6)京BA7774 }(9)

比较α测试与β测试,说明其异同。

α测试与β测试都是集成测试之后所进行的测试,都属于系统测试。所不同的是,α测试是在开发环境中所做的测试,主要由开发方人员进行。而β测试则是在用户实际工作环境中所做的测试,不受开发人员的干预。

补充题:设计下列伪码程序的语句覆盖和路径覆盖测试用例:

START

INPUT(A,B,C)

IF A>5

THEN X=10

ELSE X=1 END IF

IF B>10

THEN Y=20

ELSE Y=2 END IF

IF C>15

THEN Z=30

ELSE Z=3 END IF PRINT(X,Y,Z) STOP

INPUT(A,B,C)

A>5

X=10 X=1

B>10

Y=20 Y=2 Y N Y N

C>15

Z=30 Z=3 Y N

设输入数据为,输出数据为

语句覆盖测试用例:【<6,12,20>,<10,20,30>】, 【<4,8,10>,<1,2,3>】

路径覆盖测试用例:

【<6,12,20>,<10,20,30>】

【<6,12,10>,<10,20,3>】

【<6,8,20>,<10,2,30>】

【<6,8,10>,<10,2,3>】

【<4,12,20>,<1,20,30>】

【<4,12,10>,<1,20,3>】

【<4,8,20>,<1,2,30>】

【<4,8,10>,<1,2,3>】

第7章统一建模语言UML概述

UML中有哪些关系?解释类图中聚合和关联的相同点和不同点。

在UML中,常见的关系有泛化、聚合、关联、依赖和实现。

在类图中,关联是一种结构关系,它描述了两个或多个类的实例之间的连接关系。聚合描述了整体和部分之间的结构关系。按照关联关系的定义,聚合属于一种特殊的关联关系,只不过这种关联关系具有明确的整体-部分含义而已。从耦合度的角度看,聚合关系要强于关联关系。

讨论顺序图与协作图的关系,何时用顺序图建模优于协作图建模,以及相反的情况。

顺序图和协作图都能描述对象间的交互关系,但两者的侧重点不同,顺序图着重表现交互的时间顺序,协作图则着重表现交互对象的静态链接关系。但即使他们各有侧重,但从语义上来说是等价的,可从一种图自动转换为另一种图。

一般情况下,当需要强调消息传递的时间顺序时,采用顺序图;当表示涉及很多对象的模型时,协作图比顺序图更形象。顺序图在分析中更常用,而协作图则在设计中更常用。

考虑银行系统中的帐户会有哪几种状态,画出帐户对象的状态图。

账户的状态包括开户、正常使用、透支、休眠、冻结和注销。账户对象的状态图如下图所示。

第8章面向对象分析

比较面向对象的分析方法和面向数据流的分析方法,阐述它们各自的特点。

面向对象的分析方法使用用例模型来表示用户的功能需求,用例模型相当于功能模型,在对用例模型进行细化的过程中,也伴随着对功能的分解。但面向对象的分析方法并不是以功能分解为核心,在获取并分析用户的功能需求之后,重点以类和对象为核心,建立对象模型,交互模型也是围绕对象模型进行的。面向数据流的分析方法是从建立顶层数据流图(环境图)开始,之后逐层对加工进行分解。面向数据流的分析方法是以功能分解为核心的。面向对象分析需要建立的三个模型是什么?

面向对象分析需要建立的3个模型是:由用例和场景表示的功能模型(用例模型);用类和对象表示的静态模型(对象模型);由状态图和顺序图表示的动态模型(交互模型)。用例建模的主要步骤是什么?

用例建模的主要步骤如下:

(1)确定业务参与者──可以是与系统有交互的外部硬件、软件、组织、人等。

(2)确定业务需求用例──参与者需要系统提供的完整功能。

(3)创建用例图──标识参与者与用例之间、用例与用例之间的关系。

用例与用例之间的关系主要有哪两种?其区别是什么?

用例之间的关系主要有《包含》(也称《使用》)和《扩展》。

《包含》表示一个用例所执行的功能中总是包括被包含用例的功能;《扩展》是指一个用例的执行可能需要由其他用例的功能来扩展,《扩展》联系可用于对期望或可选的行为建模,但其主要用途是使基本用例的功能不依赖于扩展用例。

对于复杂的系统,其对象模型应该由哪五个层次组成?

对于复杂的系统,对象模型应该由下述5个层次组成:主题层(也称为范畴层)、类-对象层、结构层、属性层和服务层,如图所示。

对象模型的五个层次

解释关联类的作用,在什么时候需要使用关联类?

关联类的作用是描述关联的属性。

在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立关联类(association class)。

按照以下描述,画出UML类图:

一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。

UML类图如下:

考虑一个计算机超市,出售硬件、外设和软件。分析谁是这个系统的参与者?这个系统有哪些主要用例?画出用例图。

系统的参与者:系统管理员(administrator),售货员(salesperson),客户(customer)。

编号参与者用例说明

1

administrator

Maintain product information(维护

商品信息)

增加、修改、删除商品信息(商品编号、

名称、型号、价格)2

Maintain membership information

(维护会员信息)

增加、修改、删除会员信息(会员编号、

姓名、身份证号、办卡日期)3

salesperson

Scan membership card(扫描会员

卡)

在商品出售之前,系统通过扫描仪刷卡

(会员卡)来确认顾客的会员身份4

Scan product code(扫描商品的条

形码)

通过扫描商品的条形码,自动识别商品

的名称和价格5

Input amount of product(输入商品

数量)

对于已经扫描的条形码,手工输入购买

的此件商品的数量6

salesperson,

customer

Accept payment(接收现金付款)

Charge payment to card(使用银行

卡付款)

7 salesperson Print receipt(打印收据)

用例图如下:

第10章面向对象设计

软件模块之间的依赖性可以从哪些角度和抽象层次进行分析?

在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。

消除包之间循环依赖性的方法是什么?

本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下:

在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。

请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。

软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。

在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。

在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。

选择你熟悉的编程语言说明怎样定义一个构件。(略)

典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么?

典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

1)问题域部分的设计

在面向对象设计过程中,可能要对面向对象分析所得出的问题域模型进行补充或调整。例如,调整需求、复用已有的类、把问题域类组合在一起、增添泛化类以建立类间的协议、调整继承的支持级别、改进性能等。

2)人机交互部分的设计

人机交互界面的设计质量直接影响到用户对软件的使用。在设计阶段,必须根据需求把

软件工程导论课后习题答案95829882

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成” 是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够

软件工程概论课后答案解析

第1章软件与软件工程的概念 1、1 举出您所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1、2 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是否正确?为什么? 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是错误的。 首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。 1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本与进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常就是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅 速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技 术问题,更重要的就是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

软件工程概论.doc

软件工程 1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。 2、软件危机的主要表现: (1)对软件开发成本和进度的估计经常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 3、产生软件危机的原因 (1)从软件特点上看,软件是逻辑部件,不是物理部件; (2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理; (3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等); (4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因) 4、消除软件危机的途径 (1)首先应该对计算机软件有一个正确的认识; (2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目; (3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法; (4)应该开发和使用更好的软件工具 总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。 (2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 6、软件工程的本质特征 (1)软件工程关注于大型程序的构造; (2)软件工程的中心课题是控制复杂性; (3)软件经常变化; (4)开发软件的效率非常重要; (5)和谐地合作是开发软件的关键; (6)软件必须有效地支持它的用户; (7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 7、软件工程的基本原理 (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的(阶段性)产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精

土木工程概论复习题库

工程管理之《土木工程概论》(06393)复习题库 一、单选题 1、目前世界最高的大厦在 C:阿联酋 2、十八层的房屋建筑属于D:高层建筑 3、建筑工程设计程序正确的是 A:方案设计→初步设计→技术设计→施工图设计 4、房屋建筑结构中的楼板通常是属于哪种基本构件A:受弯构件 5、下面哪个级别的建筑物的耐久性和重要程度最高A:一级建筑物 6、桥梁的下部结构由组成A:桥墩、桥台、基础 7、上海杨浦大桥属于D:斜拉桥 8、某大厦建成后存在严重质量问题,不得不爆破拆除,这说明工程项目具有D:不可逆转性的特征 9、也称片石,是采石场由爆破直接获得的形状不规则的石块 B:毛石 10、第一座依照现代钢框架结构原理建造起来的高层建筑是D:芝加哥家庭保险公司大厦 11、将建筑物从屋顶、墙面、楼层、基础等构件全部断开,即使建筑物的相邻部位也互不牵制,从而避免建筑物开裂的是 B:沉降缝 12、作为跑道和土质地面之间过渡用,主要用来减少飞机一旦冲出或偏离跑道时有损坏的危险C:跑道道肩 13、在地形图上或地面上选定线路的走向,并确定线路的空间位置过程是C:铁路定线 14、跨越码头与人工岛之间的连接通道被称为C:栈桥 15、在正常条件下,一条道路在单位时间内可通过的车辆数,称为道路 C:通行能力 16、下列关于高速铁路模式的说法哪一种是错误的 C:德国ICE模式:全部修建新线,旅客列车专用 17、下面港口堆场的分类是正确的D:按货物种类及使用特点分类:散货堆场、件杂货堆场、集装箱堆场 18、主干路的设计年限为C:20年 19、是建造各类工程设施的科学技术的总称 A:土木工程 20、是关于事物的基本原理和事实的有组织、有系统的知识B:科学 21、美国金门大桥是世界上第一座单跨超过千米的大桥、它属于D:悬索桥 22、桥梁按受力特点和结构体系主要分为C:梁式桥、拱桥、悬索桥、刚架桥、斜拉桥、组合体系桥 23、桥墩的作用是 B:支承在其左右两跨上部结构通过支座传来的竖直力和水平力 24、下列建筑中采用成束筒结构的是D:美国西尔斯塔楼 25、当建筑物建造在土层性质差别较大的地基上,可在房屋适当的位置设置垂直缝隙,将建筑物从屋顶、墙面、楼层、基础等构件全部断开,划分为若干个刚度较好的单元,从而避免建筑物开裂的构造是 B:沉降缝 26、工程项目管理难度最大的阶段是工程项目的A:实施阶段 27、上海东方明珠电视塔属于D:高耸结构建筑 28、是一种带状的、三维空间的人工构造物,它常和桥梁、涵洞、隧道等构成统一的工程实体,是供各种车辆和行人通行的工程设施 B:道路 29、是利用不适合种田的山泥,废土,砂等,加入少量水泥或石灰作固结剂及微量外加剂和适量水混合搅拌压制成型,自然养护或蒸养一定时间制成的 B:非烧结粘土砖 30、用于门窗等洞口上部用以承受洞口上部荷载的梁是 C:过梁 31、在港口中,对于汽车和装卸流动机械共同行驶的道路宽度一般不应小于C:10~12m 32、在路堤的路肩边缘以下、路堑路基面两侧的侧沟外,因填挖而形成的斜坡面,称为C:路基边坡 33、是由人工或机械开采出的较规则的六面体石块A:料石 34、地下铁道的施工方法主要分为两大类A:明挖法、暗挖法 35、高速公路定线的原则包括 B:路线与城市应有一定距离 36、道路的设计标高高于整个自然地面,需全部填土形成路基的是 A:路堤 37、轨道间宽度1435mm的轨道是 A:标准轨 38、下面哪个组成属于港口水域 D:港池、锚地、进港航道

软件工程概论课后习题答案

软件工程概论郑人杰等版 第1章软件与软件工程的概念 1.1 举出你所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么? 认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。 首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。 1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本和进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用 迅速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。 1.5 什么是软件工程? 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么? (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意义上的矛盾适用于中型软件的开发 螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。适用于内部开发的大规模软件项目。 1-8:为什么说喷泉模型叫好的体现了面向对象软件开发过程无缝和迭代的特性?

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

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经 常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 五、1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。

软件工程概论

第13章软件重用技术 13.1 典型问题分析和解答 【例1】实施软件重用的目的是要使软件开发工作进行得( A )。软件重用的实际效益除了( B )之外,在企业的经营管理方面也渴望达到理想的效益。 新的应用软件开发技术和工具是以( C )作为关键,重用大粒度的( D ),为的是快速开发应用软件。这些新技术包括微软的( E )、( F )、(G ),SUN公司的Java,OMG公司的CORBA、IDL等。 供选择的答案: A. ①更简捷②更方便③更快、更好、更省④更丰富 B. ①重用率②功能扩充③效率④空间利用率 C, D. ①软件②固件③构件④属性 ⑤对象⑥事物⑦数据⑧代码 E~G. ①office ②Visual Basic ③Active X ④Photoshop ⑤OLE ⑥Fortran ⑦COBOL ⑧Delphi 答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。其中,E、F、G的答案顺序可互换。 分析:实施软件重用的目的是要使软件开发工作进行得是更快、更好、更省。“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。 日美一些大公司的资料表明,软件重用率最高可望达到90 %,而且软件重用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。 除了重用率之外,在企业的经营管理方面也可望达到理想的效益。例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可重用构件及支持重用的负担。 新的应用软件开发技术和工具是以“构件”作为关键,重用大粒度的“对象”,为的是快速开发应用软件。这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。非面向对象语言(如COBOL和Fortran)在重用实践中已经相当的成功。这些非面向对象程序设计语言构件技术的成功实践说明了实现软件重用并不限于面向对象语言构件或类库。 【例2】以往的软件工程技术不能满足重用的需要,体现在工程、( A )、( B )、经营业务等4个方面。“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可重用的( E ),缺乏实施重用的工具。 供选择的答案: A, B. ①需求②过程③环境④组织管理 C ~ E. ①重用②可靠性③灵活性④界定 ⑤工具⑥互连性 答案:A. ②, B. ④, C. ④, D. ①, E. ③。其中,A、B的答案的顺序可互换。

土木工程概论习题汇总(答案)

土木工程概论复习题汇总 一;填空题。 1. 砖按生产工艺分—烧结砖—和非烧结砖。 2. 砂一般分为天然砂和—人工砂________ 。 3. 配置混凝土时应优先选用—中砂______ 。 4. 所谓灰是指石灰_和石膏。 5. 土木工程中使用的钢材是指_线材_______ 和型材。 6. 水泥按其用途及性能分为通用水泥、_专用水泥_、特性水泥。 7. 普通混凝土是由水泥、 _粗骨料_、细骨料、和 _水—拌合,经硬化而成的一种人 造石材。 8. 绝热材料按其成分分为无机材料和_有机材料_。 9. 将上部结构的荷载传给土地基,连接上部结构与地基土的下部结构称为—基 础__ 。 10. 常用工程地质测绘方法有相片成图法和 _实地测绘法—。 11. 通常把位于天然地基上,埋置深度小于5m的一般基础以及埋深度虽超过5m 但小于基础宽度的大尺寸基础,统称为天然地基上的_____ 浅基础。 12. 刚性基础通常由砖、毛石、_素混凝土 _、和灰土等材料做成。 13. 建筑物的基础分为刚性基础和柔性基础,钢筋混凝土基础属于—柔性________ 基 础。 14. 浅基础一般分为单独基础,_条形基础_、伐板基础和箱形基础、壳体基础。 15. 埋置深度大于_ 5米______ 或大于基础宽度的基础,称为深基础。 16. 桩按荷载传递方式分为端承桩和 _摩擦桩_。 17. 建筑物的基本构建可分为梁、板、—柱_、拱。 18. 梁和板都是工程结构中的 _受弯—构件。 19. 梁按支撑方式可分为—简支梁_、悬臂梁和连续梁。 20. 柱是工程结构中的 _ 受压—构件。 21. 框架结构承受—竖向—荷载能力强,但承受水平荷载能力差。 22. 当前我国的公路等级按照其使用任务、功能和适应的交通量分为_ 5 —个等 级。

软件工程导论第五章课后答案

软件工程导论第五章课后 答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第五章习题答案 1、为每种类型的模块耦合举一个具体例子。 答:耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问某一模块的点,以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为: 下面举例说明以上各种耦合: a.非直接耦合(Nondirect Coupling)在这种情况下,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦合。 b.数据耦合(Data Coupling)即一个模块访问另一个模块时,彼此之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用模块A即可完成,在这种调用关系中,模块A的运算结

果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。数据耦合是松散的耦合,模块间的独立性比较强。 c.标记耦合(Stamp Coupling),即一组模块通过参数传递记录信息,这就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。 d.控制耦合(Control Coupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如下图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。e.外部耦合(External Coupling)即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。如C语言中都访问被说明为extern类型的外部变量的各个模块之间即发生外部耦合。外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。f.公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双

软件工程导论课后题

1-5、根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算: (1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? (2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。

2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。 医院对患者8监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。 从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。 系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。 此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。

土木工程概论习题答案

土木工程概论习题 第一章绪论 1.1土木工程概论课程的任务 1、简述土木工程的概念及其包含的内容。 答:概念:土木工程是建造各类工程设施的科学技术的总称,它即指工程建设的对象,即建在地上、地下、水中的各种工程设施,也指所应用的材料、设备和所进行的勘探设计、施工、保养、维修等技术。 包含的内容:基础工程、房屋建筑工程、交通土建工程、桥梁工程、港口工程、地下工程、水利水电工程。 1.2土木工程发展历史概述 1、简述古代土木工程的特点。 答:没有系统的设计理论,主要依靠经验 2、简述近代土木工程的特点。 答:(1)、有了比较系统的设计理论,如1683年意大利学者伽利略发表了“关于两门新科学的对话”,首次用公式表达了梁的设计理论;1687年牛顿总结出力学三大定律,为土木工程奠定了力学分析基础;1825年,法国的纳维于1825年建立了土木工程中结构设计的容许应力法。(2)、从材料方面讲,1824年波特兰水泥发明;1867年钢筋混凝土开始应用于土木工程;1859年转炉法炼钢发明 3、简述现代土木工程的特点。 答:(1)、功能要求多样化:由于电子技术,精密机械,生物基因工程,航空航天等高技术工业的发展,许多工业建筑提出了恒湿、恒温、防微震、防腐蚀、防辐射、防磁、无微尘等要求,并向跨度大、分隔灵活、工厂花园化的方向发展。 (2)、城市建设立体化:经济发展、人口增多,造成城市用地紧张、交通拥挤。 (3)、交通工程快速化:市场经济要求运输系统快速、高效,现代化技术的进步提供了条件。(4)、工程设施大型化 1.2土木工程的未来 1、目前土木工程面临的形势有哪些? 答:(1)、世界正经历工业革命以来的有一次重大变革,这便是信息(包括计算机、通信、网络等)工业的迅猛发展,可以预计人类的生产、生活方式将会发生重大变化。 (2)、航空、航天事业等高科技事业的发展,月球上已经留下了人类的足迹,对火星及太阳系内外星空的探索已取得了巨大进步。 (3)、地球上居住人口激增,目前世界人口已经达60亿,预计21世纪末,人口要接近百亿。地球上的资源有限,日益浩劫 (4)、生态环境受到严重破坏,随着工业的发展、技术的进步,人类的生存环境却日益恶化。 2、未来土木工程的发展趋势? 答:(1)、重大工程项目将陆续兴建 (2)、土木工程将向太空、海洋、荒漠地开拓 (3)、工程材料向轻质、高强、多功能化发展 传统材料的改性、化学合成材料的应用 (4)、设计方法精确化,设计工作自动化 (5)、信息和智能化技术全面引人土木工程

软件工程导论作业答案

学号_31009210** 姓名_朱某某班级_软件10* 作业一 1.什么是软件危机?它有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产速率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面比较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价俱增。在软件“已经完成”时再引入变动,当然付出的代价更高。一个故障时代码错误造成的,有时这种错误时不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?他有哪些本质特征?怎样用软件工程消除软件危机? 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。 本质特征: 软件工程关注于大型软件的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效支持它用户

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

土木工程概论习题汇总[1]

土木工程概论习题汇总

一、单项选择题 1、()是双向行车道、中央设有分车带、进出口一般全控制或部分控制,为城市大量、长距离、快速交通服务。 A、快速道; B、主干道; C、次干道; D、支道。 2、公路路基的()形式有路堤、路堑和半填半挖三种。 A、功能; B、结构; C、平面布置; D、横断面。 3、下列哪一项不属于公路的技术标准()。 A、几何标准; B、载重标准; C、净空标准; D、速度标准。 4、我国已建成的高速公路总里程已居世界第()位。 A、一; B、二; C、三; D、四。 5、()沿线有安全设施、交通管理设施、服务性设施、环境美化设施。 A、高速公路; B、城市道路; C、乡村公路; D、县乡公路。 6、()设施一般为高速公路入口控制、交通监控设施。服务性设施一般有综合性服务站、小型休息点、停车场等。 A、安全; B、交通管理; C、服务性; D、环境美化。 7、()设施一般包括标志(如警告、限制、指示标志等)、标线、护栏、隔离设施、照明及防眩设施、视线诱导设施。 A、安全; B、交通管理; C、服务性; D、环境美化。 8、()分为:快速道、主干道、次干道、支道、居住区道路、风景区道路、白行车专用道。 A、高速公路; B、城市道路; C、乡村公路; D、县乡公路。 9、公路基本()形式有:全挖式、台口式和半山洞式。 A、涵洞; B、排水; C、遂道; D、路堑。 10、()是指一条道路在单位时间内,道路与交通正常条件下,保持一定速度安全行驶时,可通过的车辆数。 A、高速公路; B、城市道路; C、通行能力; D、交通能力。 11、第一条完全用于客货运输而且有特定时间行驶列车的铁路,是()年通车的英国利物浦与曼彻斯特之间的铁路,这条铁路全长为563 km。 A、1830; B、1863; C、1892; D、1919。 12、高速铁路的信号与()是高速列车安全、高密度运行的基本保证。 A、灯光系统; B、控制系统; C、路基; D、铁路平顺度。

软件工程概论知识点

软件工程概论知识点总结 第一章 软件定义:是计算机系统中及硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。 软件特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。 软件分类。 (1) 系统软件 (2) 应用软件 (3) 支撑软件 (4) 可复用软件 软件危机的原因:1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。2)软件人员及用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法和需求描述工具也是重要的一个原因。3)软件开发过程不规范,缺少方法论和规范的指导,软件难以维护。4)随着软件规模的增大,其复杂性往往会呈指数级升高。5)缺少有效的软件评测手段,提交用户的软件质量差 软件工程的定义: 1.指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理技术和方法进行软件的开发和维护,把经过时间考虑而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护 2.软件工程的目标:运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。 3.软件的生存周期:软件孕育、诞生、成长、成熟、衰亡的生存过程。由软件定义、软件开发和运行维护三个时期组成。软件定义:解决“做什么”的问题;软件开发:解决“如何做”的问题,分为概要设计、详细设计、编码和测试四个阶段;维护:使软件持久的满足用户的需求。 4.开发过程中的典型文档 a.软件需求规格说明书:描述将要开发的软件做什么。 b.项目计划:描述将要完成的任务及其顺序,并估计所需要的时间及工作量。 c.软件测试计划:描述如何测试软件,确保软件应实现规定的功能,并达到预期的性能。 d.软件设计说明书:描述软件的结构,包括概要设计及详细设计。 e.用户手册:描述如何使用软件 各阶段基本任务:问题定义及可行性研究、需求分析、软件设计、程序编码和单元测试、集成测试和系统测试。 5.软件生存期模型: 瀑布模型。优点:强迫开发人员规范化方法、严格规定每个阶段必须提交的文档、要求每个阶段交出的所有产品必须经过验证。缺点:完全依赖书面规格说明,可能会导致产品及用户需求有差异、只适用于项目开始时需求已确定的情况。需求分析、规格说明、设计、编码、综合测试、维护 快速原型模型。优点:易于满足用户真实需求、已通过及用户的交互验证,能正确描述用户需求、产品开发基本上按线性顺序、规格文档说明正确描述了用户需求,后期错误率和返工率很低、开发人员建立原型

【信息化-精编】软件工程导论课后习题详细答案

软件工程导论课后习题详细答案

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。(3)一般软件很难维护。(4)软件生产效率很低。(5)软件开发成本越来越大。(6)软件成本与开发进度难以估计。(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 5-1。(1)在1985年对计算机存储容量的需求,估计是 如果字长为16位,则这个存储器的价格是 ● ●(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 ●在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指令。 ●为了开发出4474263条指令以装满存储器,需要的工作量是: ●程序员的月平均工资是4000美元,开发出4474263条指令的成本是 ●(3)在1995年对存储容量的需求估计为: ● 7 4080e =4472.0048.01974 1985??=-P )19601995(28.04080-=e M

相关文档
最新文档