软件工程导论课后习题答案.docx
- 文档编号:5346674
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:21
- 大小:2.12MB
软件工程导论课后习题答案.docx
《软件工程导论课后习题答案.docx》由会员分享,可在线阅读,更多相关《软件工程导论课后习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
软件工程导论课后习题答案
软件工程导论课后习题答案
一、什么是软件危机?
它有哪些典型表现?
什么缘故会显现软件危机?
软件危机是指在运算机软件开发、使用与爱护过程中遇到的一系列严峻问题和难题。
它包括两方面:
如何开发软件,已满足对软件日益增长的需求;如何爱护数量不断增长的已有软件。
软件危机的典型表现:
(1)对软件开发成本和进度的估量常常专门不准确。
常常显现实际成本比估算成本高出一个数量级、实际进度比打算进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2)用户对已完成的软件不中意的现象时有发生。
(3)软件产品的质量往往是靠不住的。
(4)软件常常是不可爱护的。
(5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和爱护工作带来许多难以想象的困难和难以解决的问题。
(6)软件成本、软件爱护费在运算机系统总成本中所占比例逐年上升。
(7)开发生产率提高的速度远跟不上运算机应用普及的需求。
软件危机显现的缘故:
(1)来自软件自身的特点:
是逻辑部件,缺乏可见性;规模庞大、复杂,修改、爱护困难。
(2)软件开发与爱护的方法不当:
忽视需求分析;认为软件开发等于程序编写;轻视软件爱护。
(3)供求矛盾将是一个永恒的主题:
面对日益增长的软件需求,人们显得力不从心。
二、什么是软件工程?
它有哪些本质特点?
如何样用软件工程排除软件危机?
1993年IEEE的定义:
软件工程是:
①把系统的、规范的、可度量的途径应用于软件开发、运行和爱护过程,也确实是把工程应用于软件;②研究①中提到的途径。
软件工程的本质特点:
(1)软件工程关注于大型程序(软件系统)的构造
(2)软件工程的中心课题是分解问题,操纵复杂性(3)软件是经常变化的,开发过程中必须考虑软件今后可能的变化
(4)开发软件的效率专门重要,因此,软件工程的一个重要课题确实是,寻求开发与爱护软件的更好更有效的方法和工具
(5)和谐地合作是开发软件的关键(6)软件必须有效地支持它的用户
(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)排除软件危机的途径:
(1)对运算机软件有一个正确的认识(软件≠程序)
(2)必须充分认识到软件开发不是某种个体劳动的奇异技巧,而应该是一种组织良好、治理严密、各类人员协同配合、共同完成的工程项目
(3)推广使用在实践中总结出来的开发软件的成功技术和方法
(4)开发和使用更好的软件工具
三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。
七、什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范畴。
软件生命周期模型是跨过整个生存期的系统开发、运作和爱护所实施的全部过程、活动和任务的结构框架。
瀑布模型优点:
它提供了一个模板,那个模板使得分析、设计、编码、测试和支持的方法能够在该模板下有一个共同的指导。
尽管有许多缺陷但比在软件开发中随意的状态要好得多。
缺点:
(1)实际的项目大部分情形难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这专门容易由微小的变化而造成大的纷乱。
(2)经常情形下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
(3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发觉大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
(4)会经常在过程的开始和终止时碰到等待其他成员完成其所依靠的任务才能进行下去,有可能花在等待的时刻比开发的时刻要长。
称之为“堵塞状态”。
它是软件工程中应用最广泛的过程模型,在软件工程中占有确信和重要的位置。
快速原型模型
在进行了差不多需求分析之后,快速开发出产品的原型,然后基于那个原型,同客户沟通、交流,更好地了解客户需求,不断修改那个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户中意的产品。
优点:
使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。
缺点:
产品的先天性不足,因为开发者常常需要做实现上的折中,可能采纳不合适的操作系统或程序设计语言,以使原型能够尽快工作。
增量模型
优点:
(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品专门受欢迎时,可增加人力实现下一个增量。
(2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,如此就能够先公布部分功能给客户,对客户起到冷静剂的作用。
缺点:
(1)至始至终开发者和客户蛮缠在一起,直到完全版本出来。
(2)适合于软件需求不明确、设计方案有一定风险的软件项目。
该模型具有一定的市场。
螺旋模型
优点:
关于大型系统及软件的开发,这种模型是一个专门好的方法。
开发者和客户能够较好地对待和明白得每一个演化级别上的风险。
缺点:
(1)需要相当的风险分析评估的专门技术,且成功依靠于这种技术。
(2)专门明显一个大的没有被发觉的风险问题,将会导致问题的发生,可能导致演化的方法失去操纵。
(3)这种模型相对比较新,应用不广泛,其功效需要进一步的验证。
该模型适合于大型软件的开发
第二章
4.目前住院病人要紧由护士护理,如此做不仅需要大量护士,而且由于不能随时观看危重病人的病情变化,还会延误抢救时机。
某医院打算开发一个以运算机为中心的患者监护系统,请写出问题定义,同时分析开发那个系统的可行性。
医院对患者监护系统的差不多要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情形以形成患者日志,当某个病人的生理信号超出大夫规定的安全范畴时向值班护士发出警告信息,此外,护士在需要时还能够要求系统印出某个指定病人的病情报告。
问题定义:
从问题陈述可知,本系统的数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。
进一步分析问题陈述,从系统应该“定时记录病人情形以形成患者日志”这项要求能够想到,还应该有一个提供日期和时刻信息的“时钟”作为数据源点。
从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。
系统对病人一辈子理信号的处理功能要紧是“接收信号”、“分析信号”和“产生警告信息”。
此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告"的功能。
为了分析病人一辈子理信号是否超出了大夫规定的安全范畴,应该储备“患者安全范畴”信息。
此外,定时记录病人一辈子理信号所形成的“患者日志”,明显也是一个数据储备。
可行性叙述略。
5.北京某高校可用的号码有以下几类:
校内号码由4位数字组成,第1位数字不是0;校外又分为本市和外地两类,拨校外需先拨0,若是本市则再接着拨8位数字(第1位不是0),若是外地则拨3位区码,再拨8位号码(第1位不是0)。
请用2.5.2小节讲述的定义数据的方法,定义上述的号码。
号码=[校内号码|校外号码]校内号码=非零数字+3位数字
校外号码=[本市号码|外地号码]本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字非零数字=[1|2|3|4|5|6|7|8|9]
数字零=03位数字=3{数字}38位数字=非零数字+7位数字
7位数字=7{数字}7数字=[0|l|2|3|4|5|6|7|8|9]
第三章
1、什么缘故要进行需求分析?
通常对软件系统有哪些需求?
通过需求分析,明确用户对目标软件系统在功能、性能、行为、设计约束等方面的期望,回答软件系统“必须做什么”。
通常对软件系统的需求是以下几方面的综合:
(1)功能需求
;
(2)性能需求
;(3)可靠性和可用性需求
;(4)出错处理需求
;(5)接口需求
;(6)约束
;(7)逆向需求
;(8)今后可能提出的要求。
2、如何样与用户有效的沟通以猎取用户的真实需求?
(1)初步需求猎取,通过访谈与会议、问卷调查、观看用户工作流程等方法;
(2)面向数据流,自顶向下求精
(3)简易的应用规格说明(4)快速建立软件原型
6、复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;假如执行复印命令时发觉没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,预备接收复印命令;假如复印时发生卡纸故障,则进入卡纸状态,发出警告,等待修理人员来排除故障,故障排除后回到闲置状态。
请用状态转换图描画复印机的行为。
从问题陈述可知,复印机的状态要紧有“闲置”、“复印”、“缺纸”和“卡纸”。
引起状态转换的事件要紧是“复印命令”、“完成复印命令”、“发觉缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。
状态转换图如下:
1、为每种类型的模块耦合举一个具体的例子。
(1)非直截了当耦合—例如,两个模块没有直截了当关系(模块1和模块2),模块独立性最强。
(2)数据耦合—例如,下左图
数据耦合特点耦合
(3)特点耦合—例如,上右图
“住户情形”是一个数据结构,图中模块都与此数据结构有关。
“运算水费”和“运算电费”本无关,由于引用了此数据结构产生依靠关系,它们之间也是标记偶合。
(4)操纵耦合--模块A通过传送开关、标志、名字等操纵信息,明显地操纵选择模块B的功能,例如下图
(5)外部耦合—例如,下左图,模块A、B均需使用共享打印机
外部耦合公共环境耦合
(6)公共环境耦合—例如,上右图,模块A、B、C共享全局变量数组
(7)内容耦合—例如,一个过程非正常地进入另一个过程
SubAA(…)
……gotoL…
Endsub
SubBB(…)
……L:
……
Endsub
2、用面向数据流的方法设计下列系统的软件结构:
(3)患者监护系统(需求见习题2-4)
功能级数据流图:
软件结构图:
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预期的输出:
X=10,y=20,Z=3
⑧3个判定表达式全为真
输入:
A=20,B=40,C=60预期的输出:
X=10,y=20,Z=30
6、答:
应该分别使用正常的输入数据和专门的输入数据,作为验收测试数据。
(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
②数组长度为l,其负整数元素是所要找的数
输入:
somearray={-20),size=1,value=20预期的输出:
l
③数组长度为l,其元素0是所要找的数
输入:
somearray={0},size=1,value=0预期的输出:
l
④数组长度为l,其元素不是所要找的数
输入:
somearray={6},size=1,value=8预期的输出:
-1
⑤数组为空
输入:
somearray={},size=0,value=6预期的输出:
-1
⑥数组有偶数个元素,第1个元素是正整数且是所要找的数
输入:
somearray={1,2,3,4},size=4,value=1预期的输出:
l
⑦数组有偶数个元素,最后一个元素是负整数且是所要找的数
输入:
somearray={1,2,3,一4},size=4,value=4预期的输出:
4
⑧数组有偶数个元素,其中一个元素0是所要找的数
输入:
somearray={1,2,0,3},size=4,value=0预期的输出:
3
⑨数组有偶数个元素,元素中没有所要找的数
输入:
somearray={1,2,3,4},size=4,value=5预期的输入:
-1,
⑩数组有奇数个元素,第1个元素是0且是要找的数
输入:
somearray={0,1,2),size=3,value=0预期的输出:
l
(11)数组有奇数个元素,最后一个元素是负整数且是所要找的数
输入:
somearray={1,2,一3},size=3,value=3预期的输入:
3
(12)数组有奇数个元素,没有要找的数
输入:
somearray={1,2,3},size=3,value=3预期的输出:
-1
(13)数组实际长度不等于size
输入:
somearray={1,2,3},size=2,value=1预期的输出:
“无效的size值”
第九章作业
2、答:
对象是面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据和能够对这些数据施加的所有操作封装在一起构成的统一体。
传统的数据是传统方法学开发软件时对客观世界实体的抽象,然而,这种抽象是不全面的:
数据只能描述实体的静态属性,不能描述实体的动态行为。
必须从外界对数据施加操作,才能改变数据、实现相应的行为。
对象与传统数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。
必须发消息要求对象主动地执行它的某些操作,处理它的私有数据,而不能直截了当从外界对它的私有数据进行操作。
5、答:
所谓模型,确实是为了明白得事物而对事物进行的一种抽象,是对事物的一种无歧义的书面描述。
通常,模型由一组图形符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。
更进一步地讲,模型是一种思维工具,利用这种工具能够把知识规范地表示出来。
众所周知,在解决问题之前必须明白得所要解决的问题。
对问题明白得得越透彻,就越容易解决它。
在软件开发的过程中,为了更好地明白得客户要求解决的问题,往往需要建立问题域的模型。
为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特点,使用精确地表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐步把和实现有关的细节加进模型中来,直到最终实现那个模型。
关于那些过分复杂而不能直截了当明白得的系统,专门需要建立模型。
建立模型的目的要紧是为了降低复杂性。
人的头脑每次只能处理少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂度。
10、答:
订货系统用例图
作业题:
有如下用户需求:
王大夫在小镇上开了一家牙科诊所。
他有一个牙科助手、一个牙科保健员和一个接待员。
王大夫需要一个软件系统来治理预约。
当病人打预约时,接待员将查阅预约登记表,假如病人申请的就诊时刻与已定下的预约时刻冲突,则接待员建议一个就诊时刻以安排病人尽早得到诊治。
假如病人同意建议的就诊时刻,接待员将输入约定时刻和病人的名字。
系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。
在每次治疗或清洗后,助手或保健员将标记相应的预约诊治差不多完成,假如必要的话会安排病人下一次再来。
系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。
接待员能够取消预约,能够打印出前两天预约尚未接诊的病人清单。
系统能够从病人记录中获知病人的号码。
接待员还能够打印出关于所有病人的每天和每周的工作安排。
(1)建立牙科诊所治理系统的对象模型;
(2)建立牙科诊所治理系统的用例模型;
(3)用数据流图建立牙科诊所治理系统的功能模型;
(4)写出牙科诊所治理系统的脚本;
(5)画出牙科诊所治理系统的状态图。
解答:
(1)从对牙科诊所问题的陈述中,能够找出下列名词作为对象的候选者:
王大夫,小镇,牙科诊所,牙科助手,牙科保健员,接待员,软件系统,预约,病人,预约登记表,就诊时刻,预约时刻,约定时刻,系统,名字,记录的病人数据,病历号,姓名,日期,预约信息,病人清单,病人记录,号码,每天工作安排,每周工作安排。
通常,通过词法分析找到的候选对象中有许多并不是问题域中真正有意义的对象,因此,必须对这些候选对象进行严格的选择,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。
具体说到牙科诊所问题,“王大夫”只只是是牙医的一个实例,实际上,本软件系统的要紧功能是治理病人的预约,并不关怀诊所内每名工作人员的分工,因此,牙医、牙科助手、牙科保健员和接待员都不是问题域中的对象;“小镇”是牙科诊所的地址属性,不是独立的对象;“软件系统”和“系统”是同义词,指的是将要开发的软件产品,不是问题域中的对象;“就诊时刻”、“预约时刻”和“约定时刻”在本问题陈述中的含义相同,指的差不多上预约的就诊时刻,实际上,预约的就诊时刻既包括日期又包括时刻,然而,它们是预约登记表包含的属性,不是问题域中独立的对象;“名字”和“姓名”是同义词,应该作为病人和预约登记表的属性;“记录的病人数据”实际上确实是“病人记录”,能够统一使用“病人记录”作为对象名;“病历号”和“号码”是病人记录的属性,不是独立的对象;从问题陈知,“病人清单”是已预约但尚未就诊的病人名单,应该包含病人姓名、预约的就诊时刻等内容,它和“预约信息”包含的内容差不多相同,能够只保留“病人清单”作为问题域中的对象。
接下来分析确定问题域中对象彼此之间的关系。
“每天工作安排”和“每周工作安排”有许多共同点,能够从它们泛化出一个父类“工作安排”。
此外,问题域的对象之间还有下述关联关系:
牙科诊所诊治多名病人;一位病人有一份病人记录;一位病人可能预约多次也可能一次也没预约;牙科诊所在一段时刻内将打印出多份病人清单;牙科诊所开业以来差不多建立了多份预约登记表;预约登记表中记录了多位病人的预约;依照预约登记表在不同时问能够制定出不同的工作安排。
综上所述,能够画出图7.2所示的牙科诊所治理系统的对象模型。
(2)用例图从用户角度描述系统的功能,它必须包含用户关怀的所有关键功能。
用户通常确实是用例图中的行为者。
为了画出系统的用例图,第一应该找出系统的用户,然后依照用户对系统功能的需求确定用例。
从对牙科诊
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 课后 习题 答案