软件工程导论第六版部分课后习题与答案Word格式.docx

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

软件工程导论第六版部分课后习题与答案Word格式.docx

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

软件工程导论第六版部分课后习题与答案Word格式.docx

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-10 

Rational统一过程主要适用于何种工程?

大型的需求不断变化的复杂软件系统工程 

1-11:

说明敏捷过程的适用范围 

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

1-12 

说明微软过程的适用范围 

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

第二章

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

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

可行性分析是要进展一次大大压缩简化系统分析和设计过程,防止时间、资源、人力和金钱的浪费。

技术上的可行性——使用现有的技术能实现这个系统吗?

经济上的可行性——这个系统的经济效益能超过它的开发本钱吗?

〔投资与效益〕操作可行性——系统的操作方式在这个用户组织内行得通吗?

社会、政策允许的可行性

2-2 

为方便储户,某银行拟开发计算机储蓄系统。

储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人XX、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;

如果是取款,系统计算利息并印出利息清单给储户。

请画出此系统的数据流图。

2-3为方便旅客,某航空公司拟开发一个机票预定系统。

旅行社把预订机票的旅客信息〔XX、性别、工作单位、XX、旅行时间、旅行目的地等〕输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印出机票给旅客。

请画出系统的数据流图。

2-4 

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危险病人的病情变化,还可能会延误抢救时机。

某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性。

医院对患者监护系统的根本要求是随时承受每个病人的生理信号〔脉搏、体温、血压、心电图等〕,定时记录病人情况以及形成患者日志,当某个病人的生理信号超出医生规定的平安范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

请画出系统的数据流图

2-5某高校可用的由以下几类:

校内由4位数字组成,第一位数字不是零;

校外又分为本市和外地两类,拨校外先拨0,假设是本地再接着拨8位数字〔固话第一位不是0〕或11位数字〔移动第一位为1〕;

假设是外地,那么拨3位区码再拨8位〔固话第一位不是0〕,或拨0再拨11位数字〔移动第一位为1〕。

请用数据定义的方法,定义上述。

=[校内|校外] 

校内=非0数字+3{数字}3 

校外=0+[本地|外地] 

本地=[固话|手机] 

固话=非0数字+7{数字}7 

手机=1+10{数字}10 

外地= 

[外地固话|外地手机] 

外地固话=3{数字}3+固话外地手机=0+手机非0数字=[1|2|3|4|5|6|7|8|9]

第三章

1、为什么要进展需求分析?

通常对软件系统有哪些需求?

答:

为了开发出真正满足用户需求的软件产品,准确定义未来系

统的目标,确定为了满足用户的需要系统必须做什么,就必须要进展准确的需求分析。

通常对软件系统的需求有:

功能需求;

性能需求;

可靠性和可用性需求;

出错处理需求;

接口需求;

约束;

逆向需求;

文档需求;

数据需求等等。

2、银行计算机储蓄系统的工作过程大致如下:

储户填写的存款单或取款单由业务员键入系统,如果是存款那么系统记录存款人XX、住址、XX等存款信息,并打印出存款存单给储户;

如果是取款且存款时留有密码,那么系统首先核对储户密码,假设密码正确或存款时未留密码,那么系统计算利息并打印出利息清单给储户。

用数据流图描述本系统的功能,并用ER图描绘系统中的数据对象。

6、复印机的工作过程大致如下:

未接到复印命令时处于闲置状态,一旦接到复印命令那么进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;

如果执行复印命令时发现没纸,那么进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;

如果复印时发生卡纸故障,那么进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。

请用状态转换图描绘复印机的行为。

从问题陈述可知,复印机的状态主要有“闲置〞、“复印〞、“缺纸〞和“卡纸〞。

引起状态转换的事件主要是“复印命令〞、“完成复印命令〞、“发现缺纸〞、“装满纸〞、“发生卡纸故障〞和“排除了卡纸故障〞。

第四章

不考,略。

第五章

5-4 

美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。

按照协议,所有年工资超过$26 

000(含$26 

000)的教师工资将保持不变,年工资少于$26 

000的教师将增加工资,所增加的工资数按下述方法计算:

给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不能多于$26 

000。

教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇用日期等信息。

需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。

要求:

(1) 

画出此系统的数据流图;

(2) 

写出需求说明;

(3) 

设计上述的工资调整程序(要求用HIPO图描绘设计结果),设计时请分别采用下述两种算法,并比拟这两种算法的优缺点:

(a) 

搜索工资档案数据,找出年工资少于$26 

000的人,计算新工资,校核是否超过$26 

000,储存新工资,印出新旧工资对照表;

(b) 

把工资档案数据按工资从最低到最高的次序排序,当工资数额超过$26 

000时即停顿排序,计算新工资,校核是否超过限额,储存新工资,印出结果。

答:

第六章

6-3:

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

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

〔1〕为什么说它是非构造化的?

〔2〕设计一个等价的构造化程序。

