软件工程方法及实践许家珆习题答案.docx

上传人:b****5 文档编号:6069434 上传时间:2023-01-03 格式:DOCX 页数:21 大小:38.04KB
下载 相关 举报
软件工程方法及实践许家珆习题答案.docx_第1页
第1页 / 共21页
软件工程方法及实践许家珆习题答案.docx_第2页
第2页 / 共21页
软件工程方法及实践许家珆习题答案.docx_第3页
第3页 / 共21页
软件工程方法及实践许家珆习题答案.docx_第4页
第4页 / 共21页
软件工程方法及实践许家珆习题答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

软件工程方法及实践许家珆习题答案.docx

《软件工程方法及实践许家珆习题答案.docx》由会员分享,可在线阅读,更多相关《软件工程方法及实践许家珆习题答案.docx(21页珍藏版)》请在冰豆网上搜索。

软件工程方法及实践许家珆习题答案.docx

软件工程方法及实践许家珆习题答案

习题答案

家珆编

习题一答案

    一、选择题

    1.软件的主要特性是(ABC)。

A)无形                  B)高本钱

    C)包括程序和文档  D)可独立构成计算机系统

    2.软件工程三要素是(CD)。

    A)技术、法和工具 B)法、工具和过程 

    C)法、对象和类 D)过程、模型、法

    3.包含风险分析的软件工程模型是(A)。

    A)螺旋模型      B)瀑布模型      C)增量模型      D)喷泉模型

    4.软件工程的主要目标是(C)。

    A)软件需求 B)软件设计 C)风险分析 D)软件实现

    5.以下属于面向对象开发法的是(ABCD)。

    A)Booch  B)UML  C)Coad  D)OMT

    6.软件危机的主要表现是(BD)。

    A)软件本钱太高B)软件产品的质量低劣

    C)软件开发人员明显缺乏D)软件生产率低下

    7.软件开发法的主要工作模型有(ABC)

    A)螺旋模型B)循环模型C)瀑布模型D)专家模型

    8.软件工程的目标有(ABC)。

    A)易于维护B)低的开发本钱

C)高性能D)短的开发期

    9.软件工程学的目的和意义是( )。

    A)应用科学的法和工程化的规管理来指导软件开发

    B)抑制软件危机

    C)作好软件开发的培训工作

    D)以较低的本钱开发出高质量的软件

    二、判断题

    1.软件就是程序,编写软件就是编写程序。

(×)

    2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。

(×)

    3.构造化法的工作模型是使用螺旋模型进展开发。

(×)

    4.构造化法和JSP法都不适合于大型软件的开发。

(√)

    5.原型化开发法包括生成原型和实现原型两个步骤。

(×)

    6.面向对象的开发法包括面向对象的分析、面向对象的设计和面向对象的程序设计。

(√)

    7.软件危机的主要表现是软件的需求量迅速增加,软件价格上升。

(×)

    8.软件工具的作用是为了延长软件产品的寿命。

(×)

    9.软件工程过程应该以软件设计为中心,关键是编写程序。

(×)

    10.RCP法与RSP法的主要区别是前者采用循环渐进的开发式,原型将成为最终的产品,而后者将被废弃。

(√)

    三、简答题

    1.软件产品的特性是什么.

    答:

● 软件是一种逻辑产品,具有无形性;

 ● 软件产品的生产主要是研制;

 ● 软件不存在磨损和老化问题,但存在退化问题;

 ● 软件产品的生产主要是脑力劳动;

 ● 软件产品的本钱非常昂贵,其开发式目前尚未完全摆脱手工生产式;

●软件具有"复杂性〞,其开发和运行常受到计算机系统的限制。

    2.软件开展有几个阶段.各有特征.

    答:

①程序设计阶段。

   硬件特征:

价格贵、存储容量小、运行可靠性差。

   软件特征:

只有程序、程序设计概念,不重视程序设计法。

  ②程序系统阶段。

   硬件特征:

速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。

   软件特征:

程序员数量猛增,开发人员素质低。

  ③软件工程阶段。

   硬件特征:

向超高速、大容量、微型化及网络化向开展。

   软件特征:

