当前位置:文档之家› 软件工程实用教程第三版 郭宁主编 课后习题及答案

软件工程实用教程第三版 郭宁主编 课后习题及答案

软件工程实用教程第三版 郭宁主编 课后习题及答案
软件工程实用教程第三版 郭宁主编 课后习题及答案

第一章软件工程引论

1.在下列选项中,(D)不是软件的特征。

A.系统性与复制性 B. 可靠性与一致性 C. 抽象性与智能型 D.有形性与可控性

2.软件是一种(B)产品。

A.有形 B. 逻辑 C. 物质 D. 消耗

3.软件工程是一种(A)分阶段实现的软件程序开发方法。

A.自顶向下

B. 自底向上

C. 逐步求精

D. 面向数据流

4.与计算机科学的理论研究不同,软件工程是一门(B)学科。

A.理论性 B. 工程性 C. 原理性 D. 心理性

5.软件工程与计算机科学性质不同,软件工程着重于(C)。

A.原理探讨 B. 理论研究 C. 建造软件系统 D. 原理性的理论

6.下列说法正确的是(B)

A.软件工程的概念于20世纪50年代提出

B.软件工程的概念于20世纪60年代提出

C.20世纪70年代出现了客户机/服务器技术

D.20世纪80年代软件工程学科达到成熟

7.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工

程经济学,它要达到的目标是(D)

A.管理开发人员,以开发良好的软件

B.采用先进的软件开发工具,开发优秀的软件

C.消除软件危机,达到软件生产的规模效益

D.以基本的社会效益为基础,工程化生产软件

第二章软件生命周期及开发模型

1.软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、

(B)、维护等活动。

A.应用 B. 测试 C. 检测 D. 以上答案都不正确

2.软件生命周期模型有多中,下列项目中,(C)不是软件生命周期模型。

A.螺旋模型 B. 增量模型 C. 功能模型 D. 瀑布模型

3.软件生命周期中时间最长的阶段时(D)

A.需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段

4.瀑布模型是一种(D)

A.软件开发方法

B.软件生存周期

C.程序设计方法学

D.软件生存周期模型

5.软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A)

A.瀑布模型

B.对象模型

C.螺旋模型

D.层次模型

6.在结构化的瀑布模型中,(D)阶段定义的标准将成为软件测试中系统测试阶段的目标

A.详细设计阶段

B.总体设计阶段

C.可行性研究阶段

D.需求分析

7.增量模型是一种(B)的模型

A.整体开发

B.非整体开发

C.灵活性差

D.较晚产生工作软件

8.(C)是指模拟某种产品的原始模型

A.模型

B.最初模型

C.原型

D.进化模型

9.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)

A.用于验证软件需求的原型

B.垂直原型

C.用于验证设计方案的原型

D.用于演化出

目标系统的原型

10.原型化方法是一种(A)型的设计过程。

A.在外向内

B.自顶向下

C.自内向外

D.自底向上

11.对于原型的使用建议,以下说法不正确的是(C)

A.对于开发周期很长的项目,能够使用原型

B.在系统的使用可能变化较大、不能相

对稳定是,能够使用原型 C.缺乏开发工具,或对原型的可用工具不了解的时候,

能够使用原型D.开发者对系统的某种设计方案的实现无信心或无十分的把握时,能

够使用原型

12.原型模型的主要特点之一是(B)

A.开发完毕才见到产品

B.及早提供工作软件

C.及早提供全部完整软件

D.开发完毕

才见到工作软件

第三章结构化需求分析

1.需求工程的主要目的是(C)

A.制定系统开发的具体方案

B.进一步确定系统的需求

C.解决系统是“做什么的为题”

D.解决系统是“如何做的问题”

2.需求分析的任务不包括(B)

A.问题分析

B.系统设计

C.需求分析

D.需求评审

3.软件分析的第一步要做的工作是(A)

A.定义系统的目标

B.定义系统的功能模块

C.分析用户需求

D.分析系统开发的可行

4.可行性研究的目的是用最小的代价在尽可能短的时间内确定问题的(A)

A.能否可解

B.工程进度

C.开发计划

D.人员配置

5.需求分析最终结果是产生(B)

A.项目开发计划

B.需求规格说明书

C.设计说明书

D.可行性分析报告

6.在结构化分析方法中,(C)是表达系统内部数据运动的图形化技术

A.数据字典

B.实体关系图

C.数据流图

D.状态转换图

7.DFD中的每个加工至少需要(D)

A.一个输入流

B.一个输出流

C.一个输入或输出流

D.一个输入流和一个数处理

8.需求分析的主要方法有(C)

A.形式化分析方法

B. PAD图描述

C.结构化分析方法

D.程序流程图

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

A.系统流程图和模块图

B.DFD图、数据字典、加工说明

C.软件结构图、加工说明

D.

功能结构图、加工说明

10.软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写

需求分析文档以及(C)

A.总结

B.编写阶段性报告

C.进行需求分析评审

D.以上答案都不正确

第四章结构化软件设计

1.在面向数据流的软件设计方法中,一般将信息里与分为(D)

A.数据流和控制流 B. 变换流和控制流 C. 事务流和控制流 D. 变换流和事务流

2.耦合度可以分为七级,其中最松散的耦合是(A)

A.非直接耦合

B.数据耦合

C.特征耦合

D.控制耦合

3.当模块中包含复杂的条件组合,只有(A)能够清晰的表达出各种动作之间的对应关系

A.判定表和判定树

B.盒图

C.流程图

D.关系图

4.一个软件的宽度是指其控制的(C)

A.模块数

B.层数

C.跨度

D.厚度

5. 面向数据流的软件设计方法可将(C )映射成软件结构

A. 控制结构

B.模块

C.数据流

D.事务流

第五章 面向对象的需求分析

1. 采用UML 进行软件建模的过程中,类图是系统的一种静态视图,用(B )可明确表示两

类事物之间存在的整体/部分形式的关联关系。

A. 依赖关系

B.聚合关系

C.泛化关系

D.实现关系

2. 在UML 语言中,图中的a 、b 、c 三中图形符号按照顺序分别表示(C )

A. 边界对象、实体对象、控制对象

B. 实体对象、边界对象、控制对象

C. 控制对象、

实体对象、边界对象 D. 边界对象、控制对象、实体对象

3. 不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做(B )

A. 继承

B. 多态

C. 动态绑定

D. 静态绑定

第六章面向对象的软件设计

1. 下面哪种设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生

改变时,所有依赖于它的对象都得到通知并自动刷新(D )

A.Adapter (适配器)

B.Iterator(迭代器)

C.Prototype (原型)

D. Observer (观察者)

2. UML 中有多种类型的图,其中,(B )对系统的使用方式进行了分类;()显示了类及其

