软工题第八章
- 格式:doc
- 大小:324.50 KB
- 文档页数:15
操作系统--精髓与设计原理(第⼋版)第⼋章复习题答案8.操作系统--精髓与设计原理(第⼋版)第⼋章复习题答案8.1 简单分页与虚拟内存分页有何区别?进程运⾏时,简单分页的所有页必须都在内存中,除⾮使⽤了覆盖技术,虚存分页并⾮所有页都须在内存页框中,仅在需要时才读⼊页,把⼀页读⼊内存可能需要把另⼀页写出到磁盘。
8.2 什么是抖动?当操作系统读取⼀块内存时,它必须把另⼀块换出。
如果⼀块正好在将要⽤到之前换出,操作系统就不得不很快地把它取回。
这类操作通常会导致⼀种称为系统抖动( thrashing)的情况。
这样会使处理器的⼤部分时间都⽤于交换块⽽⾮执⾏指令。
8.3 为何在使⽤虚拟内存时,局部性原理⾄关重要?局部性原理描述了⼀个进程中程序和数据引⽤的集簇倾向。
因此,假设在很短的时间内仅需要进程的⼀部分块是合理的。
同时,还可以对将来可能会访问的块进⾏猜测,从⽽避免系统抖动。
局部性原理表明虚拟内存⽅案是可⾏的。
8.4 哪些元素是页表项中能找到的典型元素?简单定义每个元素。
页号: 虚拟地址的页号部分。
进程标志符:使⽤该页的进程。
页号和进程标志符共同标志-个特定进程的虚拟地址空间的⼀页。
控制位: 该域包含⼀些标记,⽐如有效、访问和修改,以及保护和锁定信息。
链指针: 若某项没有链项,则该域为空(或⽤⼀个单独的位来表⽰)。
否则,该域包含链中下⼀项的索引值(0~2^m -1之间的数字)。
8.5 转换检测缓冲区的⽬的是什么?原则上,每次虚存访问都可能会引起两次物理内存访问:⼀次取相应的页表项,另⼀次取需要的数据。
因此,简单的虚拟内存⽅案会导致内存访问时间加倍。
为克服这个问题,⼤多数虚拟内存⽅案都为页表项使⽤了⼀个特殊的⾼速缓存,通常称为转换检测缓冲区(TranslationLookaside Buffer, TLB)。
8.6 简单定义两种可供选择的页⾯读取策略。
请求分页,只有当访问到某页中的⼀个单元时才将该页取⼊内存。
《软件工程》综合复习资料第一章软件工程概述一、选择题1、瀑布模型本质上是一种()。
A、线性迭代模型B、顺序迭代模型C、线性顺序模型D、及早见产品模型2、计算机辅助软件工程,简称()。
A、SAB、SDC、SCD、CASE3、以下判断正确的是()。
A、所谓软件开发就是编写程序。
B、利用软件工程的思想,已成功的解决了软件危机。
C、完成软件测试工作以后,为了缩短程序的长度应删除程序中的注释。
D、一般来说,程序中存在错误的概率与在该段程序中已发现的错误数成正比。
4、_____是以提高软件质量为目的的技术活动。
A.技术创新B.测试C.技术创造D.技术评审5、瀑布模型的存在问题是()。
A.用户容易参与开发B.缺乏灵活性C.用户与开发者易沟通D.适用可变需求6、软件生命周期中所花费用最多的阶段是()。
A.详细设计B.软件编码C.软件测试D.软件维护7、计算机系统就是()A.主机,显示器,硬盘,软驱,打印机等。
B.CPU,存储器,控制器,I/O接口及设备。
C.计算机硬件系统和软件系统。
D.计算机及其应用系统。
8、产生软件危机的原因主要与两个方面的问题有关:A.软件在计算机中很难识别,存在磁盘中也看不到。
B.软件设计对人的智商要求很高,也要求很高的资金投入。
C.软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。
D.软件很难理解,硬件也很复杂。
9、软件开发瀑布模型中的软件定义时期各个阶段依次是()A.可行性研究,问题定义,需求分析。
B.问题定义,可行性研究,需求分析。
C.可行性研究,需求分析,问题定义。
D.以上顺序都不对。
10、下列选项中()是软件开发中存在不正确的观念、方法。
A.重编程、轻需求B.重开发,轻维护C.重技术,轻管理D.以上三条都是二、填空题1、软件工程的三个基本要素包括()、()和()。
2、一般软件应该有三部分组成:()、()和()。
3、按软件的功能可将软件分成()、()和()等三类。
第八章综合生产计划一、判断题1、我们通常所说的“某企业年产电视机多少台”,是按假定产品。
2、用收利润顺序确定品种,收入少、利润小的产品不应再生产。
3、滚动计划是一种动态编制计划的方法。
4、产品出产计划是生产大纲的关键输入。
5. 生产运作能力指一个设施的最大产出率。
6、用改变库存水平的策略处理非均匀需求,对劳务性生产也适用。
二、选择题1、制定生产大纲需要多项输入,哪项输入来自企业外部?A、现有库存水平B、原材料供应能力C、现有员工数量D、现有设备能力E、员工技术水平2、加工装配式生产能力的计量方式有A、具体产品B、代表产品C、假定产品D、设备组生产能力3、哪项是产品出产计划的输入?A、库存状态文件B、生产计划大纲C、产品结构文件D、车间生产作业计划4、制定生产大纲时,下述哪种方法是实际生产中应用最多的?A、线性决策法则B、线性规划C、反复试验法D、模拟法5、生产计划中的产值指标包括A、商品产值B、总产值C、净产值D、年产值6、调整能力的办法有:A、改变劳动力数量;B、忙时加班加点,闲时培训;C、利用库存调节;D、转包。
三、简答题1、生产能力计划分哪几个步骤?2、什么是计划管理?企业计划的层次如何划分?各种职能之间有什么联系?3、何谓滚动式计划方法?它有什么优点?4、影响综合生产计划的因素有哪些?5、何谓MTO?它有何特点?6、何谓MTS?它与MTO有哪些差异?四、计算题(1)以C为代表产品,将各产品计划年产量折合成代表产品产量。
(2)计算假定产品单位产品台时定额,将各产品计划年产量折合成假定产品产量。
2、中储物资公司生产A、B两种产品。
两种产品都可库存,并且一个单位的A产品每月平均维持库存费为2元,而B产品则为4元。
表8-1给出了公司今后六个月的需求预测。
该公司的三个加工生产A、B两种产品的工时定额如表8-2所示。
(1)若X加工中心按照预测生产A、B两种产品,请确定X加工中心的工作负荷。
(2)为制定均衡工作负荷,考虑到B产品的单位维持库存费用是A产品的两倍,所以计划制定者决定按B产品的预测量进行生产,并打算合理安排A产品的生产,以使X加工中心的工作总负荷始终高于6个月的平均值。
第八章《糖果与巧克力制品生产工艺》习题一、名词解释1.糖果:2.糖的发烊:3.糖的发砂:二、填空题1.糖果根据其软硬程度可分为、、;根据其组成可分为、、、、、;根据加工艺特点可分为糖果、糖果、糖果、糖果、和其他类别。
2.糖果是指以多种为主体,经过,并配以,再经过、、等工艺过程加工而成的具有不同物态、质构、香味而耐保藏的甜味固体食品。
3.砂糖的主要成分是,是从或中提取、精制而成,由和构成的一种双糖,在一定条件下可分解为具有还原性的和。
4.淀粉糖浆又称、、、,它是用淀粉加酸或加酶经水解和不完全糖化所制成的无色或微黄色、透明、无晶粒的黏稠液体,其主要成分为、、和。
5.淀粉的水解在工业上称为,其转化程度以(简称)表示,DE 高的淀粉糖浆甜度,DE低的淀粉糖浆甜度。
根据DE的不同,淀粉糖浆可分为、、。
6.饴糖是一种淡黄色、半透明、甜味温和的黏稠液体,主要成分是和。
7.低聚糖,亦称,是由2~10个通过连接形成的直链或支链低度聚合糖,分为和两大类。
8.硬糖是以为基本组成,经过而成的一种坚硬易脆裂的糖果,亦称。
9.和是糖果的主要质量变化问题,特别是硬糖。
当硬糖吸收周围水汽分子后,从原来过饱和溶液状态变为饱和溶液或不饱和状态,使硬糖溶化,这种现象称为;而硬糖从吸水后的饱和溶液状态,因分子扩散而重新进入过饱和溶液状态,并有结晶体析出,这一过程就称为。
10.硬糖的基本组成包括和;硬糖生产中溶糖的目的是;溶化后的糖液含水量在20%以上,通过加热,蒸发水分直至最后将糖液浓缩至规定的浓度,这一过程称为,熬糖的方法有、、三种。
11.经过熬煮的糖液出锅后,在糖体还未失去流动性时,将所有的着色剂、香料、酸等调色调味料及时加入糖体,并使其分散均匀,这一过程称为。
12.硬糖的成型根据品种不同的特性,成型方式也不一样,大部分硬糖是成型与成型,但也有成型、成型及成型。
13.硬糖的包装有和,内包装纸一般称其为,其包装形式有、、;糖果外包装形式有、、、。
复习题第一章选择题:1,2,3,4,6,7,8,9 判断题:1,2,3,4,5第二章选择题:1,2,3,4,5,7,8 判断题:1,2,3,4,5,6第三章选择题:1,2,3, 5,6 ,7 判断题:1,2,3,4,5第四章选择题:5,6,7 ,8,9 判断题:5,6,7,8, 9,10第五章选择题:4,5,6,7,8,9,10 判断题:1,2,3,4,5,6,7,8第八章选择题:1,2,3,4,5第九章选择题:1,2,3,4第十二章选择题:1,2,3简答题:1.什么是软件危机其产生的主要原因是什么2.结构化程序设计的指导原则是什么它有哪三种基本控制结构红色为没有答案的3.什么是软件生存周期模型软件生命周期分为哪六个阶段并对每个阶段作简要说明.4.如何画分层数据流图5.简述UML.实际建模过程.6.在UML中的状态图、协作图、活动图、序列图在系统分析中各起到了什么作用7.什么是软件复用8.单元测试的功能是什么主要采用什么方法列举一个常用单元测试的工具. 9.什么是α测试和β测试10.自顶而下增值与自底而上增值各有何优、缺点11.请简单的谈一下安全测试12.为什么要进行软件维护13.提高软件可维护性的方法有哪些14.影响软件质量的因素有哪些15.什么是CMMCMM将软件过程的成熟度分为哪几个级别案例分析题1.画出给定实例的数据流图.并能给出其数据流条目,及对其中某一文件给出文件条目,对某数据项给出数据项条目,对某加工加工给出加工条目.2.画出某系统的用例图,及子用例图,对用例图作简要说明;用UML状态图说明状态的变迁情况及说明.习题答案习题一答案一、选择题1. 软件的主要特性是A B C.A 无形B 高成本C 包括程序和文档D 可独立构成计算机系统2. 软件工程三要素是B.A 技术、方法和工具B 方法、工具和过程C 方法、对象和类D 过程、模型、方法3. 包含风险分析的软件工程模型是A.A 螺旋模型B 瀑布模型C 增量模型D 喷泉模型4. 软件工程的主要目标是C.A 软件需求B 软件设计C 风险分析D 软件实现5. 下列属于面向对象开发方法的是A B C D.A BoochB UMLC CoadD OMT6. 软件危机的主要表现是B D.A 软件成本太高B 软件产品的质量低劣C 软件开发人员明显不足D 软件生产率低下7. 软件开发方法的主要工作模型有A B CA 螺旋模型B 循环模型C 瀑布模型D 专家模型8. 软件工程的目标有A B C.A 易于维护B 低的开发成本C 高性能D 短的开发期9. 软件工程学的目的和意义是A D.A 应用科学的方法和工程化的规范管理来指导软件开发B 克服软件危机C 作好软件开发的培训工作D 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序.×2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰.×3. 结构化方法的工作模型是使用螺旋模型进行开发.×4. 结构化方法和OO方法都是一种面向过程的软件开发方法.×5. 原型化开发方法包括生成原型和实现原型两个步骤.×习题二答案一、选择题1. 需求分析的主要目的是B C.A 系统开发的具体方案B 进一步确定用户的需求C 解决系统是“做什么”的问题D 解决系统是“如何做”的问题2. 需求分析的主要方法有C D.A 形式化分析方法B PAD图描述C 结构化分析SA方法D OOA法3. 面向对象的分析方法主要是建立三类模型,即D.A 系统模型、E-R模型、应用模型B 对象模型、动态模型、应用模型C E-R模型、对象模型、功能模型D 对象模型、动态模型、功能模型4. SA法的主要描述手段有B.A)系统流程图和模块图B DFD图、数据词典、加工说明C 软件结构图、加工说明D 功能结构图、加工说明5. 画分层DFD图的基本原则有A C D.A 数据守恒原则B 分解的可靠性原则C 子、父图平衡的原则D 数据流封闭的原则7. 画DFD图的主要目的是A D.A 作为需求分析阶段用户与开发者之间交流信息的工具B 对系统的数据结构进行描述C 对目标系统的层次结构进行描述D 作为分析和设计的工具8. 数据字典是数据流图中所有元素的定义的集合,一般由 C 四类条目组成.A 数据说明条目、控制流条目、加工条目、数据存储条目B)数据流条目、数据项条目、文件条目、加工条目C 数据源条目、数据流条目、数据处理条目、数据文件条目D 数据流条目、数据文件条目、数据池条目、加工条目二、判断题1. 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案.×2. SA法是面向数据流,建立在数据封闭原则上的需求分析方法.√3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化.√4. 在面向对象的需求分析方法中,建立动态模型是最主要的任务.×5. 加工小说明是对系统流程图中的加工进行说明.×6. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件.×习题三答案一、选择题1. 模块的基本特征是A C.A 外部特征输入/输出、功能B 内部特征输入/输出、功能C 内部特征局部数据、代码D 外部特征局部数据、代码2. SD方法的设计总则是C D.A 程序简洁、操作方便B 结构清晰、合理C 模块内聚性强D 模块之间耦合度低3. 软件设计的主要任务是A B D.A 将分析阶段获得的需求说明转换为计算机中可实现的系统;B 完成系统的数据结构和程序结构设计C 完成模块的编码和测试D 对模块内部的过程进行设计5. 从工程管理的角度来看,软件设计分D两步完成.A 系统分析、模块设计B 详细设计、总体设计C 模块设计、详细设计D 总体设计、详细设计6. 模块独立性准则定性指标B D来衡量.A 分解度B 耦合度C 屏蔽性D 内聚性7. 用户界面设计的任务包括A B C.A 确定用户界面类型B 建立任务模型C 建立用户模型D 建立功能模型二、判断题1. 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好.×2. 在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用.×3. 信息隐蔽原则有利于提高模块的内聚性.√4. 中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图.×5. SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应. ×习题四答案一、选择题5. 一个类属性依其特征划分,其类型有ABCD.A 描述型B 定义型C 派生型D 参考型6. 在进行面向对象分析时,所采用的模型有ABC.A 对象模型B 动态模型C 静态模型D 功能模型7. 状态是对象属性的值的一种抽象,它的性质有AB.A 时间性B 持续性C 有序性D 有穷性8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有ABCD.A 查询B 动作C 活动D 访问9. 建立继承关系时所采用的方式有AC.A 自顶向下B 从内到外C 自底向上D 从复杂到简单二、判断题5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程.√6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性.√7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系.√8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映.通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构.√9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系.√10. 复用也叫重用或再用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方式:实例重用、继承重用、多态重用.√习题五答案一、选择题4. 下列各种图可用于动态建模的有ACD.A 状态图B 类图C 序列图D 活动图5. 下列属于状态的组成部分的有AB.A 名称B 活动C 条件D 事件6. UML中包括的事件有ABCD.A 条件为真B 收到另一对象的信号C 收到操作调用D 时间表达式7. 属性的可见性有ABD.A 公有的B 私有的C 私有保护的D 保护的8. 用例之间的关系有BCD.A 友元B 扩展C 使用D 组合9. 应用于通用化约束的方式有ABCD.A 完整B 不相交C 不完整D 覆盖10. 消息的类型有ABCA 同步B 异步C 简单D 复杂二、判断题1. UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的. √2. UML是一种建模语言,是一种标准的表示,是一种方法. ×3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动. ×4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行.×5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的. √6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述.×7. 用例模型的基本组成部件是用例、角色和用例之间的联系. √8. 用例之间有扩展、使用、组合等几种关系. √习题七答案5.什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.习题八答案一、选择题1. 软件测试的主要特点是A C.A 软件测试的开销大B 软件测试要依靠工具C 软件不能进行“穷举”测试D 软件测试要依靠人工2. 整体测试又称为组装测试,其主要内容包括C D.A 对整体的性能进行测试B 用白盒法设计测试用例进行测试C 确定组装策略和次序D 对组装过程进行测试3. 渐增式是将模块一个一个地连入系统,每连入一个模块C.A 只需要对新连入的模块进行测试B 都不需要再进行测试C 要对新子系统进行测试D 都要进行回归测试4. 静态测试是以人工的、非形式化的方法对程序进行分析和测试.常用的静态测试方法有 B C D.A 运行程序并分析运行结果B 桌前检查与代码会审C 数据流分析图D 调用图5. 集成过程的原则是B C.A 按照模块的大小集成B 尽早测试包含I/O的模块C 尽早测试关键模块D 按照“输入—处理—输出”的次序进行集成习题九答案一、选择题1. 软件维护的类型有A B C D.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护2. 各种软件维护的类型中最重要的是A B.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护3. 以下属于完善性维护的有B D.A 解决开发时未能测试各种可能条件带来的问题B 增加联机求助命令C 缩短系统的应答时间,使其达到特定要求D 为软件的运行增加监控设施4. 进行系统修改时可能会产生维护的副作用,它们可能有A B C.A 修改数据的副作用B 修改错误后,又引入了新的错误C 修改代码的副作用D 文档资料的副作用习题十二答案一、选择题1. CMM表示 A .A 软件能力成熟度模型B 软件过程工业化控制C 国际软件质量认证D 软件统一性标准2. 软件过程和产品质量有详细的度量标准,并且得到了定量的认识和控制.以下具有上述特征.A 可重复级B 已定义级C 已管理级D 优化级3. CMM是开发高效率、高质量和低成本软件时,普遍采用的软件生产过程标准,它的主要用途不包括 C .A 软件过程评估B 软件过程改进C 软件过程控制D 软件能力评价简答题1.什么是软件危机其产生的原因是什么答:“软件危机”Software Crisis的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大.而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要.致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折.软件危机主要表现在两个方面:1 软件产品质量低劣,甚至开发过程就夭折.2 软件生产率低,不能满足需要.2. 如何画分层数据流图有哪些基本原则答:总的原则是:至顶而下,逐层分解画分层数据流图.逐层分解的画法可以控制每一层的复杂度.顶层:将整个系统作为一个加工,描述系统边界输入与输出.中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解.底层:由不再进行分解的基本加工组成.画分层数据流图的基本原则有:①数据守恒与数据封闭原则.②加工分解的原则.③子图与父图“平衡”的原则.④合理使用文件的原则.3. 简述UML实际建模过程.答:UML建模过程是一个迭代过程.每次迭代都建立相应的模型.分为以下几个阶段:①分析阶段.建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系.常以用例图为首选模型.②设计阶段.建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案.常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型.③实现阶段.主要工作就是进行编码,同时对已构造的模型作相应的修正.④配置阶段.通过模型描述所开发系统的软硬件配置情况建立配置模型.⑤测试阶段.使用前几个阶段所构造的模型来指导和协助测试工作.4. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用答:状态图State Diagram用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件.一个状态图包括一系列的状态以及状态之间的改变.例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面.顺序图Sequence Diagram 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用.当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图Collaboration Diagram从另一个角度来更好地描述相互协作的对象间的交互关系和链接Link关系.着重体现交互对象间的静态链接关系和协作关系.协作图也可以从顺序图生成.活动图Activity Diagram是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的.活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML 图.5. 什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.6. 什么是α测试和β测试答:α测试是在开发机构的监督下,在确认测试阶段后期由个别用户对软件进行测试,目的是评价软件的FLURPS功能、局域化、可使用性、可靠性、性能和支持性,注重界面和特色.β测试是在进行了α测试的基础上,由支持软件预发行的客户对FLURPS进行测试,主要目的是测试系统的可支持性,是在软件产品正式发布前的测试.7.单元测试的功能是什么主要采取什么方法例举一个常用单元测试的工具单元测试.完成每个模块的测试,尽可能发现模块内部的错误.单元测试主要采用白盒测试法.工具:自己看下书呢8. 为什么要进行软件维护答:软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程.一个中等规模的软件,如果其开发过程需要一两年时间,则它投入使用以后,其运行时间可能持续5~10年之久.在这个维护阶段中,人们需要着手解决开发阶段尚未解决的问题,同时,还解决维护工作本身所产生的问题.做好软件的维护工作不仅能够排除软件中存在的错误,使它能够正常工作,而且还可以使它扩充功能,提高性能,为用户带来新的效益.维护阶段的花费约占整个软件生存周期花费的67%.因此,应充分认识到维护现有软件的重要意义.9. . 提高可维护性的方法有哪些答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审.在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明.在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面.在软件设计的复审中,应从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备.在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素.在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示.在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审.为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术.10. 影响软件质量的因素有哪些答:影响软件质量的因素如下表所示.11.什么是CMMCMM将软件过程的成熟度分为哪几个级别答:1看下书.2初始级、可重复级、已定义级、已管理级和优化级.12. 自顶向下渐增与自底而上渐增各有何优、缺点答:①自顶向下渐增优点:能够尽早发现系统主控方面的问题,并尽早测试系统结构的问题.缺点:需要编写桩模块,由于下属模块往往不止一个,也不止一层,加之模块接口的复杂性,桩模块很难模拟各下层模块之间的调用关系,也无法验证桩模块是否完全模拟了下属模块的功能.因此很难尽早查出底层容易出错的复杂模块中的错误,所以导致过多的回归测试.②自底向上渐增优点:需要编写驱动模块.驱动模块是模拟主程序或者调用模块的功能,处于被测试模块的上层,所以驱动模块只需模拟向被测模块传递数据,接收或打印从被测模块返回的数据等功能,比编写桩模块容易.还能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误.缺点:只有当系统所有模块全部组装完成,才能看到系统完整的结构,才能测试系统的主控功能.。
课后练习题答案第三章练习题一、选择题1.快速跟进是指(A )A.采用并行执行任务,加速项目进展B.用一个任务取代另外的任务C.如有可能,减少任务数量D.减轻项目风险2.赶工一个任务时,你应该关注(C )A.尽可能多的任务B.非关键任务C.加速执行关键路径上的任务D.通过成本最低化加速执行任务3.“软件编码完成之后,我才可以对它进行软件测试”,这句话说明了哪种依赖关系?( A )A.强制性依赖关系B.软逻辑关系C.外部依赖关系D.里程碑4.如果用户提供的环境设备需要5月10日到位,所以环境测试安排在5月10日以后,这种活动安排的依赖依据是:(C)A.强制性依赖关系B.软逻辑关系C.外部依赖关系D.里程碑5.对一个任务进行进度估算时,A是乐观者,估计是6天完成,B是悲观者,估计是24天完成,C是有经验者认为最有可能是12天完成,那么这个任务的历时估算是介于10天到16天的概率是(B )A.50%B.68.3%C.70%D.99.7%6.下面哪项将延长项目的进度?(A)gB.LeadC.赶工D.快速跟进7.关于浮动,下面除了哪个都是不正确的?(D)A.每个任务都有浮动B.只有复杂的项目有浮动C.浮动是在不增加项目成本的条件下,一个活动可以延迟的时间量D.浮动是在不影响项目完成时间的前提下,一个活动可以延迟的时间量8.资源平衡最好用于(C )活动A.时间很紧的B.按时的C.非关键路径D.关键路径9.下面哪项可以决定进度的灵活性(B )A.PERTB.Total floatC.ADMD.赶工二、根据表3-11和图3-32,采用PERT方法估算,说明项目在20天内完成的概率的近似值?图3-32:项目网络图表3-11: PERT方法估计项目历时均值=(8+24+4*10)/6+(1+9+4*5)/6=17,标准差=(约等于)3所以,17+3=20天完成的概率大概是84.2%。
第四章练习题一、选择题1.(A)是用系统的功能数量来测量其规模,与实现产品所使用的语言和技术没有关系的。
软件工程实用教程第三版-郭宁主编-课后习题及答案第一章软件工程引论1.在下列选项中,(D)不是软件的特征。
A.系统性与复制性 B. 可靠性与一致性 C.抽象性与智能型 D.有形性与可控性2.软件是一种(B)产品。
A.有形 B. 逻辑 C. 物质 D. 消耗3.软件工程是一种(A)分阶段实现的软件程序开发方法。
A.自顶向下B. 自底向上C. 逐步求精D. 面向数据流4.与计算机科学的理论研究不同,软件工程是一门(B)学科。
A.理论性 B. 工程性 C. 原理性 D. 心理性5.软件工程与计算机科学性质不同,软件工程着重于(C)。
A.原理探讨 B. 理论研究 C. 建造软件系统D. 原理性的理论6.下列说法正确的是(B)A.软件工程的概念于20世纪50年代提出B.软件工程的概念于20世纪60年代提出C.20世纪70年代出现了客户机/服务器技术D.20世纪80年代软件工程学科达到成熟7.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是(D)A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件C.消除软件危机,达到软件生产的规模效益D.以基本的社会效益为基础,工程化生产软件第二章软件生命周期及开发模型1.软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、(B)、维护等活动。
A.应用 B. 测试 C. 检测 D. 以上答案都不正确2.软件生命周期模型有多中,下列项目中,(C)不是软件生命周期模型。
A.螺旋模型 B. 增量模型 C. 功能模型 D.瀑布模型3.软件生命周期中时间最长的阶段时(D)A.需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段4.瀑布模型是一种(D)A.软件开发方法B. 软件生存周期C. 程序设计方法学 D. 软件生存周期模型5.软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A)A.瀑布模型B. 对象模型C. 螺旋模型D. 层次模型6.在结构化的瀑布模型中,(D)阶段定义的标准将成为软件测试中系统测试阶段的目标A.详细设计阶段B. 总体设计阶段C. 可行性研究阶段 D. 需求分析7.增量模型是一种(B)的模型A.整体开发B. 非整体开发C. 灵活性差D.较晚产生工作软件8.(C)是指模拟某种产品的原始模型A.模型B. 最初模型C. 原型D. 进化模型9.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)A.用于验证软件需求的原型B. 垂直原型C.用于验证设计方案的原型 D.用于演化出目标系统的原型10.原型化方法是一种(A)型的设计过程。
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
一、判断题1、(√)使用括号改善表达式的清晰性。
2、(×)对递归定义的数据结构不要使用递归定义的过程。
3、(×)尽可能对程序代码进行优化。
4、(√)不要修改不好的程序,要重新编写。
5、(√)不要进行浮点数的相等比较。
6、(×)应尽可能多地使用临时变量。
7、(√)利用数据类型对数据值进行防范。
8、(×)用计数方法而不是用文件结束符判别批量数据输入的结束。
9、(×)程序中的注释是可有可无的。
10、(√)使用有意义的标识符。
11、(×)应尽量把程序编写的短一些。
12、(×)应尽量使用goto语句。
二、选择题1、在编码中首先要考虑的是(B)。
A、程序的执行效率B、程序的可读性C、程序的一致性D、程序的安全性2、(D)。
不属于序言性注释内容的是A、模块设计者B、修改日期C、程序的整体说明D、语句功能3、序言性注释应置于文件或模块的(A)位置。
A、起始B、结束C、中间D、起始和中间4、如果编写系统软件,可选用的语言是(C)。
A、FoxProB、COBOLC、CD、FORTRAN5、选择程序设计语言不应该考虑的是(B)。
A、应用领域B、语言的功能C、用户的要求D、用户的使用水平6、与编程风格有关的因素不包括(D)。
A、源程序文档化B、语句构造C、输入输出D、程序的编译效率7、最早用于科学计算的程序设计语言是(C)。
A、PROLOGB、SmalltalkC、FORTRAND、COBOL8、功能性注释的主要内容不包括(B)。
A、程序段的功能B、模块的功能C、数据的状态D、语句的功能9、对建立良好的编程风格,下面描述正确的是(A)。
A、程序应简单、清晰、可读性好B、符号名的命名只要符合语法即可C、充分考虑程序的执行效率D、程序的注释可有可无10、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括合适的标识符、注释和(A)。
第0章软件项目管理概述二、判断题1. 项目开发过程中可以无限制地使用资源。
(X)2. 项目具有暂时的特征。
(√)3. 项目管理核心的三角形是范围、进度、风险。
(X)4. 过程管理与项目管理在软件组织中是两项很重要的管理,项目管理用于保证项目的成功,而过程管理用于管理最佳实践。
(√)5. 运作管理(Operation Management)是从宏观上帮助企业明确和把握企业发展方向的管理。
(√)第1章软件项目初始过程一、选择题1. 项目建议书是哪个阶段开发的文档()A. 项目执行阶段B. 项目结尾阶段C. 项目初始阶段D. 项目计划阶段2. 项目章程()A. 明确了项目经理B. 确定了项目的质量标准C. 明确了团队的纪律D. 定义了项目需求3. 对于风险比较大的项目,最好选择()生存期模型,A. 瀑布模型B. 原型C. 螺旋模型D. V模型4. 开发项目建议书的目的是为了()A. 验收B. 竞标或者签署合同C. 编写计划D. 跟踪控制项目三、判断题1. 项目经理是一个综合的角色()2. 软件项目都是需要签署合同的()3. 增量式模型可以避免一次性投资太多带来的风险()4. 项目章程类似一个项目授权书()5. 在甲乙合同项目中,提出需求的一方是乙方()6. 如果是内部项目,在项目初始阶段可以不提交招标书()C A C B√×√√×√第二章-范围计划一、选择题1. 需求分析是回答系统必须()的问题A. 做什么B. 怎么做C. 何时做D. 为谁做2. WBS(工作分解结构)非常重要,因为下列原因,除了()A. 帮助组织工作B. 防止遗漏工作C. 为项目估算提供依据D. 确定团队成员责任3. 项目范围()A. 只在项目开始时重要B. 在授权项目的合同或者其他文件得以批准后就不再重要了C. 从项目概念阶段到收尾阶段都应该加以管理和控制D. 是在项目执行阶段通过变更控制步骤进行处理的问题4. 为了有效地管理项目,应该将工作分解为更小的部分,以下各项中,哪一项不能说明任务应该分解到什么程度?()A. 可以在80小时内完成B. 不能再进一步进行逻辑细分了C. 可由一个人完成D. 可以进行实际估算5. 范围变更是指()A. 修改技术规格B. 对范围陈述进行修订C. 对批准后的WBS进行修改D. 以上都不是6. 下面哪个不是需求管理的过程()A. 需求设计B. 需求获取C. 需求分析D. 需求变更7. 下面那个不是创建WBS的方法()A. 自顶向下B. 自底向上C. 控制方法D. 模版指导8. 任务分解可以(),它是范围变更的一项重要输入A. 提供项目成本估算结果B. 提供项目范围基线C. 规定项目采用的过程D. 提供项目的关键路径9. 范围基线由()组成A. 项目章程、批准的详细的项目范围说明书和WBSB. 批准的详细项目范围说明书、WBS和WBS字典C. 项目章程、项目工作说明书和WBSD. WBS二、判断题1. 需求分析过程是确定项目如何实现的过程,并确定项目的技术方案()2. 对于一个重来没有做过的项目,开发WBS时,可以采用自底向上的方法()ADCBDACBB×√第三章-软件项目进度计划一、选择题1. 快速跟进是指(A )A. 采用并行执行任务,加速项目进展B. 用一个任务取代另外的任务C. 如有可能,减少任务数量D. 减轻项目风险2. 赶工一个任务时,你应该关注(D )A. 尽可能多的任务B. 非关键任务C. 加速执行关键路径上的任务D. 通过成本最低化加速执行任务3. “软件编码完成之后,我才可以对它进行软件测试”,这句话说明了哪种依赖关系?(A )3A. 强制性依赖关系B. 软逻辑关系C. 外部依赖关系D. 里程碑4. 如果用户提供的环境设备需要5月10日到位,所以环境测试安排在5月10日以后,这种活动安排的依赖依据是:(C)A. 强制性依赖关系B. 软逻辑关系C. 外部依赖关系D. 里程碑5. 对一个任务进行进度估算时,A是乐观者,估计是6天完成,B是悲观者,估计是24天完成,C是有经验者认为最有可能是12天完成,那么这个任务的历时估算是介于10天到16天的概率是(B )A. 50%B. 68.3%C. 70%D. 99.7%δ=(P-O)/6=(24-6)/6=3E=(O+4M+P)/6=(6+4*12+24)/6=136. 下面哪项可能延长项目的进度?(A)A. LagB. LeadC. 赶工D. 快速跟进7. 关于浮动,下面除了哪个都是不正确的?(D )A. 每个任务都有浮动B. 只有复杂的项目有浮动C. 浮动是在不增加项目成本的条件下,一个活动可以延迟的时间量D. 浮动是在不影响项目完成时间的前提下,一个活动可以延迟的时间量8. 关于网络图,下面哪个是不正确的?(C)A. 网络图可用于安排计划B. 网络图展示任务之间的逻辑关系C. 网络图可用于跟踪项目D. 网络图可用于详细的时间管理9. 资源平衡最好用于(D)活动A. 时间很紧的B. 按时的C. 非关键路径10. 下面哪项可以决定进度的灵活性(B )A. PERTB. Total floatC. ADMD. 赶工第四章-软件项目成本计划一、选择题1. (A )是用系统的功能数量来测量其规模,与实现产品所使用的语言和技术没有关系的。
第八章习题一、选择题1.软件复用的目的是要使软件开发工作进行得( A )。
软件复用的实际效益除了( B )之外,在企业的经营管理方面也可望达到理想的效益。
新的应用软件开发技术和工具是以( C )作为关键,复用大粒度的( D ),为的是快速开发应用软件。
这些新技术包括微软的( E )、( F )、( G ),SUN公司的Java,OMG公司的CORBA、IDL等。
供选择的答案:A. ①更简捷②更方便③更快、更好、更省④更丰富B. ①复用率②功能扩充③效率④空间利用率C, D. ①软件②固件③构件④属性⑤对象⑥事物⑦数据⑧代码E~G. ① office ② Visual Basic ③ Active X ④ Photoshop⑤ OLE ⑥ Fortran ⑦ COBOL ⑧ Delphi2. 以往的软件工程技术不能满足复用的需要,体现在工程、( A )、( B )、经营业务等4个方面。
“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可复用的( E ),缺乏实施复用的工具。
供选择的答案:A, B. ①需求②过程③环境④组织管理C ~ E. ①复用②可靠性③灵活性④界定⑤工具⑥互连性3. 软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。
有原则地使用体系结构风格可带来一些实际的好处:(1) 它促进了对设计的( B );(2) 它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5) 在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;(6) 通常可以对特定的风格提供( E )手段。
供选择的答案:A ~ C. ①使用特定的体系模式②使用重复的体系模式③复用④专用⑤代码复用⑥结构复用D ~ E. ①可视化②构件③互操作性④可移植性⑤可调度性⑥框架4. 软件复用可分为以下三个层次:( A ),例如软件工程知识的复用。
( B ),例如面向对象方法或国家制定的软件开发规范的复用。
软件成分的复用。
软件成分的复用又可进一步划分为( C ),如剪贴;( D ),如复用设计模型;( E ),更高级别复用。
为了研究软件复用程度与软件生产率之间的关系,我们引进:生产率P = ( F )和复用率R = ( G )的公式,以及两者之间的关系P = ( H )。
其中,用Lt代表程序总长度,Ln和Lr分别为新编代码和复用代码的长度。
令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和复用已有软件构件的工作量,Cn和Cr分别代表开发新代码和复用已有软件构件的生产率。
供选择的答案:A ~ E.①知识复用②分析结果复用③代码复用④方法与标准复用⑤设计结果复用⑥软件成分复用F ~ H. ①②③④⑤⑥⑦二、简答题1. 请比较功能内聚和信息性内聚。
2. 多态重用与继承重用有何关系?3. 在面向对象设计过程中为什么会调整对目标系统的需求?怎样调整需求?4. 为了设计人机交互子系统,为什么需要分类用户?5. 问题空间和解空间有何区别?6. 从面向对象分析阶段到面向对象设计阶段,对象模型有何变化?7. 请用面向对象方法分析设计下述的图书馆自动化系统。
设计一个软件以支持一座公共图书馆的运行。
该系统有一些工作站用于处理读者事务。
这些工作站由图书馆馆员操作。
当读者借书时,首先读入客户的借书卡。
然后,由工作站的条形码阅读器读入该书的代码。
当读者归还一本书时,并不需要查看他的借书卡,仅需读入该书的代码。
客户可以在图书馆内任一台PC机上检索馆藏图书目录。
当检索图书目录时,客户应该首先指明检索方法(按作者姓名或按书名或关键词)。
8. 用面向对象方法分析设计下述的电梯系统。
在一幢m层楼的大厦里,用电梯内的和每个楼层的按钮来控制n部电梯的运动。
当按下电梯按钮请求电梯在指定楼层停下时,按钮指示灯亮;当电梯到达指定楼层时,指示灯熄灭。
除了大厦的最低层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行。
当这两个按钮之一被按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要求的方向移动。
当电梯无升降动作时,关门并停在当前楼层。
第八章习题解答一、选择题1.答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。
其中,E、F、G的答案顺序可互换。
分析:实施软件复用的目的是要使软件开发工作进行得是更快、更好、更省。
“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。
日美一些大公司的资料表明,软件复用率最高可望达到90 %,而且软件复用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。
除了复用率之外,在企业的经营管理方面也可望达到理想的效益。
例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可复用构件及支持复用的负担。
新的应用软件开发技术和工具是以“构件”作为关键,复用大粒度的“对象”,为的是快速开发应用软件。
这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。
非面向对象语言(如COBOL和Fortran)在复用实践中已经器的相当的成功。
这些非面向对象程序设计语言构件技术的成功实践说明了:实现软件复用并不限于面向对象语言构件或类库。
2. 答案:A. ②, B. ④, C. ④, D. ①, E. ③。
其中,A、B的答案的顺序可互换。
分析:以往的软件工程技术不能满足复用的需要,体现在工程、过程、组织管理、经营业务等4个方面。
这里所说的“工程”是指软件开发工程,其技术和方法面对复用的需要已显得低效,主要表现在:§缺乏界定手段:为了软件复用,需要循软件开发流程的各个阶段,通过分析它们的描述模型,明确界定出潜在可复用的部分,被界定出的部分,可能是可被复用的部分,也可能是可被可复用构件代用的部分。
而以往的软件工程缺乏这种界定手段。
§缺乏可复用的构件:者反映在许多方面。
例如,不能有效地挑选出可复用构件并对它们进行强化;缺乏对构件打包、文档化、分类、界定的技术;缺乏有效方法进行(构件)库的设计和实现;缺乏良好的构件库存取方法。
§缺乏对潜在可复用构件的灵活性:如果一个构件很死板,那么它被复用的机会就很少。
而过去的软件工程方法在设计灵活的、分层的软件体系结构方面一直没有不成熟的办法。
过去的方法是对构件进行调节使之满足新的需求,或者使对新的体系结构进行限制。
§缺乏实施复用的工具:为了实施复用,需要一系列新的工具,并把它们集成到面向复用的软件工程环境中去。
而过去的工程缺乏这方面的工具。
3. 答案:A. ②, B. ③, C. ⑤, D. ③, E. ①。
分析:软件体系设计的一个中心问题是能否使用重复的体系模式,以及采用何种软件体系结构风格。
例如可以采用通用的基于层次或数据流的系统体系结构,或者采用特殊的系统组织(如经典的编译器分解方式),OSI七层协议,MVC用户界面语义图等。
有原则地使用体系结构风格可带来一系列实际的好处。
(1) 它促进了对设计的复用。
一些经过实践证实的解决方案可以拿来可靠地解决新问题。
(2) 它可以带来显著的代码复用。
体系结构风格的不变部分使它们可以共享同一个实现代码。
(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构。
例如,如果某人把系统描述为“客户机∕服务器”模式,则不必给出细节,人们立刻就会明白它们是如何一部分一部分地组织起来,并在脑海中清晰地得到这个图像。
(4) 对标准或规范风格的使用也支持了互操作性,例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5) 在限制了设计空间的情况下,体系结构风格通常允许进行特殊的与风格有关的分析。
例如,分析管道过滤器系统的可调度性(吞吐量、延时、死锁的解决)是可行的,但对于任意的、或用其它方法构造的架构来说,这种分析可能毫无意义。
(6) 通常可以对特定的风格提供可视化的手段。
例如,可以对与客户的专业领域有关的设计作出图解或文字说明。
对于应用软件体系结构风格来说,由于视点的不同,软件人员有很大的选择空间。
要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。
体系结构风格的使用几乎完全是特化的。
4. 答案:A. ①, B. ④, C. ③, D. ⑤, E. ②, F. ④, G. ②, H. ③。
分析:广义来讲,软件复用可分为以下三个层次:(1) 知识复用(如软件工程知识的复用);(2) 方法和标准的复用(如面向对象方法或国家制定的软件开发规范的复用);(3) 软件成分的复用。
软件成分的复用又可进一步划分为三个级别:①代码复用(源代码剪贴、源代码包含、继承);②设计结果复用;③分析结果复用(这是一种更高级别的复用,即复用某个系统的分析模型)。
为实现软件复用需要付出额外代价,如投资、时间和可复用构件库。
即使不考虑上述的额外代价,软件复用也不是必然能提高软件生产率。
为研究软件复用程度与软件生产率的关系,我们首先引入下列两个量:生产率P = 程序总长度∕开发该程序所用人时数复用率R = 复用代码长度∕程序总长度令Lt为程序总长度(目标代码条数),Ln和Lr分别为新编代码和复用代码的长度(都用目标代码条数来度量)。
再令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和复用已有软件构件的工作量,则有以下等式成立:Lt = Ln + Lr, Et = En + Er, P = Lt∕Et, R = Lr∕Lt.此外,用符号Cn和Cr分别代表开发新代码和复用已有软件构件的生产率,则有:Cn = Ln∕En, Cr = Lr∕Er.从上述6个等式出发,可以推导出下列的生产率与复用率之间的关系:从上式可知,复用率R越高,生产率不一定就越高。
只有当软件开发人员使用已有的软件构件构造应用系统时,其工作效率比重新从底层编写程序的效率高时,复用率的提高才会导致生产率提高。