软件工程课后习题 下载本文

目录

第1章习题 ........................................................ 2 第2章习题 ……………………………………….. 4 第3章习题 ……………………………………….. 5 第4章习题 ……………………………………….. 8 第5章习题 ……………………………………….. 13 第6章习题 ……………………………………….. 18 第7章习题 ………………………………………... 25 第8章习题 ………………………………………… 25 第9章习题 ………………………………………… 33 第10章习题 ……………………………………….. 35

第1章

1.对于硬件是有形的而软件是无形的观点,有人提出了不同的看法。他认为软件也是有形的,例如,软件需要安装才能工作,软件安装之后会占据一定的磁盘空间。对此,你是什么看法?

解答:软件是抽象的、无形的。软件之所以需要安装并占据一定的磁盘空间,正说明了软件对硬件的依赖,它不能独立存在。

2.软件按服务对象的不同可分为通用软件和定制软件。试举例说明这两类软件的区别。 解答:通用软件一般由软件开发机构自主开发并通过市场推广、销售,如Microsoft Word,它是完全由Microsoft自主开发并通过市场推广、销售的文字处理软件。定制软件则通常受特定客户委托并在合同的约束下开发。例如,某专门设备的控制系统、某特定企业的业务管理系统、某智能大厦的监控与管理系统、某城市的交通监管系统等。定制类软件通常由客户进行软件描述,并以此为基本依据确定软件规格。

3.程序系统时代出现的“软件作坊”有什么特点?

解答:软件作坊虽然也生产具有工业化特征的软件产品,但软件作坊是一种比较松散的组织机构,缺少工业化企业应具有的标准、规范和制度,因此不能使软件生产过程工业化。

4.某软件公司抢时间为某单位开发了一个人事管理软件,但软件交付用户使用一段时间之后,用户有了抱怨,原因是单位里某个职工改了名字,但人事管理软件却不允许修改姓名,而只能删除整条记录以后重新输入。试从软件危机角度对这个问题做一些评论。

解答:由于软件开发过程中软件开发人员和用户之间缺乏信息交流,以至用户的需求没有在软件规格定义中充分体现,从而导致开发出来的软件不能安全满足用户的实际应用需要。

5.什么是软件工程?

解答:软件工程是一门关于软件开发与维护的工程学科,其涉及软件生产的各个方面,包括工程过程、工程原则、技术方法与工具以及工程项目管理等,能够为经济、高效地开发高质量的软件产品提供有效的支持。

6.什么是软件工程方法?简要说明一些主要的软件工程方法。

解答:软件工程方法是指完成软件开发与维护任务时,应该“如何做”的技术方法。主要的软件工程方法有:结构化方法、JSD方法和面向对象方法。

结构化方法是传统的基于软件生命周期的软件工程方法,以软件功能为目标来进行软件构建,包括结构化分析、结构化设计、结构化实现和结构化维护。

JSD方法主要用于软件设计,由法国科学家Jackson提出。它以软件中的数据结构为基

2

本依据来进行软件结构与程序算法设计,是对结构化软件设计方法的有效补充。

面向对象方法以软件问题域中的对象为基本依据来构造软件系统模型,包括面向对象分析、面向对象设计、面向对象实现和面向对象维护。

7.什么是软件工具? Visual C++属于什么类型的软件工具?

解答:软件工具通常也称为 CASE,它是计算机辅助软件工程(Computer-Aided Software Engineering)的英文缩写,是为了方便软件工程方法的运用而提供的具有自动化特征的软件开发支撑环境。

CASE工具覆盖面很广,包括分析建模、设计建模、源代码编辑生成、软件测试等。其中,用来支持软件分析、设计的CASE工具,如数据字典管理器、分析建模图形编辑器、软件结构设计器,被称为高端CASE工具;而用来支持软件实现和测试的工具,如程序编辑器、程序分析器、调试器等,则被称为低端工具。

Visual C++的用途是程序编辑、程序分析与调试,因此是低端工具。

8.你是如何看待软件工程过程的?软件过程中最基本的活动有哪些?

解答:软件工程过程是指开发软件时所进行的一系列软件工程活动,这些活动需要通过制订工作步骤体现,它应该是科学的、合理的,否则将影响软件开发的成本、进度与产品质量。软件工程过程并不固定,不同的产品开发会有不同的活动,但均包括四项基本活动:软件定义、软件开发、软件验证和软件维护。

9.软件工程管理主要包括哪些方面的内容? 解答:软件工程管理的主要内容有:1. 项目规划;2. 项目资源调配;3. 软件产品控制。

10.B. W. Boehm提出的软件工程基本原则是什么? 解答:B. W. Boehm总结了以下7条基本原则。

(1)采用分阶段的生命周期计划,以严格对项目的管理; (2)坚持阶段评审制度,以确保软件产品质量; (3)实行严格的产品控制,以适应软件规格的变更; (4)采用先进的程序设计技术; (5)软件成果应该能够清楚地审查; (6)开发小组的人员应该少而精;

(7)承认不断改进软件工程实践的必要性。

11.什么是软件工程目标?如何解决多个目标之间出现的矛盾?

解答:软件工程目标是基于软件项目目标的成功实现而提出的,并主要体现为以下几个目标:(1)软件开发成本较低;(2)软件功能能够满足用户的需求;(3)软件性能较好;(4)软件可靠性高; (5)软件易于使用、维护与移植;(6)能按时完成开发任务,并及时交付使用。

