软件工程答案.docx

上传人:b****7 文档编号:9277629 上传时间:2023-02-04 格式:DOCX 页数:18 大小:23.40KB
下载 相关 举报
软件工程答案.docx_第1页
第1页 / 共18页
软件工程答案.docx_第2页
第2页 / 共18页
软件工程答案.docx_第3页
第3页 / 共18页
软件工程答案.docx_第4页
第4页 / 共18页
软件工程答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

软件工程答案.docx

《软件工程答案.docx》由会员分享,可在线阅读,更多相关《软件工程答案.docx(18页珍藏版)》请在冰豆网上搜索。

软件工程答案.docx

软件工程答案

第3章软件项目管理(习题与参考答案)

[选择题]

1.软件项目管理的“4P”是()。

(C)

A.people,performance,payoff,product

B.people,product,performance,process

C.people,product,process,project

D.people,process,payoff,product

2.()项目管理在现代软件开发中是不太重要的,因为大多数项目能够及时完成并成功交付。

(B)

A.真

B.假

3.在软件开发的各种资源中,()是最重要的资源。

(C)

A.开发工具

B.方法

C.硬件环境

D.人员

4.软件项目规划的第一步是()。

(D)

A.确定项目预算

B.选择团队的组织模型

C.确定项目的约束

D.建立项目的目标和范围

5.下面的()方法最不适合你向团队成员解释他或她为什么表现不合格。

(B)

A.个人谈话

B.项目团队会议

C.正式报告

D.电子邮件

6.功能点估算技术需要以()为基础进行问题分解。

(A)

A.信息域

B.项目进度

C.软件功能

D.过程活动

 

7.软件开发团队的每一个成员都应该参与计划活动,以便()。

(C)

A.降低计划的粒度

B.深入地分析需求

C.所有成员同意该计划

D.开始设计

8.在攻克技术难题时,最佳的开发团队组织模型是()。

(A)

A.民主式结构

B.主程序员式结构

C.技术管理混合式结构

D.以上所有选项都不是

9.在选择开发团队组织结构时应考虑()因素。

(E)

A.沟通的复杂程度

B.最终程序的规模大小

C.发布日期的严格程度

D.项目预算的多少

E.选项A,B和C

10.在软件开发过程中避免受挫的最佳方法之一是()。

(A)

A.给予团队成员对于过程和技术决策的更多控制权

B.给予团队成员对于过程和技术决策的更少控制权

C.向团队成员隐瞒坏消息直到事情有所改善

D.根据生产效率奖励团队成员

11.下面的()软件特性不是引起项目协调困难的一个因素。

(B)

A.互操作性

B.性能

C.规模

D.不确定性

12.在进行项目范围活动时,问题分解的主要范围是()。

(E)

A.客户工作流程

B.需要发布的功能

C.用于发布功能的过程

D.软件过程模型

E.选项B和C

13.()随着项目计划的不断形成,产品分解和过程分解经常是同时发生的。

(A)

 

A.真

B.假

14.为了将项目失败的风险减少到最小,项目经理需要采取()。

(D)

A.将项目团队规模增加一倍

B.要求更大的预算

C.顺利地开始

D.跟踪过程

E.选项B和C

15.()估算不可靠的唯一原因是估算人员缺乏经验。

(B)

A.真

B.假

16.()由于软件项目估算不完全可靠,所以项目开始后可以忽略这些估算。

(B)

A.真

B.假

17.软件项目规划的目的是()。

(C)

A.使客户相信项目是可行的

B.使用历史项目数据

C.使项目管理者合理地估算成本和进度

D.在投标项目之前确定大概的利润边界

18.软件项目所需的人数应该()。

(D)

A.在估计开发需要的努力之后决定

B.由项目预算数量决定

C.从评价系统复杂性来决定

D.以上所有选项

19.()估计待开发软件产品的规模必须基于像代码行等直接度量单位。

(B)

A.真

B.假

20.代码行估算技术需要以()为基础进行问题分解。

(C)

A.信息域值

B.项目进度

C.软件功能

D.软件过程活动

21.功能点估算技术需要以()为基础进行问题分解。

(A)

 

A.信息域值

B.项目进度

C.软件功能

D.软件过程活动

22.经验估算模型是基于()。

(C)

A.专家基于过去项目经验的判断

B.期望值估计的细化

C.来自历史项目数据的回归模型

D.反复试验决定参数和系数

23.COCOMOII是现代经验估算模型的一个实例,它需要以()为单位的程序规模信息。

(B)

A.功能点

B.代码行

C.工作量

D.以上任何选项

24.()功能点不能用于估算面向对象的软件。

(B)

A.真

B.假

25.()软件项目延迟是不可避免的,而且无法解释其原因。

(B)

A.真

B.假