相互关系;()显示了人或对象的活动,其方式类似于流程图;通信图显示了在某种情况下对象之间发送的消息;()与通信图类似,但强调的是顺序而不是连接。

A.用例图、顺序图、类图、活动图

B.用例图、类图、活动图、顺序图

C.类图、顺序图、

活动图、用例图 D. 活动图、顺序图、用例图、类图

3. UML 类图的类与类之间的关系有5种:继承、依赖、关联、组合和聚合,若类A 需要使

用标准数学函数类库中提供的功能,那么类A 与标准类库中提供的类之间存在(A )关系

A.依赖

B.关联

C.聚合

D. 组合

第七章软件测试技术

1. 用边界值分析法,假定1

A. X=1,X=100

B. X=0,X=1,X=100,X=101

C. X=2,X=99

D.X=0,X=101

2. 下列关于软件验收测试的合格通过准则错误的是(C )

A. 软件需求分析说明书中定义的所有功能已全部实现

B. 所有测试项没有

C. 立项审批表、需求分析文档、设计文档和编码实现不一致

D.验收测试工件齐全

3.以下关于集成测试的内容正确的有(D )

① 集成测试也叫组装测试或者联合测试 ② 测试在把各个模块连接起来的时候,穿越

模块接口的数据是否会丢失 ③ 测试一个模块的功能是否会对另一个模块的功能产生不利影响 ④ 测试各个子功能组合起来,能否达到预期要求的父功能 ⑤ 测试全局数据结构是否有问题 ⑥ 测试单个模块的误差累积起来,是否会放大,从而达到不能接受的程度

A. ①②④⑤⑥

B.②③④⑤⑥

C.①②③⑤⑥

D.以上全部正确

Kim, Keehyun

Kim, Hyunsoo Jung, Yoontae

4.为了提高测试的效率,应该(D)

A.随机的选取测试数据 B. 取一切可能的输入数据作为测试数据 C. 在完成编码以后制定软件的测试计划 D. 选择发现错误的可能性大的数据作为测试数据

5.软件调试的目的是(A)

A.找出错误所在并改正之

B.排除存在错误的可能性

C.对错误性质进行分类

D.统计

出错的次数

6.单元测试一般以白盒为主,测试的依据是(A)

A.模块功能规格说明

B. 系统模块结构图

C. 系统需求规格说明

D. 统计出错的次

7.下次关于α、β测试的描述中正确的是(C)

A.α测试不需要用户代表参加

B.β测试不是验收测试的一种

C.α测试可以有用户

代表参加 D. β测试是系统测试的一种

8.软件测试的目的是(B)

A.评价软件的质量

B.发现软件的错误

C.找出软件中所有的错误

D.证明软件是正确

9.软件测试用例主要由输入数据和(C)两部分组成

A.测试计划

B.测试规则

C.预期输出结果

D.以往测试记录分析

10.在黑盒测试中,着重检查输入条件组合的方法是(D)

A.等价类划分法

B.边界值分析法

C.错误推测法

D.因果图法

第八章软件维护技术

1. 随着软硬件环境变化而修改软件的过程是(B)

A. 校正性维护

B. 适宜性维护

C. 完善性维护

D. 预防性维护

2. 为了提高软件的可维护性,在编码阶段应注意(B)

A. 保存测试用例和数据

B. 提高模块的独立性

C. 文档的副作用

D. 养成好的程序设

计风格

3.为提高系统性能而进行的修改属于(C)

A.纠正性维护

B.适应性维护

C.完善性维护

D.测试性维护

4.软件生命周期中,(D)阶段所站的工作量最大

A.分析阶段

B.设计阶段

C.编码阶段

D.维护阶段

5.系统维护中要解决的为题来源于(D)

A.系统分析阶段

B.系统设计阶段

C.系统实施阶段

D.上述3个阶段(A、B、C)都包括6.软件维护的副作用,是指(C)

A. 开发时的错误

B. 隐含的错误

C. 因修改软件而造成的错误

D. 运行时的误操作

第一章软件工程引论

1.软件工程出现的主要原因是软件危机的出现。√

2.文档是软件产品的一部分,没有文档的软件就不能称为软件。√

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

4.一个成功的项目唯一应该提交的就是运行程序法。×

5.与计算机科学的理论研究不同,软件工程是一门原理性学科。×

第二章软件生命周期及开发模型

1.瀑布模型和增量模型都属于整体开发模型。×

2.原型模型可以有效地适应用户需求的动态变化。×

3.螺旋模型在瀑布模型和增量模型的基础上增加了风险分析活动。√

4.软件过程改进也是软件工程的范畴。√

5.在软件开发中采用原型系统策略的主要困难是成本问题。×

第三章结构化需求分析

1.需求分析的主要目的是制定软件开发的具体方案。×

2.用户对软件需求的描述不精确,往往是产生软件危机的原因之一。√

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

4.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第

一手资料,并从中提取有价值的需求。√

5.需求规格说明数描述了系统每个功能的实现。×

第四章结构化软件设计

1.在同一用户界面中,所有的菜单选择,命令输入、数据显示和其它功能应采用不同的形

式和风格。×

2.最高的耦合度是数据耦合。√

3.编程中应采用统一的标准和约定,降低程序的复杂性。√

4.流程图也称为框图程序,是程序最常用的一种表示法。√

5.理想的人机界面应针对具有典型个性的特定的一类用户设计。√

6.重视程序结构的设计,能是程序具有较好的层次结构。√

7.软件过程不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构化设计思想。

×

8.软件开发、设计几乎都是从头开始,成本和进度很难估计。√

9.耦合度是对软件结构中模块间关联程度的一种度量。在设计软件是应追求耦合尽可能紧

密的系统。×

10.SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相适应。×

第五章面向对象的需求分析

1.边界对象表示了系统与参与者之间的接口。在每一个用例中,该对象从参与者处收集信

息,并将之转换为一种实体对象和控制对象使用的形式。√

2.采用面向对象的方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的

过程叫面向对象分析。√

3.继承仅仅允许单重继承,即不允许一个子类有多个父类。×

第六章面向对象的软件设计

1.面向对象程序设计应该在面向对象分析之前,因为只有产生了设计结果才可以对其进行

分析。×

2.面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使

用UML表达。√

第七章软件测试技术

1.软件测试就是为了验证软件功能的实现是否正确,是否完成既定目标的活动,所以软件

测试在软件工程而后期才开始具体的工作。×

2.发现错误多的模块,可能残留在模块中的错误也多。√

3.测试人员在测试过程中发现一处问题,如果问题影响不大,而自己有可以修改,应立即

将此问题正确修改,以加快、提高开发的进程。×

4.路径测试不属于单元测试的内容。√

5.测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。×

6.软件测试只能发现错误,但不能保证测试后的软件没有错误。√

7.集成测试是有最终用户来实施的。×

8.所有的逻辑覆盖标准中,查错能力最强的语句覆盖。×

