软件工程教学做一体化教程实践环与习题参考答案.docx

上传人:b****6 文档编号:4360161 上传时间:2022-11-30 格式:DOCX 页数:30 大小:118.89KB
下载 相关 举报
软件工程教学做一体化教程实践环与习题参考答案.docx_第1页
第1页 / 共30页
软件工程教学做一体化教程实践环与习题参考答案.docx_第2页
第2页 / 共30页
软件工程教学做一体化教程实践环与习题参考答案.docx_第3页
第3页 / 共30页
软件工程教学做一体化教程实践环与习题参考答案.docx_第4页
第4页 / 共30页
软件工程教学做一体化教程实践环与习题参考答案.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

软件工程教学做一体化教程实践环与习题参考答案.docx

《软件工程教学做一体化教程实践环与习题参考答案.docx》由会员分享,可在线阅读,更多相关《软件工程教学做一体化教程实践环与习题参考答案.docx(30页珍藏版)》请在冰豆网上搜索。

软件工程教学做一体化教程实践环与习题参考答案.docx

软件工程教学做一体化教程实践环与习题参考答案

软件工程教学做一体化教程参考答案

订正:

P33页:

图2.14中的“E1”与“E2”互换位置

P186页:

最后一行“B与D”订正为“B与C”

P187页:

任务的参考答案订正为“ADE”

第1章软件工程基本概念

1.1.4实践环节

答案略。

1.2.4实践环节

答案略。

习题1

一、选择题

1、C2、D3、C4、C5、D6、C7、D8、C9、B10、B

二、判断题

1、T2、T3、T4、T5、F6、T7、T8、T9、F10、F11、F12、T

三、简单题

1.什么是软件危机?

它有哪些典型表现?

如何解决软件危机?

答:

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

这类问

题绝不仅仅是“不能正常运行的软件”才具有的,几乎所有软件都不同程度地存在这类问题。

概括来说,软件危机包含两方面问题:

如何开发软件,以满足对软件日益增长的需求;如何

维护数量不断膨胀的已有软件产品。

具体地说,软件危机主要有下列典型表现。

1)软件开发进度难以预测,软件开发成本难以控制。

开发成本超出预算,实际进度比预定计划一再拖延。

2)用户对产品功能难以满足。

3)软件产品质量无法保证。

4)软件产品难以维护。

5)软件缺少适当的文档资料。

6)软件的成本不断提高。

7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。

为了消除软件危机,既要有技术措施,又要有组织管理措施。

软件工程正是从技术和管

理两方面研究如何更有效地开发和维护计算机软件的一门新兴学科。

2.什么是软件?

什么是软件工程?

软件生命周期有哪几个时期,每个时期又分哪几个

阶段?

答:

软件是计算机系统中与硬件相互依存的一部分,包括程序、数据及其说明文档。

其中程序是能够完成特定功能的指令序列;数据是程序能正常操纵信息的数据结构;文档是与程序设计、开发及维护有关的各种图文资料。

概括地说,软件工程是一门指导计算机软件开发和维护的学科。

它采用工程的概念、原理、技术和方法来开发与维护软件,把先进的、正确的管理理念和当前最好的技术结合起来,以最小经济代价开发出高质量的软件并维护它。

把软件生命周期划分为软件定义(软件计划)、软件开发和软件维护3个时期,每个时期又划分为若干个阶段。

定义时期通常进一步划分成三个阶段,即问题定义、可行性研究和需求分析。

开发时期通常由概要设计、详细设计、编码和单元测试以及综合测试组成。

软件维护时期由软件维护阶段组成。

3.常用的软件开发模型有哪几个?

试比较瀑布模型和快速原型模型的优缺点,并说明每种模型的适用范围。

答:

常见的软件开发模型有:

瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、第四代技术过程模型等。

瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。

然而软件开发的实践表明,上述各项活动之间并非完全是自上而下且呈线性图式的,因此瀑布模型存在严重的缺陷。

瀑布模型软件开发方法适合在软件需求比较明确、开发技术比较成熟、工程管理比较严格的场合下使用,如二次开发或升级型的项目。

通过建立原型,可以更好地和客户进行沟通,澄清一些模糊需求,并且对需求的变化有较强的适应能力。

原型模型可以减少技术、应用的风险,缩短开发时间,减少费用,提高生产率,通过实际运行原型,提供了用户直接评价系统的方法,促使用户主动参与开发活动,加强了信息的反馈,促进了各类人员的协调交流,减少误解,能够适应需求的变化,最终有效提高软件系统的质量。