开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。

    3.什么是软件危机.其产生的原因是什么.

    答:

"软件危机〞(SoftwareCrisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。

而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件开展的需要。

致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。

软件危机主要表现在两个面:

    

(1)软件产品质量低劣,甚至开发过程就夭折。

    

(2)软件生产率低,不能满足需要。

    4.什么是软件生存期模型.它有哪些主要模型.

    答:

软件生存期模型是描述软件开发过程中各种活动如执行的模型。

主要模型包括:

瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。

    5.有哪些主要的软件开发法.

    答:

主要的软件开发法有:

构造化开发法、Jackson(JSP、JSD)法、原型化开发法、维也纳开发法(VDM)和面向对象的开发法。

    6.软件生命期各阶段的任务是什么.

    答:

软件生命期瀑布模型分为六个阶段:

    ●可行性研究与方案(确定系统的目标和规模,分析工程的可行性);

    ●需求分析与规格说明(明确系统的规格和要求);

    ●设计(包括概要设计和详细设计,将系统分解为模块);

    ●编程(用程序语言实现每个模块,简单容易);

    ●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);

    ●运行维护(扩大功能、纠错等)。

    习题二答案

一、选择题

    1.需求分析的主要目的是(BC)。

    A)系统开发的具体案

    B)进一步确定用户的需求

    C)解决系统是"做什么的问题〞

    D)解决系统是"如做的问题〞

    2.需求分析的主要法有(CD)。

    A)形式化分析法B)PAD图描述

    C)构造化分析(SA)法D)OOA法

    3.面向对象的分析法主要是建立三类模型,即(D)。

A)系统模型、ER模型、应用模型

    B)对象模型、动态模型、应用模型

    C)E-R模型、对象模型、功能模型

    D)对象模型、动态模型、功能模型

    4.SA法的主要描述手段有(B)。

A)系统流程图和模块图

    B)DFD图、数据词典、加工说明

    C)软件构造图、加工说明

    D)功能构造图、加工说明

    5.画分层DFD图的根本原那么有(ACD)。

    A)数据守恒原那么

    B)分解的可靠性原那么

    C)子、父图平衡的原那么

    D)数据流封闭的原那么

    6.在E-R模型中,包含以下根本成分(C)。

    A)数据、对象、实体

    B)控制、联系、对象

    C)实体、联系、属性

    D)实体、属性、联系

    7.画DFD图的主要目的是(AD)。

A)作为需求分析阶段用户与开发者之间交流信息的工具

    B)对系统的数据构造进展描述

    C)对目标系统的层次构造进展描述

    D)作为分析和设计的工具

    8.数据字典是数据流图中所有元素的定义的集合,一般由以下四类条目组成(C)。

    A)数据说明条目、控制流条目、加工条目、数据存储条目

    B)数据流条目、数据项条目、文件条目、加工条目

    C)数据源条目、数据流条目、数据处理条目、数据文件条目

    D)数据流条目、数据文件条目、数据池条目、加工条目

    9.在需求分析阶段主要采用图形工具来描述的原因是(BC)。

A)图形的信息量大,便于描述规模大的软件系统

    B)图形工具能够极好地概括描述一个系统的信息,比文字表达能够更好地表达重要的细节

    C)图形能够更加直观地描述目标系统,便于用户理解和交流,有利于开发者与用户之间达成一致的需求

    D)图形比文字描述简单、形象

    二、判断题

    1.在进展了可行性分析后,需求分析就只需要解决目标系统的设计案。

(×)

    2.SA法是面向数据流,建立在数据封闭原那么上的需求分析法。

(√)

    3.HIPO法既是需求分析法,又是软件设计法。

(√)

    4.在面向对象的需求分析法中,建立动态模型是最主要的任务。

(×)

    5.加工小说明是对系统流程图中的加工进展说明。

(×)

    6.判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。

(×)

    7.需求分析的主要法有SD法、OOA法及HIPO法等。

(×)

    8.分层的DFD图可以用于可行性分析阶段,描述系统的物理构造。

(×)

    9.信息建模法是从数据的角度来建立信息模型的,最常用的描述信息模型的法是E-R图。

(√)

     10.用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。