9.等价类划分方法能够有效的检测输入条件的各种组合可能引起的错误。×

10.验收检测方法需要考察模块间接口和各模块之间的联系。×

第八章软件维护技术

1.维护申请报告是一种由用户产生的文档,它用作计划维护任务的基础。×

2.维护阶段是软件生存周期中时期最短的阶段,也是花费精力和费用最少的阶段。×

3.在软件维护中,因修改软件而导致出现错误或其它情况成为维护的副作用。√

4.为了提高软件的可维护性和可靠性而对软件进行的修改称为适应性维护。×

5.维护的副作用有编码副作用、数据副作用、文档副作用3种。√

第一章软件工程引论

1.什么是软件危机?它和软件工程有什么关系?

答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;

如何维护数量不断膨胀的已有软件。

2.简述软件和软件工程的定义以及软件工程的形成过程。

答:软件是与计算机系统操作有关的程序、规程、规则及其文档和数据的统称。软件由两部分组成:一是机器可执行的程序和有关的数据;二是与软件开发、运行、维护、使用和培训有关的文档。

软件工程是指导计算机软件开发和维护的工程学科。它强调按照软件产品的生产特性,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术结合起来,以便经济地开发出高质量的软件并有效地维护它。

软件工程的发展经历了以下3个阶段。

第一阶段:20世纪70年代,—传统软件工程时代。

第二阶段:20世纪80年代,—过程软件工程时代。

第三阶段:进入20世纪90年代以后,—构件软件工程时代。

3.软件工程的目标是什么?如何解决多目标之间的矛盾?

答:软件工程的目标:软件开发成本较低。软件功能能够满足用户的需求。软件性能较好。软件可靠性高。软件易于使用、维护和移植。能按时完成开发任务,并及时交付使用。

有些目标之间是相互补充的,如易于维护和高可靠性之间、功能强与可用性之间;有些目标是彼此相互冲突的,如若只考虑降低开发成本,很可能同时也降低了软件的可靠性,如果一味追求提高软件的性能,可能造成开发出的软件对硬件的依赖性较强,从而影响到软件的可移植性;不同的应用对软件质量的要求不同,如对实时系统来说,其可靠性和效率比较重要;对生命周期较长的软件来说,其可移植性、可维护性比较重要,所以,应该根据不同的系统需求决定个目标之间的重要性。

4.在软件开发中软件开发工具有什么作用?

答:软件开发工具是指用来辅助软件开发、维护和管理的软件。现代软件工程方法得以实施的重要保证是软件开发工具和环境。软件开发工具使软件在开发效率、工程质量、减少软件开发对人的依赖性等多方面得到改善

5.什么是软件支持过程?它与软件工程方法学有何关系?

答:软件过程是指生产满足需求且达到工程目标的软件产品所涉及的一系列相关活动,

它覆盖了需求分析、系统设计、实施以及支持维护等各个阶段。

软件过程有各种分类方法。按性质划分软件过程可概括为基本过程类、支持过程和组织过程类。可见软件支持过程是软件过程中的一种。

6.在软件工程知识体系中,将软件工程划分为哪些知识域?

答:SWEBOK将软件工程知识体系划分为10个知识域,分为两类过程。一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。

7. B.W.Boehm提出的软件工程基本原则的作用是什么?

答:1.采用分阶段的生命周期计划,以实现对项目的严格管理

2.坚持进行阶段评审,以确保软件产品质量

3.实行严格的产品控制,以适应软件规格的变更

4.采用现代程序设计技术

5.软件成果能清楚地审查

6.开发小组人员应该少而精

7.承认不断改进软件工程实践的必要性

第二章软件生命周期及开发模型

1.简述什么是软件生命周期。根据国家标准《计算机软件开发规范》,软件生命周期主要

包括哪几个阶段?

答:作为工程化的一般特征,软件产品和其他工业产品一样,软件产品也包括设计、生产、使用和消亡几个阶段,并称之为软件的生命周期,即指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。国家标准GB8566—1988《计算机软件开发规范》将软件生命周期划分为几个阶段:可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试、集成测试、确认测试)、系统运行和维护。这几个阶段又可以归纳为3个阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。

2.瀑布模型有哪些特点?对于里程碑,你有哪些认识?

答:1970年W.Royce最早提出瀑布模型。答:瀑布模型的特点:(1). 线性化模型结构;(2). 各阶段具有里程碑特征;(3). 基于文档的驱动;(4). 严格的阶段评审机制。其中的里程碑是指瀑布模型中的阶段只能逐级到达、不能跨越;每个阶段都有明确的任务,都需要产生确定的成果。由于瀑布模型是一种线性模型,要求项目严格按规程推进,必须等到所有开发工作全部完成以后才能获得可以交付的软件产品。因此,瀑布模型不太适用于用户需求经常变更的软件项目。

瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。例如,按阶段制订项目计划,分阶段进行成本核算,进行阶段性的评审等。这为提高软件产品质量提供了有效保证。

3.试说明原型模型的两种实现方案各有什么特点,各适用于哪些情况。

答:原型可以分为3类。

1)抛弃式原型:这种原型在目的达到后即被抛弃,原型不作为最终产品,如上所述。

2)进化式原型:这类原型的形成和发展是逐步完成的,它是高度动态迭代和高度动态循环,每次迭代都要对系统重新进行需求规格说明、重新设计、重新实现和重新评价,所以是对付变化最为有效的方式。

3)增量式模型:系统是一次一段地增量构造,与演化式原型的最大区别在于增量式开

发是在软件总体设计基础上进行的。

4.一般认为,只有大型项目才采用螺旋模型,原因是什么?

答:螺旋模型的优越性在于它吸收了“进化”的概念,使得开发人员和用户对每一个演化层出现的风险均有所了解,并对此做出反应。但使用该模型需要丰富的风险评估经验和专门知识,如果项目风险较大又未及时发现,势必造成重大损失。实际上,对软件项目进行风险分析也需要费用,假如项目风险分析费用过高,甚至超过了项目的开发费用,显然就不合适了。一般大型项目才有较高的风险,才有进行详细风险分析的必要。因此,这种模型比较适合大型的软件项目。

5.为什么说构建复用模型是一种有利于软件按工业流程生产的过程模型?

答:对象技术将事物实体封装成包含数据和数据处理方法的对象,并抽象为类。经过适当的设计和实现的类也可称为构件。由于构件具有一定的通用性,可以在不同的软件系统中被复用。在基于构件复用的软件开发中,软件由构件装配而成,这就如同用标准零件装配汽车一样。构件复用技术,它能带来更好的复用效果,并且具有工程特性,更能适应软件按工业流程生产的需要。

6.敏捷方法的价值观和原则与传统的方法有哪些联系和区别?

