软件工程导论--第五章课后答案
- 格式:docx
- 大小:41.13 KB
- 文档页数:5
软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。
以下是软件工程导论第六版课后习题的完整答案。
第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。
1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。
第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。
2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。
第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。
3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。
第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。
第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。
5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。
第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。
6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。
至此,我们完成了软件工程导论第六版课后习题的完整答案。
《软件工程导论》课后习题详细答案第一章软件工程概论1.什么是软件危机?软件危机是指在运算机软件的开发和爱护过程中所遇到的一系列严峻咨询题。
这些咨询题表现在以下几个方面:(1)用户对开发出的软件专门难中意。
(2)软件产品的质量往往靠不住。
(3)一样软件专门难爱护。
(4)软件生产效率专门低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估量。
(7)软件技术的进展远远满足不了运算机应用的普及与深入的需要。
2.什么缘故会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正明白得软件产品是一个完整的配置组成。
造成开发中制定打算盲目、编程草率,不考虑爱护工作的必要性。
(2) 软件本身方面,关于运算机系统来讲,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件爱护困难。
(3) 专门是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估量、爱护困难等一系列咨询题更为突出,技术的进展差不多远远不能适应社会需求。
3.如何样克服软件危机?(1) 充分吸取和借鉴人类长期以来从事各种工程项目中积存的行之有效的有效原理、概念、技术与方法,专门是吸取几十年来人类从事运算机硬件研究和开发的体会教训。
在开发软件的过程中努力作到良好的组织,严格的治理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在运算机系统早期进展时期形成的一些错误概念和作法。
(3) 按照不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个时期使用的软件工具集合成一个整体,形成一个专门好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织治理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、爱护到剔除的全过程。
软件工程导论(第5版)课后习题答案(总21页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--1-5 根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位)如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字)在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。
要求计算:(1) 在1985年对计算机存储容量的需求估计是多少如果字长为16位,这个存储器的价格是多少(2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。
如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。
(1)在1985年对计算机存储容量的需求,估计是M=(1985-1960)=4474263(字)如果字长为16位,则这个存储器的价格是P=* 1985-1974*4474263=$5789(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量是:4474263/200=22371(人月)程序员的月平均工资是4000美元,开发出4474263条指令的成本是22371*4000=¥(3)在1995年对存储容量的需求估计为:M=4080E0。
28(1995-1960)=(字)=如果字长为32位,则这个存储器的价格是:P=*32*(1995-1974)*=$7127如果一条指令为一个字长,则为使存储器装满程序共需73,577,679条指令。
软件⼯程导论张海藩(第五版)课后习题答案《软件⼯程导论》课后习题答案第⼀章软件⼯程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。
这些问题表现在以下⼏个⽅⾯:(1)⽤户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)⼀般软件很难维护。
(4)软件⽣产效率很低。
(5)软件开发成本越来越⼤。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满⾜不了计算机应⽤的普及与深⼊的需要。
2.为什么会产⽣软件危机?(1) 开发⼈员⽅⾯,对软件产品缺乏正确认识,没有真正理解软件产品是⼀个完整的配置组成。
造成开发中制定计划盲⽬、编程草率,不考虑维护⼯作的必要性。
(2) 软件本⾝⽅⾯,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统⼀的、公认的⽅法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越⼤,复杂程度越来越⾼,原有软件开发⽅式效率不⾼、质量不能保证、成本过⾼、研制周期不易估计、维护困难等⼀系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴⼈类长期以来从事各种⼯程项⽬中积累的⾏之有效的有效原理、概念、技术与⽅法,特别是吸取⼏⼗年来⼈类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努⼒作到良好的组织,严格的管理,相互友好的协作。
(2) 推⼴在实践中总结出来的开发软件的成功的技术和⽅法,并研究更好、更有效的技术和⽅法,尽快克服在计算机系统早期发展阶段形成的⼀些错误概念和作法。
(3) 根据不同的应⽤领域,开发更好的软件⼯具并使⽤这些⼯具。
将软件开发各个阶段使⽤的软件⼯具集合成⼀个整体,形成⼀个很好的软件开发⽀环环境。
总之为了解决软件危机,既要有技术措施(⽅法和⼯具),⼜要有必要的组织管理措施。
4.构成软件项⽬的最终产品:应⽤程序、系统程序、⾯向⽤户的⽂档资料和⾯向开发者的⽂档资料。
《软件工程导论》课后习题答案第三章需求分析习题答案1.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
第一章测试1【多选题】(1分)软件的主要特性是()。
A.无形性B.可独立构成计算机系统C.高成本D.包括程序和文档2【单选题】(1分)包含风险分析的软件工程模型是()。
A.螺旋模型B.增量模型C.瀑布模型D.喷泉模型3【多选题】(1分)下列属于面向对象开发方法的是()。
A.UMLB.OMTC.CoadD.Booch4【多选题】(1分)软件危机的主要表现是()。
A.软件生产率低下B.软件产品的质量低劣C.软件开发人员明显不足D.软件成本太高5【单选题】(1分)从事物的组成部件及每个部件的属性、功能来认识事物。
这种方法被称为()的方法。
A.面向属性B.面向对象C.面向数据D.面向过程6【单选题】(1分)面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的()结构。
A.程序B.物理C.数据D.逻辑7【判断题】(1分)增量模型是非整体开发的模型,软件的开发是用增量开发和增量提交。
()A.错B.对8【判断题】(1分)统一迭代过程在不同阶段,各个核心工作流的工作重心相同。
()A.错B.对9【判断题】(1分)喷泉模型是一种面向对象模型。
()A.错B.对10【判断题】(1分)螺旋模型不适用于大型内部软件开发。
()A.对B.错第二章测试1【单选题】(1分)面向对象的分析方法主要是建立三类模型,即()。
A.对象模型、动态模型、应用模型B.对象模型、动态模型、功能模型C.ER模型、对象模型、功能模型D.系统模型、ER模型、应用模型2【单选题】(1分)SA法的主要描述手段有()。
A.系统流程图和模块图B.功能结构图、加工说明C.DFD图、数据词典、加工说明D.软件结构图、加工说明3【多选题】(1分)画分层DFD图的基本原则有()。
A.数据守恒原则B.数据流封闭的原则C.分解的可靠性原则D.子、父图平衡的原则4【单选题】(1分)数据字典是数据流图中所有元素的定义的集合,一般由以下4类条目组成()。
软件工程导论课后习题答案95829882第一章软件工程概论1.什么是软件危机?它们有哪些典型表现?什么缘故会显现软件危机?“软件危机”是指运算机软件的“开发”和“爱护”过程中所遇到的一系列“严峻问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
“软件危机”包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何爱护数量不断膨胀的已有软件。
它们有以下表现:(1)对软件开发成本和进度的估量常常专门不准确;(2)用户对“已完成的”软件系统不中意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可爱护的;(5)软件通常没有适当的文档资料;(6)软件成本在运算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上运算机应用普及深入的趋势。
显现软件危机的缘故(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件爱护之间的矛盾(5)遗产系统与实施软件之间的矛盾2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发觉并改正错误的重要性时,有人不同意那个观点,认为要求在错误进入软件之前就清晰它们是不现实的,并举例说:“假如一个故障是编码错误造成的,那么,一个人如何能在设计时期清除它呢?”应该如何反对他?答:在软件开发的不同时期进行修改付出的代价是专门不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分差不多完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“差不多完成”是在引入变动,因此付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可幸免的,但要修改的成本是专门小的,因为这不是整体构架的错误。
第五章习题答案
1、为每种类型的模块耦合举一个具体例子。
答:耦合是对一个软件结构内不同模块之间互连程度的度量。
耦合强弱取决于模块间接口的复杂程度,进入或访问某一模块的点,
以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为:
担立II 騎
下面举例说明以上各种耦合:
a. 非直接耦合(Non direct Coupli ng)在这种情况下,两个模块之间
没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。
例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦
合。
b. 数据耦合(Data Couplin®即一个模块访问另一个模块时,彼此
之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。
如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,
求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用模块A即可完成,在这种调用关系中,模块A的运算结果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。
数据耦合是松散的耦合,模块间的独立性比较强。
c. 标记耦合(Stamp Coupling,即一组模块通过参数传递记录信息,这就是标
记耦合。
事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。
d. 控制耦合(Control Coupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如
下图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。
e. 外部耦合(External Coupling即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。
如C语言中都访问被说明为extern 类型的外部变量的各个模块之间即发生外部耦合。
外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
f. 公共耦合(Common Coupling若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。
公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。
如几个模块对同一个数据库的查询就属于这种耦合。
公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双向的操作,如两个或多个模块对同一文件的读写操作。
下面用图表示松散的和紧密的公共耦合
模块注
模块b
两个模块有部分代码重叠;
------- k
EnlryL: --------
► Entry2^
一个模块有多个入口
2、为每种类型的模块内聚举一个具体例子。
答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信
g. 内容耦合。
即有下列情况时即出现内容耦合。
(1) 一个模块访问另一个模块数据;
(2) —个模块不通过正常入口而转到另一个模块的内部;
(3) 两个模块有一部分代码重叠;
(4) 一个模块有多个入口。
匮麼的皑步與言
一个模块访问另一个模块数据;
息隐蔽和局部化的自然扩展,一般模块的内聚性分为7种,它们的关系如下图示
下面举例说明各种内聚的情况
a. 偶然内聚。
即模块内各部分之间没有联系,或者即使有联系也很松散,这种即为偶然内聚,它是
内聚程度最低的模块。
如一些没有任何联系的语句可能在许多模块中重复多次,程序员为了节省存储,把它们抽出来组成一个新的模块,这个模块就是偶然内聚模块,例如C语言中的# define TRY ODBCC …
b. 逻辑内聚(Logical Cohesion即这种模块把几种功能组合在一起,每次调用时,由传送给模块的
判定参数来确定该模块应执行哪一种功能。
如根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录。
c. 时间内聚(Classical Cohesion这种模块大多数为多功能模块,但模块的各人功能的执行与时间
有关,通常要求所有功能必须在同一时间段内执行,例如初始化模块和终止模块。
d. 过程内聚(Procedural Cohesion即一个模块内的处理是相关的,
而且必须以特定次序执行,则
这个模块称为过程内聚模块。
例如我们把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。
e. 通信内聚(Communication Cohesion)如果一个模块内部各功能部分都使用可相同的数据输入,
或产生了可相同的数据输入,或产生了可相同的输出数据,则称之为通信内聚模块。
通常,通信内聚模块是通过数据流图来定义的。
f. 顺序内聚,即一个模块内处理元素和同一功能紧密切相关,而且
这些处理必须顺序执行(通常一
个处理元素的输出数据据作为下一处理元素的输入数据) 如在对员工加工资的数据库操作中,读取数据和更新数据即具有顺序内聚的关系。
g. 功能内聚(Functional Cohesion)即模块内部所有处理元素属于
一个整体,完成一个单一的功能,
则称为功能内聚,功能内聚是最高程度的内聚。
3、用面向数据流的方法设计下列系统的软件结构。
(1)存储系统(参见习题2第2题)。