页数:15页文件大小:1.44 MB来源: 软件工程ppt课件
本课件汇总课程各章典型习题的参考答案,覆盖软件工程定义与本质特征、瀑布模型评价、数据流图与面向数据流的设计、判定表判定树、逻辑覆盖测试用例,以及面向对象分析作业题。
第一章习题:软件工程定义与本质特征
瀑布模型缺点的解答
患者监护系统的数据流图
问题定义:从问题陈述可知,本系统的数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告"的功能。为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。可行性叙述略。5.北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码,再拨8位电话号码(第1位不是0)。请用2.5.2小节讲述的定义数据的方法,定义上述的电话号码。电话号码= [校内电话号码|校外电话号码]校外电话号码= [本市号码|外地号码]外地号码=数字零+3位数字+8位数字数字零=03位数字=3{数字}3校内电话号码=非零数字+3位数字本市号码=数字零+8位数字非零数字= [1|2|3|4|5|6|7|8|9]8位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|l|2|3|4|5|6|7|8|9]
第三章需求分析的习题解答
模块耦合类型举例
本页以图示为主,源图为课件中的模型图或示意图,图中文字标注如下。
(2)数据耦合—例如,下左图数据耦合特征耦合(3)特征耦合—例如,上右图“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。(4)控制耦合--模块A通过传送开关、标志、名字等控制信息,明显地控制选择模块B的功能,例如下图(5)外部耦合—例如,下左图,模块A、B均需使用共享打印机外部耦合公共环境耦合(6)公共环境耦合—例如,上右图,模块A、B、C共享全局变量数组(7)内容耦合—例如,一个过程非正常地进入另一个过程SubAA(…)……gotoL…
面向数据流的设计与盒图
本页以图示为主,源图为课件中的模型图或示意图,图中文字标注如下。
EndsubSubBB(…)……L:……Endsub2、用面向数据流的方法设计下列系统的软件结构:(3)患者监护系统(需求见习题2-4)功能级数据流图:E1护士E3时钟E2病人F1要求报告F2生理信号F3日前、时间E1护士F4警告信息D2患者安全范围D1患者日志F5安全范围F6日志P1接收信号P4定时取样生理信号P5更新日志P3产生警告信息P2分析信号P6产生病情报告F2生理信号危及病人信息定时的生理信号F2生理信号F6日志D3生理信息F2生理信号定时的生理信号P7制定安全范围软件结构图:患者监护系统患者生理信号获取制定生理信号安全范围接收信号定时取样生理信号监护处理分析信号更新日志报警病情报告生理信号范围生理信号定时生理信号生理信号范围定时生理信号日志危机信息生理信号危机信息生理信号定时生理信号日志监护信息输出日志危机信息生理信号取得时间时间
伪码转换的数据流程图与盒图
本页以图示为主,源图为课件中的模型图或示意图,图中文字标注如下。
3、从伪码转换成的数据流程图从伪码转换成的盒图4、(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。本题图6-18所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,下图所示盒图描绘了两个等价的结构化程序。(3)不使用flag把该程序改造为等价的结构化程序的方法如下图所示。7、令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。判定表的每一列是一条计算规则。例如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为:(1+0.05)×0.084P第16列(规则l6)表明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为:(1+0.06)X(0.04P+134)
手续费计算的判定表与判定树
表示手续费计算方法的判定表和判定树如下图所示。判定表
逻辑覆盖测试用例设计
判定树4(3)答:(1)语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:①使3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3②使3个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30(2)路径覆盖的测试用例本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例:①3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3②3个判定表达式依次为假、假、真输入:A=1,B=1,C=60预期的输出:X=1,Y=2,Z=30③3个判定表达式依次为假、真、假输入:A=1,B=40,C=1预期的输出:X=1,Y=20,Z=3④3个判定表达式依次为假、真、真输入:A=1,B=40,C=60预期的输出:X=1,y=20,Z=30⑤3个判定表达式依次为真、假、假输入:A=20,B=1,C=1预期的输出:X=10,y=2,Z=3⑥3个判定表达式依次为真、假、真输入:A=20,B=1,C=60预期的输出:X=10,y=2,Z=30⑦3个判定表达式依次为真、真、假输入:A=20,B=40,C=1⑧3个判定表达式全为真输入:A=20,B=40,C=60预期的输出:X=10,y=20,Z=3预期的输出:X=10,y=20,Z=306、答:应该分别使用正常的输入数据和异常的输入数据,作为验收测试数据。(1)用正常的输人数据作为测试数据①输入常规的出发点、目的地、5个位置校核点、高度、速度及飞机型号。②针对5对不同的出发点和目的地,重复执行测试①。③固定出发点、目的地、位置校核点、高度和速度,分别输入3~5种不同的飞机型号,重复执行测试①。④固定出发点、目的地、位置校核点、高度和飞机型号,分别输入3~5个不同的速度,重复执行测试①。⑤固定出发点、目的地、位置校核点、速度和飞机型号,分别输入3~5个不同的高度,重复执行测试①。⑥固定出发点、目的地、高度、速度和飞机型号,分别输入3~5组不同的位置校核点,重复执行测试①。⑦固定出发点、位置校核点、高度、速度和飞机型号,分别输入3~5个不同的目的地,重复执行测试①。⑧固定目的地、位置校核点、高度、速度和飞机型号,分别输入3~5个不同的出发
测试用例设计步骤
点,重复执行测试①。⑨同时改变一对参数的值,其他参数的值固定,重复执行测试①。⑩同时改变3个参数的值,其他参数的值固定,重复执行测试①。(11)以适当的方式改变描述天气状况的数据,重复执行测试①。(2)用边界数据值作为测试数据①分别使用距离非常近和距离非常远的两个地点作为出发点和目的地。②输入位置校核点的非常规组合。③分别输入非常高和非常低的高度值。④分别输入非常高和非常低的速度值。⑤输入极其少见的飞机型号。(3)用无效的数据作为测试数①用由字母数字字符和控制字符混合在一起组成的字符串作为出发点或目的地。②用数字0作为所有参数的值。③用负数作为高度和速度的值。补充作业:答:题中并没有给出实现函数SEARCH的算法,仅仅描述了它的功能,因此,只能用黑盒测试技术设计测试它的测试方案。为了用等价划分法设计测试方案,首先需要划分输入数据的等价类。根据该函数的功能,可以把它的输入数据划分成以下等价类:(1)有效输入的等价类·数组有偶数个元素,第1个元素是所要找的数。·数组有偶数个元素,最后一个元素是所要找的数。·数组有偶数个元素,数组中没有所要找的数。·数组有奇数个元素,第1个元素是所要找的数。·数组有奇数个元素,最后一个元素是所要找的数。·数组有奇数个元素,数组中没有所要找的数。·数组有多个元素,其中一个正整数是所要找的数。·数组有多个元素,其中一个负整数是所要找的数。·数组有多个元素,其中一个0是所要找的数。(2)无效输入的等价类数组实际长度不等于变元size的值。为了使用边界值分析法设计测试方案,应该再考虑下述几种边界情况:·数组长度为l,其元素是所要找的数。·数组长度为l,其元素不是所要找的数。·数组为空(长度为0)。根据上面划分出的等价类及边界情况,可以设计出下述测试方案:①数组长度为l,其正整数元素是所要找的数输入:somearray={6},size=1,value=6②数组长度为l,其负整数元素是所要找的数输入:somearray={-20),size=1,value=20③数组长度为l,其元素0是所要找的数输入:somearray={0},size=1,value=0④数组长度为l,其元素不是所要找的数输入:somearray={6},size=1,value=8⑤数组为空输入:somearray={},size=0,value=6预期的输出:l预期的输出:l预期的输出:l预期的输出:-1预期的输出:-1
测试用例输入举例
本页以图示为主,源图为课件中的模型图或示意图,图中文字标注如下。
⑥数组有偶数个元素,第1个元素是正整数且是所要找的数输入:somearray={1,2,3,4},size=4,value=1预期的输出:l⑦数组有偶数个元素,最后一个元素是负整数且是所要找的数输入:somearray={1,2,3,一4},size=4,value=4⑧数组有偶数个元素,其中一个元素0是所要找的数输入:somearray={1,2,0,3},size=4,value=0⑨数组有偶数个元素,元素中没有所要找的数输入:somearray={1,2,3,4},size=4,value=5⑩数组有奇数个元素,第1个元素是0且是要找的数预期的输出:4预期的输出:3预期的输入:-1,输入:somearray={0,1,2),size=3,value=0预期的输出:l(11)数组有奇数个元素,最后一个元素是负整数且是所要找的数输入:somearray={1,2,一3},size=3,value=3(12)数组有奇数个元素,没有要找的数输入:somearray={1,2,3},size=3,value=3(13)数组实际长度不等于size输入:somearray={1,2,3},size=2,value=1预期的输入:3预期的输出:-1预期的输出:“无效的size值”第九章作业2、答:对象是面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据和可以对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是传统方法学开发软件时对客观世界实体的抽象,但是,这种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。必须从外界对数据施加操作,才能改变数据、实现相应的行为。对象与传统数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。5、答:所谓模型,就是为了理解事物而对事物进行的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。更进一步地讲,模型是一种思维工具,利用这种工具可以把知识规范地表示出来。众所周知,在解决问题之前必须理解所要解决的问题。对问题理解得越透彻,就越容易解决它。在软件开发的过程中,为了更好地理解客户要求解决的问题,往往需要建立问题域的模型。为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特征,使用精确地表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐步把和实现有关的细节加进模型中来,直到最终实现这个模型。对于那些过分复杂而不能直接理解的系统,特别需要建立模型。建立模型的目的主要是为了降低复杂性。人的头脑每次只能处理少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂度。10、答:
牙科诊所管理系统用例图
订货系统用例图作业题:有如下用户需求:王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。1建立牙科诊所管理系统的对象模型;2建立牙科诊所管理系统的用例模型;3用数据流图建立牙科诊所管理系统的功能模型;4写出牙科诊所管理系统的脚本;5画出牙科诊所管理系统的状态图。解答:(1)从对牙科诊所问题的陈述中,可以找出下列名词作为对象的候选者:王大夫,小镇,牙科诊所,牙科助手,牙科保健员,接待员,软件系统,预约,病人,预约登记表,就诊时间,预约时间,约定时间,系统,名字,记录的病人数据,病历号,姓名,日期,预约信息,病人清单,病人记录,电话号码,每天工作安排,每周工作安排。通常,通过词法分析找到的候选对象中有许多并不是问题域中真正有意义的对象,因此,必须对这些候选对象进行严格的筛选,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。具体说到牙科诊所问题,“王大夫”只不过是牙医的一个实例,实际上,本软件系统的主要功能是管理病人的预约,并不关心诊所内每名工作人员的分工,因此,牙医、牙科助手、牙科保健员和接待员都不是问题域中的对象;“小镇”是牙科诊所的地址属性,不是独立的对象;“软件系统”和“系统”是同义词,指的是将要开发的软件产品,不是问题域中的对象;“就诊时间”、“预约时间”和“约定时间”在本问题陈述中的含义相同,指的都是预约的就诊时间,实际上,预约的就诊时间既包括日期又包括时间,但是,它们是预约登记表包含的
候选对象的筛选与合并
属性,不是问题域中独立的对象;“名字”和“姓名”是同义词,应该作为病人和预约登记表的属性;“记录的病人数据”实际上就是“病人记录”,可以统一使用“病人记录”作为对象名;“病历号”和“电话号码”是病人记录的属性,不是独立的对象;从问题陈知,“病人清单”是已预约但尚未就诊的病人名单,应该包含病人姓名、预约的就诊时间等内容,它和“预约信息”包含的内容基本相同,可以只保留“病人清单”作为问题域中的对象。接下来分析确定问题域中对象彼此之间的关系。“每天工作安排”和“每周工作安排”有许多共同点,可以从它们泛化出一个父类“工作安排”。此外,问题域的对象之间还有下述关联关系:牙科诊所诊治多名病人;一位病人有一份病人记录;一位病人可能预约多次也可能一次也没预约;牙科诊所在一段时间内将打印出多份病人清单;牙科诊所开业以来已经建立了多份预约登记表;预约登记表中记录了多位病人的预约;根据预约登记表在不同时问可以制定出不同的工作安排。综上所述,可以画出图7.2所示的牙科诊所管理系统的对象模型。(2)用例图从用户角度描述系统的功能,它必须包含用户关心的所有关键功能。用户通常就是用例图中的行为者。为了画出系统的用例图,首先应该找出系统的用户,然后根据用户对系统功能的需求确定用例。从对牙科诊所问题的陈述可知,接待员负责处理病人预约事务,为此他需要访问预约登记表和病人记录,接待员也可以取消预约,此外,接待员还可以根据预约登记表打印出关于所有病人的每天和每周的工作安排,牙医将按照工作安排诊治病人;在病人就诊后,助手或保健员将标记相应的预约诊治已完成,必要时还将安排病人下次再来,也就是说,他们将更新预约登记表的内容;系统能够按照病人姓名和日期查询预约信息,这项功能需求虽然没有指明行为者,但是这并不意味着没有行为者也可以有用例,事实上,一个用例至少必须与一个行为者相关联,可以认为“查询预约’’这个用例的行为者是牙科诊所的职员。在牙科诊所问题中,没有必要区分接待员、助手和保健员在业务工作中扮演的不同角色,可以把他们统称为职员。综上所述,可以画出图7.3所示的牙科诊所管理系统的用例图。
预约流程的需求建模
(3)从牙科诊所管理系统的需求陈述得知,当进行预约时病人提供姓名、希望的就诊日期等数据,系统查询预约登记表,以确定一个有效的就诊日期,此外,系统还将查询病人记录以获得病历号等病人数据。在每次预约诊治完成之后,应该更新预约登记表,以标记相应的预约诊治已经完成,必要时将约定下次就诊日期。诊所职员可以按照病人姓名和日期查询预约信息,也可以取消预约。此外,系统可以打印出每天和每周的工作安排给牙医。根据上述的系统功能,可以画出图7.4所示的牙科诊所管理系统的数据流图。(4)脚本从用户角度描述系统典型的工作过程。根据对牙科诊所管理系统的需求,至少可以设想出下述3个脚本。(a)正常情况:病人甲请求预约。系统识别出病人的名字。系统建议二个就诊时间。病人同意该时间,接待员输入该预约。在预约的就诊日期到来之前两天,系统输出一份包含病人姓名和电话号码等信息的提醒清单。接待员打电话提醒病人。病人如约到来。治疗完之后,牙医助手安排该病人的下一次预约。(b)新病人:病人乙请求预约。系统不认识该病人的名字,必须把该病人的信息输入到病
多次预约的状态图描述
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}