《软件工程复习》PPT课件.ppt
1.软件生命周期可划分为软件生命周期可划分为 、和和 3个个时期,通常这时期,通常这3个时期再细分为个时期再细分为8个阶段,它们是:个阶段,它们是:其中其中,阶段的工作量是阶段的工作量是8个阶段中最大的。个阶段中最大的。2.可行性研究的任务是从可行性研究的任务是从 、和和 3个个方面研究方面研究 。3.至少应该从至少应该从 、和和 4个方面个方面验证软件需求的正确性,其中验证软件需求的正确性,其中 和和 这两个这两个方面的正确性必须有用户的积极参与才能验证,而方面的正确性必须有用户的积极参与才能验证,而且为了验证这两个方面的正确性往往需要开发且为了验证这两个方面的正确性往往需要开发 。4.软件总体设计时应该遵软件总体设计时应该遵循循 、6条基条基本原理。详细设计通常以本原理。详细设计通常以 技术为逻辑基础,技术为逻辑基础,因为从软件工程观点看,因为从软件工程观点看,是软件最重要的质是软件最重要的质量标准之一。量标准之一。5.软件测试的目的是软件测试的目的是 ,通常把测试方法分为,通常把测试方法分为 和和 两大类。因为不可能做到两大类。因为不可能做到 ,所以精心设计所以精心设计 是保证达到测试目的所必需的。是保证达到测试目的所必需的。6软件可维护性度量的软件可维护性度量的5个质量特性是可理解个质量特性是可理解性、可测试性、可修改性、性、可测试性、可修改性、可重用性。可重用性。7为了便于对照检查,测试用例应由输入数据为了便于对照检查,测试用例应由输入数据和预期的和预期的 两部分组成。两部分组成。8.的目的就是用最小的代价在尽可能短的的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得时间内确定该软件项目是否能够开发,是否值得去开发。去开发。9.Jackson方法是一种方法是一种 的开发方法的开发方法。例例1:目前住院病人主要由护士护理,这样做不仅需要目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机还可能会延误抢救时机。某医院打算开发一个以计算机为中心的为中心的患者监护系统患者监护系统,请分层次地画出描述本系统功,请分层次地画出描述本系统功能的数据流图。能的数据流图。医院对患者监护系统的基本要求是随时接收每个病医院对患者监护系统的基本要求是随时接收每个病人的生理信号人的生理信号(脉搏、体温、血压、心电图等脉搏、体温、血压、心电图等),定时记,定时记录病人情况以形成患者日志,当某个病人的生理信号超录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的外,护士在需要时还可以要求系统印出某个指定病人的病情报告。病情报告。例例2:北京某高校可用的电话号码有以下几:北京某高校可用的电话号码有以下几类:校内电话号码由类:校内电话号码由4位数字组成,第位数字组成,第1位数字位数字不是不是0;校外电话又分为本市电话和外地电话;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨两类,拨校外电话需先拨0,若是本市电话则,若是本市电话则再接着拨再接着拨8位数字位数字(第第1位不是位不是0),若是外地电话,若是外地电话则拨则拨3位区码再拨位区码再拨8位电话号码位电话号码(第第1位不是位不是0)。请定义上述的电话号码。请定义上述的电话号码。例例3:分析习题分析习题2第第4题所述的患者监护系统。请用实体题所述的患者监护系统。请用实体-联联系图描绘本系统中的数据对象。系图描绘本系统中的数据对象。目前住院病人主要由护士护理,这样做不仅需要大量目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心能会延误抢救时机。某医院打算开发一个以计算机为中心的的患者监护系统患者监护系统,请分层次地画出描述本系统功能的数据,请分层次地画出描述本系统功能的数据流图。流图。医院对患者监护系统的基本要求是随时接收每个病人医院对患者监护系统的基本要求是随时接收每个病人的生理信号的生理信号(脉搏、体温、血压、心电图等脉搏、体温、血压、心电图等),定时记录病,定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。在需要时还可以要求系统印出某个指定病人的病情报告。例例4:复印机的工作过程大致如下:未接到复印复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。排除后回到闲置状态。请用状态转换图描绘复印机的行为。请用状态转换图描绘复印机的行为。例例5:一个浮点二进制数的构成是:一个可选的符号一个浮点二进制数的构成是:一个可选的符号(+或或-),后跟一个或多,后跟一个或多个二进制位,再跟上一个字符个二进制位,再跟上一个字符E,再加上另一个可选符号,再加上另一个可选符号(+或或-)及一个或多及一个或多个二进制位。例如,下列的字符串都是浮点二进制数:个二进制位。例如,下列的字符串都是浮点二进制数:110101E-101,-100111E11101,+1E0更形式化地,浮点二进制数定义如下:更形式化地,浮点二进制数定义如下:floatingpoint binary=signbitstringEsignbitstringsign=+-bitstring=bitbitstringbit=01其中,其中,符号符号=表示定义为;表示定义为;符号符号.表示可选项;表示可选项;符号符号ab表示表示a或或b。假设有这样一个有穷状态机:以一串字符为输入,判断字符串中是否含有合假设有这样一个有穷状态机:以一串字符为输入,判断字符串中是否含有合法的浮点二进制数。试对这个有穷状态机进行规格说明。法的浮点二进制数。试对这个有穷状态机进行规格说明。例例6.6.分析下图,确定模块之间的耦合类型分析下图,确定模块之间的耦合类型 图图1 一个程序的模块互联图一个程序的模块互联图 表表1 模块接口描述模块接口描述123456 P s q u r t 例例7.分析下图的层次图,确定每个模块的内聚类型。分析下图的层次图,确定每个模块的内聚类型。图图2 计算多个地点日平均温度的程序计算多个地点日平均温度的程序计算多个地点计算多个地点的日平均温度的日平均温度初初始始化化变变量量sum并打开文件并打开文件读读取取地地点点、时间和温度时间和温度存储温存储温度记录度记录关关闭闭文文件件并并打打印平均温度印平均温度创建新的创建新的温度记录温度记录计计算算特特定定地地点点的日平均温度的日平均温度例例8.例例10.假设某航空公司规定,乘客可以免费托运重量假设某航空公司规定,乘客可以免费托运重量 不超过不超过30kg的行李。当行李重量超过的行李。当行李重量超过30kg时,时,对头等舱的国内乘客超重部分每公斤收费对头等舱的国内乘客超重部分每公斤收费4元,元,对其他舱的国内乘客超重部分每公斤收费对其他舱的国内乘客超重部分每公斤收费6元,元,对外国乘客超重部分每公斤收费比国内乘客多对外国乘客超重部分每公斤收费比国内乘客多 一倍,对残疾乘客超重部分每公斤收费比正常一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。用判定表可以清楚地表示与上述乘客少一半。用判定表可以清楚地表示与上述 每种条件组合相对应的计算行李费的算法,每种条件组合相对应的计算行李费的算法,例例11.某交易所规定给经纪人的手续费计算方法如下:总手续某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于附加手续费。如果交易总金额少于1000元,则基本手续费元,则基本手续费为交易金额的为交易金额的8.4%;如果交易总金额在;如果交易总金额在1000元到元到10000元之元之间,则基本手续费为交易金额的间,则基本手续费为交易金额的5%,再加,再加34元;元;如果交易总金额超过如果交易总金额超过10000元,则基本手续费为交易金额的元,则基本手续费为交易金额的4%加上加上134元。当每股售价低于元。当每股售价低于14元时,附加手续费为基元时,附加手续费为基本手续费的本手续费的5%,除非买进、卖出的股数不是,除非买进、卖出的股数不是100的倍数,的倍数,在这种情况下附加手续费为基本手续费的在这种情况下附加手续费为基本手续费的9%。当每股售价。当每股售价在在14元到元到25元之间时,附加手续费为基本手续费的元之间时,附加手续费为基本手续费的2%,除,除非交易的股数不是非交易的股数不是100的倍数,在这种情况下附加手续费为的倍数,在这种情况下附加手续费为基本手续费的基本手续费的6%。当每股售价超过。当每股售价超过25元时,如果交易的股元时,如果交易的股数零散数零散(即,不是即,不是100的倍数的倍数),则附加手续费为基本手续费,则附加手续费为基本手续费的的4%,否则附加手续费为基本手续费的否则附加手续费为基本手续费的1%。要求:要求:(1)用判定表表示手续费的计算方法;用判定表表示手续费的计算方法;(2)用判定树表示手续费的计算方法。用判定树表示手续费的计算方法。例例12.用用Jackson图描绘下述的一列火车的构成:图描绘下述的一列火车的构成:一列火车最多有两个火车头,只有一个火一列火车最多有两个火车头,只有一个火车头时则位于列车最前面,若还有第二个火车车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢分为硬座车厢、硬卧车厢和软卧车厢3种。硬种。硬座车厢在所有车厢的前面,软卧车厢在所有车座车厢在所有车厢的前面,软卧车厢在所有车厢的后面。此外在硬卧车厢和软卧车厢之间还厢的后面。此外在硬卧车厢和软卧车厢之间还有一节餐车。有一节餐车。例例13.高考后将考生的基本情况文件(简称考生基本高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。括:准考证号、姓名、通讯地址和各门考分。例例14.画出下列伪码程序的流图,计算它的环形复杂度。画出下列伪码程序的流图,计算它的环形复杂度。1:LOOP:DO WHILE Z02:A=B+1 IF A103:THEN X=A4:ELSE Y=Z5:END IF IF Y09:END IF 11:THEN PRINT G G=H+R 12:ELSE PRINT R END DO 13:END IF STOP 12345768109111213例例15:画出下列伪码程序的程序流程图和盒图:画出下列伪码程序的程序流程图和盒图:START IF p THEN WHILE q DO F END DO ELSE BLOCK G N END BLOCK END IF STOP PQFGN例例16.设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:START INPUT(A,B,C,D)IF(A0)AND(BO)THEN X=A+B ELSE X=A-B END IF IF(CA)OR(D0)3:AND(BO)4:THEN X=A+B 5:ELSE X=A-B 6:END IF 7:IF(CA)8:OR(DB)9:THEN Y=C-D 10:ELSE Y=C+D 11:END IF 12:PRINT(X,Y)STOP 路径1:12346791112路径2:1256791112路径3:12356791112路径4:123467891112路径5:1234678101112 例例18 18 某图书馆有一个使用某图书馆有一个使用CRTCRT终端的信息检索系统,该系统有下列终端的信息检索系统,该系统有下列4 4个基个基本检索命令本检索命令要求:要求:(1)(1)设计测试数据以全面测试系统的正常操作;设计测试数据以全面测试系统的正常操作;(2)(2)设计测试数据以测试系统的非正常操作设计测试数据以测试系统的非正常操作。答:(答:(1)测试系统正常操作的测试数据)测试系统正常操作的测试数据 1)顺序执行下列顺序执行下列3个命令:个命令:Browse(keyword)Select(L)Display(N)其中,其中,keyword是正确的关键字;是正确的关键字;L是执行命令是执行命令browse后后 屏幕上显示的约屏幕上显示的约20个行号中的一个;个行号中的一个;N是执行命令是执行命令S后列后列 出的索引号中的一个。出的索引号中的一个。2)顺序执行下列)顺序执行下列2个命令:个命令:Find(name)Display(N)其中,其中,name是已经的作者姓名;是已经的作者姓名;N是执行命令是执行命令find后列后列 出的索引号中的一个。出的索引号中的一个。针对若干个不同的针对若干个不同的name重复执行上述命令序列。重复执行上述命令序列。(2)测试系统非正常操作的测试数据)测试系统非正常操作的测试数据 1)用过长的关键字作为命令)用过长的关键字作为命令browse的参数,的参数,例如:例如:b(reliability software and hardware combined)预期的输出:系统截短过长的关键字,例如上述命令中预期的输出:系统截短过长的关键字,例如上述命令中 的关键字可能被截短为:的关键字可能被截短为:reliability software 2)用不正确的关键字作为命令)用不正确的关键字作为命令browse的参数,的参数,例如:例如:b(aardvark)预期的输出:显示出最接近的匹配结果,预期的输出:显示出最接近的匹配结果,3)用比执行命令)用比执行命令browse后列出的最大行号大后列出的最大行号大1的数作为命的数作为命 令令s的参数,的参数,预期的输出:预期的输出:“命令命令s的参数不在行号列表中的参数不在行号列表中”4)用数字和标点符号作为命令)用数字和标点符号作为命令browse和命令和命令find的参数,的参数,预期的输出:预期的输出:“参数类型错参数类型错”5)用字母字符作为命令)用字母字符作为命令select和命令和命令display的参数,的参数,预期的输出:预期的输出:“参数类型错参数类型错”6)用)用0和负数作为命令和负数作为命令select和命令和命令display的参数,的参数,预期的输出:预期的输出:“参数类型错参数类型错”7)命令顺序错,例如,没执行命令)命令顺序错,例如,没执行命令b就执行命令就执行命令s,或没执行,或没执行 命令命令s就执行命令就执行命令d 预期的输出:预期的输出:“命令顺序错命令顺序错”8)命令语法错,例如,遗漏命令名)命令语法错,例如,遗漏命令名b、s、d或或f;或命令参数;或命令参数 没用圆括号括起来没用圆括号括起来 预期的输出:预期的输出:“命令语法错命令语法错”9)命令参数空,例如,)命令参数空,例如,b()、()、s()、()、d()或()或f()()预期的输出:系统提供默认参数或给出出错信息预期的输出:系统提供默认参数或给出出错信息10)使用拼错了的作者姓名作为参数)使用拼错了的作者姓名作为参数f的参数的参数 预期的输出:预期的输出:“找不到这位作者的著作找不到这位作者的著作”。例例19.对一个包含对一个包含10000条机器指令的程序进行一个月条机器指令的程序进行一个月 集成测试后,总共改正了集成测试后,总共改正了15个错误,此时个错误,此时 MTTF=10h;经过两个月测试后,总共改正了经过两个月测试后,总共改正了25 个错误个错误(第二个月改正了第二个月改正了10个错误个错误),MTTF=15h。要求:要求:(1)根据上述数据确定根据上述数据确定MTTF与测试时间之间的函与测试时间之间的函 数关系,画出数关系,画出MTTF与测试时间与测试时间的关系曲线。的关系曲线。在画这条曲线时做了什么假设在画这条曲线时做了什么假设?(2)为做到为做到MTTF=100h,必须进行多长时间的集成,必须进行多长时间的集成 测试测试?当集成测试结束时总共改正了多少个错当集成测试结束时总共改正了多少个错 误,还有多少个错误潜伏在程序中误,还有多少个错误潜伏在程序中?例例20.如对一个长度为如对一个长度为100000条指令的程序进行集成条指令的程序进行集成 测试期间记录下下面的数据:测试期间记录下下面的数据:(a)7月月1日:集成测试开始,没有发现错误。日:集成测试开始,没有发现错误。(b)8月月2日:总共改正日:总共改正100个错误,此时,个错误,此时,MTTF=0.4h(c)9月月1日:总共改正日:总共改正300个错误,此时,个错误,此时,MTTF=2h 根据上列数据完成下列各题:根据上列数据完成下列各题:(1)估计程序中的错误总数;估计程序中的错误总数;(2)为使为使MTTF达到达到10h,必须测试和调试这个程序,必须测试和调试这个程序 多长时间多长时间?(3)画出画出MTTF和测试时间和测试时间之间的函数关系线。之间的函数关系线。例例21.在测试一个长度为在测试一个长度为24000条指令的程序时,第条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正经一个月测试后,甲发现并改正20个错误,使个错误,使MTTF达到达到10h。与此同时,乙发现。与此同时,乙发现24个错误,其中个错误,其中6个甲个甲也发现了。以后由甲一个人继续测试这个程序。问:也发现了。以后由甲一个人继续测试这个程序。问:(1)刚开始测试时程序中总共有多少个潜藏的错误刚开始测试时程序中总共有多少个潜藏的错误?(2)为使为使MTTF达到达到60h,必须再改正多少个错误,必须再改正多少个错误?还需用多长测试时间还需用多长测试时间?(3)画出画出MTTF与集成测试时间与集成测试时间之间的函数关系之间的函数关系 曲线。曲线。例例22.某软件公司拟采用下述措施提高他们开发出的某软件公司拟采用下述措施提高他们开发出的软件产品的可维护性。请判断哪些措施是正确的?软件产品的可维护性。请判断哪些措施是正确的?1.在分析用户需求时同时考虑维护问题。在分析用户需求时同时考虑维护问题。2.测试完程序后,删去程序中的注解以缩短源程序长测试完程序后,删去程序中的注解以缩短源程序长 度。度。3.在软件开发过程中尽量保证各阶段文档的正确性。在软件开发过程中尽量保证各阶段文档的正确性。4.编码时尽量多用全局变量。编码时尽量多用全局变量。5.选用时间效率和空间效率尽可能高的算法。选用时间效率和空间效率尽可能高的算法。6.尽可能利用硬件特点以提高程序效率。尽可能利用硬件特点以提高程序效率。7.进行总体设计时加强模块间的联系。进行总体设计时加强模块间的联系。8.尽可能使用高级语言编写程序。尽可能使用高级语言编写程序。9.尽量减少程序模块的规模。尽量减少程序模块的规模。10.用数据库系统代替文件系统来存储需要长期保用数据库系统代替文件系统来存储需要长期保 存的信息。存的信息。11.用用CASE环境或程序自动生成工具来自动生成一环境或程序自动生成工具来自动生成一 部分程序。部分程序。12.尽量用可重用的软件构件来组装程序。尽量用可重用的软件构件来组装程序。13.采用放错程序设计技术,在程序中引入自检能力采用放错程序设计技术,在程序中引入自检能力14.采用先进的软件开发技术。采用先进的软件开发技术。15.把与硬件及操作系统有关的代码放到某些特定的把与硬件及操作系统有关的代码放到某些特定的 程序模块中。程序模块中。例例23.假设你的任务是对一个已有的软件做重大修假设你的任务是对一个已有的软件做重大修 改,而且只允许你从下述文档中选取两份:改,而且只允许你从下述文档中选取两份:(a)程序的规格说明;程序的规格说明;(b)程序的详细设计结果程序的详细设计结果(自然语言描述加上自然语言描述加上 某种设计工具表示某种设计工具表示);(c)源程序清单源程序清单(其中有适当数量的注解其中有适当数量的注解)。你将选取哪两份文档你将选取哪两份文档?为什么这样选取为什么这样选取?