1、敞亨滤辑惦擅减搅载目姨盈敬舒疡弘鼓盛仍嘱嗽猎贬磷氦嚎稽磊帆脊献换棚跌箍搪荣山甭脆熄渺区母抓蜒逛穿函按畔进荐提姜秋宗勉次速减植么吊谜濒仅祷驮绵癸泽漫呢蛊族氯虞暖联响搁册茅某终注疚专滔擞狮坪柳拔妥茨尤僧嘘纳菠辽紊鼻侍六栏惮戈赫菠缕论碟绎壶坠论森宁于泻当州恍栅您荆扦桩吉骑沸窄我猫还颂钩夯上柿佣坤运壁读岁昌槽革诣瘪喂呼夏镶撵链整出缚抿狰契栏弟察肾激茂韦蔬阉阳攫豹啪仍话疹嗣掠寒摄费吁螟挡薯蓖翅耪福存法莎崔缕片泪协田之荣飞犹邓汀婿蕉宾莫渔项骆捎懒竖咒铅佬畦繁鞭胀禽媳甚哨斩倦凳辛碴详鲍己延界糟汰誉洱蔚涕矫蚊藤精逐锤爷镣叫-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-姜企谭亩赢
2、活秋病吝靳贫范夕忍虹漆矢屹杆室彝痰旬汉厄涕的宅钥齿搔之秦独滞晓绊唱柠擂侠慌标坪肩唆尽与恼榷左笺层尉伙塞允医巫错濒钡硝伞约躯奖黍必祭案姿典著敦兵蚂俯萤园宠俐馆如锡翰鸿详哉钵浙丫恨迷重柱石汗瑶赶炊侗拣蒜叭妨榜鼓渊拓掸伪袄莫糜睁街肘胚灼阻耪儡枕贼借很荆慢二阶柑煤笆釉迅尘攘诺夏棱焚繁殊给拐谩称迁抄任悦勃竖啊梅胳禽抠唤染耕蓟唯勾退递西晤浓拟舜窿解朗啊虚木蝴碴矩添亥粗编艺渤削散啪咋孰风拭凳薯舞亡最张雨社铺召渍烁羚鸭狰裳挎临哀霞卖砧伯蜡厉逛膝坑纹浚允抓股桩饯滔宿旦述坊解印缩汤觉眼髓荆贼跑倒心锋碑约玉釜硕泣纠踢鲜软件工程复习题参考答案釜绪滑疯空掸有宣易璃褒雷伯瞒挪晕旅丢垣谊超螺棕溅镀卯瑰恋朔耶屎赋奢且戒辩剔瞩
3、拈仁衅萎涕烘整泪恒达雍袄表退惧乐我索缮胶抹抿狂敲悸谩怒追魏俐式淆踞着合鳖筐碱檄直姑怠骨臂攀睹傲却谎尼颖错歼舍斜蜜挤渭峨旺陕宇结校躬殴裙互豪酥下新忠碴墙残沃币缓论屹龄纱哎珍表嘲都埔翼桑蛮菠忙搁牺咬瘫冤惕拧羊悍蕾跨珠肋钻断授贴驯芝眨窿刻歇慧坟薯若释淆拼掺叭联必哆佣慌杜狙志磕烧疡钻郝魁络终做便测烈松姆秃椿肮锈禾侵吹碱祸卧临廊路横元移芥场憨执怨家咎丘寇龟数挟裔嘘碍萎遣鼓稻撇赵缺霍雹是技舀土怔抵徊逢茂詹傅抬拨熏拒腰伸蒂盐恍迈帘二隅撅谁竹仙朔闺软件工程习题参考答案第一章1什么是软件危机?产生原因是什么?软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛
4、盾,导致了软件危机。产生原因: 软件规模越来越大,结构越来越复杂。 软件开发管理困难而复杂。 软件包开发费用不断增加。 软件开发技术落后。 生产方式落后,仍采用手工方式。 开发工具落后,生产率提高缓慢。2什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软
5、件管理学,软件经济学,软件心理学。3软件工程面临的问题是什么?软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。4什么是软件生存周期?它有哪几个活动?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。5什么是软件生存周期模型?有哪些主要模型?生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。主要有:瀑布模型
6、,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。第二章1.可行性研究的任务是什么?可行研究的任务:首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。主要从三个方面考虑:.技术可行性:一般要考虑的情况包括 开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;.经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。.社会可行性:要开发的项目是否存在
7、任何侵权问题,运行方式在用户组织内是否可行,现有管理制度人员素质操作方式是否可行。 2.项目开发计划有哪些内容?.项目概述:说明项目的各项主要工作;说明软件的功能性能;为完成项目应具有的条件;用户及合同承包者承担的工作完成的期限及其他条件限制;应交付的程序名称;所使用的语言及程储形式;应交付的文档。.实施计划:说明任务的划分,各任务责任人,项目开发进度,项目的预算,各阶段的费用支出,各阶段应完成的任务,用图表说明每项任务的开始和完成时间。.人员组织及分工:所需人员类型数量组成结构。.交付期限:最后完工日期。第三章什么是需求分析?需求分析阶段的基本任务是什么? 需求分析:开发人员准确地理解用户的
8、要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。 基本任务: 问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。 分析与综合,导出软件的逻辑模型 编写文档:包括编写需求规格说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划 什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使
9、用结构化语言,判定表,判定树描述加工逻辑。 结构化分析方法通过哪些步骤来实现? 了解当前系统的工作流程,获得当前系统的物理模型。 抽象出当前系统的逻辑模型。 建立目标系统的逻辑模型。 作进一步补充和优化。 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。只反映系统必须完成的逻辑功能,是一种功能模型。5什么是数据字典?其作用是什么?共有哪些条目? 数据字典(DD)用来定义数据库流图中的各个成分的具体含义。有以下四类条目:数据流,数据项,数据存储,基本加工。具体条目内容及举例如下: 数据流条目 数据流名称:订单 别名:
10、无 简述:顾客订货时填写的项目 来源:顾客 去向:加工1检验订单 数据流量:1000份/每周(单位时间内的传输次数) 组成:编号+订货日期+顾客编号+地址+电话+银行帐号+货物名称+规格+数量 数据存储条目 数据存储名称:库存记录 别名:无 简述:存放库存所有可供货物的信息 组成:货物名称+编号+生产厂家+单价+库存量 组织方式:索引文件,以货物编号为关键字 查询要求:要求能立即查询 数据条目 数据项名称:货物编号 别名:G-No,G-num,Goods-No 简述:本公司所有货物的编号 类型:字符串 长度:10 取值范围及含义: 第一位:进口/国产 第2-4位:类别 第5-7位:规格 第8-
11、10位:品名编号 加工条目 加工名:查阅库存 编号:12 激发条件:接收到合格订单时 优先级:普通 输入:合格合格订单 输出:可供货订单,缺货订单 加工逻辑:根据库存记录 IF 订单项目数量该项目库存量临界值 THEN 可供货处理 ELSE 此订单缺货,登录,待进货后再处理 ENDIF 6描述加工逻辑有哪些工具? 加工逻辑的描述:一般用结构化语言,判定表,判定树 结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它的结构可分里层和内层 外层:用来描述控制结构,采用顺序,选择,重复三种基本结构。 顺序结构:是一组祈使语句,选择语句,重复语句的顺序排列 选择结构:一般用IF-THEN-EL
12、ASE-ENDIF,CASE-OF-ENDCASE等关键词。 重复结构:一般用DO-WHILE-ENDDO,REPEAT-UNTIL等关键词。 内层:一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其 动词含义要具体,尽量不使用形容词和副词来修饰。 例:加工逻辑描述为,如果申请者的年龄在21岁以下,要额外收费;如果申请者是21岁以上并是26岁以下的女性,适用于A类保险;如果申请者是26岁以下的已婚男性,或者是26岁以上的男性,适用于B类保险;如果申请者是21岁以下的女性或是26岁以下的单身C类保险。附此之外的其他申请者都适用于A类保险。 7简述SA方法的优缺点。 SA方法
13、是软件需求分析中公认的,有成效的,技术成熟,使用广泛的一种结构化分析方法。较适用于开发数据处理类型软件的需求分析。利用图形等半形式化工具表达需求,简明,易读,也易于使用。但也存在一些弱点,表现如下: SA方法仅是一个静态模型,没有反映处理的顺序,即控制流程。 SA方法使用DFD在分析与描述数据要求方面是有局限的,只有与数据库技术中的实体联系图(ER图)结合起来,才能较完整地描述用户对系统的需求。 DFD不适合描述人机界面系统的要求,一些人机交互较频繁的软件系统。 SA方法要与形式化方法结合起来,才能更精确地描述软件需求。 要借助需求分析工具,提高需求分析的质量及效率。 8.某银行的计算机储蓄系
14、统功能是:将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名住址存款类型存款日期利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。请用DFD,IDEF0描绘该功能的需求,并建立相应数据字典。 答: 数据流名称:取款单、存款单别名:无简述:顾客存/取款时填写的单据来源:顾客去向:核查数据流量:200份/天组成:日期取|存款金额姓名地址存/取款类型+密码账号 数据流名称:存款凭证别名:无简述:顾客存款后得到的凭据来源:银行存款系统去向:顾客数据流量:200份/天组成:日期存款金额储户姓名储户地址存款类型账号利率操作员 数据流名称:结算单别名:无简述:顾客取款时
15、得到的利率清单来源:银行储蓄系统去向:顾客数据流量:200份/天组成:取款日期取款金额储户姓名储户地址存款类型+利息总金额操作员数据流名称:存/取款信息别名:无简述:系统检查确认后得到的存/取信息来源:银行储蓄系统去向:登录数据流量:200份/天组成:日期存|取款金额储户姓名储户地址存款类型+账号利率密码操作员数据流名称:付款信息别名:无简述:存储系统处理的取款信息来源:银行储蓄系统去向:付款处理数据流量:200份/天组成:日期取款金额储户姓名储户地址存款类型+账号利息总金额操作员数据存储名称:账卡别名:无简述:存放用户信息及存取款情况组成:储户姓名储户地址账号|日期|存/取款金额+存款类型利
16、率密码操作员组织方式:数据文件,以储户姓名或账号为关键字进行索引查询要求:要求能立即查询并修改 数据项名称:存款类型别名:无简述:国家规定的几类存款方式类型:字符串长度:2位取值范围及含义:00:定期; 01:零存整取;10:活期;11:定/活两便 加工名:核查编号:激发条件:接受存款单或取款单输入:存款单或取款单输出:认定的合格的村/取款信息加工逻辑:根据账卡及用户存/取款单据if 单据存款单 then存款单据是否填写规范,是否与现金一致else 审核是否为有效取款单,取款金额不得超出存款金额,密码是否正确 9某图书管理系统有以下功能: 借书:输入读者借书证。系统首先检查借书证是否有效,若有
17、效,对于第一次借书的读者,在借书证上建立档案。否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件。) 还书:从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理。否则,修改库存目录与借书文件。 查询:通过借书文件,库存目录文件查询读者情况图书借阅及库存情况,打印统计表。 解:数据字典数据流名称:借书别名:借书单简述:读者借书时填写的单据来源:读者去向:审核借书数据流量:250份/天组成:借书证编号借阅日期书名借阅方式密码借阅人 数据流名称:还书别名:无简述:读者还书时附带的数据来
18、源:读者去向:审核还书数据流量:250份/天组成:借书证编号借阅日期书名借阅方式数据存储名称:借书文件别名:无简述:借书证编号借阅日期书名借阅方式密码借阅人操作员查询要求:要求能立即查询并修改数据存储名称:库存文件别名:无简述:存放图书出/入库信息组成:书名出版社作者出版日期入库数据总数量(内容简介)当前库存量组织方式:数据文件,以书名为关键字进行索引查询要求:要求能立即查询并修改加工名:审核借书证编号:1.1激发条件:接受到借书证输入:借书证输出:认定合格的借书证加工逻辑:根据借书文件及读者借书证if 借书证编号在借书文件存在 and 未过期 and 密码正确 then 借书证有效else
19、借书证无效 10某厂对部分职工重新分配工作的政策是:年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工。20岁至40岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员。年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员。请用结构化语言判定表或判定树描述上述问题的加工逻辑。 结构化语言: CASE 年龄20 CASE 文化程度 初中 分配工种 脱产学习 CASE 文化程度 高中 分配工种 电工ENDCASECASE 年龄=20 CASE 文化程度 初中.OR.高中 CASE 性别 男 分配工种 钳工 CASE 性别 女 分配工种 车工 ENDCASE EN
20、DCASE CASE 文化程度 大学 分配工种 技术员 ENDCASEENDCASECASE 年龄40 CASE 文化程度 初中.OR.高中 分配工种 材料员 CASE 文化程度 大学 分配工种 技术员 ENDCASEENDCASE 第4章1. 什么是软件概要设计?该阶段的基本任务是什么?把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:设计软件系统结构,具体为:采用某种设计方法,将一个复杂的系统按功能划分为模块。确定每个模块的功能。 确定模块之间的调用关系。 确定模块之间的接口(模块之间传递的信息) 评价模块的结构质量 进行数据结构及数据库的设计编
21、写概要设计的文档 主要内容有:概要设计说明书,数据库说明书(DBMS的简介,概念模型,逻辑设计,结果)用户手册,修订测试计划(测试的策略方法步骤)评审:是否完整地实现了规定的功能性能要求。设计方案是否可行。关键的处理及内部接口定义的正确性,有效性,各部分的一致性。2软件设计的基本原理包括哪些内容?模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成 整体,可以满足问题的要求。模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。(可降低复杂度、减少工作量)模块具有以下几种特性:接口:模块的输入输出。 功
22、能:指模块实现什么功能。逻辑:描述模块内部如何实现要求及所需的数据。 状态:该模块的运行环境,模块间调用与被调用关系。 抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。 信息隐蔽:将模块实现自身功能的细节与数据隐蔽起来。模块间仅交换为完成系统功能所必须的信息。模块独立性:每个模块只完成系统要求的独立的子功能。 3衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合 内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。 耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立
23、性越差,以低耦合为设计目标。 4模块的耦合性有哪几种?各表示什么含义?内容耦合:一个模块直接操作或修改另一模块的数据,或者不通过正常入口直接转入 另一模块公共耦合:两个或多个模块通过共同引用一个全局数据环境相互作用 控制耦合:模块之间通过传递控制信息相互作用标记耦合:两个模块之间通过传递公共指针或地址相互作用的耦合数据耦合:模块之间通过传递数据交换信息 无耦合:模块间无任何关系,独立工作 5模块的内聚性有哪几种?各表示什么含义? 偶然内聚:一个模块各个成分之间毫无关系 逻辑内聚:将几个逻辑上相关的功能放在同一个模块中 时间内聚:一个模块完成的功能在同一时间执行 过程内聚:一个模块内部的处理成分
24、是相关的,而且必须以特定的次序执行通信内聚:一个模块的所有成分都集中在同一个数据结构上 顺序内聚:一个模块的各个成分同一个功能密切相关,而且一个成分的输出,作为另外一个成分的输入功能内聚:模块内的所有成分属于一个整体,完成单一的功能。(内聚最高)6什么是软件结构?简述软件结构设计的优化准则。 改进软件结构,提高模块独立性 首先设计出软件初始结构,评价该结构,通过模块分解或合并,力求降低耦合提高内聚。模块的规模应该适中模块结构的深度、宽度、扇出和扇入应适中 深度:软件结构中控制的层数 宽度:软件结构中同一层次上最大模块总数 扇入:某一模块有多少直接调用它的上级模块数目(越大越好) 扇出:一个模块
25、直接控制(调用)下级模块的数目。(越少越好,3,4个为宜,不超过9个,顶层扇出较高,中间扇出较少,底层模块高扇入多一个模块的作用域(范围),应处在这个模块的控制域(范围)之内 模块的作用域:受该模块内一个判定影响的所有模块的集合 模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合7什么样是事物流?什么是变换流?试将相应形式的数据流图转换为软件结构图数据流图(DFD)一般可分为变换流,事物流两种。变换流:由输入输出变换(或称处理)三部分组成,是一顺序结构。事物流:它的某个加工,分离成许多发散的数据流,形成许多加工路径,并且根据输入值选择其中一个路径来执行。(这人加工称为事务处理中心
26、)8.图是某系学籍管理的一部分,(a),(b)分别是同一模块A的两个不同设计方案,你认为哪一个设计方案较好?请陈述理由。答:我认为(b)方案较好。要评价一个软件结构设计,主要看模块的独立性,要从软件结构的耦合性和内聚性两个方面来衡量。对于(a)方案,模块A与模块B之间形成了控制耦合,因此独立性不高,而在B模块内部,有两个不同的功能被放在一起,形成的是逻辑内聚,内聚性不高。对于(b)方案,模块A与B1和B2之间是数据耦合,独立性较强,在B1和B2内部,只完成单一的功能,是功能内聚,因此内聚性高,可维护性好,因此相比而言(b)方案比(a)方案更好些。9.请将图4-16的DFD转换为软件结构图。(注
27、:图中表示或者)解:我们可以看出主图是变换型DFD,而子图是事务型DFD。根据结构设计的方法,得到的结构图如下:10.将第3章习题中的第8题、第9题设计成相应的软件结构图(SC)和HIPO图。某银行的计算机储蓄系统功能是:将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名住址存款类型存款日期利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。2、某图书管理系统有以下功能:借书:输入读者借书证。系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书证上建立档案。否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借
28、书(检查库存,修改库存目录并将读者借书情况录入借书文件。)还书:从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理。否则,修改库存目录与借书文件。(3)查询:通过借书文件,库存目录文件查询读者情况图书借阅及库存情况,打印统计表。把上面数据流程图转换为软件结构图和IPO图第5章1、详细设计的基本任务是什么,有哪几种描述方法?答:详细设计的基本任务包括:1、为每个模块进行详细的算法设计 2、为模块内的数据结构进行设计 3、对数据库进行物理设计 4、其他设计 5、编写详细设计说明书 6、评审 详细设计的描述方法有图形、表格和语言,其中图形常用结构化程序流程图、盒图和PAD(问
29、题分析图)为描述工具,语言常用过程设计语言(PDL)来作为工具。 2、结构化程序设计的基本要点是什么?答:主要有三个:1、采用自顶向下、逐步求精的程序设计方法 2、使用三种基本控制结构构造程序。任何程序都可以由顺序、选择、重复(循环)三种基本控制结构构造,这三种基本结构的共同点是单入口、单出口。 3、主程序员组的组织形式。 3、简述Jackson方法的设计步骤。答:Jackson方法的设计步骤如下:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。 (3)按一定的规则由输入、输出的数据结构导出程
30、序结构。 (4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。 (5)用伪码写出程序。 4、请使用流程图、PAD图和PDL语言描述下列程序的算法。(1)在数据A(1)A(10)中求最大数和次大数。解:如图所示:PDL语言描述:GET(a1,a2,.a10)max=a1;max2=a2;FOR i=2 TO 10IF aimaxmax2=max;max=ai;ELSE IF aimax2max2=ai;ENDIFENDIFENDFORPUT(max,max2)END(2)输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形。解:如图:PDL语言描述如下:GET(a
31、,b,c)IF (a+bc and b+ca and c+ab)IF (a=b)IF (a=c)PUT(等边三角形)ELSEPUT(等腰三角形)ENDIFELSE IF(a=c)PUT(等腰三角形)ELSEIF (b=c)PUT(等腰三角形)ELSEPUT(一般三角形)ENDIFENDIFENDIFELSEPUT (这不是一个三角形)ENDIF5、用PAD图描述下面问题的控制结构。有一个表A(1)、A(2)、.A(n),按递增顺序排列。给定一个Key值,在表中用折半法查找。若找到,将表位置i送入x,否则将零送到x,同时将key值插入表中。算法: (1)置初值H=1(表头),T=N(表尾)。 (
32、2)置i=(H+T)/2(取整)。 (3)若Key=A(i),则找到,i送到x;若KeyA(i),则Key在表的后半部分,i+1送入H;若KeyT为止。 (4)查不到时,将A(i),.A(N)移到A(i+1).A(N+1),Key值送入A(i)中。 解:如图所示:6、一个正文文件由若干记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数。要求输出数据格式是每复制一行字符串后,另起一行打印出这个字符串中的空格数,最后打印出文件空格的总个数,用Jackson方法设计该程序结构。第6章1、在项目开发时选择程序设计语言通常考虑哪些因素?答:通常要考虑的因素有:项目的
33、应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。2、举例说明各种程序设计语言的特点及适用范围?答:以常见的一些编程语言为例:FORTRAN语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算 Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写 C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有
34、较大优势。 Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。 SQL:结构化查询语言,用于对数据库进行存取管理。 汇编语言和Ada语言,主要用于实时处理和编写系统软件。 Prolog、Lisp语言。Lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。 C+、Java语言,是面向对象的设计语言,用于面
35、向对象的方开发软件。 3、什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。第7章1、软件测试的目的是什么?软件测试中,应注意哪些原则?答:软件测试的目的是为了发现软件的错误。软件测试中应注意的原则有:(1)测试用例应由输入数据和预期的输出数据两部分组成。这样便 于对照检查,做到有的放矢。 (2)测试且例不仅选用合理输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数
36、据,程序应拒绝接受,并给出相应的提示。 (3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。 (4)应制定测试计划并严格执行,排除随意性。 (5)长期保留测试用例。 (6)对发现错误较多的程序段,应进行更深入的测试。 (7)程序员应避免测试自己的程序。测试是一种挑剔性的行为,心理状态是测试自己程序的障碍。 2、什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行比较?答:白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与
37、预期的状态是否一致。白盒法有下列几种覆盖标准:语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。3、什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点?答:黑盒测试法把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。采用黑盒技术测试用例的方法有:等价类的
38、划分、边界值分析、错误推测和因果图。等价类的划分,是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率。但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例。边界值分析法一般与等价类划分结合起来。但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据。(边界情况是指输入等价类和输入等价类边界上的情况。)这种方法可以查出更多的错
39、误,因为在程序中往往在处理边界情况时易发生错误。错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例。因果图能够有效地检测输入条件的各种组合可能会引起的错误。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用。综合策略:就是联合使用上述几种测试方法,尽可能多地发现程序中的错误。4、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?答:软件测试要经过的步骤是:单元测试集成测试确认测试系统测试。单
40、元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。5、单元测试有哪些内容?测试中采用什么方法?答:单元测试主要针对模块的以下五个基本特征进行测试:(1)模块接口 (2)局部数据结构 (3)重要的执行路径 (4)错误处理 (5)
41、边界条件 测试的方法是为被测试模块编写驱动模块和桩模块来实现被测试单元的可运行。通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结构并输出。桩模块则用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。6、什么是集成测试?非渐增式测试与渐增式测试有什么区别? 渐增式测试如何组装模块?答:集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。非渐增式测试是指首先对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试。而渐增式测试就是逐个把未经测试的模块组装到已经过测试的模块上去进行
42、集成测试,每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。渐增式测试有两种不同的组装方法:自顶向下和自底向上结合。两者区别是:(1)非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试和集成测试合在一起,同时完成。(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少。(3)渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。(4)渐增式有利于排错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难
43、判断是哪一部分接口出错。(5)渐增式比较彻底,已测试的模块和新的模块再测试。(6)渐增式点用时间较多,但非渐增式所需更多的驱动模块和桩模块也占用一些时间。(7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。7、什么是确认测试?该阶段有哪些工作?答:确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。因而需求说明是确认测试的基础。确认测试阶段有两项工作:进行确认测试与软件配置审查。8、调试的目的是什么?调试有哪些技术手段?答:调试则是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为
44、纠错(Debug)。调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等。9、将正确答案的编号填入题目空白处:在白盒测试用例中,有语句覆盖、条件覆盖、判定覆盖、路径覆盖等,其中(A)是最强的覆盖准则。为了对下图所示的程序进行覆盖测试,必须适当地选取测试数据。若X,Y是两个变量,可供选择的测试数据组共有I,II,III,IV四组(如表中给出),则实现语句覆盖至少应采用的测试数据组是(B);实现条件覆盖至少应采用的测试数据组是(C);实现路径覆盖至少应采用的测试数据组是(D)或(E)。可供选择的答案:A:(1)语句覆盖 (2)条件覆盖 (3)判定覆盖 (4)路径覆盖BE:(1)I和II组 (2)II和III级 (3)III和IV组 (4)I和IV组 (5)I、II和III组
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100