搜档网
当前位置:搜档网 › 软件工程第一二三章习题参考答案

软件工程第一二三章习题参考答案

软件工程第一二三章习题参考答案
软件工程第一二三章习题参考答案

软件是计算机程序及其有关的数据和文档的结合。

软件危机是指在计算机软件开发和维护时所遇到的一系列问题。

软件危机主要包含两方面的问题:一是如何开发软件以满足对软件日益增长的需求:二是如何 维护数呈不断增长的已有软件。

软件工程是软件开发、运行、维护和引退的系统方法。

软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和 方法来开发与维护软件。软件工程的目标是实现软件的优质高产。

软件工程学的主要内容是软件开发技术和软件工程管理。

软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规立每一阶段的活动、 产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、而向数据结构方法和面向对象 方法等。

习题参考答案:

1. 什么是软件危机?为什么会出现软件危机?

答:软件危机是指在讣算机的开发和维护过程中所遇到的一系列严重问题。这些问题决不仅仅是不 能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。

出现软件危机的原因:一方而与软件本身的特点有关,另一方面也和软件开发与维护的方 法不正

确有关。软件不同于硬件,它是il ?算机系统中逻辑件而不是物理部件。管理和控制软件开发 过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当 多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方 法和技术,这是使软件问题发展成软件危机的主要原因。总结如下:

取得正确的用户需求和正确地描述需求很困难

开发人员对需求的正确理解也有困难 常常在没有正确理解之前就仓促开始编程 软件项目缺

乏有效的组织、管理和内部交流 缺乏软件开发方法、模型和工具的支持 软件维护的困难性 2. 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,吿诉他

们及早 发现并改正错误的ffi 要性时,有人不同意你的观点,认为要求在错误进入软件之

前就清除它们是不 现实的,并举例说:"如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它 呢? ”你怎么反驳他?

答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少, 因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成 的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增:在软件 已经完成时再引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可 避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

3. 什么是软件工程?它有哪些本质特性?怎样用软件工程消除(至少是缓解)软件危机?

答:软件工程是指导汁算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法 来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合 起来,以

1) 2) 3)

4)

5) 6)

经济地开发出高质量的软件并有效地维护它。

软件工程本质特性:1) 复杂性:3)软件经常变化:4) 软件必须有效地支持它的用户: 化背景的人创适产品。

消除软件危机的途径:为了消除软件危机,首先应该对计算机软件有一个正确的认识。必 须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、^$类人 员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功的技术和方 法,井且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误 概念和做法。应该开发和使用更好的软件工具。为了解决软件危机,既要有技术措施(方法和工 具),又要有必要的组织管理措施。

6.美国某科幻电影中有一个描写计算机软件错误的故事,很富于戏剧性,故事情节如下:

由计算机HAL 控制的宇宙飞船在飞往木星的旅途中,飞机指挥员鲍曼和HAL 之间有一段对 话。鲍曼命令道:“HAL,请对备用能进行故障预报测试,” 10秒钟后HAL 报告:“一切正

nJ ?

但是,地面上的飞行指挥中心在重复做了故障预测报告后,却得出了相反的结论:“鲍曼,我 是飞行指挥中心,你的计算机在预报故障时可能犯了错误,我们的两台HAL 计算机都得出了和你 的计算机相反的结论。”

鲍曼用手指敲着控制台说:“HAL,是不是有什么东西干扰了你,以致出了这个差错? ” “听着,鲍曼,我知道你很想帮助我,但是我的信息处理是正常的.不信就査看我的记录吧, 你会看到它是完全正确的。”

“我看过你的服务记录,但是……谁都可能犯错误啊。”

“我并不固执己见,但是,我是不可能犯错误的…….”

“喂,我是飞行指挥中心,我们已经彻底分析了你所遇到的麻烦,我们的两台计算机得出了完 全一致的结论.问题出在故障预报系统中,我们确信是程序设计有错误。你必须断开你的计算机并 改为地面控制模式,我们才能改正这个错误。”

当飽曼断开计算机时,HAL 立即又把自己接了上去.最后,匏曼只好拆下计算机的存储器, 才得以控制他的宇宙飞船。

请问:

<1)为什么鲍曼拆下存储器就能摆脱计算机的干扰而独自控制宇宙飞船?我们现在遇到的软 件问题有这么严重吗?

(2) 如果不依靠飞行指挥中心,鲍曼怎样才知道HAL 的故障预报有问题?

(3) 应该怎样设计计算机系统,才能避免出现故事中描述的这类问题?

答:(1)讣算机通过运行程序来控制宇宙飞船,而程序指令存放在存储器中。拆下存储器之后, 计算机因取不来指令而无法运行程序,因此也就无法控制宇宙飞船了。

我们现在遇到的软件问题没有这么严重,还没有出现计算机不服从人的命令的情况。

(2) 除非鲍曼能亲自分析有故障的部件,或者在计算机上还安装有另外一套故障检测系统, 否则不依靠飞行指挥中心他很难知道HAL 的故障预报有问题。

(3) 应该把HAL 设计成具有若干个储存的问题,供周期性测试之用。通过把应有的测试结果 和HAL 实际测试结果加以比较的方法,有可能发现HAL 的故障预报问题。

