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

上传人:b****7 文档编号:16200783 上传时间:2023-07-11 格式:DOCX 页数:26 大小:470.83KB
下载 相关 举报
软件工程导论张海蕃课后习题答案.docx_第1页
第1页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第2页
第2页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第3页
第3页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第4页
第4页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第5页
第5页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第6页
第6页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第7页
第7页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第8页
第8页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第9页
第9页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第10页
第10页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第11页
第11页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第12页
第12页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第13页
第13页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第14页
第14页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第15页
第15页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第16页
第16页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第17页
第17页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第18页
第18页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第19页
第19页 / 共26页
软件工程导论张海蕃课后习题答案.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《软件工程导论张海蕃课后习题答案.docx》由会员分享,可在线阅读,更多相关《软件工程导论张海蕃课后习题答案.docx(26页珍藏版)》请在冰点文库上搜索。

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

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

第一章

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-9:

试讨论Rational统一过程的优缺点

优点:

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

它简历了简洁和清晰的过程结构,为开发过程提供较大的通用性。

缺点:

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

1-10Rational统一过程主要适用于何种项目?

大型的需求不断变化的复杂软件系统项目

1-11:

说明敏捷过程的适用范围

适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。

1-12说明微软过程的适用范围

适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式。

第二章

2-1在软件开发的早期阶段为什么要进行可行性研究?

应该从哪些方面研究目标系统的可行性?

可行性研究的目的:

就是用最小的代价在尽可能短的时间内确定问题是否能够解决。

一般从技术可行性,经济可行性,操作可行性,社会、政策允许可行性方面研究。

2-5北京某高校可用的电话号码由以下几类:

校内电话号码由4位数字组成,第一位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话先拨0,若是本地电话再接着拨8位数字(固话第一位不是0)或11位数字(移动电话第一位为1);若是外地电话,则拨3位区码再拨8位电话号码(固话第一位不是0),或拨0再拨11位数字(移动电话第一位为1)。

请用数据定义的方法,定义上述电话号码。

电话号码=[校内电话号码|校外电话号码] 

校内电话号码=非零数字+ 3 位数字   .....................

输入尾数

等待输入指数

输入指数

非浮点二进制数

输出浮点二进制数

等待输入

[+|-|1|0]

[0|1]

E

[+|-|1|0]

[0|1]

输入结束

S

F

F

第六章

6-1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?

 

答:

转化如下:

K=1