26.()将开发团队人数增加一倍可以保证项目完成时间减少一半。

(B)

A.真

B.假

27.任务集是()的集合。

(A)

A.工作任务、里程碑、工作产品

B.任务分配、成本估算、度量单位

C.里程碑、可交付物、度量单位

D.责任、里程碑、文档

28.()主动的风险管理有时被描述为救火。

(B)

A.真

B.假

29.软件风险总是包括()两个特性。

(C)

 

A.救火和危机管理

B.已知的和未知的风险

C.不确定和损失

D.安置人员和预算

30.风险的三种主要类型是()。

(B)

A.商业风险、人员风险、预算风险

B.项目风险、技术风险、商业风险

C.计划风险、技术风险、人员风险

D.管理风险、技术风险、设计风险

31.下面的()是有效的软件配置项。

(E)

A.软件工具

B.文档

C.可执行程序

D.测试数据

E.以上所有选项

32.下面的()配置对象通常不包括在项目数据库中。

(C)

A.设计规格说明书

B.可执行程序

C.组织结构描述

D.测试计划

33.基线(Baseline)是指在项目生命周期的不同时间点上,一个或一组配置项通过()而进入正式受控的一种状态。

(C)

A.存取控制

B.质量控制

C.正式评审

D.变更管理

34.()软件工作产品一旦成为基线就不能再更改了。

(B)

A.真

B.假

35.()如果开发小组使用自动化的项目数据库工具,那么就不需要变更控制。

(B)

A.真

B.假

36.下面的()不是软件配置管理的任务。

(C)

 

A.变更控制

B.配置状态报告

C.统计质量控制

D.版本控制

37.配置状态报告的主要目的是()。

(C)

A.允许项目经理修改项目进度和成本估算

B.评估软件开发人员和组织的绩效

C.确保变更信息传达到受影响的团体

D.选项A和C

E.选项A、B和C

[练习题]

1.简要说明软件项目管理的过程。

参考答案:

  软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。

  软件项目管理的主要过程如下:

(1)项目启动与建议:

在项目启动阶段,定义项目的商业需求,确定项目的目标和实现方法,大致估算项目的成本和进度。

(2)项目规划与进度:

在项目规划阶段,明确项目的各种活动、里程碑和可交付的成果,制定软件开发计划。

(3)项目组织与执行:

根据项目任务的要求选择合适的开发人员,组建项目团队和协调项目资源,按照计划执行和推进整个项目。

(4)项目监督与评价:

在项目执行过程中,密切关注项目的进展情况,综合评价整个项目的实际进展,及时发现和报告实际情况与计划的偏差,在必要的情况下采取纠正行动,同时控制和管理项目的变更。

(5)项目交付与总结:

完成正式的项目交付工作,客户对所交付的软件产品进行验收,项目团队培训用户并移交文档,最后分析和总结项目的经验教训。

2.某个软件项目需要30名开发人员,现有两种人员组织方案:

(1)将30人划为一个开发组统一管理;

(2)按每个小组6人的方式,将30人分为5个小组。

请分析比较上述两种方案的优缺点。

参考答案:

  由于软件规模的增大,需要多人组成开发小组共同参与一个项目的开发。

但是当多个人共同承

  担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,这就产生了所谓沟通复杂性的问题。

沟通需要花费时间和代价,也会引起软件错误的增加,降低开发效率。

(1)优点:

30人集中在同一个开发小组,人员任务的分配和调度相对容易;

缺点:

沟通复杂性高,从而导致人员之间配合混乱,开发效率低。

(2)优点:

30人划分成5个小组,降低了沟通复杂性,提高开发效率;

缺点:

小组之间的协调配合难度大。

3.在选择人员进行软件项目开发时,应该考虑哪些因素?

参考答案:

参考因素说明应用领域的经验为了成功地开发系统,开发人员必须了解相关的应用领域。

平台的经验在编写底层程序时该因素很重要。

编程语言的经验该因素对于短周期的项目是很重要的。

教育背景该因素可以显示候选人应该掌握的基础知识和学习能力,由于开发人员的经验可以在项目实践中获得,该因素并非是关键的。

沟通能力由于项目成员需要与其他人员、管理者和客户进行口头和书面交流,该因素是十分重要的。

适应性适应性可以通过候选人的各种经历进行判断,该因素反映出一个的学习能力。

工作态度项目成员应该有积极的工作态度,乐于学习新技术,该因素很重要但是难以评估。

个性候选人必须与团队成员关系融洽,尚没有软件工程方面的特定个性类型,该因素很重要但是难以评估。

第8章面向对象设计(习题与参考答案)

[选择题]

1.()面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。

(A)

A.真

B.假

2.()系统设计的主要任务是细化分析模型,最终形成系统的设计模型。

(B)

A.真

B.假

3.()关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。

(B)

A.真