在一个具体项目中,以上几个目标之间很可能会出现冲突,例如,若只顾降低开发成

3

本,则可能由此导致软件的性能与可靠性也随之降低;另一方面,如果太过于追求软件的性能,则可能使得开发出来的软件对硬件有较大的依赖。因此,在实际的软件项目中,往往需要在几个目标中进行平衡。此时,软件的质量应该摆到最重要的位置加以考虑。因此,软件的可用性、有效性、可靠性和可维护性等往往需要特别关注。

12.什么是软件工程文化?其中的价值观是什么?

解答:软件工程文化是指工程人员在软件开发中所应该具备的产品质量观、价值观、道德准则和团队意识等。其中的价值观是指软件企业上下对软件工程价值有一致的认同。

第2章

1.什么是软件生命周期?根据国家标准《计算机软件开发规范》,软件生命周期主要包括哪些阶段?

解答:软件生命周期是指软件定义、开发、运行维护,直至被淘汰的全过程。根据我国国家标准《计算机软件开发规范》(GB 8566—8),软件生命周期包括软件定义、软件开发、软件运行维护三个阶段,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段。

2.瀑布模型有哪些特点?对于里程碑,你有什么认识?一般认为,瀑布模型不太适用于用户需求经常变更的软件项目,其原因是什么?

解答:瀑布模型的特点:(1). 线性化模型结构;(2). 各阶段具有里程碑特征;(3). 基于文档的驱动;(4). 严格的阶段评审机制。其中的里程碑是指瀑布模型中的阶段只能逐级到达、不能跨越;每个阶段都有明确的任务,都需要产生确定的成果。

由于瀑布模型是一种线性模型,要求项目严格按规程推进,必须等到所有开发工作全部完成以后才能获得可以交付的软件产品。因此,瀑布模型不太适用于用户需求经常变更的软件项目。

3.试说明快速原型的作用。

解答:快速原型方法是原型模型在软件分析、设计阶段的应用,能够用来解决用户对软件系统需求的模糊认识,或用来试探某种设计是否能够获得预期效果。

4.原型进化模型是一种与瀑布模型有着显著差别的软件过程模型。与瀑布模型相比,其优点是什么?一般认为,原型进化模型不能适应较大型软件项目的开发,其原因是什么?

解答:原型进化模型好特点是:先开发一个原型系统给用户使用,然后根据用户使用情况的意见反馈,对原型系统不断修改,使它逐步接近,并最终到达开发目标。因此,与瀑布模型相比,原型进化模型能够更好地适应软件需求变更。但原型进化模型不能像瀑布模型那样提供明确的里程碑管理,使得管理者难以把握开发进度。因此,对于大型软件项

4

目,原型进化模型缺乏有效的管理规程。

5.增量模型是一种结合了瀑布模型与原型进化模型共同优点的过程模型,其特点是什么?在使用增量模型进行软件开发时需要注意的问题是什么?

解答:增量模型的特点是,在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理。但在软件的实际开发中,则将软件系统按功能分解为许多增量构件,并以构件为单位逐个地开发并交付,直到全部增量构件开发完毕,并都被集成到系统之中交付用户使用。使用增量模型需要注意的是,系统需要有更好的结构设计,以便系统能按增量构件进行集成。

6.试说明螺旋模型的特点。一般认为,只有大型项目才有采用螺旋模型的必要,其原因是什么?

解答:螺旋模型是一种引入了风险分析与规避机制的过程模型,是瀑布模型、快速原型方法和风险分析方法的有机结合。由于软件项目的风险分析会增加成本,假如风险分析费用比例过高则不合算。因此,只有开发资金较多的大型项目才有按阶段进行详细风险分析的可能与必要。

7.喷泉模型是专门针对面向对象软件开发方法而提出的,其特点是什么?

解答:喷泉模型的特点是,软件的分析、设计和实现按照迭代的方式交替进行,并通过进化的方式使软件逐渐完善。例如,第一阶段的开发目标是基本功能;第二阶段则在第一阶段基础上对软件进行完善,实现主要功能;第三阶段则又在第二阶段基础上对软件做更进一步的完善。

8.为什么说组件复用模型是一种有利于软件按工业流程生产的过程模型?

解答:在组件复用模型中,软件由组件装配而成,这就如同用标准零部件构造机械设备,因此能带来更好的复用效果,能适应软件按工业流程生产。

9.某大型企业计划开发一个“综合信息管理系统”,涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。该企业的想法是按部门优先级别逐个实现,边应用边开发。对此,需要一种比较合适的过程模型。请对这个过程模型作出符合应用需要的选择,并说明选择理由。

解答:增量模型比较适合该项目,理由是可使系统功能按应用领域逐个实现,并可按优先级别安排各功能构件的开发顺序,有利于边开发边应用。

第3章

1.计算机系统有哪些特点?

解答:计算机系统是一个具有层次结构的复杂系统,且是一个具有智能特性的开放系

5

统。

2.图3-5所示是某“零配件仓库管理系统”的系统流程图。从图中可以看出该系统的以下特点:

(1)系统将以入库单、出库单为依据进行入出库操作,并通过更新库存程序对库存记录文件进行更新,通过入出库记录程序将入库、出库记录添加到入出库数据表中。 (2)系统将以库存数据表中记录的库存量为依据确定采购计划,当某零配件的库存量低于规定的下阈值时,该零配件将会进入到订购单中。其中,订购单由生成采购计划程序产生。

