软件工程导论第六版张海藩课后习题部分答案.docx
《软件工程导论第六版张海藩课后习题部分答案.docx》由会员分享,可在线阅读,更多相关《软件工程导论第六版张海藩课后习题部分答案.docx(32页珍藏版)》请在冰豆网上搜索。
软件工程导论第六版张海藩课后习题部分答案
第一章
1-1什么是软件危机
是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3什么是软件工程
是指导计算机软件开发和维护的一门工程学科。
1-4简述结构化范型和而向对象范型的要点,井分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2
种):
1.传统方法学:
也称为生命周期方法学或结构化范型。
优点:
把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:
当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发岀的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:
优点:
降低了软件产品的复杂性:
提高了软件的可理解性:
简化了软件的开发和维护工作:
促进了软件重用》
1-6什么是软件过程它与软件工程方法学有何关系
Z软件过程:
是为了获得高质量软件所需要完成的一系列任务的框架,它规泄了完成各项任务的工作步骤Z软件工程方法学:
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型
1-7什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明毎种模型的适用范圉。
软件生命周期由软件能义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若T•个阶段。
生命周期模型规左了把生命周期划分成哪些阶段及各■个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点:
L可强迫开发人员采用规范的方法:
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-2为方便储户,某银行拟开发计算机储蓄系统。
储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,井印出存款单给储户;如果是取款,系统计算利息井印出利息淸单给储户。
请画出此系统的数据流图。
2-3为方便旅客,某航空公司拟开发一个机票预迫系统。
旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印出机票给旅客。
请画出系统的数据流图。
2-4目前住院病人主要由护上护理,这样做不仅需要大量护七,而且由于不能随时观察危险病人的病情变化,还可能会延误抢救时机。
某医院打算开发一个以计算机为中心的恿者监护系统,试写出问题立义,并且分析开发这个系统的可行性。
医院对患考监护系统的基本要求是随时接受每个病人的生理信号(脉搏、体温、血压、心电图等),宦时记录病人情况以及形成患者日志,当某个病人的生理信号超出医生规宦的安全范用时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指宦病人的病情报告。
请画出系统的数据流图
■生理—警告命畠關信号1人倍息・HB/■Hl
2-5北京某高校可用的电话号码由以下几类:
校内电话号码由4位数字组成,第一位数字不是零:
校外电话又分为本市电话和外地电话两类,拨校外电话先拨0.若是本地电话再接着拨8位数字(固话第一位不是0)或11位数字(移动电话第一位为1);若是外地电话,则拨3位区码再拨8位电话号码(固话第一位不是0〉,或拨0再拨11位数字(移动电话第一位为1)。
请用数据左义的方法,定义上述电话号码。
电话号码二[校内号码I校外号码]校内号码二非0数字+3{数字}3校外号码二0+[本地号码外地号码]本地号码二[固话号码I手机号码]固话号码二非0数字+7{数字}7手机号码=1+10{数字}10
外地号码=[外地固话号码丨外地手机号码]外地固话号码二3{数字}3+固话号码外地手机号码二0+手机号码非0数字=[123141567|8:
9]
第二早
1、为什么要进行需求分折通常对软件系统有哪些需求
答:
为了开发出貞•正满足用戶需求的软件产品,准确楚义未来系
统的目标,确定为了满足用户的需要系统必须做什么,就必须要进行准确的需求分析。
通常对软件系统的需求有:
功能需求:
性能需求:
可靠性和可用性需求:
出错处理需求:
接口需求:
约朿:
逆向需求:
文档需求:
数据需求等等。
2、银行计算机储蓄系统的工作过程大致如下:
储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓冬、住址、身份证号码等存款信息,并打印出存款存单给储户:
如果是取款且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。
用数据流图描述本系统的功能,并用ER
图描绘系统中的数据对象。
6、复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为。
从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。
引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。
排除r卡纸故障
第四章
不考,略。
第五章
5-4美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。
按照协议,所有年工资超过$26000(含$26000)的教师工资将保持不变,年工资少于$26000的教师将增加工资,所增加的工资数按下述方法计算:
给每个由此教师所赡养的人(包括教师本人)毎年补助$100.此外,教师有一年工龄毎年再多补助$50,但是,增加后的年工资总额不能多于$26000。
教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、屣用日期等信息。
需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。
要求:
(1)画出此系统的数据流图:
(1)画出此系统的数据流图:
(2)写岀需求说明;(3)设计上述的工资调整程序(要求用HIP0图描绘设计结果),设il•时请分别采用下述两种算法,并比较这两种算法的优缺点:
(a)搜索工资档案数据,找出年工资少于$26000的人,计算新工资,校核是否超过$26000,储存新工资,印出新旧工资对照表:
(b)把工资档案数据按工资从最低到最高的次序排序,当工资数额超过$26000时即停止排序,计算新工资,
果O
1.
任务概述:
对干年工资未超过$2600的教师涨工资:
每赡养1人补助$106每有一年工龄补助$50,涨工资上限为$2600;
2.数据押述:
数据库狷述:
工资表、VF
亠功能需来:
对于年工资未起过$26D0的数师涨工贸:
每赡养1入补助$100,每有一年工龄补助$5Q裸工资上限为$2©X),
(4)所画的流程图适合
6-8画出下列伪码程序的流團,计算它的环形复杂度。
你觉得这个程序的逻辑育什么问题吗?
CEXAMPLE
LOOP:
DOWHILE
A=B+1IFA>10
THEN
ELSE
IF
Y<5
THEN
ELSE
(a)种算法.
z>o
X=A
Y=Z
ENDIF
PRINTX,Y
IFY=2
THENGOTOLOOPELSEC=3
ENDIF
IF
ENDG=H+-RENDDO
IFF〉0
THENPRIHTC
ELSEPRIHTKEMDIF
STOP
环形复杂度,V(G)二EHN+2二17-13+2二6
存在的逻辑间题:
1)当Z>0时易形成死循环,2)条件
Y<5
包含条件Y=2
弟八早
6-1.假设只有SEQUENCE和DO_\\H1LE两科控制结构,TF_THE\_ELSE操作?
答,转化如下,
怎样利用它们芫成
K=1
DOWHILE(条件.AND.K.EQ.1)程序块1
K=K-1
ENDDO
DOWHILE(CNOT.条件)AND.KEQ.l)程序块2
K=K-1
ENDDO
IF(条件)THEN
程序块
GOTOlabel
ELSE
程序块
ENDIF
6-3:
画出下列伪码程序的程序流程图和盒图
6-2.假设允浒使用SEQUENCE和IB_TH£5_ELSE两种笠制结构,怎样刑用它们芫成DOWHILE操作?
答:
转化如下;
label'
6-4-
化的
⑶
下图给出的程序流程图代表一个非结构化的程序,请问:
(1)为什么说它是非结构
(2)设计一个等价的结构化程序。
在
(2)题的设计中你使用附加的标志变量flag吗若没用,请再设让一个使用flag的程序:
若用了,再设计一个不用flag的程序。
答:
(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合立义规是的程序。
图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的世义,丙此是非结构化的程序。
(2〉使用附加的标忠变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图6-3描绘了等价的结构化程序的盒图。
flag=TRX;E
PANDflag
g
\\q
fLag=FALSE
3)不使用flag把该程序改造
6-4
的
6-5
序:
UND
LOOP:
If
FINISHto
et
E(START片ITEM
tFLAGto0
(1)
(2)
⑶
研究F而
SetIto(START+FINISH)/2TABLE(IXITEMSetSTARTto(I-l)gotoFOUND
Goto
If
DONE
(Wl)
(FINISH-START)>1
gotoIfTABLE(FINISH)=ITEM
FOUND:
SetFLAGto
伪代
IfTABLE(I)=ITEMgoto
IfTABLE(I)>ITEM
LOOP
gotoFOUND
程
F0
S
IfTABL
Se
1D0XE:
Exit
画出程序流程图。
程序是结构化吗说明理由。
若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。
(4)此程序的答:
(1)该程序流程图如下:
功能是什么它完成预圧功能有什么隐含的前提条件。
此程序有二分查找的功能,它完成预立功能的隐含前提条件是现有序列为从小到大顺序排好的有序序列。
6-7.某交易所规左给经纪人的手续费计算方法如下:
总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。
如果交易总金额少于1000元,则基本手续费为交易金额的%:
如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5虬再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。
当每股售价低于14元时,附加手续费为基本手续费的5%除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。
当毎股售价在14元到25元之间时,附加手续费为基本手续费的2%.除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4$,否则附加手续费为基本手续费的1亂要求:
(1)用判立表表示手续费的计算方法:
(2)用判立树表示手续费的il•算方法。
答:
(1)判定表如图6-6所示:
交易金執§<1000
T
T
T
T
T
T
交易金額
1OOOsSEOOOO
T
T
T
T
T
T
丈韧金:
额AlOOOO
T
T
T
T
T
T
般价dV4
I
T
T
I
1
1
肢价147小・25
T
r
r
丁
1
T
般价425
T
T
T
T
T
T
胶数肥】00借数
T
F
T
r
r
r
T
r
1
|・
T
1'
1
1
1
T
1'
S*K.4%»(1*5%)
X
S*K4%*<1
S*K.4%*(1+2%)
X
S*«・4%・
X
S*K.4?
h*
X
S席KW?
屮(HI%)
X
<"5%)
X
<|Y9%)
X
X
tS*5%^34J*
X
(S»5%*34)«(1(4%)
Tt
、■r・
fS*5^*54>*
<1*1%〉
X
*
X
*
<1-9%)
X
(S*4%+I34)*
<1,2%)
X
(S*4%*134)*
<1-6%)
X
X
<1-1%)
X
(2)判;树如图6-7所示:
6-8
交易总血昵1000到lUVOU?
交易总金
魏S卩J
IUU0兀
般价小r
1470
IW倍钦
100佔效
S*8-4*hi*
肢价14刘
25元
收数定
lOOW«
S*S.4%*
股价人干
25兀
股价小「・
1476
般价14到
25尤
IWi^数
狀价大r
2,尤
股效不足lOOfl汶收数兄1(X)1';tt
股数不足100俗战吹数光IOO借故
股奴不足
lOOfsS%
股放牛足
IW佔效吸敌足1001':
&
iwesjt
陀价小]••
14兀
1U0侶数股救不辰
100倍数
频S人丁
股数足
股愉14到
10C倍数
IftftOOc
2仏
股数:
卩辽
ittiSfW
股价人f
1oof用数
2371
•股数卜込100俗数
图6・7判定树
S*8,4%*
S*8-4%*
S*8,4%*
a牛6%)
05%+34)
⑶S%于34)
(S・5%+34>
(S・5%十34)
*
*(1仔9%〉
*(l+2%>
*(H-6%>
tS*5%+34>*(HI%)
(SM%fI34>*(I-5%)
(RM%1134>■(19%》
(S*4%t|34>*<|-2%>
(申4%・I34)*(1-6%)
tS»4%-134)*i1*4%)
合:
(1丿妙!
仍旳旳彳兀程冏刘雀Ib・5胡不:
Q
Q
/
【开始
结束
图6-8程序流程图
环形复杂度V(G)=流图中的区域数=流图中判定结点数目+1=5+1=6
(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。
因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环0
结束
文件不是文件尾?
读一个字符串
换行,输出字符串;换行
盒图
统计2格数并输岀取下一个字符串换行,输岀S格总数
第七章
7-2:
解:
(】)程序流程图(如图所示)
并且是从一个循环体内转到循环体外的一
⑵此程序是非结构化的,它有一个GOTO语句,
1=0
MATCH=0
1=1+1
IFWORXKEYWORD
THENMATCH=MATCH+1
IHfcNMAILH=IVIAILH+1
ENDIF
ENDIF
ENDDO
IFMATCH=0
ELSEPRINT“共搜素到”;
ENDIF
改后的程字框图(盒图)
输入WET
输入关键字到变量KEYWORD
打开文件
IfflMATCHBE初值为0
DOWHILE<=T
⑷程序中的错误:
①语句“IFWORD=KEYWORD”里的变S“WORD”没有预先賦值。
②程序中没有预先输入T
的值③“MO”应该是“MATCH二0”4.回答下列问题:
(1)什么是模块测试和集成测试它们^$有什么特点
答:
模块测试是对毎个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检査模块控制结构中的特左路径并发现最大数量的错误。
其特点是:
主要应用白盒测试的技术,对多个模块的测试可以并发的进行。
集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。
特点是:
可能发生接口问题。
(2)假设有一个由1000行FORTRAN语句构成的程序(经编以后大约有5000条机器指令)估计在对它进行测试期间将发现多少个错误为什么答:
月25至100个错误,美国的一些统汁数字告诉我们通常这个比值在~之间,也就是说,测试之前毎1000条指令中大约有5~20个错误。
假设测试之前每1000条指令中有10个错误,则估计对它进行测试期间将发现的错误数为:
5000*10.1000二50。
(3)设讣下而伪码程序的语句覆盖和条件覆盖测试用例:
STARTINPUT(A,B,C)IFA>5
THENY=20ELSEY=2ENDIF
PRINT(X,Y,Z)STOP
答:
此程序的语句覆盖用例:
①A二5,
①A=5,B=10,C=15
I
打印X,Y,Z
i
7-4:
回答下列问题。
(1)什么是模块测试和集成测试它们^$有什么特点
(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估il•在对它进行测试期间将发现多少个错误为什么
(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例。
解答:
(1)模块测试:
保证每个模块能完成一