B.假

4.()用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。

(A)

A.真

B.假

5.内聚表示一个模块()的程度,耦合表示一个模块()的程度。

  (B,D)

A.可以被更加细化

B.仅关注在一件事情上

C.能够适时地完成其功能

D.联接其他模块和外部世界

6.良好设计的特征是()。

(E)

A.模块之间呈现高耦合

B.实现分析模型中的所有需求

C.包括所有组件的测试用例

D.提供软件的完整描述

E.选项B和D

F.选项B、C和D

7.()是选择合适的解决方案策略,并将系统划分成若干子系统,从而建立整个系

 

统的体系结构;()细化原有的分析对象,确定一些新的对象、对每一个子系统接口和类进行准确详细的说明。

(A,B)

A.系统设计

B.对象设计

C.数据库设计

D.用户界面设计

8.下面的()界面设计原则不允许用户保持对计算机交互的控制。

(D)

A.允许交互中断

B.允许交互操作取消

C.对临时用户隐藏技术内部信息

D.只提供一种规定的方法完成任务

[练习题]

1.面向对象设计与面向对象分析的区别是什么?

设计包括哪些活动?

答案要点:

  面向对象分析是重点考虑系统“做什么”的问题,即运用面向对象方法对问题域进行分析和理解,建立系统的分析模型;面向对象设计重点考虑系统“怎样做”的问题,即在分析模型的基础上形成实现环境下的设计模型。

  面向对象设计主要涉及系统设计、对象设计(或详细设计)、数据库设计和用户界面设计等活动。

在类设计中,为什么建议使用set方法和get方法进行属性设置和读取?

答案要点:

  目的在于降低类之间的耦合度。

下图显示了某个学校课程管理系统的部分类图,其中一个学生(student)可以知道所有注册的教师(instructor),一个教师也可以知道所有注册课程的学生。

现在提出一个新的需求:

“一个教师也可以是某些课程的学生”,那么下面设计A~E中哪一个是最好的?

为什么?

(请务必说明理由)Studentname:

StringstudentID:

IntegerregisteredInstructors:

Instructor[]getRegisteredInstructor():

Instructor[]Instructorname:

StringinstructorID:

IntegerregisteredStudents:

Student[]getRegisteredStudents():

Student[]0..*0..*

设计A:

设计B:

设计C:

设计D:

Candicatename:

StringcandidateID:

Integerstudent:

Booleaninstructor:

BooleanregisteredCandidate:

Candidate[]getRegisteredCandidates():

Candidate[]0..*CandicatecandidateID:

Integername:

StringStudentregisteredInstructors:

Instructor[]getRegisteredInstructor():

Instructor[]InstructorregisteredStudents:

Student[]getRegisteredStudents():

Student[]0..*0..*InstructorStudentRoleregisteredCandidate:

Candidate[]getRegisteredCandidates()CandicatecandidateID:

Integername:

String0..*0..*0..*InstructorStudentCandicatecandidateID:

Integername:

StringRoleregisteredCandidate:

Candidate[]getRegisteredCandidates()0..*0..*

设计E:

参考答案:

  设计A:

这个设计使用了一个自返关联,但其中的registeredCandidate()方法有问题。

如果一个人既是学生又是老师,那么要想同时获得他作为学生对应的所有老师,以及他作为老师对应的所有学生,getRegisteredCandidates()方法得到的Candidate数组中并不能区分上述的两种结果。

  设计B:

这个设计使用了一个泛化关系,但它并没有解决题中给出的新的要求。

事实上,这个设计只是在题中已有设计之上的改进,实质还是一样的,并不能描述一个教师也可以是某些课程的学生的情况。

  设计C:

这个设计定义了一个Role类,学生和教师是Role类的两个子类。

如果一个Candidate对象是教师,可以调用Instructor类的getRegisteredCandidates()方法获得所对应的所有学生;如果这个对象是学生,可以调用Student类的getRegisteredCandidates()方法获得所对应的所有教师;如果这个对象既是教师又是学生,那么分别调用Instructor类的getRegisteredCandidates()方法和Student类的getRegisteredCandidates()方法即可。

  设计D:

整个设计有着与B中类似的问题,即一个Candidate对象要么是一个学生,要么是一个老师,不能同时都是,无法满足新的需求。

  设计E:

这个设计与D基本一致,只是把Candidate类与Role类之间的关联关系改成了聚集关联,同样无法满足新的需求。

  综上所述,设计C是最好的。

下图是MortgageApplication对象的状态图,假设有一个要求,即增加一个“Cancelled”,图中除“Closed”状态外的任何状态都可以转换到该状态。

请画出修改后的状态图(请不同的修改方法中哪种方法最好)

InstructorStudentCandicatecandidateID:

Integername:

StringRoleregisteredCandidate:

Candidate[]getRegisteredCandidates()0..*0..*

参考答案:

  方法1:

  方法2:

  方法2引入了组合状态和子状态,从而可以在组合状态Running中加入更多的子状态,以保证组合状态的可扩展性。

所以说,方法2相对于方法1更好一些。

5.请举例说明用户界面设计的基本原则。

参考答案:

(1)用户控制:

用户应当感觉系统的运行在自己的控制之下。

在图形界面或基于Web的界面中,用户指导程序的每一步执行;即使在程序进行某些处理或用户等待输出结果时,用户同样保持对控制的敏感度。

举例:

当程序进行某些需要占用较长时间的处理时,需要为用户提供及时的反馈信息,诸如一个沙漏、一个等待的指示器或其他类似的东西。

(2)界面一致性:

一致性要求用户界面遵循标准和常规的方式,让用户处在一个熟悉的和可预见的环境之中,这主要体现在命名、编码、缩写、布局以及菜单、按钮和键盘功能在内的控制使用等。

 

举例:

一个运行在Windows平台上的三维几何造型系统应当采用Windows图形窗口的“外观和感觉”,与Office类型软件保持一致的界面风格和操作方式。

(3)界面容错性:

一个好的界面应该以一种宽容的态度允许用户进行实验和出错,使用户在出现错误时能够方便地从错误中恢复。

举例:

MicrosoftWord系统允许撤消用户对文档的许多最近操作,从而处理用户的误操作问题。

(4)界面美观性:

界面美观性是视觉上的吸引力,主要体现在具有平衡和对称性、合适的色彩、各元素具有合理的对齐方式和间隔、相关元素适当分组、使用户可以方便地找到要操作的元素等。

举例:

清华大学软件学院综合信息服务系统的Web界面在平衡和对称、色彩、元素分组、用户方便地查找信息等方面进行了良好的设计。

(5)界面可适应性:

界面可适应性是指用户界面应该根据用户的个性要求及其对界面的熟知程度而改变,即满足定制化和个性化的要求。

所谓定制化是在程序中声明用户的熟知程度,用户界面可以根据熟知程度改变外观和行为;所谓个性化是使用户按照自己的习惯和爱好设置用户界面元素。

举例:

系统允许用户选择语言类型(中文、英文、意大利文等),并系统根据用户定制的语言类型显示不同语种的用户界面。

第9章软件实现(习题与参考答案)

[选择题]

1.()在程序设计中使用括号以改善表达式的清晰性。

(A)

A.真

B.假

2.()在程序设计中应尽可能对程序代码进行优化。

(B)

A.真

B.假

3.()不要修补不好的程序,要重新写。

(A)

A.真

B.假

4.()程序中的注释是可有可无的。

(B)

A.真

B.假

5.()对递归定义的数据结构不要使用递归过程。

(B)

A.真

B.假

6.为了使程序能在不同的计算机上运行,程序应当具有较好的()。

(A)

A.可移植性

B.可重用性

C.可维护性

D.可适用性

7.对于开发面向数据库应用的软件,应当选择的程序设计语言是()。

(C)

A.C

B.PASCAL

C.SQL

D.JAVA

8.下面对提高程序编码效率没有影响的是()。

(D)

A.选择良好的设计方法

B.选择良好的算法

C.选择良好的数据结构

 

D.变量名的使用

9.为了保证软件的质量,使其具有较好的可维护性,关键在于()。

(B)

A.选择合适的程序设计语言

B.选择好的程序设计风格

C.具有好的数据结构

D.选择好的运行环境

10.下面的()不是良好编码的原则。

(C)

A.在开始编码之前建立单元测试

B.建立一种有助于理解的直观布局

C.保持变量名简短以便代码紧凑

D.确保注释与代码完全一致

[练习题]

1.列出三种常见的专用程序设计语言,并说明它们的应用领域。

参考答案:

(1)JAVA语言:

适用于跨平台的企业应用软件

(2)LISP语言:

适用于人工智能软件

(3)SQL语言:

适用于数据库应用软件

2.选择一个你认为最能满足软件工程要求的程序设计语言,并说明理由。

参考答案:

  略。

3.选择一种面向对象程序设计语言,总结其主要特性和特殊机制。

参考答案:

  略。

4.你认为是否应该强制采用软件编码规范?

请举出2-4个赞成的理由和1-3个反对的理由。

参考答案:

  赞成理由:

(1)增强代码的可读性

(2)增强代码的可移植性

(3)减少不必要的程序错误

  反对理由:

(1)缺少个性

(2)降低程序效率

 

5.请分析比较下面两个for循环的优缺点。

  第一个for循环:

for(i=0;i

{

  if(condition)

  DoSomething();

  else

  DoOtherthing();

}

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

当前位置:首页 > 小学教育 > 英语

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

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