(√)

    三、问答题

    1.什么是需求分析.需求分析阶段的根本任务是什么.

    答:

    需求分析是当前软件工程中的关键问题,需求分析阶段的任务是:

在可行性分析的根底上,进一步了解、确定用户需求。

准确地答复"系统必须做什么.〞的问题。

获得需求规格说明书。

还涉及到软件系统的目标、软件系统提供的效劳、软件系统的约束和软件系统运行的环境。

它还涉及到这些因素和系统的准确规格说明,以及系统进化之间的关系。

    需求分析的根本任务包括:

    

(1)抽取需求 分析现行系统存在需要解决的问题。

获取足够多的问题领域的知识,需求抽取的法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的法等;还有知识工程法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等。

    

(2)模拟和分析需求 需求分析和模拟又包含三个层次的工作。

首先是需求建模。

需求模型的表现形式有自然语言、半形式化(如图、表、构造化英语等)和形式化表示等三种。

需求概念模型的要求包括实现的独立性:

不模拟数据的表示和部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。

    (3)传递需求 传递需求的主要任务是书写软件需求规格说明。

    (4)认可需求 就是对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和冲突求解两面。

常用的冲突求解法有:

协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。

    (5)进化需求 客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客户需求的增长,如管理需求的进化(变化)就成为软件进化的首要问题。

对于传统的变化管理过程来说,其根本成分包括软件配置、软件基线和变化审查小组。

当前的开展是软件家族法,即产品线法。

多视点法也是管理需求变化的一种新法,它可以用于管理不一致性,并进展关于变化的推理。

    2.M公司的软件产品以开发实验型的新软件为主。

用瀑布模型进展软件开发已经有近十年了,并取得了一些成功。

假设你作为一名管理员刚参加M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告说明你的理由,切记:

副总裁不喜欢报告长度超过一页(B5)。

    参考答案提示:

    应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。

根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。

    3.如画分层数据流图.

    答:

    总的原那么是:

至顶而下,逐层分解(画分层数据流图)。

    比较复杂的系统不能画在一纸上,逐层分解的画法可以控制每一层的复杂度。

    顶层:

将整个系统作为一个加工,描述系统边界(输入与输出)。

    中间层:

表示某个加工分解为一组子加工,其中的子加工还需进一步分解。

    底层:

由不再进展分解的根本加工组成。

    4.加工小说明有哪些描述法.

    答:

    ● 构造化语言:

介于自然语言和形式语言(如谓词逻辑)之间。

    ● 构造化英语:

通常由外层和层构造组成。

    ● 汉语的情况:

准确、简明扼要、文体可以灵活。

    ● 判定表:

适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。

    ● 判定树:

本质上与判定表一样,图形表示更易于理解。

    5.考察以下列图中子图、父图的平衡。

图1

图2

参考答案:

    显然,图1中子图与父图不平衡。

改正如下:

    如果有如下数据条目:

    订货单=客户+账号+数量  那么子、父图平衡

    6.画出银行取款过程的DFD图。

问题描述为:

储户用存折取款,首先填写取款单,根据"账卡〞中的信息检验取款单与存折,如有问题,将问题反响给储户,否那么,登录"储户存款数据库〞,修改相应数据,并更新"账卡〞,同时发出付款通知,出纳向储户付款。

    参考答案:

      7.常用的软件需求分析法有哪些.

    答:

构造化分析法(SA)、功能分解法、信息建模法、面向对象的分析法(OOA)。

    习题三答案

    一、选择题

    1.模块的根本特征是(AC)。

A)外部特征(输入/输出、功能)B)部特征(输入/输出、功能)

    C)部特征(局部数据、代码)D)外部特征(局部数据、代码)

    2.SD法的设计总那么是(CD)。

A)程序简洁、操作便B)构造清晰、合理

    C)模块聚性强D)模块之间耦合度低

    3.软件设计的主要任务是(ABD)。

A)将分析阶段获得的需求说明转换为计算机中可实现的系统

    B)完成系统的数据构造和程序构造设计

    C)完成模块的编码和测试

    D)对模块部的过程进展设计

    4.设计阶段应到达的目标有(AD)。