答:相对于“非敏捷”,敏捷不仅是体现在有效地响应变化,它还包括鼓励程序员团队与业务专家之间的紧密协作、面对面地沟通(认为比书面的文档更有效)、强调可运行软件的快速交付而不是中间产品,敏捷过程提倡可持续开发。建立紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。

7.有什么情况下会建议不用敏捷方法来开发软件系统?

从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。

8.具有原型化的瀑布模型具有什么特点?他和瀑布模型最大的不同是什么?

答:为了克服瀑布模型的问题,可以在需求阶段或设计阶段平行地进行几次快速建立原型的工作。原型开发后,可以获得更为清晰的需求反馈信息,既可以消除风险或减少不确定性,又可以采用平行瀑布模型方式。在瀑布模型的各阶段间转换时,可以适当并行扩展各阶段的开发工作。例如,在需求分析完成60%时,就可以开始进行这60%已完成分析部分的设计工作,同时并行进行其余40%的需求分析。

第三章结构化需求分析

1.简述什么是需求分析?需求分析的任务是什么?

答:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。

基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求;分析与综合,导出软件的逻辑模型;编写文档:包括编写"需求规格说明书","初步用户使用手册","确认测试计划","修改完善软件开发计划"

2.在进行可行性研究时,向用户推荐的方案中应清楚的表明什么?

答:可行性研究主要集中在以下4个方面。

1)经济可行性:进行开发成本的估算及可能取得效益的评估,确定目标系统是否值得投资开发。

2)技术可行性:对目标系统进行功能、性能和限制条件的分析,确定在现有资源的条件下,技术风险有多大,系统是否能实现。这里,资源包括已有的或可以提供的硬件、软件资源,现有技术人员的技术水平与已有的工作基础。

3)操作可行性:系统的操作方式能否在用户的组织内行得通,以及对目标系统可能会涉及的政策、责任等问题做出决定。

4)社会可行性:主要分析项目对社会的影响,从方针政策、经济结构、法律和制度等社会因素方面考虑项目开发的合理性和意义。

总之,可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;

如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。

3.需求工程包含哪些内容时,如何写好需求规格说明?

答:需求工程指应用工程化方法、技术和规格来开发和管理软件的需求。需求工程的目标是获取高质量的软件需求。需求工程突出了工程化原则,强调以系统化、条理化和重复化的方法进行软件需求的相关活动,从而增强管理性和降低需求开发的成本。需求工程由需求开发活动和需求管理过程组成。一个好的需求规格说明应符合以下要求:1)正确性。每一项需求都必须准确地陈述其要开发的功能。即需求规格说明对系统功能、行为、性能等的描述必须与用户的期望相吻合,这是软件系统真正需要完成可达到的。

2)完整性。需求规格说明应该包括软件要完成的全部任务,每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施,不能遗漏任何必要的需求信息。3)必要性。每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。4)划分优先级。给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。5)无二义性。对所有需求说明的读者都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求用简洁明了的语言表达出来。6)可验证性。需求规格说明中描述的需求都可以运用一些可行的手段对其进行验证和确认。4.用户需求调查主要有哪些方法?

答:获取需求是需求分析的基础,要在获得详实调查资料的基础之上才能进行需求分析。

需求获取包括了一系列的方法和活动,如研究资料法、问卷调查法、用户访谈和实地观察法等。需求分析人员可以使用这些方法、技术进行收集、确认用户的需求。

5.数据字典的作用是什么?它有哪些基本条目?

答:数据流图和数据字典一起构成了系统的逻辑模型。没有数据字典,数据流图就不严格;没有数据流图,数据字典也没有作用。数据字典的重要用途是作为分析阶段的工具。

在数据字典中建立严密一致的定义有助于改进分析人员和用户之间的通信,避免许多误解的发生。数据字典也有助于改进不同的开发人员或不同的开发小组之间的通信。同样,将数据流图中的每个元素的精确定义放在一起,就构成了系统的、完整的需求规格说明的主体。

数据字典还作为连接软件设计、实现和进化阶段的开发机构的信息存储。在软件设计阶段,数据字典是存储文件或数据库设计的基础。在实施阶段,还可参照数据字典描述数据。随着系统的改进,字典中的信息也会发生变化,新的信息会随时加入进来。数据字典对下列4类元素进行定义:数据项;数据流;数据存储(文件);加工。

6.需求规格说明书的主要内容是什么?它的作用是什么?

答:软件需求规格说明(Software Requirement Specification,SRS)是需求工程最终产生的结果,必须用一种统一的方式将它们编写成可视文档,包含了软件的功能需求和非功

能需求。需求规格说明是项目相关人员对要开发的软件系统达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文件。软件需求规格说明的主要内容有:

7.结构化分析方法?结构化分析方法的结果是什么?

答:结构化分析(Structured Analysis,SA)是由美国Yourdon公司提出的适用于分析典型的数据处理系统的,以结构化的方式进行系统定义的分析方法。这个方法通常与L.Constantine提出的结构化设计(Structured Design,SD)方法衔接起来使用,即所谓的SASD方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。

Yourdon方法首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(Structured Programming,SP)。

第五章面向对象的需求分析

1.简述对象与类之间的联系与区别。

答:对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。具体来说,类由数据和方法集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。类是具有相同属性和行为的一组相似对象的抽象,在现实世界中并不能真正存在。类好比是一个对象模板,根据需要用它可以产生多个对象(即类的实例)。因此类所代表的是一个抽象的概念或事物,类是静态概念;在客观世界中实际存在的是类的实例,即对象,对象是动态概念。类是对象的抽象,有了类之后,对象则是类的具体化,是类的实例。

2.试描述继承性与多态性的作用。

答:继承(Inheritance)是面向对象方法学中的核心概念,它是指从一个类的定义中可以派生出另一个类的定义,被派生出的类(子类)可以自动拥有父类的全部属性和服务。

继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义那些已在父类中定义过的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。继承机制是组织构造和复用类的一种工具,如果将用面向对象方法开发的类作为可复用构件,那么在开发新系统时可以直接复用这个类,还可以将其作为父类,通过继承

而实现复用。复用减少了程序的代码量和复杂度,提高了软件的质量和可靠性,软件的维护修改也变得更加容易。

多态性(Polymorphism)是指同名的方法或操作在不同类型的对象中有各自相应的实现。

在存在继承关系的一个类层次结构中,不同层次的类可以共享一个操作,但却有各自不同的实现。当一个对象接收到一个消息请求时,它根据其所属的类,动态地选用在该类中定义的操作。多态性机制不但为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。

3.通过看图回答下面的问题。

在图所示的用例图中:

①X1、X2和X3表示用例中的什么?

②已知UC3是抽象用例,那么X1可通过图中哪些用例与系统进行交互?

③图中哪个用例时UC4的可选部分,哪个用例是UC4的必须部分?