快速原型模型软件开发方法适用于软件需求不明确的情况。

第2章可行性研究

2.1.4实践环节

答:

在软件项目开发过程中,只要资源和时间不加以限制,所有的项目基本都可以成功开发,然而,资源和时间不可能是无限的,因此,尽早对软件项目的可行性做出谨慎的评估是十分必要的。

典型的可行性研究步骤:

1)复查系统规模和目标。

2)研究目前正在使用的系统。

3)导出新系统的高层逻辑模型。

4)重新定义问题。

5)导出和评价供选择的解法。

6)推荐行动方案。

7)草拟开发计划。

8)书写文档、提交审查。

2.2.4实践环节

答案略。

教材订购系统的系统流程图,如下图所示:

机票预订系统的数据流图:

顶层DFD:

第一层DFD:

第二层DFD:

银行取款系统的数据流图:

顶层DFD:

第一层DFD:

第二层DFD:

2.5.4实践环节

答:

开发软件的成本主要是由人力决定的。

习题2

、选择题

1、

B2、

B

3、B4、C5、

A6、

B

7

、B

8、D

9、

D

10、

C11、D12、

D

13、D

14、

A15、B

、判断题

1、

T2、

T

3、F4、T

5、F

6、

F

7、

T8、F

9、

F

10、

T

11

、T12、

T

13、F14、T

15、F

16、

T

17、

T18、T

19

、T

20、

F

三、简答题

1.什么是系统流程图?

什么是数据流图?

二者有何区别?

答:

系统流程图是描绘物理系统的图形工具,基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文档、数据库、表格、人工过程等)。

系统流程图表达的是数据信息在系统各部件之间流动的情况,而不是对数据信息进行加工处理的控制过程,因此尽管它使用的某些符号和程序流程图中的符号相同,但是它是物理数据流图而不是程序流程图。

数据流图(DFD)是一种描述“分解”的图形化技术,它用直观的图形清晰地描绘了系统的逻辑模型,图中没有任何具体的物理元素,它仅仅描绘信息流和数据在软件中流动和处理的逻辑过程。

设计数据流图时只考虑系统必须完成的基本逻辑功能,完全不考虑怎样具体地实现这些功能。

2.画系统的数据流图时,应该注意哪些问题?

答:

分层画数据流图便于人们理解和使用,但在绘制时需要注意以下事项。

1)每个处理至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与结果。

2)图上每个元素都必须有名字,并且命名合理。

通常,为数据源点/终点命名时采用它们在问题域中习惯使用的名字(如“采购员”、“仓

库管理员”等)。

处理名字应该反映整个处理的功能,而不是它的一部分功能。

处理名字最好由一个具体的及物动词加上一个具体的宾语组成。

应尽量避免使用“加工”、“处理”等空洞笼统的动词作名字。

数据流名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。

不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。

3)画数据流不是画控制流,只反映系统“做什么”,不反映“如何做”。

4)按层给处理编号。

编号表明该处理处在哪一层以及上下图父图与子图的关系(如图2.6所示)。

5)保持父图与子图平衡。

子图的输入输出数据流同父图相应处理的输入输出流必须一

致。

值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体恰好是父图中的这个数据流,那么它们仍然

算是平衡的,如图2.10所示。

6)保持数据守恒。

也就是说一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或经过该加工产生的数据。

3•可行性研究报告的内容框架是什么?

1引言

1.1标识

1.2背景

1.3项目概述

1.4文档概述

2引用文件

3可行性分析的前提

3.1项目的要求

3.2项目的目标

3.3项目的环境、条件、假定和限制

3.4进行可行性分析的方法

4可选的方案

4.1原有方案的优缺点、局限性及存在的问题

4.2可重用的系统,与要求之间的差距

4.3可选择的系统方案1

4.4可选择的系统方案2

4.5选择最终方案的准则

5所建议的系统

5.1对所建议的系统的说明

5.2数据流程和处理流程

5.3与原有系统的比较(若有原系统)

5.4影响(要求)

5.5局限性

6经济可行性(成本一一效益分析)

6.1投资

6.2预期的经济效益

6.3市场预测

7技术可行性(技术风险评价)

8法律可行性

9用户使用可行性

10其他与项目有关的问题

11注解

图2.3可行性研究报告的内容框架

4.可行性研究的步骤有哪些?

典型的可行性研究步骤:

1)复查系统规模和目标。

2)研究目前正在使用的系统。

3)导出新系统的高层逻辑模型。

4)重新定义问题。

5)导出和评价供选择的解法。

6)推荐行动方案。

7)草拟开发计划。

8)书写文档、提交审查。

四、画图题

1.订货系统的数据流图:

顶层DFD:

第一层DFD:

第二层DFD:

2.根据以上描述回答下列问题:

【问题1】使用说明中的词语,给出图2.14所示的外部实体E1~E4的名称。

订正:

把图2.14中E1与E2交换位置。

E1:

考试委员会E2:

主讲教师E3:

学生或选课学生E4:

教务处

【问题2】

使用说明中的词语,给出图2.15所示的数据存储D1~D5的名称。

D1:

学生信息文件D2:

课程单元信息文件D3:

课程信息文件D4:

课程成绩文件D5:

无效成绩文件

【问题3】

图2.15中缺少三条数据流,根据说明和顶层数据流图的信息,分别指出这3条数据流

的起点与终点。

D4到4;

D1到5;

4到5。

第3章需求分析

3.1.4实践环节

答:

不正确,需求分析的工作很重要,也不简单。

3.2.4实践环节

1.答案略。

2.答案略。

图3.5完整的ER图

3.4.4实践环节

答案略。

3.5.4实践环节

答:

需求管理的方法主要有

1)制定需求变更控制过程

2)分析需求变更的影响

3)建立需求基准版本和需求控制版本文档

4)维护需求变更的历史记录

5)跟踪每项需求的状态

6)衡量需求稳定性

习题3

一、选择题

1、B2、A3、A4、D5、A6、D7、B8、A9、D10、C11、A12、

C13、B14、D15、A

二、判断题

1、T2、F3、F4、T5、T6、F7、T8、T

三、简答题

1•需求分析的任务是什么?

答:

需求分析的任务是通过充分了解已有系统的工作概况,明确用户的各种需求,确定

新系统的功能。

2.如何获取用户的需求?

答:

为了获取完整无误的需求信息,需求分析员经常使用多种技术描述需求信息。

使用

的技术有三类:

非形式化技术、半形式化技术和形式化技术。

非形式化技术是获取需求的基本方法和技术,包括访谈(会谈)、场景分析(情景分析)、调查表和快速建立软件原型等。

3•软件需求规格说明书的内容框架是什么?

1范围

3.8适应性需求

1.1标识

3.9保密性需求

1.2系统概述

3.10保密性和私密性需求

1.3文档概述

3.11CSCI环境需求

1.4基线

3.12计算机资源需求

2引用文件

3.13软件质量因素

3需求

3.14设计和实现的约束

3.1所需的状态和方式

3.15数据

3.2需求概述

3.16操作

3.3需求规格

3.17故障处理

3.4CSCI能力需求

3.18算法说明

3.5CSCI外部接口需求

3.19有关人员需求

3.6CSCI内部接口需求

3.20有关培训需求

3.7CSCI内部数据需求

3.21有关后勤需求

3.22其他需求

3.23包装需求

3.24需求的优先次序和关键程序

4合格性规定

5需求可追踪性

6尚未解决的问题

7注解

图3.6软件需求规格说明的内容框架

四、画图题

第4章概要设计

4.1.4实践环节

答案略。

424实践环节

1•有人说:

将复杂的系统分解得越细越好、得到的功能模块越多越好。

请问他的观点正确吗?

说明理由。

答:

不正确。

当模块数量增加时每个模块的规模将减小,开发单个模块的成本也减少;

但是,随着模块数量增加,设计模块间通信所需要的工作量也将增加。

因此,我们对复杂的软件系统进行模块划分时,要按照一定的原则合理地划分。

2•什么是内聚?

什么是耦合?

二者有什么关系?

答:

内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。

耦合(Coupling)是模块之间依赖程度的度量。

我们知道独立的模块具有很多优点,因此模块设计应当争取“高内聚、低耦合”,而避免“低内聚、高耦合”。

4.3.4实践环节

图4.8系统的层次结构

4.4.4实践环节

系统的软件结构图如下图所示:

4.5.4实践环节

答案略。

习题4

一、选择题

1、A2、D3、D4、C5、B6、C7、D8、B9、A10、A11、C12、

B13、A14、C15、D

二、判断题

1、T2、F3、T4、F5、T6、T7、F

三、简答题

1•模块化设计原理有哪些?

答:

分解、抽象、逐步求精、信息隐藏和模块独立性都是模块化设计的指导思想。

2•概要设计阶段主要完成哪些任务?

答:

系统架构设计,软件结构设计,公共数据结构设计,文档编写,审查和复审。

四、设计题

第5章详细设计

5.1.4实践环节

答案略。

524实践环节

判定表

1

2

3

4

民用

T

T

T

F

F

F

商用

F

F

F

T

T

T

电量

A

B

C、D、E

A、B、C

D

E

每度0.45元

X

每度0.55元

X

每度0.65元

X

每度0.75元

X

每度0.95元

X

每度1.15元

X

注:

右上部分中的“T”代表它左边的条件成立,“F”表示条件不成立。

右下部分中的“X”

代表要做它左边对应的动作,空白代表不做该项动作。

电量240度以下符号为A,240度至

540度间符号为B,540度至1000度间符号为C,1000至5000度间为D,超过5000度为E。

判定树

5.3.4实践环节

1用Jackson图描绘输入/输出数据结构

2•找出输入/输出数据结构中有对应关系的数据单元

3•由数据结构图导出程序结构图

5.4.4实践环节

答案略。

5.5.4实践环节

START

1:

INPUTn

2:

INPUTa(i)(i=0,,1,2,…,n-1)

3:

max=a(0)

4,7:

FORi=1TOnDO

5:

IFmaxva(i)THEN

6:

max=a(i)

8:

PRINTmax

END

习题5

、选择题

1、C2、D3、A4、A

二、简答题

1.详细设计的工具(描述方法)有哪些?

答:

详细设计的工具有:

程序流程图(ProgramFlowDiagram,PFD)、盒图(N-S图)、

问题分析图(ProblemAnalysisDiagram,PAD)、判定表、判定树、过程设计语言等。

2.简述Jackson方法的设计步骤?

答:

Jackson方法的设计过程主要由以下五个步骤组成:

1)确定输入/输出数据的逻辑结构,并用Jackson图描绘它们。

2)找出输入/输出数据结构中有对应关系的数据单元。

3)根据下述规则由描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

4)列出所有操作和条件(包括选择和循环条件),并把它们放到程序结构图的适当位置。

5)用伪码表示程序结构图对应的过程描述。

3.什么是环形复杂度?

使用McCabe方法如何计算环形复杂度?

答:

McCabe方法是一种基于程序控制流的复杂性度量方法,度量出的结果称为程序的环形复杂度。

使用McCabe方法度量程序的复杂程度一般需要两个步骤:

首先,将程序流程图映射成流图;

其次,根据流图计算环形复杂度。

三、设计题

1.使用程序流程图、N-S图和PAD图描述下列算法。

1)求出一维数组的最大值和最小值。

2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。

求出一维数组的最大值和最小值的程序流程图求出一维数组的最大值和最小值的N-S图

求出一维数组的最大值和最小值的PAD图

2.把设计题“第1题”中的两个程序流程图分别映射成流图,并使用McCabe方法求出它们的环形复杂度。

求出一维数组的最大值和最小值的程序流程图映射成流图,如下所示:

根据流图中边的条数(E)和结点数(N),求出流图G的环形复杂度V(G)=E-N+2=9-7+2=4

输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形(略)

3.一个正文文件由若干记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数。

要求输出数据格式是每复制一行字符串后,另起一行打印出这个字符中的空格数,最后打印出文件空格的总个数,用Jackson方法设计该程序

结构。

对于这个简单例子而言,输入和输出数据的结构很容易确定。

图中是用Jackson图描绘

的输入/输出数据结构。

确定了输入/输出数据结构之后,下一步是分析确定在输入数据结构和输出数据结构中有对应关系的数据单元。

在这个例子中哪些数据单元有对应关系呢?

输出数据总是通过对输入数据的处理而得到的,因此在输入/输出数据结构最高层次的两个单元(在这个例子中是“正文文件”和“输出表格”)总是有对应关系的。

这一对单元将和程序结构图中最顶层的方框(代表程序)相对应,也就是说经过程序的处理由正文文件得到输出表格。

下面还有哪些有对应关系的单元呢?

因为每处理输入数据中一个“字符串”之后,就可以得到输出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重复次数都完全相同,因此,“字符串”和“串信息”也是一对有对应关系的单元。

Jackson程序设计方法的第三步是从数据结构图导出程序结构图。

按照前面已经讲述过的规则,这个步骤的大致过程是:

首先,在描绘程序结构的Jackson图的最顶层画一个处理框“统计空格”,它与“正文文件”和“输出表格”这对最顶层的数据单元相对应。

但是接下来还不能立即画与另一对数

据单元(“字符串”和“串信息”)相对应的处理框,因为在输出数据结构中“串信息”的上层还有“表格体”和“空格总数”两个数据单元,在程序结构图的第二层应该有与这两个单元对应的处理框——“程序体”和“印总数”。

因此,在程序结构图的第三层才是与“字符串”和“串信息”相对应的处理框——“处理字符串”。

在程序结构图的第四层似乎应该是和“字符串”、“字符”及“空格数”等数据单元对应的处理框“印字符串”、“分析字符”及

“印空格数”,这三个处理是顺序执行的。

但是,“字符”是重复出现的数据单元,因此“分析字符”也应该是重复执行的处理。

改进的Jackson图规定顺序执行的处理中不允许混有重复执行或选择执行的处理,所以在“分析字符”这个处理框上面又增加了一个处理框“分析字符串”。

最后得到的程序结构图为下图所示。

Jackson程序设计方法的第四步是列出所有操作和条件,并且把它们分配到程序结构图

的适当位置。

首先,列出统计空格个数需要的全部操作和条件如下:

在上面的操作表中,sum是保存空格个数的变量,totalsum是保存空格总数的变量,而

pointer是用来指示当前分析的字符在字符串中的位置的变量。

4.假设某航空公司的托运收费标准如下:

重量不超过20kg的行李,可免费托运;

当行李重量超过20kg时,对头等舱的国内乘客超重部分每公斤收费5元,对其它舱内的国内乘客超重部分每公斤收费8元;对国外乘客超重部分每公斤收费比国内乘客多2倍;对残疾乘客超重部分每公斤收费比正常乘客少一半。

要求:

1)用判定表表示收费的计算方法;

2)用判定树表示收费的计算方法。

把图中的数据改一下即可:

把图中的数据改一下即可:

第6章编码与测试

6.1.4实践环节

答:

假如,您是一名程序员,您应该从程序文档化,数据说明,语句结构,输入/输出

等几个方面培养编程习惯。

624实践环节

答:

大型软件系统的测试过程一般由单元测试、集成测试、确认测试以及系统测试等四

个步骤组成。

单元测试是对用源代码实现的每个程序模块进行测试,保证每个程序模块作为一个单元

能正确运行。

在这个测试步骤中所发现的错误主要是编码和详细设计的错误。

因此,单元测

试一般由程序编写人员进行。

集成测试是把已测试过的模块单元组装起来,主要对与概要设计相关的软件体系结构的

装配进行测试,测试各模块单元的接口是否吻合、代码是否符合规定的标准、界面标准是否

统一等。

一般由有经验的测试人员和主要的软件开发者来完成集成测试。

确认测试又称有效性测试,目的是验证目标系统的功能需求和性能需求及其它特性需求是否与用户的需求一致。

因此,用户要积极参与到这个步骤中。

在这个测试步骤中所发现的

错误主要是软件需求规格说明的错误。

系统测试是把已确认的软件系统移植到实际运行环境中,与其它系统元素(如硬件、人

员、数据库等)组合在一起,按照系统的功能和性能需求进行的测试。

为了发现缺陷并度量

产品质量,一般使用黑盒测试技术由独立的测试人员完成。

6.3.4实践环节

答:

不能。

6.4.4实践环节

答:

自顶向下集成测试方法。

6.5.4实践环节

因为例子6.5中都是单个判定条件,所以组合条件时,只需要满足单个判定条件的所有取值即可。

测试用例为:

(1)flag=0⑵flag=1⑶flag=2⑷flag=3⑸flag=4

6.6.4实践环节

第一步划分数据的边界:

边界为0,最大正实数和最小负实数。

第二步选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

所以测试用例为:

a、输入{最小负实数}

b、输入{大于最小负实数,且趋近于最小值}

c、输入0

d、输入{小于最大正实数,且趋近于最大值}

e、输入{最大正实数}

6.7.4实践环节

答案略。

习题6

、选择题

1、

B

2、D3、D

4、

D

5、

D

6、A

7、C8、

D9、

A

10、B

11、A

12、

A

13、

B14、D

15、

A

16

、C

17、B

18、A

19、B

20、C

21、D

22、A

23、

A

24、D25、

D

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

当前位置:首页 > 高等教育 > 其它

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

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