(3)系统将以入出库数据表中的记录为依据进行入出库统计分析,产生入出库统计分析报表。

试根据对图3-5中的系统流程图的理解,将“零配件仓库管理系统”从其工作环境中分离出来,并建立该系统的“系统框架图”。

采购订单生成采购计划入库单更新库存记录库存数据表出库单输入入出库单添加入出库记录入出库数据表入出库统计分析入出库统计分析报表图3-5“零配件仓库管理系统”的系统流程图

解答:

采购计划生成入出库数据输入数据库入出库统计分析 6

3.可行性分析的意义主要体现在哪些方面?

解答:可行性分析是对软件问题解决途径的探索,能够在以下几个方面对软件项目带来具有积极意义的影响。

(1)通过少量的的费用,对项目能否实施尽早作出决断,以避免项目开展以后所带来的大量的人力、物力和时间的浪费。

(2)根据项目所受到的条件限制,对有待开发的系统在体系结构、工作模式等方面作出高层抉择,以利于项目今后的实现。

(3)可以把可行性分析看做软件定义时期需要进行的前导性工作,其结果可以作为一个高层框架用于软件需求分析过程之中,以方便今后软件规格定义工作的顺利开展。

4.技术可行性评估主要涉及哪些方面的问题?

解答:技术可行性评估涉及对技术的先进性、成熟度等技术自身因素的评估以及对技术把握程度的评估。

5.某软件项目已将有待开发的软件分解为600个对象点数,其中有20 %可以复用。假设该项目参与人员月平均工资为3 000元人民币,每月按20个工作日计算,每人每天能够完成1个对象点数的工作量。试估算该软件项目的人力成本。

解答:人力成本 =(600(1—0.2)/ 20)3 000元 = 72 000元

6.假设某软件项目计划按照瀑布模型实施开发,并计划在7个月内完成开发任务。其任务进度安排是:需求分析1个月、软件设计2个月、编码与单元测试3个月、系统集成1个月。试使用甘特图表画出该软件项目的任务进度图表。

解答:

ID1234任务名称需求分析软件设计编码与单元测试系统集成开始时间2004-4-12004-5-32004-7-12004-10-1完成时间2004-4-302004-6-302004-9-302004-10-29持续时间22天43天66天21天2004AprMayJunJulAugSepOct

7

第5章

1.什么是用户需求?什么是系统需求?

解答:(1) 用户需求是用户关于软件的一系列意图、想法的集中体现,是用户关于软件的外界特征的规格表述。(2)系统需求是比用户需求更具有技术特性的需求陈述,它是提供给开发者或用户方技术人员阅读的,并将作为软件开发人员设计系统的起点与基本依据。主要包括功能、数据、性能、安全等诸多方面的需求。

2.用户需求调查的主要有哪些方法?

解答:用户调查是最基本的用户需求信息收集方法,比较常用的调查方法包括访谈用户、开座谈会、问卷调查、 跟班作业、收集用户资料。

3.说明需求分析过程中建立需求原型的作用。

解答:需求原型可用来收集用户需求,对用户需求进行验证,由此可帮助用户克服对软件需求的模糊认识。原型需要根据用户评价不断修正,这有利于挖掘用户的一些潜在需求,使得用户需求能够更加完整地得以表达。

4.说明需求评审的作用。

解答:需求评审是传统的需求检查手段,采用专门评审小组的方式实施对需求文档的有效性评价。评审工作的开展需要开发人员和用户的共同参与,他们一同检查文档中的不规范之处和遗漏之处,一起讨论需求中存在的问题,并针对一些需求分歧进行协商,由此达成对软件需求的共识。

5.某“人力资源管理系统”的组成是:

(1)人事管理子系统,包括:档案管理、岗位设置、人事异动等功能。

(2)业绩管理子系统,包括:业绩标准设置、业绩录入、绩效评估等功能。

(3)工资管理子系统,包括:工资标准设置、工资数据生成、工资结构分析、人力成本分析等功能。

(4)用工管理子系统,包括:人力规划、人员调配、新人招聘等功能。

请使用功能层次图直观描述该“人力资源管理系统”的组织结构。 解答:

8

6.某“零配件仓库管理系统”的系统流程图如下图所示。

采购订单生成采购计划入库单更新库存记录库存数据表出库单输入入出库单添加入出库记录入出库数据表入出库统计分析入出库统计分析报表图4-16“零配件仓库管理系统”的系统流程图

(1)假设该系统原有的各项功能都由“仓库管理员”操作,请使用数据流图说明该系统的逻辑加工流程。

9

(2)又假设准备对该系统进行改造。其中,入库单将由采购部门输入,出库单将由销售部门输入,入出库分析报表将直接打印到计划部门,采购订单将直接打印到采购部门,而原来的“仓库管理员”仅承担入出库产品验证的任务。请说明改造以后的系统与原有系统的差别,并使用数据流图说明改造后的该系统的逻辑加工流程。

解答(1):

更新库存库存变更量库存数据输入入出库单入出库数据生成采购计划入出库数据添加入出库记录入出库单入出库统计分析入出库统计分析报表仓库管理员采购订单 解答(2):