答:X1、X2和X3表示用例中的角色(或参与者)。已知UC3是抽象用例,那么X1可通过图中的UC4、UC1用例与系统进行交互。UC2是UC4的可选部分,UC5是UC4的必须部分。

第六章面向对象的软件设计

1.说明面向对象的集成测试包含哪些内容。

答:面向对象系统是由对象到子系统、再到系统的集成。通常是松耦合的,系统中没有一个明显的顶层,即面向对象系统没有严格的层次控制结构,相互调用的功能也分散在不同的类中,类通过消息的相互作用申请和提供服务。此外,面向对象程序具有动态性,

程序的控制流往往无法确定。因此,增量式集成测试不再适用,只能采用基于操作的集成测试。面向对象的集成测试关注系统的结构和内部的相互作用,可以分成两步进行:先进行静态测试,再进行动态测试。

面向对象基于操作的集成测试策略有两种:基于线程的测试和基于使用的测试。

基于线程的测试把相应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归测试以保证不产生副作用。

基于使用的测试首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把软件系统构造完为止

2.举例说明各种程序设计语言的特点及适用范围。

答:以常见的一些编程语言为例:

FORTRAN语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写

C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。

Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。

SQL:结构化查询语言,用于对数据库进行存取管理。

汇编语言和Ada语言,主要用于实时处理和编写系统软件。

Prolog、Lisp语言。Lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。

C++、Java语言,是面向对象的设计语言,用于面向对象的方开发软件。

3.选择面向对象程序设计时应考虑哪些因素?

答:纯面向对象程序设计语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象程序设计语言的目标则是提高运行速度和使传统程序员容易接受面向对象的思想。成熟的面向对象程序设计语言一般都是提供丰富的类库和强有力的开发环境。除此之外,开发人员在选择面向对象程序设计语言时,还应考虑可复用性、类库和开发环境以及一些其他的因素。语言、开发环境和类库这3个因素综合起来,共同决定了可复用性。考虑类库时,不仅应该考虑是否提供了类库,还应考虑库中提供了哪些有价值的类。在选择编程语言时还应考虑的因素有为用户学习面向对象分析、设计和编程技术所能提供的培训服务;在使用面向对象程序设计语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台和发布平台;对机器性能和内存的需求;集成已有软件的容易程度等。

第七章软件测试技术

1.简述软件测试的步骤。

答:首先要分别完成每个单元(模块)的测试任务,以确保每个模块能正常工作。然后把已经测试过的模块组装起来,进行集成测试。完成集成测试以后,要对开发工作初期制定的确认准则进行检验。完成确认测试以后,为检验它能否与系统的其他部分协调工作,还需要进行系统测试。软件测试步骤如下。

1)制订测试计划。该计划被批准后转向第2)步。

2)设计测试用例。该用例被批准后转向第3)步。

3)如果满足“启动准则”,那么执行测试。

4)撰写测试报告。

5)消除软件缺陷。如果满足“完成准则”,那么正常结束测试。

2.简述黑盒测试和白盒测试的方法并举例说明。

答:

1)黑盒测试也称功能测试或数据驱动测试。在测试时,把程序看作一个不能打开的黑盒子,它是在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试技术是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试能够发现的错误类型包括:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。黑盒测试技术主要包括等价类划分、边界值分析、因果图、错误推测等方法。

2)白盒测试也称结构测试或逻辑驱动测试,它是在已知程序内部结构的情况下设计测试用例的测试方法。在使用白盒测试方法时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,对所有逻辑路径进行测试,得出测试数据。白盒测试的主要技术有逻辑驱动、路径测试等,主要用于软件验证、检验语法错误、编译错误、性能问题、逻辑问题、判定条件问题和编程规范等。

3.软件测试分为哪几个阶段?每个阶段分别测试哪些内容?

答:根据软件开发流程,软件测试工作可以分为单元测试、集成测试、系统测试和验收测试。单元测试是对软件中的基本组成单位进行的测试,验证每个模块是否满足系统设计说明书的要求。集成测试是将已测试过的模块组合成子系统,重点测试各模块之间接口和联系。系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。验收测试是根据需求规格说明书中定义的全部功能和性能要求,确认软件是否达到了要求。

第八章软件维护技术

1.为什么说软件维护是不可避免的?

答:为了保证软件在运行期间正常运行,延长软件的使用寿命,发挥良好的社会效益和经济效益,软件维护必不可少

2.软件可维护性与哪些因素有关?采用哪些因素能提高软件可维护性?

答:决定软件可维护性的质量属性主要有以下几个方面。

可理解性。可理解性是指人们通过阅读源代码和相关文档,了解程序功能、结构、接口和内部过程的容易程度。一个可理解的程序应该具备模块化、结构化、风格一致化(代码风格与设计风格一致)、易识别化(使用有意义的数据名和过程名),以及文档完整化等一些特性。

可测试性。可测试性是指论证程序正确性的容易程度。程序复杂度越低,证明其正确性就越容易。而且测试用例设计得合适与否,取决于对程序的理解程度。因此,一个可测试的程序应当是可理解的、可靠的和简单的。

可修改性。可修改性是指程序容易修改的程度。一个可修改的程序应当是可理解的、通用的、灵活的和简单的。其中通用性是指程序适用于各种功能变化而无需修改。灵活性

是指能够容易地对程序进行修改。

3.试说明软件文档与软件可维护性的关系。

答:由于文档是对软件的总目标、程序各组成部分之间的关系、程序设计策略以及程序实现过程的历史数据等的说明和补充,因此,文档对提高程序的可理解性有着重要作用。

即使是一个十分简单的程序,要想高效率地维护它就需要编制文档来解释其目的及任务。

对于程序维护人员来说,要想对程序编制人员的意图重新改造,并对今后变化的可能性进行估计,也必须建立完整的维护文档。

4.简述软件维护工作过程。为什么说软件维护过程是一个简单的软件开发过程?

答:在软件维护阶段,变更、完善软件的活动包括:提出维护申请;论证维护申请;制定维护方案;进行维护活动;建立维护文档;评价维护结果。由此可见,完成一项软件维护任务,又好似重复了软件开发的全过程。

5.什么是软件维护的副作用?如何防止软件维护的副作用?

答:维护副作用是指由于修改而导致的错误或其他多余动作的发生。3类主要副作用: 修改代码的副作用

一般可在回归测试过程中对修改代码的副作用造成的软件故障进行查找和改正。

修改数据的副作用

完善的设计文档可以限制修改数据的副作用。这种文档描述了数据结构,并提供了一种把数据元素、记录、文件和其他结构与软件模块联系起来的交叉对照表。

修改文档的副作用

在软件再次交付使用之前,对整个软件配置进行评审将大大减少修改文档的副作用。

6.如何保证和提高软件维护的质量和效率?