DOWHILE(条件.AND.程序块1

K=K+1

ENDDO

DOWHILE((.NOT.条件).AND.程序块2

K=K+1

ENDDO

6-2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?

答:

转化如下;

label:

IF(条件)THEN

程序块

GOTOlabel

ELSE

程序块

ENDIF

6-3:

画出下列伪码程序的程序流程图和盒图

6-4.下图给出的程序流程图代表一个非结构化的程序,请问:

(1)为什么说它是非结构化的?

(2)设计一个等价的结构化程序。

(3)在

(2)题的设计中你使用附加的标志变量flag吗?

若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

答:

(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。

图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图6-3描绘了等价的结构化程序的盒图。

图6-3与该图等价的结构化程序(用flag)

(3)不使用flag把该程序改造为等价的结构化程序的方法如图6-4所示。

图6-4与该图等价的结构化程序(不用flag)

6-5.研究下面的伪代码程序:

LOOP:

SetIto(START+FINISH)/2

IfTABLE(I)=ITEMgotoFOUND

IfTABLE(I)

IfTABLE(I)>ITEMSetFINISHto(I-1)

If(FINISH-START)>1gotoLOOP

IfTABLE(START)=ITEMgotoFOUND

IfTABLE(FINISH)=ITEMgotoFOUND

SetFLAGto0

GotoDONE

FOUND:

SetFLAGto1

DONE:

Exit

(1)画出程序流程图。

(2)程序是结构化吗?

说明理由。

(3)若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。

(4)此程序的功能是什么?

它完成预定功能有什么隐含的前提条件。

答:

(1)该程序流程图如下:

 

 

(2)该程序不是结构化的,结构化的程序只有一个入口和一个出口,而该程序的流程途中有两个出口。

(3)等价的结构化程序的流程图如下:

(4)此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有序列为从小到大顺序排好的有序序列。

6-7.某交易所规定给经纪人的手续费计算方法如下:

总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。

如果交易总金额少于1000元,则基本手续费为交易金额的%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。

当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。

当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。

当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。

要求:

(1)用判定表表示手续费的计算方法;

(2)用判定树表示手续费的计算方法。

答:

(1)判定表如图6-6所示:

图6-6判定表

(2)判定树如图6-7所示:

图6-7判定树

6-8.画出下列伪码程序的流图,计算它的环形复杂度。

你觉得这个程序的逻辑有什么问题吗?

CEXAMPLE

LOOP:

DOWHILEX>0

A=B+1

IFA>10

THENX=A

ELSEY=Z

ENDIF

IFY<5

THENPRINTX,Y

ELSEIFY=2

THENGOTOLOOP

ELSEC=3

ENDIF

ENDIF

G=H+R

ENDDO

IFF>0

THENPRINTG

ELSEPRINTK

ENDIF

STOP

答:

(1)该伪码的流程图如图6-8所示:

图6-8程序流程图

根据该程序流程图,可得该程序流图如图6-9所示:

图6-9程序流图

环形复杂度V(G)=流图中的区域数

=流图中判定结点数目+1=5+1=6

(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。

因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。

6-9:

把统计空格程序的jackson图改画为等价的程序流程图和盒图

文件不是文件尾?

读一个字符串

换行,输出字符串,换行

统计空格数并输出

取下一个字符串

换行,输出空格总数

盒图

第七章

7-4:

回答下列问题。

(1)什么是模块测试和集成测试?

它们各有什么特点?

(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?

为什么?

(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例。

解答:

(1)模块测试:

保证每个模块能完成一个清晰定义的子功能而且和统计其他模块的功能之间没有相互依赖的关系。

集成测试:

又称为组装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现

(2)经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。

美国的一些统计数字表明,通常:

<=ET/IT<=,即在测试之前,每1000条指令中大约有5~20个错误。

所以,在对1000行FORTRAN语句构成的程序进行测试期间将发现的错误的个数大约有25~100个。

(3)该伪码程序对应的程序流程图如下:

从上到下每个判定依次命名为a、b、c:

7-8:

对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。

要求:

(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。

在画这条曲线时做了什么假设?

(2)为做到MTTF=100h,必须进行多长时间的集成测试?

(3)当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?

解答:

(1)因为平均无故障时间MTTF与测试时间τ之间存在线性关系,即MTTF=a+bτ,

由于:

10=a+b,15=a+2b,

得到:

a=5,b=5

故:

平均无故障时间MTTF与测试时间τ之间存在线性关系为:

MTTF=5+5τ

(2)为做到MTTF=100h,有方程:

100=5+5τ,故τ=19

即必须进行19个月的集成测试。

(3)由于经验:

平均无故障时间与单位长度程序中剩余的错误数成反比,故有:

MTTF=10000/(K*(ET-EC(τ)))

由于:

10=10000/(K*(ET-15)),15=10000/(K*(ET-25))

得到:

ET=45,K=

当集成测试结束时,MTTF=100h,有:

100=10000/(*(45-EC(19)))

故:

EC(19)=42,即当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。

7-9:

如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:

 

(a)7月1日:

集成测试开始,没有发现错误。

 

(b)8月2日:

总共改正100个错误,此时MTTF= 

(c)9月1日:

总共改正300个错误,此时MTTF=2h 

根据上列数据完成下列各题。

 

(1)估计程序中的错误总数。

 

(2)为使MTTF达到10h,必须测试和调试这个程序多长时间?

 (3)画出MTTF和测试时间τ之间的函数关系曲线。

 

解答:

(1)据估算平均无故障时间MTTF的公式有:

 

1/K(Et/100000-100/100000)= 

1/K (Et/100000-300/100000)=2 

得:

K=1000,Et=350  即程序中的错误总数达350。

(2)当MTTF=10h时,有

1/K(350/100000-Ec/100000)=10

得:

Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。

(3)MTTF和测试时间τ之间的函数关系曲线如下:

7-10:

在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。

经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。

与此同时,乙发现24个错误,其中6个甲也发现了。

以后由甲一个人继续测试这个程序。

问:

(1)刚开始测试时程序中总共有多少个潜藏的错误?

(2)为使MTTF达到60h,必须再改正多少个错误?

还需用多长测试时间?

(3)画出MTTF与集成测试时间τ之间的函数关系曲线。

解答:

(1)本题中采用的是分别测试法,测试前程序中的错误总数:

B0=B1*B2/bc=20*24/6=80

(2)由于经验:

平均无故障时间与单位长度程序中剩余的错误数成反比,故有:

MTTF=24000/(K*(ET-EC(τ)))

由于:

10=24000/(K*(80-20))

得到:

K=40

为使MTTF达到60h,有:

60=24000/(40*(80-EC(τ)))

故:

EC(τ)=70,即总共需要改正70个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20个错误,以后由甲一个人继续测试这个程序,因此,还需要更正70-20=50个错误。

补充:

【复旦大学2001年博士研究生入学考试试题】某模块的程序流程图如下。

试分别根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等覆盖标准设计最少的测试用例。

$:

从上到下给每个判定依次编号为a、b。

路径覆盖与判定覆盖或判定/条件覆盖一致。

第八章

8-1:

软件的可维护性与哪些因素有关?

在软件开发过程中应该采取哪些措施来提高软件产品的可维护性?

(1)1可理解性2可测试性3可修改性4可移植性5可重用性

8-2:

假设自己的任务是对一个已有的软件做重大修改,而且只允许从下述文档中选取两份:

 (a)程序的规格说明; (b)程序的详细设计结果(自然语言描述加上某种设计工具表示); (c)源程序清单(其中有适当数量的注解)。

 

应选取哪两份文档?

为什么这样选取?

打算怎样完成交给自己的任务?

解答:

(1)选AC

(2)原因:

首先需要对软件做修改,就必须得有源代码,C是必选。

其次,软件规格说明书作为产品需求的最终成果,具有综合性,包括了所有的需求;其中主要的有:

任务概述,数据描述,功能需求,性能需求,运行需求,其他需求;这些都是修改软件必须参考的内容,故选择A

综上,根据规格说明再结合源程序以及源程序里的注释,足够对软件进行修改。

(3)结合需求,规格说明书以及源代码,按照软件工程的方法一步步去理解,修改,测试,调试代码。

 

 

第九章

9-5:

什么是模型?

开发软件为何要建模?

所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。

建模的目的主要是为了减少复杂性。

9-6:

什么是对象模型?

建立对象模型时主要使用哪些图形符号?

这些符号的含义是什么?

(1)对象模型表示静态的、结构化的系统的“数据”性质。

它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。

      

(2)通常使用UML提供的类图来建立对象模型。

(3)在UML中术语“类“的实际含义是,一个类及属于该类的对象

9-7:

什么是动态模型?

建立动态模型时主要使用哪些图形符号?

这些符号的含义是什么?

(1)动态模型表示瞬时的、行为化的系统的“控制”性质, 它规定了对象模型中 的对象的合法变化序列。

  

(2)通常,用 UML 提供的状态图来描绘对象的状态、触发状态转换的事件以及对 象的行为(对事件的响应)。

 每个类的动态行为用一张状态图来描绘, 各个类的状态图通过共享事件合并 起来,从而构成系统的动态模型。

也就是说,动态模型是基于事件共享而互相关 联的一组状态图的集合。

9-8:

什么是功能模型?

简历功能模型时主要使用哪些图形符号?

(1)功能模型表示变化的系统的功能性质,它指明了系统应该做什么,因此更直接地反映了用户对目标系统的需求。

 

(2)功能模型由一组数据流图组成。

在面向对象方法学中,数据流图远不如在结杂对象提供的服务, 简单的处理(或用例)对应于更 基本的对象提供的服务。

有时一个处理(或用例)对应多个服务,也有一个服务对 应多个处理(或用例)的时候。

 

(1)数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的 对象。

 

(2)数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个 对象。

 (3)用例图中的行为者,可能是对象模型中的对象。

 (4)功能模型中的处理(或用例)可能产生动态模型中的事件。

 (5)对象模型描述了数据流图中的数据流、 数据存储以及数据源点/终点的结构。

第十三章

13-4:

假设自己被指定为项目负责人,任务是开发一个应用系统,该系统类似于自己的小组以前做过的那些系统,但是规模更大且更复杂一些。

客户已经写出了完整的需求文档。

应选用哪些项目组结构?

为什么?

打算采用哪种(些)软件过程模型?

为什么?

解答:

根据上述,应该主程序员组的项目组结构。

因为项目小组已经开发过类似的系统,开发人员已经具备了一定的经验。

这个时候开发过程遇到的难题不会很多,所以应该减少通信开销,充分发挥技术骨干的作用,统一意志统一行动,提高生产率,加快开发进度。

  应该采用“已定义级”的软件过程模型。

因为客户已经写出了完整的需求文档,而且项目小组已经有过类似的开发经验。

软件过程已经文档化和标准化。

这种过程模型是基于在软件机构中对已定义的过程模型的活动、人员和职责都有共同的理解。

13-5:

13-6:

13-7:

什么是软件质量?

叙述它与软件可靠性的关系。

概括的说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。

更具体的说,软件质量是软件与明确的叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。

13-10:

什么是基线,为什么要建立基线?

(1)基线是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。

(2)1、重现性

重现性是指及时返回并重新生成软件系统给定发布版的能力,或者是在项目中的早些时候重新生成开发环境的能力。

2、可追踪性

可追踪性建立项目工件之间的前后继承关系。

其目的在于确保设计满足要求、代码实施设计以及用正确代码编译可执行文件。

3、报告

报告来源于一个基线内容同另一个基线内容的比较。

基线比较有助于调试并生成发布说明。

建立基线后,需要标注所有组成构件和基线,以便能够对其进行识别和重新建立。

13-11:

配置审计和技术复审有何不同?

可否把它们的功能放在一次复审中完成?

正式的技术复审关注被修改后的配置对象的技术正确性。

复审者审查该对象以确定它与其他软件配置项的一致性,并检查是否有遗漏或副作用。

软件配置审计通过评估配置对象的那些通常不在复审过程中考虑的特征,而成为对正式技术复审的补充。

13-12:

CMM的基本思想是什么?

为什么要把能力成熟度划分成5个等级?

 

答:

(1)CMM指能力成熟度模型,其基本思想是:

由于问题是由人们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量。

 

(2)由于对软件过程的改进,是在完成了一个又一个小的改进步骤基础上不断进行的渐进过程,而不是一蹴而就的彻底革命。

所以CMM把软件过程从无序到有序的进化过程分成5个阶段。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2