软件工程概论课后习题答案.pdf
《软件工程概论课后习题答案.pdf》由会员分享,可在线阅读,更多相关《软件工程概论课后习题答案.pdf(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程概论人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。1.2 认 为“软件就是程序,软件开发就是编程序。“这种观点是否正确?为什么?认为 软件就是程序,软件开发就是编程序。这种观点是错误的。首 先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其 次,在软件开发中,编程只是软件开发过程的一个阶段。1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建
2、筑设计的设计图纸。1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列重问题。典型表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对 已完成的 软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个面:(1)缺乏软件开发的经验
3、和有关软件开发数据的积累,使得开发工作计划很难制定。(2)软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。(3)软件开发过程不规。如,没有真正了解用户的需求就开始编程序。(4)随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学格的管理。(5)缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和法来开发和维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术法结合起来,以经济地开发出高质量的软件并有效地维护它
4、,这就是软件工程。1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?(1)问题定义与可行性研究:问题定义必须回答的关键问题是:要解决的问题是什么。可行性研究要回答的关键问题是:在成本和时间的限制条件下能否解决问题?是否值得 做?二 需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答 目标系统必须做什么 这个问题。(3)软件设计:本阶段要回答的关键问题是 目标系统如做?为 此,必须在设计阶段中制定设计案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都是意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基
5、础,此即所谓详细设计。(4)程序编码和单元测试:本阶段要解决的问题是 正确地实现已做的设计,为 此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5)集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作
6、由开发人员、用户之外的第三者承担。(6)运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若干年。软件在运行中可能由于多面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。1.7常见的软件生存期模型主要有哪些?每种模型的优缺点是什么?常见的软件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。(1)瀑布模型优 点:可强迫开发人员采用规化的法;格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺 点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终
7、开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。适用围:瀑布模型只适用于项目开始时需求已确定的情况。(2)快速原型模型优 点:有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。缺 点:要求开发人员快速建立原型。适用围:适用于需求不明确的软件项目。(3)增量模型优 点:能在较短时间向用户提交可完成一些基本功能的产品,即从第一个构件交付之日起,用户就能做一些有用的工作。逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲
8、击。项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因 此,最重要的系统服务将接受最多的测试。缺 点:在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、便。适用围:适用于工期紧、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。(4)螺旋模型优 点:对可选案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过
9、多测试或测试不足所带来的风险;在螺旋模型中维护只是模型的另一个期,在维护和开发之间并没有本质区别。缺 点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。适用围:适用于部开发的大型软件(开发期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。(5)喷泉模型优 点:在开发过程中使用统一的概念和法,各阶段之间没有明显的界限,容易实现各个开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。缺 点:由于各个阶段之间的界线不明确,容易造成软件
10、开发过程的无序。适用围:适用于面向对象的软件开发。(6)统一过程优 点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供了较大的通用性。缺 点:RU P只是一个开发过程,并没有涵盖软件过程的全部容,例如它缺少关于软件运行和支持等面的容;此 外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织大围实现重用的可能性。适用围:适用于基于构件的软件开发。第2章软件工程法与工具2.1
11、软件工程的三种基本要素是什么,各自的作用是什么?软件工程的三种基本要素是法、工具和过程。(1)软件工程法(method)为建造软件提供技术上的解决法(如做)。目前使用得最广泛的法是传统法(结构化法)和面向对象法。(2)工具为法的运用提供自动的或半自动的软件支撑环境。(3)过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。2.2简述传统法和面向对象法的特点。(1)传统法的特点传统法也称为生命期法或结构化型。它采用结构化技术来完成软件开发的各项任务。这种法学把软件生命期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。每一个阶段的开始和结束都有格
12、的标准,对于任两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准。传统法的主要缺点是在适应需求变化面不够灵活,另 外,结构化法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。(2)面向对象法的特点面向对象法把数据和行为看成同等重要,是将数据和对数据的操作紧密地结合起来的法,这也是面向对象法与传统法的重要区别。面向对象法的出发点和基本原则,是尽量模拟人类习惯的思维式,使开发软件的法和过程尽可能接近人类认识问题和解决问题的法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。对于大型、复杂及交互性比较强的系统,使用面向对象法更有优势。2.3形式化法的特点是什么?形式化法
13、的主要特点是:(1)软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2)设计、实现和单元测试等开发过程由一个变换开发过程代替。通过一系列变换将形式的规格说明细化成为程序。2.5 安装 Rational Rose2000/2002/2003,并练习基本操作。略。第3章软件需求获取与结构化分析法3.1为什么结构化分析要叫“结构化”?有其他可替代的术语吗?“结构化”一词应来源于 结构化程序设计,先有 结构化程序设计”的思想,后有结构化设计及结构化分析。有时称传统的分析法,指的就是结构化分析法。3.2 顶层数据流图或称环境图的作用是什么?顶层数据流图(或称环境图)仅包括一个数据处理过程
14、,也就是要开发的目标系统。其作用如下:(1)确定系统在其环境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。(2)通过确定系统的输入和输出与外部实体的关系确定系统的边界,也就是要确定哪些功能或处理属于系统围之,哪些属于系统围之外,需要由其他系统处理或人工处理。3.3 在对数据流图进行分解时需要注意哪些问题?在对数据流图进行分解时,需要注意以下两个问题:(1)当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。(2)注意分层细化时对编号的处理法。3.4 银行存款业务如下:客户到银行柜台存款时,首先填
15、写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、是否留密码),填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。最后印出开户单或存款单给用户。请画出银行存款业务的分层数据流图(至少画出 两 层)。(1)识别外部实体及输入输出数据流外部实体:储户、业务员。输入数据流:存款单,开户单,密码。可以将存款单和开户单抽象为事务。输出数据流:存款单,开户单。(2)顶层数据流图(3)一层数据流图对银行储蓄系统进行分解,从大的面分解为接收事务、处
16、理开户、处理存款三部分,得到一层数据流图。(4)二层数据流图对 处 理 存 款 及 处 理 开 户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数据流图。处理存款的数据流图处理开户的数据流图3.5按照以下描述,画 出ER图。一本教材由多章组成,每一章包含多节、小结和习题组成,章和节都具有标题和序号属性。ER图如下:第 4 章结构化设计法4.1 当你 编写 程序时你设计软件吗?软件设计和编码有什么不同吗?在“编写 程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。4.4 是否存在一种情况复杂问题需要较少的工作去解决
17、?这样的情况对模块化观点有什么影 响?通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高聚、低耦合的,这样才能减少工作量,否 则,虽然每个模块的工作简单 了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。4.8 用面向数据流的法设计第3章习题3.4所描述的银行存款业务的软件结构,并使用改进法对模块结构进行精化。对 第3章习题3.4给出的数据流图进行精化,确定其边界,如下图所示。(2)对上图按事务型数据流进行处理,完成第一级分解,得到顶层和一层模块结构图。第一级分
18、解后的结构图完成第二级分解。对上图所示的“输入数据、输出数据 和 调度 模块进行分 解,得到未经精化的输入结构、输出结构和事务结构。未经精化的输入结构未经精化的输出结构未经精化的事务结构将上面的三部分合在一起,得到初始的软件结构,如下图所示。初始软件结构图(4)对软件结构进行精化。1)由于调度模块下只有两种事务,因 此,可以将调度模块合并到上级模块中,如图所示。将调度模块合并到上级模块后的软件蹄2)“记录密码 模块的作用围不在其控制围之(即 输入密码 模块不在 记录密码模块的控制围之),需对其进行调整,如图所示。除X赤 相3)提高模块独立性,对模块结构进行调整,如下图所示。存款业务输入事务 处
19、理存款X X记录存款信息 打印存款单处理开户/I X记录开户信息 记录密码 打印开户单输入密码调整后的模块结构图4.9将大的软件划分成模块有什么好处?是不是模块划分得越小越好?划分模块的依据是什 么?将大的软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责。这种法有利于将复杂的问题简单化,是分而治之策略的具体表现。尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但 是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。划分模块的依据是,模块只具有单一的功
20、能且与其他模块没有太多的联系。4.11 结构化程序设计禁止使用goto语句吗?如果程序中使用了 goto语 句,是否就可以断定它是非结构化的?结构化程序设计并不禁止使用goto语句。如果程序中使用了 goto语 句,并不能断定它是非结构化的。4.12 对于给定的算法,如判断它是否是结构化的?对于给定的算法,如果符合以下三条原则,就可以判断它是结构化的。(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。(2)选用的控制结构只准有一个入口和一个出口。程序语句组成容易识别的块(Block),每块只有一个入口和一个出口。4.13 对于图4-49所示的流程图,试分别用N-S图和PAD表
21、示之。图4-49流程图对应的N-S图如下:对应的PAD如 下:4.14图4-50所示的流程图完成的功能是使用二分查找法在table数组中找出值为item的数是否存在。(1)判断此算法是否是结构化的,说明理由。(2)若算法是非结构化的,设计一个等价的结构化算法,并 用N-S图表示。开始图4-5 0二分查找算法的流程图(1)不是结构化的,最上面的循环有两个出口,最下面的分支有三个入口。等价的结构化算法如下:I=(START+FINISH)/2(FINISH-START)1&TABLE(I)!=ITEMI=(START+FINISH)/2或者或者FLAG=OSTART=I+1FINISH=I-14.
22、15使用自顶向下、逐步细化法设计算法,完成下列任务:产生一个10 x10的二维随机整数阵,先求出每一行的最大值和每一列的最小值;然 后 求1 0个最大值中的最小者,10个最小值中的最大者;最后求这两个数之差的平。(1)首先写出下面的程序框架:main()定义10 x10的二维整数数组A,长度为10的一维数组B,C;建立10 x10的二维随机整数数组A;-.-1求A中每一行的最大值今数组B;-2求A中每一列的最小值数组C;.-.-3求数组B中的最小值“minOfB;-4求数组C中的最大值“maxOfC;-5(minOfB-maxOfC)A2-result;(2)对后面加标记的部分进行细化main
23、()定义10 x10的二维整数数组A,长度为10的一维数组B,C;/*建立10 x10的二维随机整数数组A*/-1for(i=0;i=9;i+)for(j=0;j=9;j+)产生随机整数-Ai,j;/*求A中每一行的最大值“数组B*/-.-.-2for(i=0;i=9;i+)求数组A第i行 的 最 大 值-.2.1)/*求A中每一列的最小值“数组C*/-.-3for(j=0;j=9;j+)求数组A第j列 的 最 小 值.3.1)/*求数组B中的最小值-minOfB*/.4minOfB=B0;for(i=l;i=9;i+)if(minOfB Bi)minOfB=Bi;)/*求数组C中的最大值“m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概论 课后 习题 答案
限制150内