答提高软件的可维护性,可以从两方面来考虑:一方面,在软件开发期的各个阶段,各项开发活动进行的同时,应该时时处处努力提高软件的可维护性,保证软件产品在发布之日具有高水准的可维护性;另一方面,在软件维护期进行维护活动的同时,也要兼顾提高软件的可维护性,更不能对可维护性产生负面影响。具体的提高软件可维护性的技术途径主要有以下4个方面:建立完整的文档;明确质量标准;采用易于维护的技术和工具;

加强可维护性评审。

UML图解

1.一个公司可以雇佣多个人,某个人在同一时刻只能为一家公司服务。每个公司只有一个总经理,总经理下有多个部门经理管理公司的雇员,公司的雇员只归一个经理管理。请为上面描述的关系建立类模型,注意捕捉类之间的关联并标明类之间的多重性。

2.在一个习题库下,各科老师可以在系统中编写习题及标准答案,并将编写的习题和答案加入题库中,或者从题库中选取一组习题组成向学生布置的作业,并在适当的时间公布答案。学生可以在系统中完成作业,也可以从题库中选择更多的习题练习。老师可以通过系统检查学生的作业,学生可以在老师公布答案后对自己的练习进行核对。阅读这一情境,分析出该

系统所包括的实体类并适当添加属性,绘制出分析类图。

3.某银行系统的取款用例执行顺序如下,工作人员输冬取款单,输入后,银行系统请求银行数据库匹配用户,进行身份验证,验证通过后,数据库注销相应存款,返回注销完成信息,银行系统在存折上打印取款记录。请根据以上信息绘制顺序图。

4.在某一学生指纹考勤系统中,有一个用例名为“上课登记”。此用例允许学生在上课前使用系统识别自己的指纹信息进而识别自己的身份,同时系统可以将登录信息存储在数据库中。 系统生成一个关于该登记学生及当前日期、时间的新记录,并将该记录保存到数据库中。请根据以上描述绘制“上课登记”用例的顺序图。

5.某银行系统存款处理过程如下。

①系统将存款单上的存款金额分别记录在存折和账目文件中;

②将现金存人现金库;

③最后将打印后的存折还给储户;

请分析此交互过程所涉及的系统对象,并结合存款处理流程绘制协作图。

6.医院拟引入一款患者监护系统。基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况,以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。请根据以上描述,绘制患者监护系统的状态图。

7.当手机开机时,它处于空闲状态,当用户使用电话呼叫某人时,收集进入拨号状态。如果呼叫成功,即电话接通,手机就处于通话状态;如果呼叫不成功,如对方线路有问题或关机,则拒绝接听。这时手机停止呼叫,重新进入空闲状态,手机进入空闲状态下被呼叫,手机进入响铃状态(ringing);如果用户接听电话(pick),手机处于通话状态;如果用户未做出任何反应,可能他没有听见铃声,手机一直处于响铃状态,如果用户拒绝来电,手机回到空闲状态。请按以上描述绘制出使用手机的状态图。

8.某学生选课系统的查询课程用例如下,学生首先进入选课系统,然后输入要查询的课程名,系统验证输入的课程名是否存在,若存在,跳转到对应的显示课程信息的页面;若不存在,则给出提示信息,返回选课页面。请根据以上描述绘制活动图。

9.在机票预订系统中,使用系统的用户必须先注册一个自己的账号,其过程为输入注册信息、验证信息完整、提交信息、系统进行验证(是否重名等),如果验证均通过,则注册成功,否则失败。请根据以上描述,对用户注册用例画出活动图。

10.某个自助售货机系统的用户购买汽水的交互过程如下。

①用户投币,系统接收到硬币后显示出机器中的商品余量信息。

②用户选择其中一种汽水,系统处理后将该种汽水释放。

请绘制此交互过程的协作图。

显示商品余量

软件工程概论课后答案解析

第1章软件与软件工程的概念 1、1 举出您所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1、2 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是否正确?为什么? 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是错误的。 首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。 1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本与进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常就是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅 速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技 术问题,更重要的就是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

软件工程案例教程李军国主编复习题答案

第1章习题答案 一、判断题 二、填空题 三、简答题 1.软件的特点: ①软件具有抽象性。 ②软件与硬件的生产方式不同。 ③软件与硬件的维护方式不同。 ④软件具有复杂的逻辑性。 ⑤软件的成本较高。 ⑥软件的使用和社会因素有关。 2.软件危机产生的原因: ①用户需求不明确。 ②缺乏正确的理论指导。 ③软件开发规模越来越大。 ④软件开发复杂度越来越高。

3.软件危机的主要表现: ①软件开发进度难以预测。 ②软件开发成本难以控制。 ③用户对产品功能难以满足。 ④软件产品质量无法保证。 ⑤软件产品难以维护。 ⑥软件缺少适当的文档资料。 4.软件工程学的基本原则有哪些: ①抽象。 ②信息隐蔽。 ③模块化。 ④局部化。 ⑤确定性。 ⑥一致性。 ⑦完备性。 ⑧可验证性。 5 什么是软件的生命周期? 答案:软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。 这就是软件的生存周期。 6 软件工程过程有哪几个基本过程活动?试说明之。 答案:软件工程过程的基本过程活动有4步: ①软件规格说明(需求定义)。规定软件的功能及其运行的限制; ②软件设计与开发(设计开发)。产生满足规格说明的软件; ③软件确认(测试)。确认软件能够完成客户提出的要求; ④软件演进(维护)。为满足客户的变更要求,软件必须在使用的过程中演进。 四、综合题 1.详细说明软件生命周期分哪几个阶段? 答案:软件生命周期主要分为6个阶段:软件项目计划、软件需求分析和定义、软 件设计、程序编码、软件测试,以及运行维护。 (1)软件项目计划:在这一步要确定软件工作围,进行软件风险分析,预计软件

开发所需要的资源,建立成本与进度的估算。根据有关成本与进度的限制分 析项目的可行性。 (2)软件需求分析和定义:在这一步详细定义分配给软件的系统元素。可以用以 下两种方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可 用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格 说明。另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从 而确定软件需求。 (3)软件设计:软件的设计过程分两步走。第一步进行概要设计,以结构设计和 数据设计开始,建立程序的模块结构,定义接口并建立数据结构。此外,要 使用一些设计准则来判断软件的质量。第二步做详细设计,考虑设计每一个 模块部件的过程描述。经过评审后,把每一个加细的过程性描述加到设计规 格说明中去。 (4)程序编码:在设计完成之后,用一种适当的程序设计语言或CASE工具生成源 程序。应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详 细设计描述。 (5)软件测试:单元测试检查每一单独的模块部件的功能和性能。组装测试提供 了构造软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的 需否都得到满足。在每一个测试步骤之后,要进行调试,以诊断和纠正软件 的故障。 (6)软件维护:为改正错误,适应环境变化及功能增强而进行的一系列修改活动。 与软件维护相关联的那些任务依赖于所要实施的维护的类型。 2.试论述瀑布模型软件开发方法的基本过程。 答案:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分 析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相 互衔接的固定次序,如同瀑布流水,逐级下落。然而软件开发的实践表明,上述各 项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均应具 有以下特征: (1)从上一项活动接受本项活动的工作对象,做为输入; (2)利用这一输入实施本项活动应完成的容; (3)给出本项活动的工作成果,做为输出传给下一项活动; (4)对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项 活动,否则返回前项,甚至更前项的活动进行返工。

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程课后习题答案