A)提高可靠性和可维护性B)提高应用围

    C)构造清晰D)提高可理解性和效率

    5.从工程管理的角度来看,软件设计分两步完成(D)。

A)①系统分析②模块设计B)①详细设计②总体设计

    C)①模块设计②详细设计D)①总体设计②详细设计

    6.模块独立性准那么由以下定性指标来衡量(BD)。

A)分解度   B)耦合度 C)屏蔽性   D)聚性

    7.用户界面设计的任务包括(ABC)。

A)确定用户界面类型B)建立任务模型

    C)建立用户模型D)建立功能模型

    8.程序设计语言可以分为(BCD)。

A)面向过程的语言   B)机器语言

    C)高级语言   D)汇编语言 

    9.程序效率包括(ACD)几个面的容。

A)代码效率    B)运行效率    C)存储效率   D)I/O效率

    10.SP法中的根本控制构造有(ABC)。

A)顺序构造B)选择构造C)重复构造D)GOTO构造

    11.部文档可用注释语言书写,注释语言分为(ABCD)。

A)序言性注释B)描述性注释C)功能性注释D)状态性注释

    12.为使程序中数据说明更易于理解和维护,必须遵循以下原那么(ABC)。

A)数据说明的次序应当规化

    B)一个语句说明多个变量时,各变量名按字母顺序排列

    C)对于复杂的数据构造,要加注释,说明在程序实现时的特点

    D)定义变量名应按字母顺序排列

    13.源程序的效率与(D)阶段确定的算法的效率直接有关。

    A)概要设计B)总体设计C)单元设计D)详细设计

    14.在详细设计翻译转换成源程序代码后,算法效率反映为对程序的哪几个面的要求(CD)。

A)读写速度B)代码长度C)存储容量D)执行速度

    15.提高程序效率的根本途径在于(BC)。

A)编程时对程序语句进展调整B)选择良好的设计法

    C)使程序最大限度的简洁D)选择良好的数据构造与算法

    二、判断题

    1.划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。

(×)

    2.在网状构造中任两个模块都是平等的,没有附属关系,所以在软件开发过程中常常被使用。

(×)

    3.信息隐蔽原那么有利于提高模块的聚性。

(√)

    4.中心变换型的DFD图可看成是对输入数据进展转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块构造图。

(×)

    5.SD法是一种面向数据构造的设计法,强调程序构造与问题构造相对应。

(×)

    6.所谓构造冲突,是指输入数据与输出数据之间很少或没有构造上的对应关系。

通常解决的方法是:

构造一个或者多个中间构造,在输入和输出构造之间进展转换。

(√)

    7.当模块的控制围是其作用围的子集时,模块之间的耦合度较低。

(×)

    8.JACKSON法是以数据流、数据封闭性准那么逐层分解的。

(×)

    9.程序设计语言的工程特性包括:

可移植性、可重用性、可维护性、局部性和顺序性。

(×)

    10.工程应用领域是选择语言的关键因素。

(√)

    11.FORTRAN、Pascal、C语言、PL/1和汇编语言都是科学工程计算可选用的语言。

(×)

    12.要用快速原型法开发软件,应选用4GL语言。

(√)

    13.提高程序效率的根本途径是选择良好的设计法、数据构造与算法。

(×)

    14.良好的程序设计风格简单说就是高的编程技巧。

(√)

    三、简答题

    1.模块联系和模块间联系有哪些种类"

    答:

块间联系的各种类型的划分,从以下3面考虑:

    ●按块间联系的式〔可分为直接引用与过程调用〕;

    ●按块间共用信息的作用〔可分为数据型、控制型与混合型〕;

    ●按块间共用的信息数量多少〔信息多联系严密〕。

    〔1〕块间联系的类型,按照耦合度由大到小分为:

    容型:

直接引用另一模块的部信息;

    公共型:

两个模块引用共同的全程数据区;

    控制型:

模块间传送的信息用于控制模块的部逻辑;

    复合型:

模块间传送复合的数据构造;

    数据型:

模块间传送单个数据项。

    〔2〕块联系的类型,按照聚性从小到大分为:

    偶然型:

模块部没有必然联系;

    逻辑型:

逻辑上相似的功能放进一个模块;

    瞬时型:

将同时执行的语句放在一个模块;

    通信型:

模块中的各局部引用共同的数据;

    顺序型:

模块中一局部的输出是另一局部的收入;

    功能型:

模块中刚好包含了完成一个根本任务所必需的成分。

    2.分析以下DFD图,说明属于哪种类型的DFD图,并按照相应的变换将其转换为初始的模块构造图。

    参考答案:

(略)

    3.以下列图是修改文件记录的DFD图,请确定其主加工。

      解:

主加工为:

账号、修改、写记录。

    4.按照"降低块间联系,提高块联系〞的设计总那么对模块进展修改,具体从哪些面进行改进.

    解:

    

(1)尽可能建立功能模块;

    

(2)消除重复功能;

    (3)模块的作用围与控制围,即当作用围为控制围的子集时,才能获得较低的块间联系;

    (4)模块的大小适当;

    (5)模块的扇入扇出数不宜太多。

    5.根据模块的作用围与控制围的原那么,判定a、b两图的正确性。

    解:

显然,图a不满足作用围应与控制围的原那么,模块F的作用围不在控制围之。

    图b的模块设计合理。

    6.图a中,模块G为判定,判断涉及到模块B、F、G,请指出设计中的错误,再根据改进模块图的根本原那么,画出1~2个改进案(不改变模块G的判断关系),并说明是按照哪条根本原那么进展改进的。

    解:

图b为一个改进案,将模块G的位置提高,使其作用围为控制围的子集,减少模块之间的联系。

    7.编码阶段的主要任务是什,应交付的结果是什么.

    答:

编码阶段的主要任务是为每个模块编写程序。

即是:

将详细设计的结果转换为用某种计算机语言写的程序——源程序代码。

编码阶段应交付的结果是带有"程序部文档〞的、不再含有语法错误的程序。

    8.SP法的自顶向下,逐步求精法的优点有哪些.

    答:

此法符合人们解决复杂问题的普遍规律,可提高软件开发的成功率和生产率;而且用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程,开发出来的程序具有清晰的层次构造,因此程序容易阅读和理解。

这样,程序自顶向下,逐步细化,分解成一个树型构造。

    因此,在同一层次的节点上做细化工作,相互之间没有联系,它们之间的细化工作相互独立;在任一步发生错误,一般只影响它下层的节点,同一层其他节点不受影响;在以后的测试中,也可以先独立地一个节点一个节点地做,最后再集成。

这样,程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大。

    9.为了使程序具有良好的设计风格,应注意哪些面的问题.

    答:

(1)标识符应按意取名。

    标识符即符号名,包括:

模块名、常量名、标号名、子程序名、数据区名、缓冲区名等。

这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能够见名知意,有助于对程序功能的理解。

    

(2)程序应加注释,它分为两类:

序言性注释和功能性注释。

    序言性注释应置于每个模块的起始局部,主要容有:

①说明每个模块的用途,功能;②说明模块的接口即调用格式、参数描述及附属模块的清单;③数据描述;④开发历史。

    功能性注释是嵌在源程序体中的,用于说明其后的程序段或语句的功能以及数据的状态;也就是解释下面要"做什么〞,或是执行下面的语句会发生什么情况;而不是解释下面"怎么做〞,因为怎么做常常是与程序重复的,且对读者理解程序没有什么帮助。

    10.样评价程序的执行效率.它与程序清晰性的关系是怎样的.

    答:

多程序员往往片面追求效率,其实程序系统的本钱不仅包括运行所需的机时,同时还应把程序员及操作员所花费的人力考虑进去。

在编程时为追求效率而损害可读性或可靠性,会给以后的维护工作带来困难,所以从整体上看来是不值得的。

    此外,还应该认识到,提高程序效率的根本途径在于:

选择良好的设计法、良好的数据构造与算法,而不是靠编程时对程序语句进展调整。

    

(1)追求建立在不损害程序可读性或可靠性根底上,要先使程序正确、清晰,再提高程序效率。

    

(2)不能因为贪图效率上的小利,而破坏程序的清晰性。

    (3)让编译程序去作简单的优化。

    (4)提高程序效率的根本途径

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1