采购订单采购部门更新库存库存变更量库存数据生成采购计划入库单输入入出库单入出库数据入出库数据入出库统计分析出库单添加入出库记录入出库统计分析报表销售部门计划部门

7.某银行储蓄系统的工作过程大致如下:

(1)由储户填写存款单或取款单,然后交由银行工作人员输入系统。

(2)如果是存款,系统将记录存款账号、存款人姓名、身份证号码、存款类型、存款日期、到期日期、利率等信息,并会提示储户输入密码。在此之后,系统会打印一张存款凭据给储户。

(3)如果是取款,则系统首先会根据存款账号核对储户密码。若密码正确,则系统会计算利息,并打印出利息清单给储户。

请使用数据流图分层描述该系统的逻辑加工流程。

10

解答:

存款单密码工作人员储蓄系统存款凭据储户取款单利息清单

11

8.某图书馆图书管理系统对数据的基本要求如下:

(1)涉及图书、图书管理员、读者这三类数据实体。

(2)上述数据实体的数据结构是:图书(图书编号、书名、作者、出版单位、出版日期、定价);图书管理员(管理员编号、姓名、密码、登记日期);读者(读者编号、姓名、工作单位、身份证号码)。

(2)上述数据实体之间的关系是:图书将由管理员登记入册,在登记图书时需要记录图书登记日期;图书将被读者借阅,在图书办理借阅时需要记录图书的借书日期和还书日期。

请使用ER图建立上述数据的数据模型。 解答:

9.某自动取款机系统工作过程大致如下:

(1)在插入储蓄卡之前,自动取款机处于闲置状态。

(2)在插入储蓄卡之后,自动取款机处于待命状态。

(3)在储户输入密码之后,系统将对密码进行验证。若密码正确,自动取款机将进入工作状态;若密码不正确,自动取款机将提示储户输入密码错误。

(4)在自动取款机进入工作状态以后,储户可选择“取款”或“退卡”。若选择“取款”,自动取款机将进入取款状态;若选择“退卡”,自动取款机将退出储蓄卡,然后进入闲置状态。

(5)在自动取款机进入取款状态以后,储户可以输入取款金额,然后可选择“确定”或“取消”。若选择“确定”,自动取款机将进入付款状态,在完成付款之后,自动取款机返回到取款状态;若选择“取消”,自动取款机返回到取款状态。

请使用状态图描述该自动取款机的工作过程。 解答:

12

闲置插卡退卡待命输入密码验证密码[密码正确]工作选择取款取消取款[密码错误]取款输入金额确定取款付款结束付款

第8章

1.概要设计中的主要任务有哪些?

解答:制订规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计评审。

2.与集中式结构比较,客户机∕服务器结构具有哪些方面的优越性?

解答:客户机∕服务器依靠网络将计算任务分布到许多台不同的计算机上,因此结构灵活,便于系统逐步扩充。

3.说明三层客户机∕服务器结构中应用服务器的作用?

解答:应用服务器的作用是使系统中的最易发生需求改变的应用逻辑处理被集中在一起,因此给系统维护带来了很大的便利。当用户应用规则发生变化时,需要改变的不是数目庞大客户端,而是一台或少数几台应用服务器。

4.说明B∕S结构中Web服务器的作用。

解答:Web服务器的作用是将信息表示集中到了专门的“Web服务器”上,因此可使客户端程序更加简化。客户机上已经不需要专门的应用程序,只需要有一个通用的Web浏览器,就可以实现客户端数据的应用。

13

5.说明组件对象分布式结构的特点。

解答:组件对象分布式结构就是通过组件使软件系统中的组件对象被分布到网络上的多台计算机上。组件对象具有一些公共接口,能够向外提供服务,不同组件的对象之间可以通过公共接口相互通信和协同工作。这是一种对称式分布结构,在这种结构中已经没有了客户机与服务器之间的界限,这些对象既可充当服务器,也可充当客户机,其角色只是取决于它是在提供服务,还是在请求服务。

6.一家跨区域连锁销售企业需要开发一个“物流配送系统”,试说明其适合选择哪种结构的系统构架。

解答:为便于跨区域协作与管理,需要B/S结构,但考虑到企业高层数据汇总、数据维护的便利与工作性能,部分后台程序有必要建立为C/S结构。

7.说明概要设计中模块抽象化的作用。

解答:概要设计中的模块是一个抽象化的功能黑盒子,虽然它已是一个与软件实现直接相关的实体单元,已经可以看到它清晰的外观,但是却看不到其内部实现细节。模块抽象化的作用是有利于模块功能得到更加清晰的定义,可提高模块的内聚性。

8.说明模块内部信息隐蔽的作用。

解答:信息隐蔽是指每个模块的内部实现细节对于其他模块来说是隐蔽的,模块内部的数据、语句或过程等,不允许其他不需要这些信息的模块使用。信息隐蔽的作用是使每个模块相互隔离,提高模块的独立性。

9.上级模块A在调用下级模块B时需要返回一个标记X,用于模块A中分支语句的判断条件。这时的模块A与模块B之间是什么耦合关系?

解答:控制耦合。

10.模块A是写文件模块,需要向文件F写数据;模块B是读文件模块,需要从文件F读数据。这时的模块A与模块B之间是什么耦合关系?

解答:公共耦合。

11.一些通用菜单模块属于哪种内聚形式? 解答:逻辑内聚。