软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述得规格说明时,容易产生二义性。为了克服非形式化方法得缺点,人们把数学引入软件开发工程,创造了基于数学得形式化说明技术。 应用形式化方法得准则: (1)应该选用释放得表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统得开发方法; (6)应该建立详尽得文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统

习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么就是面向对象方法学?它有哪些优点? 面向对象方法学,就是尽可能模拟人类习惯得思维方式,使开发软件得方法与过程尽可能接近人类认识世界解决问题得方法与过程,从而使得实现解法得解空间(也称为求解域)与描述问题得问题空间(也称为问题域)在结构上尽可能一致。 优点: 1.与人类习惯得思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统得用例模型。 分析如下:从对这个订货系统得需求可以知道,仓库管理员通过放在仓库中得终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供得产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述得储蓄系统,试建立它得对象模型、动态模型与功能模型。

软件工程导论部分课后习题答案

第一章 1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程?它与软件工程方法学有何关系? z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发 螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。适用于内部开发的大规模软件项目。 1-8:为什么说喷泉模型叫好的体现了面向对象软件开发过程无缝和迭代的特性?

软件工程案例教程答案

1.下列所述不是软件特点的是(A) A.软件是有形的 B.软件不存在磨损和消耗问题 C.软件开发成本高 D.软件没有明显的制作过程 2.软件工程的出现主要是由于(C) A.程序设计方法学的影响 B.其他工程学科的影响 C.软件危机的出现 D.计算机的发展 3.以下(C)不是软件危机的表现形式 A.开发的软件不满足用户的需要 B.开发的软件可维护性差 C.开发的软件价格便宜 D.开发的软件可靠性差 4.软件工程的目的是(C) A.建造大型的软件系统 B.开发的软件可维护性差 C.软泥吉安质量的保证 D.研究软件开发的远离 5.下列所述不是软件组成的是(D) A.程序 B.数据 C.界面 D.文档 6.下列对“计算机软件”描述正确的是(A) A.是计算机系统的组成部分 B.不能作为商品参加交易 C.是在计算机硬件设备生产过程中生产出来的 D.之存在语计算机系统工作时 7.软件工程的方法的产生源于软件危机,下列(D)是产生软件危机的内在原因 A.软件的复杂性 B.软件维护困难C软件成本太高. D.软件质量难保证 8.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题 A.软件危机 B.质量保证 C.开发效率 D.生产工程化 9.软件工程学中除重视软件开发的研究外,另以重要组成内容是软件的(A)和过程改进 A.项目管理 B.成本核算 C.人员培训 D.工具开发 10.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴 A.软件开发方法 B.软件开发工具 C.软件工程环境 D.软件工程经济 二、填空题 1.软件工程的目的是成功的建造大型的软件系统,主要内容是开打软件开发技术、软件项目管理和软件质量管理。 2.螺旋式开发模型主要是针对风险比较大的项目而设计的 3.由于软件产生的复杂性和高成本,使大型软件产生出了很多问题,即出现软件危机,软件工程正是为了克服它而提出的一种概念及相关方法和技术。 4.增量模型假设需求可以分段,成为一系列增量产品,每一增量可以分别开发。 5.喷泉模型比较适合用于面向对象的开发方法。 三、判断题 1.软件开发方法的主要目的是克服软件手工生产带来的问题,使软件开发能进入工程化和规范化的环境(Y) 2.软件工程的提出起源于软件危机,其目的书最终解决软件的生产工程化(Y) 3.软件工程改进也是软件工程的范畴(Y)

软件工程课后习题(含答案)

第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。

软件工程导论课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经 常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 五、1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。

软件工程课后习题答案第五版

软件工程课后习题答案第五版 《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

软件工程案例教程

第一章 1.下列所述不是软件特点的是(A) A.软件是有形的 B.软件不存在磨损和消耗问题 C.软件开发成本高 D.软件没有明显的制作过程 2.软件工程的出现主要是由于(C) A.程序设计方法学的影响 B.其他工程学科的影响 C.软件危机的出现 D.计算机的发展 3.以下(C)不是软件危机的表现形式 A.开发的软件不满足用户的需要 B.开发的软件可维护性差 C.开发的软件价格便宜 D.开发的软件可靠性差 4.软件工程的目的是(C) A.建造大型的软件系统 B.开发的软件可维护性差 C.软泥吉安质量的保证 D.研究软件开发的远离 5.下列所述不是软件组成的是(D) A.程序 B.数据 C.界面 D.文档 6.下列对“计算机软件”描述正确的是(A) A.是计算机系统的组成部分 B.不能作为商品参加交易 C.是在计算机硬件设备生产过程中生产出来的 D.之存在语计算机系统工作时 7.软件工程的方法的产生源于软件危机,下列(D)是产生软件危机的内在原因 A.软件的复杂性 B.软件维护困难C软件成本太高. D.软件质量难保证 8.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题 A.软件危机 B.质量保证 C.开发效率 D.生产工程化 9.软件工程学中除重视软件开发的研究外,另以重要组成内容是软件的(A)和过程改进 A.项目管理 B.成本核算 C.人员培训 D.工具开发 10.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴 A.软件开发方法 B.软件开发工具 C.软件工程环境 D.软件工程经济

二、填空题 1.软件工程的目的是成功的建造大型的软件系统,主要内容是开打软件开发技术、软件项目管理和软件质量管理。 2.螺旋式开发模型主要是针对风险比较大的项目而设计的 3.由于软件产生的复杂性和高成本,使大型软件产生出了很多问题,即出现软件危机,软件工程正是为了克服它而提出的一种概念及相关方法和技术。 4.增量模型假设需求可以分段,成为一系列增量产品,每一增量可以分别开发。 5.喷泉模型比较适合用于面向对象的开发方法。 三、判断题 1.软件开发方法的主要目的是克服软件手工生产带来的问题,使软件开发能进入工程化和规范化的环境(Y) 2.软件工程的提出起源于软件危机,其目的书最终解决软件的生产工程化(Y) 3.软件工程改进也是软件工程的范畴(Y) 第二章 一、选择题 1.结构化分析方法是面向(B)的自顶向下逐步求精的分析方法。 A.目标 B.数据流C功能. D.对象 2.在进行软件设计时应该遵循的最主要的原理是(C) A.抽象B模块化. C.模块独立D信息屏蔽. 3.在结构化分析方法中,常用的描述软件功能需求的工具是(C) A.业务流程图、处理说明B软件流程图、模块说明. C.数据流程图、数据字典 D.系统流程图、程序编码

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件项目管理案例教程(第三版)课后习题答案