〔3〕在〔2〕题的设计中你使用附加的标志变量flag吗?

假设没用,请再设计一个使用flag的程序;

假设用了,再设计一个不用flag的程序。

〔1〕通常所说的构造化程序,是按照狭义的构造程序的定义衡量,符合定义规定的程序。

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

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

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

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

LOOP:

Set 

to 

(START+FINISH)/2 

If 

TABLE(I)=ITEM 

goto 

FOUND 

TABLE(I)<

ITEM 

START 

(I+1) 

TABLE(I)>

FINISH 

(I-1) 

(FINISH-START 

)>

LOOP 

TABLE(START)=ITEM 

TABLE(FINISH)=ITEM 

FLAG 

Goto 

DONE 

FOUND:

DONE:

Exit 

画出程序流程图。

程序是构造化吗?

说明理由。

假设程序是非构造化的,设计一个等价的构造化程序并且画出流程图。

(4) 

此程序的功能是什么?

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

〔1〕该程序流程图如下:

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

〔3〕等价的构造化程序的流程图如下:

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

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

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

如果交易总金额少于1000元,那么根本手续费为交易金额的8.4%;

如果交易总金额在1000元到10000元之间,那么根本手续费为交易金额的5%,再加34元;

如果交易总金额超过10000元,那么根本手续费为交易金额的4%加上134元。

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

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

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

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

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

〔1〕判定表如图6-6所示:

(2)

〔2〕判定树如图6-7所示:

6-8

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

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

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

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

完毕

第七章

7-2:

解:

⑴程序流程图〔如图2.1所示〕

⑵此程序是非构造化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一个条件语句内部。

⑶修改后的伪码如下:

⑷程序中的错误:

①语句“IF 

WORD=KEYWORD〞里的变量“WORD〞没有预先赋值。

②程序中没有预先输入T的值③“N=0〞应该是“MATCH=0〞 

4. 

答复以下问题:

〔1〕什么是模块测试和集成测试?

它们各有什么特点?

模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制构造中的特定路径并发现最大数量的错误。

其特点是:

主要应用白盒测试的技术,对多个模块的测试可以并发的进展。

集成测试是把模块装配在一起形成完整的软件包,在装配的同时进展测试。

特点是:

可能发生接口问题。

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

为什么?

月25至100个错误,美国的一些统计数字告诉我们通常这个比值在0.005~0.02之间,也就是说,测试之前每1000条指令中大约有5~20个错误。

假设测试之前每1000条指令中有10个错误,那么估计对它进展测试期间将发现的错误数为:

5000*10/1000=50。

〔3〕设计下面伪码程序的语句覆盖和条件覆盖测试用例:

INPUT(A,B,C) 

IF 

A>

THEN 

X=10 

ELSE 

X=1 

END 

B>

10 

Y=20 

Y=2 

C>

15 

Z=30 

Z=3 

PRINT(X,Y,Z) 

STOP

此程序的语句覆盖用例:

①A=5,B=10,C=15;

②A=6,B=11,C=16 

条件覆盖用例为:

②A=6,B=11,C=16。

7-4:

答复以下问题。

什么是模块测试和集成测试?

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

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

解答:

(1)模块测试:

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

集成测试:

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

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

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

0.005<

=ET/IT<

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

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

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

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

7-8:

对一个包含10000条机器指令的程序进展一个月集成测试后,总共改正了15个错误,此时MTTF=10h;

经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。

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

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

为做到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/( 

(ET-EC(τ) 

) 

由于:

10=10000/( 

(ET-15) 

),15 

10000/( 

(ET-25) 

得到:

ET=45,K=33.33 

当集成测试完毕时,MTTF=100h,有:

100 

33.33 

( 

45-EC(19) 

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

7-9:

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

〔a〕7月1日:

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

〔b〕8月2日:

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

〔c〕9月1日:

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

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

〔1〕估计程序中的错误总数。

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

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

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

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

1/K 

(Et/100000-300/100000)=2 

得:

K=1000,Et=350 

即程序中的错误总数达350。

〔2〕当MTTF=10h时,有

(350/100000- 

Ec/100000)=10 

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

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

7-10:

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

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

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

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

问:

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

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

还需用多长测试时间?

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

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

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

(2)由于经历:

MTTF=24000/( 

10=24000/( 

(80-20) 

K=40 

为使MTTF到达60h,有:

60 

24000/( 

40 

80-EC(τ) 

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

补充:

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

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

第八章

8-1:

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

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

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

8-2:

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

(a)程序的规格说明;

(b)程序的详细设计结果(自然语言描述加上某种设计工具表示);

(c)源程序清单(其中有适当数量的注解)。

应选取哪两份文档?

为什么这样选取?

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

〔1〕选AC 

〔2〕原因:

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

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

其中主要的有:

任务概述,数据描述,功能需求,性能需求,运行需求,其他需求;

这些都是修改软件必须参考的内容,应选择A 

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

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

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

当前位置:首页 > PPT模板 > 商务科技

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

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