此外,不论怎样具体设计HAL 系统,都应该设置一种人工操作模式,并把人工操作模式设置 为最高

软件工程关注于大型程序的构造:2)软件工程的中心课题是控制 开

发软件的效率非常重要:5)和谐地合作是开发软件的关键:6) 7)在软件工程领域中是由具有一种文化背景的人替具有另一种文

等级的控制模式,在任何情况下计算机控制都不能取消人工操作命令。

第二章软件过程

软件过程泄义了运用方法的顺序、应该交付的文档、开发软件的管理描施、各阶段任务完成的

软件过程必须科学、合理,才能获得高质量的软件产品。

软件产品从问题定义开始,经过开发、使用和维护?直到最后被淘汰的整个过程称为软件生命 周

期。

根据软件生产工程化的需要,生存周期的划分有所不同,从而形成了不同的软件生命周期模型

(SW life cycle model ),或称软件开发模型。

软件开发模型有以下几种。

?瀑布模型:规范的、文档驱动的方法。开发阶段按顺序进行,适用于需求分析较明确、开发 技术较成熟的情况。

?快速原型模型:构建原型系统让用户试用并收集用户意见,获取用户真实需求。

?增量模型: 开放的。

?喷泉模型: ?螺旋模型: ?统一过程: 略,采用迭代增量的建造方法。

进行软件开发时可把各种模型的特点结合起来,充分利用优点,减少缺点。

习题参考答案:

1. 什么是软件过程?它与软件工程方法学有何关系?

软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规立了完成^$项任 务的工作步骤。

软件过程宦义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化 必须采取的管理措施,以及标志完成了相应开发活动的里程碑。

软件过程是软件工程方法学的3个重要组成部分之一。

2. 假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到 小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪些软件生命周期模型?请 说明你作出选择的理由.

答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需 求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使 用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。所以,为了开发这个简单的软 件,使用大多数人所熟悉的瀑布模型就可以了。

1)需求明确;2)功能单一,规模小:3)潜在功能变化少。

3. 假设你要为一家生产和销售长筒靴的公司开发一个软件,使用此软件来监控该公司的存货,并 跟踪从购买椽胶开始,到生产长筒靴、发赏给各个连锁店,宜至卖给顾客的全部过程。以保证生 产、销售过程的各个环节供需平衡,既不会有停工待料现象,也不会有供不应求现象。你在为这个 项目选择生命周期模型时使用什么准则?

答:快速原型模型。

优点是能在早期向用户提交部分产品和易于维护,缺点是软件的体系结构必须是

适用于而向对象方法。

适用于大规模内部开发项目,有利于分析风险和排除凤险。

适用于而向对象方法,使用统一建模语言UML,采取用例驱动和架构优先的策

1)软件系统的使用人员繁杂,需求确左困难。

2)软件应用环节多,功能变化多,初期需求变化多,在修改原型的过程中明确功能。

4.列出在开发上述软件产品过程中可能遇到的风险。你打算怎样排除这些风险?

答:1)需求不明确,在明确需求的过程中延误交工期限。

排除:利用快速原型法,选好快速开发工具,对用户的需求变更做出快速反应,及早确楚最后需求。

2)需求越提越多,无法按照计划及时宦下需求。

排除:帮助用户对需求进行分析,确宦下来近期完成的主要功能。其它附加功能和次要功能可在升级版本中体现。确保项目的噸利开展。

3)开发人员不熟悉业务。

排除:在和用户确楚需求的过程中,及时向用户请教业务相关的知识,同时也可以请用户针对与业务流程或专业术语进行专门的培训。

5.你为靴类连锁店开发的存货监控软件很受用户欢迎,现在软件开发公司决定把它重新写成一个通用软件包,以卖给各种生产并通过自己的连锁店销售产品的公司。因此,这个新的软件产品必须是可移植的,并且应该能够很容易地适应新的运行环境(硬件或操作系统),以满足不同用户的需求。你在为本题中的软件选择生命周期模型时,使用的准则与在第3题中使用的准则有哪些不同?答:螺旋模型。什么准则?

构件模空"

--------- 1)迪用模型,并满足不同ffl户的需求I利用增:&模电,确上出適川的部仆,同时针不同用户开发不同的构件,最厉进行组令"

--------- 2)可移肚适应新的运行环境U利用用f肚模勺的丿I:放式体系估枸,介理细仝配間?欣件系统

补.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发.由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?

答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪些模型有助于加快产品开发的进度。使用增S模型开发软件时可以并行完成开发工作,因此能够加快开发进度。

这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平:第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设讼成开放式的,以利于今后的改进和扩充。

综上所述,采用增量模型来完成这个项目比较恰当。

第三章结构化分析

习题参考答案:

1.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存款存单给储户;,如果是取款而且取款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

请用数据流图描述本系统的功能,并用实体?联系图描述系统中的数据对象。

答:顶级数据流图:

第一级数据流图:

第二级数据流图:

本问题中共有两类实体.分別是“储户"和“储番所”,在它们之间存在“存取款”关系。因为一位储户可以在多家储着所存取款,一家储番所拥有多位储户,所以“存取款”是多对多

相关主题