项目管理案例教程(第三版)习题及答案 第一章软件项目管理概述 一、填空题 1、实现项目目标的制约因素有(项目范围)、(成本)、(进度计划)、(客户满意度)等。 2、项目管理包括(启动过程组)、(计划过程组)、(执行过程组)、(控制过程组)、(收尾过程组)5个过程组。 二、判断题 1、搬家属于项目。(对) 2、项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的永久性的努力。(错) 3、过程管理就是对过程进行管理,目的是要让过程能够被共享、复用,并得到持续的改进。(对) 4、项目具有临时性的特征。(对) 5、日常运作存在大量的变更管理,而项目基本保持连贯性的。(错) 6、项目开发过程中可以无限制地使用资源。(错) 三、选择题 1、下列选项中不是项目与日常运作的区别的是(C) A. 项目是以目标为导向的,日常运作是通过效率和有效性体现的。 B. 项目是通过项目经理及其团队工作完成的,而日常运作是职能式的线性管理。 C.项目需要有专业知识的人来完成,而日常运作的完成无需特定专业知识。 D.项目是一次性的,日常运作是重复性的。 2、下列选项中最能体现项目的特征(C) A.运用进度计划技巧 B.整合范围与成本 C.确定期限 D.利用网络进行跟踪 3、以下都是日常运作和项目的共同之处,除了(D) A.由人来做 B.受限于有限的资源 C.需要规划、执行和控制 D.都是重复性工作 4、项目经理的职责不包括(D) A.开发计划 B.组织实施 C.项目控制 D.提供资金 5、下列选项中属于项目的是(C) A.上课 B.社区保安 C.野餐活动 D.每天的卫生保洁 6、下列选项中正确的是(C) A.一个项目具有明确的目标而且周期不限 B.一个项目一旦确定就不会发生变更 C.每个项目都有自己的独特性 D.项目都是一次性的并由项目经理独自完成 7、(B)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 A.过程 B.项目 C.项目群 D.组合 8、(B)是一系列伴随着项目的进行而进行,目的是确保项目能够达到期望结果的一系列管理行为。

软件工程概论课后习题答案

软件工程概论郑人杰等版 第1章软件与软件工程的概念 1.1 举出你所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么? 认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。 首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。 1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本和进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用 迅速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及 技术问题,更重要的是必须有科学严格的管理。

软件工程管理分析案例教程(第三版)课后习题-答案

第一章 二、判断题 1、搬家属于项目。(√) 2、项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的永久性的努力。(×) 3、过程管理就是对过程进行管理,目的是要让过程能够被共享、复用,并得到持续的改进。(√) 4、项目具有临时性的特征。(√) 5、日常运作存在大量的变更管理,而项目基本保持连贯性的。(×) 6、项目开发过程中可以无限制地使用资源。(×) 三、选择题 1、下列选项中不是项目与日常运作的区别的是(C) A. 项目是以目标为导向的,日常运作是通过效率和有效性体现的。 B. 项目是通过项目经理及其团队工作完成的,而日常运作是职能式的线性管理。 C.项目需要有专业知识的人来完成,而日常运作的完成无需特定专业知识。 D.项目是一次性的,日常运作是重复性的。 2、下列选项中最能体现项目的特征(C) A.运用进度计划技巧 B.整合范围与成本 C.确定期限 D.利用网络进行跟踪 3、以下都是日常运作和项目的共同之处,除了(D) A.由人来做 B.受限于有限的资源 C.需要规划、执行和控制 D.都是重复性工作 4、项目经理的职责不包括(D) A.开发计划 B.组织实施 C.项目控制 D.提供资金 5、下列选项中属于项目的是(C) A.上课 B.社区保安 C.野餐活动 D.每天的卫生保洁 6、下列选项中正确的是(C) A.一个项目具有明确的目标而且周期不限 B.一个项目一旦确定就不会发生变更 C.每个项目都有自己的独特性 D.项目都是一次性的并由项目经理独自完成 7、(B)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 A.过程 B.项目 C.项目群 D.组合 8、(B)是一系列伴随着项目的进行而进行,目的是确保项目能够达到期望结果的一系列管理行为。 A.人力资源管理 B.项目管理 C.软件项目管理 D.需求管理 9、下列活动中不是项目的是(C) A.野餐活动 B.集体婚礼 C.上课 D.开发操作系统 10、下列选项中不是项目的特征的是(C) A.项目具有明确的目标 B.项目具有限定的周期 C.项目可以重复进行 D.项目对资源成本具有约束性 第二章 二、判断题 1、项目初始阶段甲方为软件开发方,乙方为顾客。(×) 2、项目招标对于一个项目的开发是必需的,即便项目是内部项目。(×) 3、make or buy决策中的make指的只是自主开发。(√)

软件工程课后参考答案

第一章课后参考答案 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的主要原因 (1)与软件本身的特点有关 (2)与软件开发和维护过程中使用的方法不正确有关

2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征: (1)软件工程关注于大型软件的构造 (2)软件工程的中心课题是控制复杂性 (3)软件经常变化

软件工程课后习题答案

第一章 1.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。 答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。软件分化出的在电子商务方面的应用。 1.2举例说明软件对社会的影响(包括正面影响和负面影响)。 答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。 1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。 答:软件需要如此长的开发时间: a)设施不上线 b)开发工具并不如预期般运作 c)客户提出的新要求,需要重新设计和返工 d)产品依赖于政府的规定,被意外更改。 e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。 f)多个操作系统下运行的任务需求比预期需要更长的时间。 g)软件项目风险管理比预期需要更多的时间。 h)依赖的技术仍处于开发阶段,从而延长日程安排。 开发成本高: a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。 b)制定了错误的软件功能需要重新设计和实施。 c)开发错误的用户界面,而导致重新设计和实施。 d)开发了不需要的额外的软件功能而延长了开发日程安排。 在将软件交付顾客使用之前,我们无法找到所有错误: a)产品依赖于政府监管,意外而改变。 b)产品技术标准草案,会意外更改。 c)有时会在项目后期添加新的开发人员。 d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。 e)破坏高效调度产生的项目管理成果和无效的规划 f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。 软件开发和维护的过程仍旧难以度量: a)有时该项目的目的是不明确。 b)有大量的业务所涉及的风险。 c)如果产品内置没有装好。 d)我们需要不断检讨我们的工作。 e)进行维护检查的时间。 f)在整个软件开发过程中要彻底组织项目团队。 1.4在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。

相关主题
文本预览
相关文档 最新文档