1、本科自考 02333 软件工程课后习题答案第一章 概述 1.软件产品的特性是什么? a.软件产品是一种逻辑产品。 b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。 c.软件产品不会用坏,不存在磨损、消耗问题。 d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是“定做“ 的。 e.软件费用不断增加,成本相当昂贵。 2.软件产品有几个阶段?各有何特征? 阶段 A.程序设计时代 (1946-1956) B.程序系统时代(1956-1968) C.软件工程时代(1968-今) 生产方式 个体手工劳动 小集团合作生产
2、工程化的生产 工具 机器语言、汇编 高级语言 数据库、开发工具、开发环境、网络、 分布式、面向对象技术 开发方法 追求编和技巧,追求程序运行效率 个人技巧,开始提出结构化方法 硬件特征 价格贵、存储容量小、运行可靠性差 速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长 向超高速、大容量、微型化以及网络化方 软件特征 只有程序、程序设计概念,不重视程序设计方法 程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生 开发技术有很大进步,但未能获得突破
3、性进展,软件价格不断上升,没有完全摆脱软件危机 3.什么是软件危机?其产生的原因是什么? 软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。 在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面: a.经费预算经常突破,完成时间一再拖延。 b.开发的软件不通满足用户要求。 c.开发的软件可维护性差。 d. 开发的软件可靠性差。 软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的: a.软件的规模越来越大
4、,结构越来越复杂。 b.软件开发管理困难而复杂。 c.软件开发费用不断增加。 d.软件开发技术落后。 e.生产方式落后。 f.开发工具落后,生产率提高缓慢。 4.什么是软件工程?它的目标和内容是什么? 软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。 软件工程的目标是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标: a.付出较低的开发成本; b.面到要求的软件功能; c.取得较好的软件性能; d.开发的软件易于移植; e.需要较低的维护费用; f.能按时完成开发任务,及时交付使用; g.开发的软件可靠性高; 软件工程的内容: ) 软件开发技术:软件开发方法、软件开发过
5、程、软件开发工具和环境。 ) 软件开发管理:软件管理学、软件经济学、软件心理学。 5.软件工程面临的问题是什么? 软件工程面临的问题: a.软件费用。b.软件可靠性。c.软件维护。d.软件生产率。e.软件重用。 6.什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等. 7.什么是软件生存周期模型?有哪些主要模型? 软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。 (模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也
6、是事物的一种抽象形式、一个规划、一个程式。 ) 软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等 9.什么是软件开发的方法?有哪些主要方法? 软件开发的方法:是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。主要方法:结构方法、Jackson 方法、维也纳开发方法() 、面向对象的开发方法。 第二章 软件可行性研究与项目开发计划 1.可行性研究的任务是什么? a.技术可行性: 考虑的因素(1).开发的风险(2)资源的有效性(3) 技术(4)开发人员在主段技术可行性时,一旦估计错误,将会出现灾难性后果。 b.经济可行性。 c.社会可行性。 2
7、、可行性研究有哪些步骤? a.确定项目规模和目标 b.研究正在运行的系统 c.建立新系统的高层逻辑模型 d.导出和评价各种方案 e.推荐可行的方案 f.编写可行性研究报告 3、可行性研究报告有哪些就要内容? a.引言 b.可行性研究前提 c.对现有系统的分析 d.所建议系统的技术可行性分析 e.所建议系统的经济可行性分析 f.社会因素可行性分析 g.其他可供选择方案 h.结论意见 4.成本- 效益分析可用哪些指标进行度量? 有形效益度量: a.货币的时间价值 b.投资回收期 c.纯收入 无形效益:主要从性质上、心理上进行衡量,很难直接进行量的比较。 通常以有形效益度量作为成本-效益分析的度量。
8、 5.项目开发计划有哪些内容? a.项目概述 b.实施计划 c.人员组织及分工 d.交付期限 第三章 软件需求分析 1.什么是需求分析?需求分析阶段的基本任务是什么? 需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。 需求分析阶段的基本任务是: (1) 问题识别:双方对问题的综合需求:a.功能需求 b.性能需求 c.环境需求 d.用户界面需求. (2) 分析与综合,导出软件的逻辑模型. (3) 编写文档 2.什么是结构化分析方法?该方法使用什么描述工具? 结构化分析方法:
9、是面向数据汉进行需求分析的方法。 描述工具:a、数据流图 b、数据字典 c、描述加工逻辑的结构化语言、判定表、判定树。3.结构化分析方法通过哪些步骤来实现? 结构化分析方法步骤: a.了解当前系统的工作流程,获得当前系统的物理模型. b.抽象出当前系统的逻辑模型. c.建立上标系统的逻辑模型. d.作进一步补充和优化. 4.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 数据流图:简称 DFD,是 SA(结构化分析) 方法中用于表示系统逻辑模型的一种工具,是一种功能模型。 作 用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能. 基本符号有四种: ,箭
10、头,表示数据流; ,圆或椭圆 ,表示加工; =,双杠,表示数据存储 ;,方框,表示数据的源点或终点. 5.画数据流图应该注意什么事项? 画数据流图注意事项: a.命名.不论是数据流数据存储还是加工,合适的命名使人们易于理解基含义 b.画数据流而不是控制流 c.一般不画物质流 d.每个加工到少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 e.编号 f.父图与子图的平衡 g.局部数据存储 h.提高数据流图的易理解性 6.什么是字据字典?其作用是什么?它有哪些条目? 字据字典:简称,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的无二义 性的说明方式为系统的分析设计
11、及维护提供了有关元素的一致的定义和详细的描述. 作 用:1)为系统的分析设计及维护提供了有关元素的一致的定义和详细的描述. 2)为分析人员查找数据流图中有关名字的详细定义而服务的. 3)它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分. 条 目:数据流、数据项、数据存储、基本加工。 7.描述加工逻辑有哪些工具? a,结构化语言 b,判定表 c.判定树 8.什么是 IDEF 方法?IDEF0 方法有什么特点? IDEF 方法:是美国空军在 1981 年针对集成化计算机辅助制造(Integrated Computer Aided Manufacturing,简称 ICAM)工程
12、项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。 IDEF 是 ICAM Definition 的缩写。 IDEF0 方法特点: a.采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束及实现机制。 b.采用严格的自顶向下、逐层分解的方式建立系统功能模型。 9、简述 SA 方法的优缺点。 优点: 1)公认的、有成效的、技术成熟、使用广泛的一种方法,比较适合于开发数据处理类型软件的需求分析。 2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、 评价提供了有利条件。 缺点: 1)传统的 SA 方法主要用
13、于数据处理方面的问题,主要工具 DFD 体现了系统“做什么“ 的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制系统。 2)SA 方法在使用 DFD 在分析与描述“数据要求“方面是有局限的。 3) DFD 不适合描述人机界面系统的要求。 4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA 方法可与形式方法结合起来。 10.某银行的计算机储蓄系统功能是:将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并打印出存款单给储户;如果是取款,系统计算清单储户。请用 DFD 和
14、IDEF0 描绘该功能的需求,并建立相应的数据字典。 (1)数据流条目: 数据流名称:存款单 别 名:无 简 述:储户存款时填写的项目 来 源:储户 去 向:记帐 数据 流 量:未知 组 成:姓名+住址+ 存款类型+ 存款日期+利率 数据流名称:取款单 别 名:无 简 述:储户取款时填写的项目 来 源:储户 去 向:统计 数据 流 量:未知 组 成:姓名+住址+ 取款类型+ 取款日期+利率 数据流名称:清单 别 名:无 简 述:储户取款后得到的项目 来 源:记录 去 向:储户 数据 流 量:未知 组 成:姓名+住址+ 取款类型+ 取款日期+利率+余额 (2)数据存储条目: 数据存储名称:账单
15、别 名:无 简 述:存放储户信息及其账目 组 成:姓名+住址+ 余额+存款类型 +最后修改日期+利率 组 织 方 式:未知 查 询 要 求:能立即查询 (3)数据项条目: 未知 (4)加工条目: 加工 名:分类检查 编 号:无 激发条件:接收到存/取款单 优 先 级:优先 输 入:存/取款单 输 出:存/取款单 加工逻辑:IF 存款单 THEN 把存款单输出到统计 ELSE 把取款单输出到统计 ENDIF 加工 名:统计 编 号:无 激发条件:取款单 优 先 级:无 输 入:取款单 输 出:清单 加工逻辑:根据账单检查此储户是否存在,不存在输出错误 IF 取款数=40 If 中学文化 Then
16、 材料员 else if 大学文化 Then 技术员 endif endif endif Until 没有剩余未分配员工 判定表 1 2 3 4 5 6 7 8 9 10 11 年龄 C C D D D D D E E E 文化 G H H G G H I G H I 性别 - - M M F F - - - - 脱产学习 电工 钳工 车工 技术员 材料员 条件取值表 条件名 取值 符号 取值数 年龄 20,=40 E 文化程度 中学 G M2=3 高中 H 大学 I 性别 男 M M3=2 女 F 附加题: 1、自学考试报名过程中有个“记录报名单”的加工。该加工主要是根据报名表( 姓名、 性
17、别、身份证号、课程名)和开考课程 (课程名、开考时间)、经校核,编号、填写、输出准考证给报名者,同时记录到考生名册中(准考证号、姓名、课程)。请绘制该加工的 DFD 图,并写出数据词典中的数据流条目。 答: 2、 “决定比赛名单” 这个加工,根据“ 运动员名单”和“比赛项目”产生 “项目参加者”, 如下图所示,运动员名单要包括所在队名,运动员编号号,运动员姓名,及参加的所有项目。请写出这三个数据流条目。 答: 运动员名单队名运动员号姓名项目 项目项目名 项目参加者项目名运动员号 3、某旅馆的电话服务如下: 可以拨分机号和外线号码。分机号是从 7201 至 7299。外线号码先拨 9,然后是市话
18、号码或长话号码。长话号码是以区号和市话号码组成。区号是从 100 到 300 中任意的数字串。市话号码是以局号和分局号组成。局号可以是 455,466,888,552 中任意一个号码。分局号是任意长度为 4 的数字串。 要求:写出在数据字典中,电话号码的数据条目的定义(即组成) 。 答: 电话号码=分机号外线号码 分机号=7201.7299 外线号码=9+ 市话号码长话号码 长话号码=区号+ 市话号码 区号=100.300 市话号码=局号+ 分局号 局号=455466888552 分局号=4数字4 第四章 软件概要设计 1.什么是软件概要设计?该阶段的基本任务是什么? 软件概要设计:在需求分析
19、的基础上通过抽象和分解将系统分解成模块,确定系统功能是实现,即把软件需求转换为软件包表示的过程。 基本任务: (1)设计软件系统结构(简称软件结构) a.采用某种设计方法,将一个复杂的系统按功能划分成模块(划分) b.确定模块的功能。 (功能) c.确定模块之间的调用关系。 (调用) d.确定模块之间的接口,即模块之间传递的信息。 (接口) e.评价模块结构的质量。 (质量) (2)数据结构及数据库设计 a.数据结构设计 b.数据库设计:(概念设计、逻辑设计、物理设计) (3)编写概要设计文档(文档主要有:概要设计说明书、数据库设计说明书、用户手册、修订测试计划) (4)评审 2.软件设计的基
20、本原理包括哪些内容? 软件设计的基本原理: (1)模块化(四个属性:接口、功能、逻辑、状态) (2)抽象 (3)信息隐蔽 (4)模块独立性(两个定性的度量标准:耦合性与内聚性 ) 3.衡量模块独立性的两个标准是什么?它们各表示什么含义? 两个定性的度量标准:耦合与内聚性 耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。 内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。 4.模块间的耦合性有哪几种?它们各表示什么含义? 耦合性有六种:无
21、直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合 无直接耦合:两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。 (无直接关系) 数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。 (数据值 ) 标记耦合:指两个模块之间传递的是数据结构。 (数据结构 ) 控制耦合:指控制模块调用另一个模块时,传递的是控制变量,被调用块通过该控制变量的值有选择地执行块内某一功能(控制变量 ) 公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。 (一个公式数据环境) 内容耦合:一个模块直接使用另一个模块的内部数据,或通过非
22、正常入口而转入另一个模块内部 (内部数据 ) 5.模块的内聚性有哪几种?各表示什么含义? 模块间的内聚性有 6 种:偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚。 偶然内聚:一个模块内的各处理元素之间没有任何联系。 逻辑内聚:模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 时间内聚:把需要同时执行的动作组合在一起。 通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或产生相同的输出数据。 顺序内聚:一个模块中各处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出是下一功能元素的输入。 功能内聚:最强的内聚,指模块内
23、所有元素共同完成一个功能,缺一不可。 6.什么是软件结构?简述软件结构设计优化准则。 软件结构:软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制体系。 软件结构设计优化准则: a.划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,以此为原则优化初始的软件结构。 b.一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近 c.软件的深度、宽度、扇入、扇出应适当。 D.模块的大小要适中。 E.模块的控制范围模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。 7.什么是模块的影响范围?什么是模块的控制范围?它们之间应该建立什么
24、关系? 模块的影响范围:受该模块内的一个判定影响的所有模块的集合。 模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。 一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。 8.什么是“变换流 “?什么是“事务流“?试将相应形式的数据流图转换成软件结构图。 变换流由输入、变换(或处理) 、输出三部分组成。某个加工将它的输入流分离成许多发散 的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行这种特征的 DFD 称为事物流。 9.试述“变换分析 “,“事务分析“的设计步骤。 变换分析: a.确定 DFD 中的变换中心。 b.
25、设计软件结构的顶层和第一层-变换结构。 c.设计中下层模块。( 输入模块下属模块的设计,输出模块下属模块的设计 ,变换模块下属模块的设计,设计的优化) 事务分析: a.确定 DFD 中的事务中心和加工路径。 b.设计软件结构的顶层和第一层-事务结构。 (接收、发送给支) c.事务结构中、下层模块的设计、优化工作同变换结构。 附加: 2、已知模块 C 中的一个判定影响到模块 B,如图所示,它违反了 SD 的设计原则。试问: 可以采用哪些手段对结构图作改进,请说明改进办法并画出改进的结构图。 3、已知有一抽象的 DFD 图如下所示,请用 SD 方法画出相应的结构图。 答: 4、高考录取统分子系统有
26、如下功能: (1) 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件; (2) 计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。 试根据要求画出该系统的数据流程图,并将其转换为软件结构图。 答: (1) 数据流图: (2) 软件结构图: 5、图书馆的预定图书子系统有如下功能: (1) 由供书部门提供书目给订购组。 (2) 订书组从各单位取得要订的书目。 (3) 根据供书目录和订书书目产生订书文档留底。 (4) 将订书信息(包括数目,数量等 )反馈给供书单位。 (5) 将未订书目通知订书者。 (6) 对于重复订购的书目由系统自动检查,并把结果反馈给订书
27、者。 试根据要求画出该问题的数据流程图,并把其转换为软件结构图。 答: (1) 数据流图: (2) 软件结构图: 6、在结构化设计过程中,要将数据流图(DFD)映射成系统结构图(SC), 分别画出变换型数据流和事物型数据流的映射方式。 答: 变换型 事务型 第五章 软件详细设计 1.详细设计的基本任务是什么?有哪几种描述方法? 详细设计的基本任务: (1)为每个模块进行详细的算法设计。 (2)为每个模块内的数据结构进行设计。 (3)对数据库进行设计,即确定数据库的物理结构。 (4)其他设计: a.代码设计 b.输入/输出格式设计。 c.人机对话设计。 (5)编写详细设计说明书。 (6)评审。
28、描述方法(三种): a.程序流程图 b.PAD 图 C.过程设计语言 2.结构化程序设计基本要求要点是什么? a.采用自顶向下、逐步求精的程序设计方法 b.使用三种基本程序控制结构构造程序 1).用顺序方式对过程分解,确定各部分的执行顺序。 2).用选择方式对过程分解,确定某个部分的执行条件。 3).用循环方式对过程分解,确定某个部分重复的开始和结束的条件。 c.主程序员组的组织形式。 3.简述 Jackson 方法的设计步骤。 Jsp 方法一般通过以下 5 个步骤来完成设计: a.分析并确定输入/出数据的逻辑结构,并用 Jackson 结构图表示这些数据结构。 b.找出输入数据结构和输出数据
29、结构中有对应关系的数据单元。 c.按一定的规则由输入、输出的数据结构导出程序结构。 d.列出基本操作与条件,并把它们分配到程序结构图的适当位置。 e.用伪码写出程序。 4.请使用流程图、PAD 图各 PDL 语言描述下列程序的算法。 (1)在数据 A( 1)-A(10)中求最大数和次大数。 (2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。 答: (1) 1)流程图: 2)PAD 图 3)PDL 语言 定义 n1=n2=0 输入 A(1).A(10) n1=n2=A(1) while i10 if A(i)=n1 n2=n1 n1=A(i) end while 5
30、.用 PAD 图描述下面问题的控制结构。 有一个表 A(1)、A(2) 、A(n),按递增顺序排列。给定一个 Keyw 值,在表中用折半查找。若找到将表位置 i 送入 x,否则将零送到 x,同时将 Key 值插入表中。 算法: 1)置初值 H=1(表头),T=N(表尾) 。 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.一个正文文件由若干记录组成,每个记录是一个
31、字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数。要求输出数据格式是每复制一行这符串后,另起一行打印出这个字符中的空格数,最后打印出文件空格的总个数,用 Jackson 方法设计该程序结构。 附加题: 1、假设对顾客的订货单按如下原则处理: 将顾客的信用度分三个档次: 欠款时间不超过 30 天; 欠款时间超过 30 天但不超过 100 天; 欠款时间超过 100 天。 对于上述三种情况,分别根据库存情况来决定对顾客订货的态度。 情况之一(欠款时间30 天),如果需求数库存量,则立即发货,如果需求数 库存量,则只发现有库存,不足部分待进货后补发。 情况之二(30 天库存量,则不发
32、货。 情况之三(欠款时间100 天),则通知先付欠款,再考虑是否发货。 试用判定树的形式予以描述(设欠款时间 D,需求数 N,库存量 Q)。 答: 2、用 Jackson 图表示下图所示的二维表格: 答: 3、有一过程,其流程如下图所示。 其中 b1 、b2、 b3 为判定的逻辑条件,s1、 s2 为加工处理。试用判定表给予描述。 答: 4、1、有一过程如下图所示的流程,试用判定表予以描述。 1 2 3 4 条件 b1 F T T T b2 F F T b3 F T 结果 s1 s2 第六章 软件编码 1、程序语言有哪些共同特征? 答:程序语言的共同特征(似为特性更符合题意 )是指程序设计语言
33、的语言特性,包括心理特性、工程特性和技术特性三个方面。语言的心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功一否有重要的影响,此外,语言的技术特性也会影响软件设计的质量。 2、在项目开发时选择程序设计语言通常考虑哪些因素? 答:通常要考虑的因素有: 项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。 3、第 4 代语言(4GL)有哪些主要特征 ? 答:4GL 的主要特征是: (1)友好的用户界面 (2)兼有过程性和非过程性双重特性 (3)高效的程序代码 (4)完备的数据库 (5)应用程序生成器 4、举例说明各种程序设计语言的特点及
34、适用范围? 答:以常见的一些编程语言为例: FORTRAN 语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算 Pascal 语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写 C 语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。 Coble 语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨
35、层次分明,广泛用于商业数据处理。 SQL:结构化查询语言,用于对数据库进行存取管理。 汇编语言和 Ada 语言,主要用于实时处理和编写系统软件。 Prolog、Lisp 语言。Lisp 是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog 是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。 C+、Java 语言,是面向对象的设计语言,用于面向对象的方开发软件。 5、什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题? 答:程序
36、设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。 要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。 第七章 软件测试 1、软件测试的目的是?测试中要注意那些原则? 软件测试 答:软件测试的目的是的发现软件中存在错误的活动。好的测试用例可以发现至今没有发现的错误、好的测试用例可以发现至今没有发现的错误测试。要提供输入数据还要提供输出数据、保留测试用例、检查它是否做了应该做的还要检查它是否做了不该做的、避免自己测试自己的程序、多错误多的地方要更严格的测试。 2、什么是白盒法?有那些覆盖标准?比较他们的检错能力。 答:将程序看成是白
37、盒子,认真的分析程序的结构和功能制定测试用例来测试。有逻辑覆盖(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖) 3、什么是黑盒法?有那些测试方法?特点? 答:将程序当成是黑盒子以设计中的功能为标准在程序的接口出进行测试看它能否达到功能要求。等价类划分、边界值分析、因果图、错误推测。 4、软件测试要经过那些步骤?这些步骤和开发那些阶段对应? 答:单元测试对应详细设计和编码、集成测试对应概要设计、确认测试对应需求分析。 5、单元测试有那些内容? 答:测试模块的接口、数据结构、重要的执行路径、错误处理、边界条件。 6、什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装
38、模块? 答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。 渐增式组装模块有自顶向下和自底向上两种组装方式。 7、什么是确认测试?该阶段有那些工作? 答:按照需求规格说明书中的确定指标对系统进行功能与性能的测试。进行确认测试(对照需求规格说明书用黑盒法进行测试) 、软件配置检查。 (文档的完整性、
39、正确性,发现遗漏和错误及时补充和修改) 8、 调试的目的是什么?调试的技术有那些? 答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。 附加题: 1、对下列子程序进行调试: procedure example(y,z: real; var x: real) begin if (y1) and (z=0) then x:=x/y; if (y=2) or (x=l) then x:=x+l; end. 该子程序接受 x, y, z 的值,并将计算结果 x 的值返回给调用程序。答题要求: (1)画出流程图。 (2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准
40、、预期结果以及路径。 答:(1)流程图 (2)用白盒法中条件组合覆盖设计测试用例: y=2, z=0, x=4; y=2, z=1, x=1; y=1, z=0, x=2; y=1, z=1, x=1. 2、某报表处理系统要求用户输入处理报表的日期,日期限制在 2003 年 1 月至 2008 年 12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的 6 位数字字符组成,前四位代表年,后两位代表月。现要求用黑盒测试法中的边界值法写出测试用例。 答: 输入条件 测试用例说明 测试数据 报表日期的 1 个数字字符 5 类型及长度 5 个数字字
41、符 20035 7 个数字字符 2003005 有 1 个非数字字符 2003.5 全部是非数字字符 MAY- 6 个数字字符 200305 日期范围 在有效范围 200301 边界上选取 200812 数据 200300 200813 月份范围 月份为 1 月 200301 月份为 12 月 200312 月份12 200313 3、对以下程序进行测试: PROCEDURE EX(A,B:REAL;VAR X:REAL) ; BEGIN IF(A=3)OR (B 1)THEN X:=AB IF(A2)AND(B=0)THEN X :=A3 END 先画出程序流程图。 再按不同逻辑覆盖法设计一
42、种(写出名称)测试数据。 答: 语句覆盖 A=3 B=0 4、程序功能说明书指出,某程序的输入条件为:每个学生可以选修 1 至 3 门课程,试用黑盒法设计测试用例。 (1)按等价分类法设计测试用例(要求列出设计过程) (2)按边缘值分析法设计测试用例。 答: 1)合理等价类 选修 1 门 选修 2 门 选修 3 门 不合理等价类 没选课 选 3 门以上 测试用例 选修2 选修0 选修3 2) 边缘值法 0,1,3,4 5、设被测试的程序段为: begin s1 ; if (x=0) and (y2) then s2; if (x1) or (y=1) then s3 ; s4 ; end 可供
43、选择的测试数据组为: x y 0 3 1 2 -1 2 3 1 找出实现(1)语句覆盖;(2)条件覆盖;(3)判定覆盖至少要选择的数据组。 答:(1) (2) , (3) , 第八章 软件维护 1、软件维护有哪些内容? a、校正性维护 b、适应性维护 c、完善性维护 d、预防性维护 2.软件维护的特点是什么? a、非结构化维护和结构化维护 b、维护的困难性 c、软件强维护的费用 3.软件维护的流程是什么? a、制定申请维护报告 b、审查申请报告并批准 c、进行维护并作详细记录 d、覆审 4.软件维护的副作用有哪些? 编码、数据、文档副作用 5.什么是软件的可维护性?可维护性的度量的特性是什么?
44、 软件的可维护性:软件能够被理解、校正、适应及增强功能的容易程度。 可维护性的度量的特性是:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。 6.提高可维护性的方法有哪些? A、建立明确的软件质量目标。 B、利用先进的软件开发技术和工具。 C、建立明确的质量保证工作。D、选择可维护的程序设计语言。 E、改进程序文档。 第九章 软件开发的增量模型1、 渐增模型有那几种?特点? 答:增量构造和演化提交。增量构造是瀑布模型的基础上在一些的阶段中采用增量开发一些阶段整体开发。演化提交是在瀑布模型的基础上所有阶段都使用增量开发也就是不紧使用增量开发也使用增量提交。 2、 快速原形有那几种
45、?特点? 答:探索型、试验型、演化型。探索型:在需求阶段帮助明确理解需求用完抛弃。试验型:在设计阶段考核现行方案是否合适用完抛弃。演化型:及早的向用户展示一个系统的原形包含主要的功能得到用户的认可后将原形不断的扩充直到系统完成。 3、 快速原形开发的步骤? 答:快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。 4、 评价快速原形的优缺点? 答:可以更清楚的理解用户的需求、开发阶段可以用原形解决局部的困难,通过原形的开发可以让用户看见系统的初步功能的实现有利与用户的开发人员更好的交流,及早的解决存在的问题减少开发的风险。 缺乏好的管理工具和开发环境、缺乏管理机制、对开发人员的技术要
46、求高、更新文档比较困难。 5、 对比瀑布模型和增量模型,指出增量模型的新思路。 答:瀑布模型是一种整体的开发模型,开发的每一阶段必须按线性的顺序来进行,前一阶段的工作没有完成后一阶段的工作就不能开始。由于需求分析的易变性使的软件开发工作不顺利,同时瀑布模型的每个阶段有不可避免的错误出现,那么延伸到以下的各个阶段错误就会放大。增量模型是非整体开发的模型它采用渐增模型和原形模型,软件的开发是用增量开发和增量提交。 第十章 面向对象的方法 1、 说明对象、类、类结构、消息的基本概念? 答:对象:是客观实体在问题域中的抽象。 类:具有相似或相同性质的对象的抽象就是类。 类结构:类的结构通常有一般-具体
47、(分类结构)整体- 抽象(组装结构) 消息:对象之间通信的构造。 2、 面向对象的特征和要素? 答:特征:一致性、多态性、分类性、继承性。要素:共享、封装、抽象。 3、 说明对象模型的特征? 答:对象模型表示了静态的、结构化的、系统数据性质,描述了系统的静态结构,表现了对象间的相互关系,模型主要关心系统中对象的结构、属性和操作使用对象图来描述。 4、 说明动态模型的特征。 答:动态模型描述了与时间和变化有关的系统性质,描述的是系统的控制结构,表示了瞬间的系统控制性质,它关心系统的控制,操作顺序,从对象的状态角度出发表现对象的相互行为。 5、 功能模型的特征。 答:功能模型描述了系统的所有计算。
48、 6、 三种模型的关系? 答:功能模型描述发生了什么,动态模型确定什么时候发生,对象模型确定发生的客体。 7、 三种模型的建立过程? 答:对象模型:确定类、准备数据字典、确定联系、确定属性、完善对象模型。 动态模型:准备脚本、准备事件跟踪、构造状态图。 功能模型:确定输入输出值、建立 DFD。 附加题: 1、 一本书有一个封面、一个目录、一个前言、若干章、每章有若干节、每节有若干段每段有若干句子、每节有 0 个或多个插图,还有 0 个或多个表格,最后有一个附录。试建立该书的对象模型。 答: 第十一章 软件质量与质量保证 1、 软件质量与质量保证的含义? 答:软件质量:与确定的功能和性能需求一致
49、、与成文的开发标准相一致、与所有专业开发的软件所期望的隐含特性相一致。质量保证:向社会和用户提供满意高质量的产品确保软件从诞生到消亡为止的所有阶段的质量的活动。 2、 影响软件质量的因素有那些? 答:可以直接度量的因素、只能间接度量的因素。 3、 什么是软件质量保证的策略?软件质量保证的主要任务是什么? 答:策略:检测为重、过程管理为重、开发新产品为重。任务:正确定义用户要求、技术方法的使用、提高软件的工程能力、充分发挥开发人员的能力、提高计划和管理质量、软件复用。 5、程序复杂性的度量方法有那些? 答:代码行度量法、环路度量法。 6、 什么是软件可靠性?它们是否能定量计算? 答:在规定的环境下和时间里软件按要求的功能执行的