12.模块A是数据查询模块,其模块内部包括输入查询条件、连接数据源、打开查询记录集、显示查询结果。该模块属于哪种内聚形式?

解答:顺序内聚。

13.某自动阅卷系统数据流图如图5-39所示。该系统能够从卡片读入考生登记和答卷信息,能够对考卷评分并生或考生成绩,并能够根据考生登记数据和考生成绩数据产生成

14

绩单数据,由此打印靠山成绩通知单。请按照面向数据流的结构映射方法,设计该系统的软件结构。

答题数据检验答题数据有效答题数据读答题卡阅卷记分考生成绩数据表答题卡读卡卡片类别分捡卡片产生成绩单数据成绩单数据打印成绩单登记卡考生登记数据表读登记卡登记数据检验登记数据保存考生登记有效登记数据

图5-.39“自动阅卷系统”数据流图

解答:

15

14.某银行储蓄系统的数据流图已在第3章习题7中要求画出。请根据你所画出的数据流图设计该系统的软件结构。

解答:

16

15.某图书馆图书借阅系统的数据关系模型如图5-40所示。请根据该数据库概念模型设计该数据库逻辑结构。

图5-40 图书借阅系统数据关系模型

解答:

图书类别PK类别号类别说明PKFK1图书信息图书编码类别号书名作者出版单位定价PKFK1图书图书序号图书编码入册日期借阅状态读者PK读者编号姓名工作单位身份证号PK,FK1FK2借阅读者编号图书序号借书日期约定还书日期

17

第6章

1.试说明面向对象中的类模块与传统结构化方法中的模块的区别。

解答:传统结构化方法中的模块是基于功能定义的,可用函数或过程表示,它是动态的,可直接调用。面向对象中的类模块则是基于实体定义的,涉及实体的属性与行为;类模块是对实体的抽象,因此是静态的,一般作为生成对象实例的模板。

2.试描述类的继承性与多态性的作用。

解答:类的继承性是指上级父类能够把自己的属性、操作传递给下级子类,由此可以大大减少程序中的冗余信息。可以使用从原有父类派生出新的子类的办法来修改软件,如改变类原有操作的算法,这时并不需要改变类原有的代码,而只是新建一个派生子类,然后在该派生子类中建立一个与父类方法同名而算法不同的方法。因此,通过类的继承性还可使软件获得更加有效的重用。当需要开发一个新的应用系统时,可以通过继承而使原有的相似系统的功能获得利用,或者从类库中选取需要的类,然后再派生出新的子类,以实现新系统的新功能。

多态性是指子类对象可以像父类对象那样使用,它们可以共享一个操作名,然而却有不同的实现方法。也就是说,不同层次中的类,可以按照各自的需要,分别采用不同的方法实现这个共同的操作。C++语言中,多态性是通过虚函数来实现的,可以声明名称、参数特征和返回值类型都相同的虚函数,但不同层次的类中的虚函数的实现算法却各不相同。虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据接收消息的对象所属的类,决定到底执行哪个特定的版本。多态性增加了面向对象软件系统的灵活性,而且显著提高了软件的可重用性和可扩充性。当需要扩充系统功能或在系统中增加新的实体类时,只要派生出与新的实体类相应的新的子类,并在新派生出的子类中定义符合该类需要的虚函数,而无须修改原有的程序代码。

3.与传统结构化方法比较,面向对象方法具有哪些方面的优越性?

解答:(1)跟现实世界更加接近;(2)可使软件系统结构更加稳定;(3)软件具有更好的可重用性;(4)软件更加便于维护与扩充。

4.试描述UML建模过程。

解答: UML的建模包括分析与设计这两个阶段。其中分析阶段需要创建的模型包括用例图、活动图、类分析图和序列图,设计阶段需要创建的模型包括类设计图、协作图、状态图、构件图和部署图。由于面向对象分析与设计采用了一体化的UML建模工具,这使得分析阶段产生的一系列结果不仅成为了设计阶段的导入条件,并且诸多结果可以通过设计而进行补充,并逐步完善。例如对于类图,分析阶段只是建立了类的概念模型,主要分析系统中与数据有关的实体类,而实体类以外的界面类、控制类,则留到设计阶段解决。基于UML的建模过程也是一个增量迭代过程,需要多次反复,而使得软件系统不断趋于完善。

18

5.第4章的4.4.2节曾使用数据流图分析了一个“工资管理系统”,其涉及职工清单、档案工资、业绩工资、工资报表等诸多数据,涉及人事处、财务处和员工所在工作部门等多个业务部门。现要求使用面向对象方法对该系统进行分析与设计,试建立有关该软件问题的用例图、活动图、类图、序列图和协作图。

解答: (1)用例图

打印工资报表员工所在部门财务处产生工资数据建立员工名册人事处

(2)活动图

: 业绩工资 : 工资表录入业绩工资计算工资录入档案工资 : 档案工资 : 档案工资 : 业绩工资工资计算过程

19

(3)类图

工资档案工资-金额+read()11-月份-金额+calculate()员工-职工号-姓名0..11(4)序列图(5)协作图+read()+read()+write()10..1业绩工资-金额+read()20

4: calculate()1: read() : 工资2: : 员工read()计算工资时的对象交互6.某“仓库管理系统”用户需求陈述如下:

(1)仓库管理系统将被计划部门、仓库管理部门、采购部门、销售部门的相关工作人员使用。其中,计划部门需要制定商品计划。仓库管理部门需要进行商品入库、出库、报损等日常事务管理。采购部门需要查询商品库存情况、获取商品订货计划表。销售部门也需要查询商品库存情况和提出商品订货请求。

(2)由于不同部门有不同的任务,因此系统需要提供针对部门的权限管理机制和针对工作人员的登录注册机制。系统将通过一位系统管理员进行部门授权与工作人员注册管理。 其中,使用仓库管理系统的工作人员需要有惟一的个人身份标识,它既是工作人员登录系统时的身份验证依据,也是工作人员在进行商品操作时的经手人标记。

(3)仓库中的商品需要以品种为单位进行管理,所有商品都要由计划部门按品种进行登记,涉及商品编码、名称、类别、库存下限值等数据。

(4)仓库商品涉及入库、出库、报损这三种事务处理,商品的任何流通都需要以流水方式记录到商品流通表中,并对商品库存量进行更新。当商品出库、报损时,必须考虑到该商品的当前库存量是否能够满足操作需要。出库、报损后,若商品库存量低于库存下限值,将会自动产生订货请求。

(5)仓库管理系统需要在月底对商品流通数据自动进行盘查,需要按月打印商品流通分类汇总报表。

试根据上述需求陈述建立起有关该软件问题的用例图、活动图、类图、序列图和协作图。

解答:(1)用例图

3: read() : 档案工资 : 业绩工资

21

(2)活动图

[库存量不足]商品出库[库存量有余]请求定货商品入库更新库存[库存量有余]商品报损[库存量不足]

商品流通处理过程

(3)类图

22

(4)序列图

23

5)协作图

24

第11章

1.试述GUI界面设计的特点。

解答:GUI界面设计通常需要邀请图形设计人员、系统分析人员、系统设计人员、程序员、用户应用领域方面的专家和社会行为学方面的专家。以及最终用户的共同参与。实际上,用户参与界面设计的过程越早,则在界面设计问题上所花费的精力越少,创建的界面会越具有可用性。

2.为什么说GUI界面设计是一个迭代的过程?

解答:由于一次就设计出非常完美的界面的情况非常少见,因此用户界面设计是一个迭代的过程,需要进行多次反复而逐步使界面设计趋于完善。

用户界面设计的一般步骤是: (1)建立界面需求规格模型。

(2)以界面需求模型为依据创建界面原型。 (3)评价界面原型并进行迭代。

3.GUI界面设计中需要考虑哪些方面的用户因素?

解答:(1)用户工作环境与工作习惯;(2)用户操作定势;(3)界面一致性;(4)界面动作感;(5)界面信息反馈;(6)个性化;(7)容错性;(8) 审美性与可用性。

4.试说明SDI界面与MDI界面的区别。 解答:SDI界面的特点是应用程序一次只能打开一个独立窗体,如Microsoft Windows 中的 “写字板”。

MDI界面则由一个MDI主窗体和多个MDI子窗体组成,其中的MDI主窗体如同容器,用来装载MDI子窗体,而MDI子窗体则被限制于MDI主窗体之内,不能独立存在。

5.主要的用户交互形式有哪些?

解答:(1)直接操纵;(2)菜单选择;(3)表格填写;(4)命令语言;(5)自然语言。

6.主要的用户信息表示形式有哪些? 解答:(1)文本形式;(2)图形形式。

第12章

1.试描述结构化程序的特点。

解答:结构化程序的基本特征是程序的任何位置是单入口、单出口的,因此可能影响单入、单出结构的GOTO语句的使用被受到了很严格的限制。另外,程序控制也要求采用

25

结构化的控制结构,原因也是为确保程序的单入、单出特性。

开始ABCFD结束E

图8-17练习2程流程图

2.某算法设计程序流程图如图8-17所示。试分析该算法为什么不能满足结构化程序设计的要求。为了使它满足结构化设计要求,应该进行哪些方面的修改。

解答:A处有两个出口,并使C、D、E分支块有两个入口,因此不能满足结构化设计要求。由于A至D是GOTO语句所为,可考虑去掉A中GOTO语句,用IF语句替代,并需要将D用公共函数表示,以便程序中能够共享调用。

3.某算法设计程序流程图如图8-18所示。试将该图转换为N-S图、PAD图、PDL伪码,并使用McCabe方法对该算法的复杂度进行估算。

开始ABCDFFETGH循环返回I结束 26

图8-18 练习3程序流程图

解答: (1)NS图

ABCDTEFGFHI

(2)PAD图

ABCDETGFFHI

(3)PDL伪码

A:初始条件

B:输入数据

DO WHILE C(循环条件) D:处理数据

IF E(分支条件) THEN G:处理数据 ELSE

F:处理数据

27

ENDIF

H:处理数据

ENDDO I:输出数据

(4)算法复杂度

V=m-n+p=13-12+1=2

4.需要从1 000以内将能够被7整除的数查询出来,并计算出这些数的和。试分别使用程序流程图、N-S图、PAD图和PDL伪码,设计该程序问题的算法。然后使用McCabe方法对所设计的算法的复杂度进行估算。

28

开始定义变量:i=7,S=0z)N—S图i<=1000i被7整除TS=S+iF输出:ii=i+1循环返回输出:S结束29

