软件工程方法与实践许家珆习题.docx

上传人:b****1 文档编号:2201958 上传时间:2023-05-02 格式:DOCX 页数:40 大小:146.28KB
下载 相关 举报
软件工程方法与实践许家珆习题.docx_第1页
第1页 / 共40页
软件工程方法与实践许家珆习题.docx_第2页
第2页 / 共40页
软件工程方法与实践许家珆习题.docx_第3页
第3页 / 共40页
软件工程方法与实践许家珆习题.docx_第4页
第4页 / 共40页
软件工程方法与实践许家珆习题.docx_第5页
第5页 / 共40页
软件工程方法与实践许家珆习题.docx_第6页
第6页 / 共40页
软件工程方法与实践许家珆习题.docx_第7页
第7页 / 共40页
软件工程方法与实践许家珆习题.docx_第8页
第8页 / 共40页
软件工程方法与实践许家珆习题.docx_第9页
第9页 / 共40页
软件工程方法与实践许家珆习题.docx_第10页
第10页 / 共40页
软件工程方法与实践许家珆习题.docx_第11页
第11页 / 共40页
软件工程方法与实践许家珆习题.docx_第12页
第12页 / 共40页
软件工程方法与实践许家珆习题.docx_第13页
第13页 / 共40页
软件工程方法与实践许家珆习题.docx_第14页
第14页 / 共40页
软件工程方法与实践许家珆习题.docx_第15页
第15页 / 共40页
软件工程方法与实践许家珆习题.docx_第16页
第16页 / 共40页
软件工程方法与实践许家珆习题.docx_第17页
第17页 / 共40页
软件工程方法与实践许家珆习题.docx_第18页
第18页 / 共40页
软件工程方法与实践许家珆习题.docx_第19页
第19页 / 共40页
软件工程方法与实践许家珆习题.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程方法与实践许家珆习题.docx

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

软件工程方法与实践许家珆习题.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)程序应加注释,它分为两类:

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

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

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

    功能性注释是嵌在源程序体中的,用于说明其后的程序段或语句的功能以及数据的状态;也就

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

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2