定义变量:i=7,S=0i<=1000T i被7整除S=S+i 输出:iFi=i+1 输出:S

(2)PAD图

定义变量:i=7,S=0i<=1000TFS=S+i输出:ii被7整除i=i+1输出:S

(3算法伪码 定义变量:i=7,S=0 DO WHILE i<=1000 IF(i被7整除)

THEN

S=S+i 输出:i

ENDIF

i=i+1 ENDDO 输出:S

(4)算法复杂度=2

5.某零件数据库保存有零件入库情况的记录。其中,零件按编号不重复地登记在数据库的“零件登记表”中,而数据库中的“零件入库记录表”则以流水方式记录了每次零件

30

入库时的编号、数量等信息。现要求按零件编号对零件入库情况进行汇总,请使用Jackson程序设计方法设计该问题的程序算法。

解答:(1)数据结构

(2)基本程序结构

(3)完整程序结构

31

(4)程序伪码

零件数据统计汇总报表打印程序 seq

打印汇总表标题 打印汇总表栏标题 打开零件登记表

产生表体 iter until 零件登记表底

按零件编号产生数量累计 seq

打印编号 打印名称

按零件编号读入入库记录集

累计入库数量 iter until 入库记录集底

处理入库记录 seq

入库数量累计 移到下一条入库记录

处理入库记录 end

累计入库数量 end 打印入库数量 关闭入库记录集

移到下一条零件登记记录

按零件编号产生数量累计end

产生表体 end 关闭零件登记表

零件数据统计汇总报表打印程序end

32

第13章

1.简述你对软件测试目标的认识。

解答:软件测试的目标是发现软件中隐藏的错误。因此,一个好的测试方案应是能够尽量多地发现软件中的错误,而不是证明软件无错。

2.什么是黑盒测试?什么是白盒测试?

解答:黑盒测试是基于程序的外部功能规格而进行的测试,也称为功能测试。白盒测试是基于程序的内部结构与处理过程而进行的测试,也称为逻辑结构测试。

3.说明软件配置在软件测试中的用途。

解答:软件配置包括需求规格说明书、软件设计说明书和源程序清单等,用于提供测试依据。

4.描述单元测试的对象、方法与内容。

解答:单元测试的对象是单元模块,例如,函数、过程。单元测试以白盒测试为主,以黑盒测试为辅。测试内容包括模块接口、局部数据、执行路线、出错处理、条件边界等。在进行单元测试时,测试者应通过详细设计说明书和源程序清单,对模块的内部数据结构、接口结构、程序结构等有比较全面的认识。

5.什么是非渐增组装测试?什么是渐增组装测试?

解答:非渐增组装测试是一种一次性地进行系统组装的方法。这种方法要求先完成单元模块的确认测试,然后把所有模块按设计要求放在一起组装成系统。

渐增组装测试则是一种将单元模块的确认测试与集成测试结合在一起的测试方法,特点是分别把需要集成到系统中的模块按照一定的次序,逐个地集成到系统中去,并在进行模块之间协作性测试的同时对模块的功能进行确认测试。

6.试比较自顶向下渐增与自底向上渐增的异同。

解答:渐增组装可以自顶向下渐增,也可以自底向上渐增。自顶向下渐增的特点是从主控制模块开始,沿着软件的控制层次向下移动,从而逐个地把各个模块集成到系统中来,被测模块不需要上级驱动模块,但需要下级桩模块。自底向上渐增的特点是从最底层的模块开始组装,测试时不需要下级桩模块,但需要上级驱动模块。

7.什么是确认测试?该测试过程需要经过哪几个步骤?

解答:确认测试又称有效性测试或验收测试,其任务是验证软件的功能、性能,以及其他特性等是否与用户的要求保持一致。确认测试通常先进行Alpha测试,然后进行Beta测试。

33

8.试对Alpha测试与Beta测试进行比较。

解答:Alpha测试是在开发环境下进行的用户测试,是用户对软件系统的初步确认,测试时有开发人员在场进行适当指导。Beta测试则是用户在软件实际使用环境下进行的测试,通常开发者不在测试现场,而由用户独立进行。

9.什么是逻辑覆盖?主要有哪几种逻辑覆盖?

解答:逻辑覆盖是一种以程序内部逻辑结构为依据的用例设计方法,包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等几种覆盖强度各不相同的逻辑覆盖形式。

10.试对等价类划分与边界值分析这两种黑盒测试方法进行比较。

解答:等价类划分的特点是把所有可能的输入数据划分成若干个等价类别,然后从每个等价类中取一组数据作为测试数据。边界值分析则主要是测试条件边界值,因此在设计测试用例时,是在边界附近选取测试数据。

11.试描述错误推测方法的特点及其作用。

解答:错误推测法是依靠测试人员的测试经验与直觉,找出程序中可能存在的错误。与其他方法相比,错误推测有更高的测试效率,但需要测试人员有较丰富的测试经验。

12.试比较面向对象单元测试与传统结构化单元测试的异同。

解答:相同之在于是都是测试程序的最小执行单元,如函数、操作。但面向对象的单元概念发生了改变,封装导致了类和对象成为了最小的可测试单元,而一个类可以包含一组不同的操作,并且一个特定的操作还又可能被多个子类继承而共同拥有。因此,在进行面向对象单元测试时,不能孤立地测试单个操作,而应该把操作作为类的一部分来测试。

13.回溯法程序调试策略有什么特点?

解答:回溯法的特点是沿程序的控制流程往回追踪源程序代码,直到找出错误根源或确定故障范围为止。对于小程序,回溯法是一种比较好的调试策略,往往能把故障范围缩小为程序中的一小段代码,能确定故障的准确位置。但对于大型程序,由于需要回溯的路径数目太多,以至回溯变得困难起来。

14.归纳法程序调试策略有什么特点?

解答:归纳法是一种从个别推断一般的系统化的错误定位方法。归纳法往往以程序的错误征兆为线索,通过分析这些线索之间的关系,找出故障。

15.测试过程中如何对软件可靠性进行评估?

解答:估算系统平均无故障时间,估算系统中的故障总数。

16.什么是植入故障法?它有什么用途?

34

解答:在测试之前由专人在程序中随机地植入一些故障,根据发现的故障中原有故障和植入故障的比例,可估计程序中原有故障的总数。

17.试分别使用语句覆盖、条件覆盖设计学生等级成绩输出程序的测试用例。 该程序伪码如下:

PROCEDURE Grade ( INTEGER x )

IF x > 100 OR x < 0

THEN PRINT(\传入数据无效\END IF

IF x >= 85 AND x < = 100 THEN PRINT( \优秀\END IF

IF x >= 60 AND x < 85

THEN PRINT(\合格\END IF

IF x >= 0 AND x < 60 THEN PRINT(\不合格\END IF

END Grade

解答:110,90,70,50

18.需要对一个用户注册窗口进行黑盒测试。假如用户注册码规定为4~8位字符,试分别使用等价类划分、边界值分析这两种方法设计该软件问题的测试用例。

解答:

(1)等价类划分:12,12abc

(2)边界值分析:12a,12ab,12abcdef,12abcdefg

第14章

1.有哪几种类型的软件维护?

解答:改正性维护、适应性维护、完善性维护。

35

2.某学校自己开发了一套计算机上机管理系统,学生可以通过上机卡刷卡上机,但是发现安全性不高,个别学生居然可以在没有刷卡的情况下跳过登录检控,而达到无卡上机的目的,因此,需要对系统进行改造。你认为这应该是一种什么类型的维护。

解答:改正性维护

3.某企业委托一家软件公司开发了一套工资报表生成系统。开始使用时还比较满意,但是随着工资数据的不断积累,报表生成速度越来越慢,以致月工资报表需要整整一天时间才能生成出来。因此,该企业要求软件公司对系统进行改造。你认为这应该是一种什么类型的维护。

解答:完善性维护。

4.为什么系统越大越难维护?

解答:软件系统越大,功能越复杂,理解掌握起来就越困难,也就越难以维护,从而需要更多的维护工作量。

5.软件维护往往会对软件生产率带来负面影响,试对这一现象进行分析。

解答:软件维护可能会使软件生产率下降。原因是不断增加的维护工作量会使软件总成本上升,并可能使开发人员投入新产品开发的时间减少。

6.什么是软件的可维护性?主要有哪些因素在影响着软件的可维护性?

解答:软件可维护性是指维护人员理解、改正、改动和改进这个软件的难易程度。影响着软件的可维护性的主要因素有:可理解性、可靠性、可测试性、可修改性、可移植性、运行效率和可使用性。

7.试对软件维护实施过程进行说明。 解答:软件维护的主要步骤如下:

(1)提交维护申请报告。

(2)对维护申请报告进行技术性评价。

(3)根据对维护申请报告的技术评价,决定如何进行软件维护。 (4)由相关技术人员实施维护。

(5)进行配置管理,并对软件配置进行审计。

8.什么是老化系统?对于老化系统的维护,Yourdon提出了哪些建议?

解答:老化系统是指一些使用早期程序设计语言开发的系统。由于使用时间长而难以维护,但由于某些方面的原因,目前还不能将它们完全抛弃,因此,也就必须对它们做一些必要的维护。

为了能够有效地进行维护,Yourdon提出了以下的几点维护建议:

(1)必须研究程序的使用环境及有关资料,尽可能得到更多的背景信息。 (2)力图熟悉程序的所有控制流程。

36

(3)评价现有文档的可用性。若有帮助,可利用它们在源程序清单中插入注释。 (4)充分利用交叉引用信息。

(5)必须非常谨慎地对程序进行修改。

(6)在删除某些代码时,要确认代码确实不再使用。

(7)不要试图共享程序已有的临时变量或工作区,需要时可插入新的变量以避免冲突。 (8)保持详细的维护活动和维护结果记录。

(9)如果程序结构混乱,修改受到干扰,可抛弃重写。 (10)插入出错检验。

9.什么是逆向工程?什么是再工程?如何使用再工程对老化系统进行维护?

解答:逆向工程是指从目标程序,到源程序,再到设计模型的过程。当逆向工程被用于重新构造或重新生成老化系统时,这个过程就称为再工程。可通过再工程中的逆向工程获得老系统的设计模型,然后通过正向工程对老系统进行修复、改进与完善。

10.什么是软件配置管理?软件维护中心为什么需要特别关注软件配置管理? 解答:软件配置管理是一组针对软件产品的追踪和控制活动,可用来克服软件开发时的混乱现象。维护软件时,会给软件带来变化。这种变化需要通过软件配置进行控制,以防止因变更软件而带来混乱。

37