文档库 最新最全的文档下载
当前位置:文档库 › 软件工程—方法与实践(许家珆)

软件工程—方法与实践(许家珆)

软件工程—方法与实践(许家珆)
软件工程—方法与实践(许家珆)

《软件工程——理论与实践》(第2 版)习题答案

习题答案

习题一答案

一、选择题

1. 软件的主要特性是(A B C)。

A) 无形B) 高成本

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

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

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

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

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

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

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

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

5. 下列属于面向对象开发方法的是(A B C D)。

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

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

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

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

7. 软件开发方法的主要工作模型有(A B C)

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

8. 软件工程的目标有(A B C)。

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

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

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

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

B) 克服软件危机

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

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

二、判断题

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

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

3. 结构化方法的工作模型是使用螺旋模型进行开发。(×)

4. 结构化方法和OO 方法都是一种面向过程的软件开发方法。(×)

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

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

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

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

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

10. RCP 法与RSP 法的主要区别是前者采用循环渐进的开发方式,原型将成为最终

的产品,而

后者原型将被废弃。(√)

《软件工程——理论与实践》(第2 版)习题答案

三、简答题

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

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

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

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

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

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

2. 软件发展有几个阶段?各有何特征?

答:①程序设计阶段。

硬件特征:价格贵、存储容量小、运行可靠性差。

软件特征:只有程序、程序设计概念,不重视程序设计方法。

②程序系统阶段。

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

软件特征:程序员数量猛增,开发人员素质低。

③软件工程阶段。

硬件特征:向超高速、大容量、微型化及网络化方向发展。

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

软件危机。

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

答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需

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

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

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

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

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

4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点?

答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模

型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又

称为软件开发模型。

主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。

⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若

干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很

大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分

割为几个阶段,无法解决软件需求不明确或者变动的问题。

⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐

增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案

有一定风险的软件项目。

⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几

个螺旋周期,每个螺旋周期可分为4 个工作步骤:制定计划、风险分析、实施工程、客户评估。

⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发

活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有 4 个阶段,即分

析、系统设计、软件设计和实现。各阶段相互重叠,以分析为基础,资源消耗成塔形,从高层返回

低层无资源消耗。强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。

⑸基于知识的模型也称为智能模型。通过领域的专家系统,可使需求说明更加完整、准确和无

二义性。通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。

《软件工程——理论与实践》(第2 版)习题答案

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

答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。

6. 软件生存周期各阶段的主要任务是什么?

答:软件生存周期按瀑布模型分为6 个阶段:

●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);

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

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

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

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

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

7. 原型化方法的核心是什么?它具有哪些特点?

答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。

强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。它

是一个循

环的模型。速成原型法按以下步骤循环执行:

①快速分析。②构造原型。③运行和评价原型。④修改与改进。

习题二答案

一、选择题

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

A) 系统开发的具体方案

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

C) 解决系统是“做什么”的问题

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

2. 需求分析的主要方法有(C D)。

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

C) 结构化分析(SA)方法D) OOA 法

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

A) 系统模型、E-R 模型、应用模型

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

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

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

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

A) 系统流程图和模块图

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

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

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

5. 画分层DFD 图的基本原则有(A C D)。

A) 数据守恒原则

B) 分解的可靠性原则

C) 子、父图平衡的原则

D) 数据流封闭的原则

6. 在E-R 模型中,包含的基本成分是(C)。

A) 数据、对象、实体

B) 控制、联系、对象

《软件工程——理论与实践》(第2 版)习题答案

C) 实体、联系、属性

D) 实体、属性、联系

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

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

B) 对系统的数据结构进行描述

C) 对目标系统的层次结构进行描述

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

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

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

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

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

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

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

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

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

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

成一致的需求

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

二、判断题

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

2. SA 法是面向数据流,建立在数据封闭原则上的需求分析方法。(√)

3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化。(√)

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

5. 加工小说明是对系统流程图中的加工进行说明。(×)

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

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

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

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

(√)

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

现实性和有效性。(√)

三、简答题

1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?

答:需求工程过程包括如下主要活动:

⑴获取需求。深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,

积极与

用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。需求

获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。

⑵需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,

需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模

拟、功能需求模拟和非功能需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的表现

形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。

⑶需求规格说明。对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。

⑷确认需求。以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证

需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格

说明与用户达成一致。其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方

《软件工程——理论与实践》(第2 版)习题答案

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

⑸需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理主要包括跟踪和管理需求

变化,支持系统的需求演进。由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落

后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要问题。对于传统的变化管理

过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品

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

推理。进化需求是十分必要的。

2.简述抽取需求的主要方法,并比较它们的特点。

⑴面谈法。这是一种重要而直接简单,随时可使用的发现和获取需求的方法。面谈的对象主要

有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习

和转换过程。使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人

际交流技巧,才能取得好的效果。

⑵问卷法调查法。通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获

取方法。这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。

⑶会议讨论法。所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄

清项目需求的一种需求获取方法。这种方法适合于开发方不清楚项目需求的情况。

⑷原型法。对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。而原

型化方法(Prototyping Method)是获取这一类项目需求的有效方法。

⑸面向用例的方法。分析建立“用例”的过程,也就是提取需求的过程。

在实际应用中,常常将以上方法进行综合应用。

3. 客户的需要总是不断地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理

需求的进化就成为软件进化的首要问题。请说明需求变更的管理过程。

答:需求变更的管理是需求管理的核心内容。其主要任务是对系统需求变更进行跟踪和控制。

对传统的变化管理过程来说,其基本内容包括软件配置、软件基线和变更审查等。目前推出的新的

管理方法有软件家族法,即软件产品线方法及多视点方法等。下图描述了需求变更的管理过程。

识别出修正后

的问题问题分析和变更分析和的需求

变更实现

变更描述成本计算

4. M 公司的软件产品以实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取

得了一些成功。若你作为一名管理人员刚加入M 公司,你认为快速原型法对公司的软件开发更加优

越,请向公司副总裁写一份报告阐明你的理由。切记:副总裁不喜欢报告长度超过一页。

参考答案提示:

应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特

别适合于开发探索型、实验型的软件。

5. 如何画分层数据流图?有哪些基本原则?

答:总的原则是:至顶而下,逐层分解(画分层数据流图)。逐层分解的画法可以控制每一层的

复杂度。

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

中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。

底层:由不再进行分解的基本加工组成。

《软件工程——理论与实践》(第2 版)习题答案

画分层数据流图的基本原则有:①数据守恒与数据封闭原则。②加工分解的原则。③子图与

父图“平衡”的原则。④合理使用文件的原则。

6. 加工小说明有哪些描述方法?它们各有何优缺点?为什么不采用自然语言进行描述?

答:主要的描述方法有三种;结构化语言、判定表和判定树。

● 结构化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语

言的一个受限制的子集。是在自然语言的基础上加上一些约束,一般分为两层结构:外层语法较具

体,为控制结构(顺序、选择、循环);内层较灵活,表达“做什么”。

常用结构化英语或结构化汉语表示,精确、简明扼要、文体灵活。结构化语言特点:简单,易

学,少二义性,但不好处理组合条件。

● 判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。判定表是一种二维

的表格,常用于较复杂的组合条件。通常由四部分组成,如教材表2-2 所示。对用结构化语言不易

处理的较复杂的组合条件问题,可使用判定表。

● 判定树:本质上与判定表相同,图形表示更易于理解。描述一般组合条件较清晰,但不易输

入计算机。

7. 考察下图中子图、父图的平衡关系。

图1

图2

参考答案:

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

⑵图2 中,如果有如下数据条目:

订货单=客户+账号+数量

则子、父图平衡。

8. 画出银行取款过程的用例图。问题描述为:储户用存折取款,首先填写取款单,根据“ 银

行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款

数据库”,

修改相应数据,并更新“银行卡”,同时发出付款通知,出纳向储户付款。

参考答案:

分析所给出的需求,确定角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验

证取款单与存折、银行卡管理、数据库管理、付款。

《软件工程——理论与实践》(第2 版)习题答案

付款

填写取款单<>

储户出纳

<>

验证取款单与存折

<>

数据库管理

< 存款数据库

存折

银行卡管理

银行取款系统的高层用例图

习题三答案

一、选择题

1. 模块的基本特征是(A C)。

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

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

2. SD 方法的设计总则是(C D)。

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

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

3. 软件设计的主要任务是(A B D)。

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

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

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

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

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

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

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

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

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

C) 模块设计、详细设计D) 总体设计、详细设计

6. 模块独立性准则定性指标(B D)来衡量。

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

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

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

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

《软件工程——理论与实践》(第2 版)习题答案

二、判断题

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

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

3. 信息隐蔽原则有利于提高模块的内聚性。(√)

4. 中心变换型的DFD 图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务

分析技术得到初始的模块结构图。(×)

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

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

三、简答题

1. 请解释为什么需要体系结构设计。

答:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的

描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定

了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一

些设计决策的基本原理。良好的体系结构是普遍适用的,它可以高效地处理各种各样的个体需求。

2. 集中式模型和分布式模型相比各有什么优缺点?

答:以集中式的仓库模型为例。其主要优点:

(1) 数据由某个子系统产生,并且被存储到仓库中,以便为另外一些子系统共享;

(2) 由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过复杂的

机制来传递共享数据;

(3) 一个子系统不必关心其他的子系统是怎么使用它产生的数据;

(4) 所有的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相同的规

范,则将它集成于系统中是容易的。

但这种系统也有明显的缺陷:

(1) 虽然共享数据得到了有效的管理,但随之而来的问题是各子系统必须有一致的数据视图以

便能共享数据,换句话说,就是各子系统之间为了能共享数据必须走一条折中的路线,这

不可避免地会影响整个系统的性能。

(2) 一个子系统发生了改变,它产生的数据也可能发生结构上的改变。问题随之而来,其他的

子系统如何能正确解析这些数据呢?所以为了达到共享的目的,数据翻译系统会被引入到

整个系统当中。但这种翻译的代价是很高的,并且有时是不可能完成的。

(3) 中央数据仓库和各子系统的私有数据库必须有相同的关于备份、安全、访问控制和恢复的

策略,这可能会影响子系统的效率。

(4) 集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的是将数

据或子系统分散到不同的机器上。

分布式结构有这样的一些优势:

(1) 资源共享:系统中每个服务节点上的资源都可以被系统中的其他节点访问;

(2) 开放性高:系统可以方便地增删不同软硬结构的节点;

(3) 可伸缩性好:系统可以方便地增删新的服务资源以满足需要;

(4) 容错能力强:分布式系统中的信息冗余可以容忍一定程度的软硬故障;

(5) 透明性高:系统中的节点一般只需知道服务的位置而不必清楚系统的结构。

但分布式结构也存在着一些不足:

(1) 复杂性:分布式系统比集中式系统要复杂得多。集中式系统的性能主要依赖于主机的处理

《软件工程——理论与实践》(第2 版)习题答案

器能力,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加复杂。

(2) 安全性:网络环境随时面临着各种威胁:病毒、恶意代码、非法访问等。如何保证安全性

是一个让人头疼的问题。

(3) 可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理异构的系统比管理

主机系统要困难得多。

(5) 不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影

响整个系统的响应时间。

3. 请举出一种集中式模型的实例,并图示它的结构。

答:请参考3.2.1 “仓库模型”

4. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?

答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较繁重。一

般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,

而客户端的工作就变得非常单纯。浏览器/Web 服务器结构就属于瘦客户结构,而且常被称为

B/S (Browser/Server)结构。

5.请举出一种分布式模型的实例,并图示它的结构。

答:请参考3.2.4 “两层C/S 模型”

6.请为一个公司的电子商务网站建设提出体系结构设计方案。

答:略。

7.分布式对象模型与客户-服务器模型有什么异同?

答:在C/S 模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请

求,而服务器不能向客户提出服务请求,同时服务器之间可以互相提供服务。另外,客户一般

要知道服务器在网络上的具体位置(服务器的域名或者IP 地址),相反,服务器则不需要。这

种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象结构中,服务的提供者

是被称为“对象”(Object)的系统组件(System Component)。每个对象的地位在逻辑上是平等的,

它们可以互相为对方提供所需的服务。在这种情况下,提供服务的对象就是服务器,而提出服

务请求的对象就是客户。为了能够提供服务,每个对象都有一个服务接口。

8.请查阅相关的资料,写一篇对比CORBA 和DCOM 的报告。

答:略。

9.模块分解的最终目的是什么?

答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、

易理解,易于测试和调试,因而也有助于提高软件的可靠性。

10. 模块分解应该遵循什么样的标准?

答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑:

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

(2) 消除重复功能;

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

(4) 模块的大小适当;

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

也可以用软件独立性的两个定性指标来度量模块分解的标准:

一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:①方式(直

接或间接)②类型(数据型、控制型、混合型)③数量(数量越大,块间联系越紧密。

二是内聚性。用于描述模块内部联系的紧密程度。它是从功能的角度来度量模块内的联系。

《软件工程——理论与实践》(第2 版)习题答案显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。

11~17 题答案略。

习题四答案

一、选择题

1. 面向对象程序设计的基本机制是(ABC)。

A) 继承B) 消息C) 方法D) 结构

2. 下列属于面向对象的要素有(BCD)。

A) 分类性B) 抽象C) 共享D) 封装

3. 下列选项中属于面向对象开发方法的有(ACD)。

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

4. 下列属于Coad/Yourdon 方法中面向对象的分析模型的层次有(AB)。

A) 主题层B) 对象层C) 应用层D) 接口层

5. 一个类属性依其特征划分,其类型有(ABCD)。

A) 描述型B) 定义型C) 派生型D) 参考型

6. 在进行面向对象分析时,所采用的模型有(ABC)。

A) 对象模型B) 动态模型C) 静态模型D) 功能模型

7. 状态是对象属性的值的一种抽象,它的性质有(AB)。

A) 时间性B) 持续性C) 有序性D) 有穷性

8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有(ABCD)。

A) 查询B) 动作C) 活动D) 访问

9. 建立继承关系时所采用的方式有(AC)。

A) 自顶向下B) 从内到外C) 自底向上D) 从复杂到简单

10. 对象是人们要研究的任何事物,主要的对象类型有(ABCD)。

A) 有形实体B) 作用C) 事件D) 性能说明

二、判断题

1. 面向对象的的方法是以类作为最基本的元素,它是分析问题和解决问题的核心。( ×)

2. 类是指具有相同或相似性质对象的抽象,对象是抽象的类,类的具体化就是对象。( ×)

3. 继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系( ×)。

4. 多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和

继承性相结合使软件具有更广泛的重用性和可扩充性。(√)

5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。(√)

6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性。(√)

7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体

的对象关系角度来描述,表现了对象的相互关系。(√)

8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映。通过对象

层次结构的组织确定解空间中应存在的对象和对象层次结构。(√)

9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系。(√)

10. 复用也叫重用或再用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方

式:实例重用、继承重用、多态重用。(√)

11. 主题是一种关于模型的抽象机制,它是面向对象模型的概貌,也是关于某个模型要同时考虑和

理解的内容,主题起一种控制作用。(√)

《软件工程——理论与实践》(第2 版)习题答案

12. 面向对象的分析由对象、结构、继承性和基于消息的通信构成。( ×)

13. 支持继承性是面向对象程序设计语言和传统程序设计语言在语言机制方面的根本区别。(√)

14. 面向对象的分析过程主要包括三项内容:理解、表达和验证。(√)

三、简答题

1.消息传递机制与传统程序设计模式中的过程调用相比,有何本质区别?

答:(1) 消息传递必须给出信道的信息,通常要指出明确的接收方。

(2) 由于接收方是一通信实体,具有保持状态的能力,所以同一发送方在不同时刻向同一接收

方发送同样的信息,可因接收方的当前状态不同而得到不同的结果。

(3) 消息传递可以是异步的,发送方可以不必等待接收方返回信息就可以继续执行后

面的操

作,因而支持程序的并发和分布执行,而过程调用只能是同步的,本质上是串行的。2.比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。

答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD 和SP 三部分构成。该方法:

①无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)

进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得

解空间。

②无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不

仅增加了软件开发的难度,也难于支持软件复用。

③开发方法难以实现从分析到设计的直接过渡,从SA 到SD 要经过一系列复杂的变换。

而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认

识世界的思维方式来渐进地分析、解决问题。

①使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降

低软件开发的复杂度,提高软件质量。

②软件开发各个阶段有机集成,有利于系统的稳定性。

③具有良好的重用性。面向对象的技术在利用可重用的软件成分构造新软件系统上具有很大的

灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立

性。继承性本身就是一种重用机制。

综上,显然面向对象方法比结构化方法更加优越。

3.Coad/Yourdon 方法主要有面向对象分析(OOA)和面向对象设计(OOD)。OOA 概念模型由5

个层次组成,请简述这 5 个层次。

答:OOA 概念模型的5 个层次分别是:

(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整个应用的

基础,然后,据此分析系统的责任。

(2) 识别结构。该阶段分为两个步骤。第一,识别“一般-特殊”结构,该结构捕获了识别出的类

的层次结构;第二,识别“整体-部分”结构,该结构用来表示一个对象如何成为另一个对象的一部

分,以及多个对象如何组装成更大的对象。

(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。

(4) 定义服务。其中包括定义对象之间的消息连接。

(5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以

便于理解。

4.面向对象的分析包括哪些主要活动?所建立的分析模型包括哪些类型的模型?

答:面向对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整理用户需求并建

立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系

统的语言来描述。面向对象的分析具体包括以下活动:

①获取用户基本需求。通常使用用例(User Case )来收集和描述。

②标识类和对象。包括标识类及对象的属性和操作。

《软件工程——理论与实践》(第2 版)习题答案

③定义类的结构和层次。通常有一般与特殊( Generalization—Specialization)结构,整体与部分

(Whole—Part)结构。

④建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态结构。

⑤建立对象—行为模型,描述系统的动态行为。

所建立的分析模型包括:

①基本模型。是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA 基本模

型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。

②主题图(subject)。又称为子系统(subsystem),是将一些联系密切的类组织在一起的类的集合。

按照粒度控制原则,将系统组成几个主题,便于理解。

③交互图(interaction diagram) 是用例与系统成分之间的对照图。

主题图和交互图又称为补充模型。

5.面向对象设计的主要任务是什么?

答:面向对象的设计(Object-Oriented Design,OOD)是面向对象开发方法(OOSD)的核心

阶段。是在OOA 的基础上解决系统“如何做”的问题。主要任务包括:

⑴系统设计

系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应

该具有良好的接口,子系统中的类相互协作;标识问题本身的并发性,将各子系统分配给处理器,

建立子系统之间的通信。

⑵对象设计

通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,

并确定

外部接口和主要的数据结构。

⑶设计优化

对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。

6.为什么面向对象的方法能够有效地解决软件需求中存在的问题?

需求过程中存在两大难题,一是需求的确定是困难的,二是需求是不断变动的。尤其是对于一

些大型软件系统,开发周期长,系统规模大,复杂性高。

面向对象的方法中,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,

具有较强的独立性。而且面向对象的方法是以对象为中心构造软件系统,而不是基于对系统功能进

行分解来构造系统,当系统功能需求改变时不会引起系统结构的变化,使软件系统具有良好的稳定

性和可适应性。

软件生存期各阶段所使用的方法、技术具有高度的连续性,对软件开发过程所有阶段进行综合

考虑,能有效地降低软件开发的复杂度,提高软件质量,也便于需求的确定。

7. OMT 方法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?

答:OMT 方法从不同而又相关的角度建立三类模型:对象模型、动态模型和函数模型,并为每

一类模型提供了图形表示。

软件模型一般包括数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软

件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各个层次更好地进行描述。模型

具有的直观性及丰富的信息描述,便于开发人员与用户的交流。建立的模型为以后的系统维护和升

级提供了文档。鉴于上述原因,在软件开发过程中建模,能够提高软件开发的效率和质量。

8.为什么说面向对象的方法为软件复用提供了良好的环境?

答:软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与

效率,降低开发成本的目的。复用的软件成分也称为可复用构件(Reusable Component)。

《软件工程——理论与实践》(第2 版)习题答案

对可复用组件一般有以下的要求:具有功能上的独立性与完整性;具有较高的通用性;具有较高的

灵活性;具有严格的质量保证;具有较高的标准化程度。面向对象的方法对复用的支持主要反映在:

⑴面向对象方法可以保护在整个软件生存周期概念、原则、术语及表示法达到高度一致。这使

面向对象方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一、高效的支持,

达到良好的全局效果。

⑵OOA 基本模型体现了更高的抽象,更容易成为一个可复用的系统构架。

⑶所有的对象都用类作为其抽象描述。类作为一种可复用构件,在运用于不同系统时,不会出

现因该类对象实例不同而使系统模型有所不同的情况。

所以面向对象方法的主要概念及原则与软件复用的要求十分吻合。OO 方法中的对象和类是系

统的基本构成单位,它符合可复用构件所应具备的那些特性,如完整性、独立性、可标识性、一般

性、抽象、封装等。尤其是面向对象方法的对象封装性,为软件复用技术提供了良好的条件。而继

承机制本质上就是一种复用机制,因此面向对象方法为软件复用提供了一个良好的环境。

习题五答案

一、选择题

1. 下列不是模型元素的是(D )。

A) 关联B) 聚合C) 依赖D) 笔记

2. UML 具有扩展性,常见的扩展机制有(BCD )。

A) 修饰B) 版类C) 加标签值D) 约束

3. UML 语言支持的建模方式有(ABD )。

A) 静态建模B) 动态建模C) 模块化建模D) 功能建模

4. 下列各种图可用于动态建模的有(ACD )。

A) 状态图B) 类图C) 序列图D) 活动图

5. 下列属于状态的组成部分的有(AB )。

A) 名称B) 活动C) 条件D) 事件

6. UML 中包括的事件有(ABCD )。

A) 条件为真B) 收到另一对象的信号

C) 收到操作调用D) 时间表达式

7. 属性的可见性有(ABD )。

A) 公有的B) 私有的C) 私有保护的D) 保护的

8. 用例之间的关系有(BCD )。

A) 友元B) 扩展C) 使用D) 组合

9. 应用于通用化约束的方式有(ABCD )。

A) 完整B) 不相交C) 不完整D) 覆盖

10. 消息的类型有(ABC )

A) 同步B) 异步C) 简单D) 复杂

二、判断题

1. UML 建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的。(√)

2. UML 是一种建模语言,是一种标准的表示,是一种方法。( ×)

《软件工程——理论与实践》(第2 版)习题答案

3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动。( ×)

4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,

可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行。( ×)

5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的。(√)

6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。( ×)

7. 用例模型的基本组成部件是用例、角色和用例之间的联系。(√)

8. 用例之间有扩展、使用、组合等几种关系。(√)

9. 顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。(√)

10. 活动图显示动作及其结果,着重描述操作实现中所完成的工作以及用例实例或类中的活动。

( ×)

三、简答题

1. 以图1 (一个在学校首次报名的UML 活动图)为例,说明如何绘制活动图。

图1 学校首次报名的UML 活动图

答:要创建一个UML 活动图,需要反复执行下列步骤。

(1) 定义活动图的范围。首先应该确定建模的范围,是对整个系统建模,还是一个子系统。一旦

定义了作图的范围,应该在其顶部,用一个注释指明该图的标题和惟一的标识符,还可标注该图的

时间及作者姓名。本题的建模范围是一个学校管理系统中的“报名”部分。

(2) 添加活动。活动是活动图的核心,活动是完成系统任务所必须执行的处理步骤。可从用例

模型出发,对每个角色(actor)所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主

要流程引入一个活动。在“报名”的活动图中确定了“Fill out enrollment ”(填写报名表)、“Enroll in

university”(登记入学)、“Obtain help to fill out forms”(帮助填写报名表)、“Attend university overview

presentation”(参加介绍学校会议)等6 个活动。

(3) 添加起点和结束点。每个活动图只能有一个起始点和多个结束点,结束点可以是所有活动

的结束,也可以是对执行过程的终止。

(4) 添加活动间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转

移的条件、引起活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不正确时,

则转移到活动“帮助填写报名表”;当填写正确时,则转移到活动“登记入学” 。

(5) 添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图1 中,

在“Enroll in university”活动之后,还必须按照入学条件进行判断,满足条件的继续执行入学报到的活

动,而不满足入学条件的则结束。

(6) 找出并行活动。若两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,

则它们是可以并行运行的。在图 1 中,用同步线描述系统任务中的并发活动,活动“Attend university

《软件工程——理论与实践》(第2 版)习题答案

overview presentation”(参加介绍学校会议)和“Enroll in seminars” (注册研讨班)及“Make initial tuition

payment”(交付初始的学费)可并行执行,使用同步线表示它们都要在结束整个流程前完成。

2. 简述扩展、包含和细化三种UML 依赖关系的异同。

答:扩展、包含和细化都是描述了元素之间的依赖关系,但具体含义不同。

扩展(extend)关系是对基本用例在对某些“扩展点”的功能的增加。通过向被扩展的用例添加动

作来扩展用例。

包含(include)关系表示一个元素为了实现或完成其全部的功能,需要用到已存在的另一个模

型元素,本质上是一种使用关系。

细化关系是不同语义层(如分析和设计)之间模型元素的依赖关系,表示一个元素对另一个因

此细化关系可描述的语义范围较广,包括模型的逐步细化、优化、变换、模板、模型合成、框架组

成等。

3. 软件开发为什么要使用UML 建模?它有何特点?

答:软件开发的过程犹如雕琢一件工艺品,由无形到有形,由粗到细。鉴于软件系统的复杂性

和规模的不断增大,项目失败的可能性也相应增加。需要建立不同的模型对系统的各个层次进行描

软件工程与实践

软件工程与实践 ————— 任务二:Microsoft Visio2013应用 /软件可行性分析报告 姓名: 学号: 专业班级: 指导老师: 日期:

Microsoft Visio2013应用 一、实验目的 本实验主要通过实际操作,掌握相关的常用绘图功能。 (1)熟悉Visio的工作环境及组成 (2)掌握用Visio软件绘制图表的基本操作 (3)能熟练运用Visio软件绘制各种较复杂的专业图表 (4)掌握各种图表文档创建方法 二、实验要求 要求能够熟练运用Visio 2013软件所提供的菜单、工具、模型等制作图形或图表;能用Visio软件所提供专业图形模板,来自行绘制出专业化、高质量的图形或图表。

三、实验内容及步骤 应用Microsoft Visio 2013设计一个基本流程图模型。为了便于快速掌握利用Microsoft Visio 2013 绘制流程图的有关用法,先介绍主界面及相关功能,逐一进行常用菜单栏和工具栏等各项功能和操作方法。 四、实验总结 通过对Microsoft Visio 2013的使用,我们掌握了基本的制图技巧和功能,由此为将来的软件设计流程图打好基础。

软件可行性分析报告 一、实验目的 (1)熟悉业务应用系统的分析方法,加深对软件工程概念的理解。 (2)掌握“软件可行性分析报告”的内容、书写格式和注意事项,明确可行性分析的任务和具体过程。 (3)掌握软件项目可行性分析中成本-效益分析的常用方法。 二、实验任务及要求 (1)针对“学籍管理系统”(或分组自选专题)具体实际业务应用的调查研究,进行具体的可行性分析。 (2)掌握可行性分析报告编写的方法和步骤,明确可行性分析报告的内容和具体格式,从技术、经济、运行等方面进行可行性论证,撰写出“可行性分析报告”。 三、实验内容及步骤 结合“学籍管理系统”(或分组自选专题)的实际业务应用,进行调研分析,并编写出“软件可行性分析研究报告(FAR)”。 由此针对我们小组自选的专题——图书馆管理系统来制定相应的调研分析,内容如下所示:

软件测试的定义及常用软件测试方法介绍

软件测试的定义及常用软件测试方法介绍 一、软件测试的定义 1.定义:使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满 足规定的需求或弄清预期结果与实际结果之间的差别。 2.内容:软件测试主要工作内容是验证(verification)和确认(validation ),下面分别给 出其概念: 验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件以正确的方式来做了这个事件(Do it right) 1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程 2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程 3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否 和规定的需求相一致进行判断和提出报告。 确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。(Do the right thing) 1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性 2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。 软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。 二、软件测试常用方法 1. 从是否关心软件内部结构和具体实现的角度划分: a. 黑盒测试 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 黑盒测试是以用户的角度,从输入数据和输出数据的对应关系出发进行测试的,很明显,如果本身设计有问题或者说明规格有错误,用黑盒测试是发现不了的。

软件工程实训心得体会3篇

软件工程实训心得体会3篇 软件工程实训心得体会一:软件工程实训心得体会 这次软件工程实训是从2010.12.26号开始的,截至2010.12.31号.实训内容是用java相关知识(主要是jsp)做一个物流配送系统.下面谈谈对这次实训的看法. 因为自己平时对java知识储备不足,特别是jsp这一块基本不了解怎么回事,所以一拿到这个项目,我心里都是没有底的,再加上我被分到的那个组,我知道就意味着是我一个人在战斗了.呵呵,26号,实训开始了,我们的老师是来自中软国际公司的程序员,一个是周褀,一个是朱映,都是一身朴素的着装,让我感觉做软件的也没什么两样.老师介绍了自己之后,就直接切入正题了,分析了下我们各个组的系统,即将用到的知识,然后就总体把觉得需要补充的知识(jsp和数据库连接等这几块)给我们实际操作了下,因为当时看到用jsp,还讲的那么认真,当时我就后悔了,平时要是多听点,现在老师这么认真的给我们讲,这是一个多么难得的机会啊.后悔也没用啊,开始还勉强能理解一点,后来就直接晕了.然后再给大家介绍了一些即将用到的工具,比如rationalrose,svn,myeclipse等等.接下来的几天就不再细讲了.下面谈谈通过这次实训的心得体会吧. 通过这次实训,让我了解到工程开发的过程,可行性分析——> 需求分析——> 概要设计——> 详细设计——> 代码编写——> 测试——> 验收.从技术方面上,我开始jsp基础基本上就是零的,在老师和syz2(另外一个物流小组,我一个人基本上是跟她们做的,或者说是

看着她们做的)的帮助下,对jsp有了一个大概的认识.其实实训开 始前,我还以为做个系统没什么大不了,可是当真正拿到一个项目,我却真的无从下手了,而且就是在知道需求分析和详细设计,在代码编 写时,一样寸步难行.通过这个实训,也让我了解到,团队协作是多么 的重要.一个人的精力是多么的有限.进一步理解到,企业为什么如此重视团队协作.同时借用老师的话就是团队协作固然重要,但是是建 立在个人素质的基础上,假设你个人素质不行,将会影响到整个团队,就别提对团队作更多贡献了.**老师说这几句话的时候,朝向了我,估计是有特殊意义的吧,所以,我将谨记老师的教导. 还有一个收获是从一个同学(小胖)那里得到的,他的那组成员跟我的这组大体一样,我倒是觉得没什么了,不过他倒是很重视这个 问题吧.然后他说出来,我也觉得这个问题确实其实是个大的问题.就是不管你会不会这门技术,会不会做这个东西,态度要正确才好,就算你不会做,你也应该认真的对待,将来出身到社会,就不是说像你现在,不会做就不做,跑去玩游戏了.小胖说出了这段话,也在我身上有了一个印证,虽然我jsp技术知识为0,但我也还是在认真的跟着他们一 起做,不会做,就多问,毕竟现在我们是学生,可以毫不顾忌的询问各 种问题,老师也会尽力为你回答.将来出身社会就不一样了.虽然,我 就算个打酱油的水平,但是这个酱油也要打得有涵量啊.不管怎么样,我能对自己有个交待,虽然我不会,但是这次实训我确实是认真对待了,六天的实训,除了晚上加班外,还花了2个通宵来完成不同阶段的任务,完成与否也不重要了,我至少我做了,这点,是这次我应该对自 己的一个肯定. 这次实训的心得基本上就是这些了,最后特别感谢中软国际带我们的那两个老师(周褀,朱映),这两个老师对待我们很平易近人,对我们提出的问题,总是不光解决了,还进行了扩展,晚上也跟我们一起加班加到很晚,印象尤其深刻就是朱映老师为了给小胖解决一个问题, 脸都变红了,还在继续努力,这点我并不会觉得老师知识储备不够,我想应该是这个问题的突发吧,一时没想到怎么处理.相反让我感觉更 多的就是老师很认真,很负责.还要感谢就是syz2小组的倾力支持, 辅导. 软件工程实训心得体会二:软件工程实践学习心得(2607字)

软件检验测试的各种方法介绍

2.集成测试

集成测试,英文是Integration Testing。 集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。 集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。 集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别 3.冒烟测试 冒烟测试,英文是Smoke testing。 冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。

冒烟测试的对象是新编译的每一个需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。 4.系统测试 系统测试,英文是System Testing。 系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。 系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。 5.回归测试 回归测试,英文是Regression testing。 回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。 根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现

软件工程实习总结范文

三一文库(https://www.wendangku.net/doc/465472930.html,)/实习报告 软件工程实习总结范文 软件工程实习总结 转眼间实训已过去一段时间,之前的兴奋、喜悦如今已经让我熟悉,在实训的每一天都会让我有成为一名真正的财富者拥有的冲动。也许,在这期间不一定会让一个人有着翻天覆地的变化,但变化就是这样一点一点产生的。通过这一期的实训,虽然倍感折磨,但是收获却是很大的,学习中我不但有了学习成果的喜悦,而且自己也日渐成熟,有种说不出的喜悦 在实训的过程中,我深深的体会到了自己在专业知识方面的欠缺和不足,也意识到了自己作为计算机软件专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄之外,还必须具备良好的心理素质,是自己在以后的途中无论经历什么样的困难,都立于不败之地。通过实训老师的课堂讲解与企业文化标准的培训,使我加深了对自己专业的认识,从而确定自己以后的努力方向,要想在短暂的实训时间内尽多的学到东西,就需要我们跟老师或同学进行良好的沟通,加深彼此的了解,只有我们跟老师多沟通,让老师更了解我们,才能更真切的对我

们进行培训工作。由此,班级的文化“共享”就在生活中慢慢形成了。 “纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学来专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周到中所讲的,都是课本上没有而对我们非常有实际意义的。这又给我们的实训增添了浓墨淡彩的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中的各个成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每一个成员的意见,是我们的组合达到更加完美。 这次实训除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。有时候不懂的就需要问别人了,虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。还有学会了在工作中与人的合作与交流,同乐同累,合作互助,这是团体的精神,也是必须学习的东西。

软件工程与实践课程设计

《软件工程与实践》课程设计方案 本课程属专业必修课,是一门实践性较强的计算机类课程,授课对象为计算机专业及相关专业的本科生。本课程是对软件工程课程所述内容的进一步深化与具体应用,通过启发式教学和大量实例的练习,引导学生完成不同类型系统的分析与设计工作,培养学生关于软件工程理论的实际运用能力、软件开发实践动手与文档编写及组织管理能力,同时培养和提高学生在软件开发过程中的团队协作精神。 在课程设计过程中必须完成以下一些环节: 1、任务布置与说明,备有多个题目供学生选择。 2、学生自主分组,并展开软件项目的选题与论证,要求提交分组项目选题和组织分工。 3、进行可行性研究,编写可行性分析报告和项目开发计划,并进行审查。 4、获取需求,编写软件需求规格说明书,并进行审查。 5、进行系统分析和设计,编写软件分析设计报告,并进行审查。 6、通过实现系统主要界面来模拟软件实现,并进行审查。 7、编写软件测试计划,编写软件测试分析报告,并进行审查。 8、编写用户使用说明书,并进行审查。 可供选择的课程设计方案: 1、图书馆图书预定系统的设计与实现 功能如下:(1)由供书部门提供书目给订购组;(2)订书组从各单位取得要订的书目;(3)根据供书目录和订书书目产生订书文档留底;(4)将订书信息(包括数目,数量等)反馈给供书单位;(5)将未订书目通知订书者;(6)对于重复订购的书目由系统自动检查,并把结果反馈给订书者。 2、网络考试系统的设计与实现 要求基于B/S模式来构建整个网络考试系统,整个系统拟由试题库管理子系统、学籍管理子系统、成绩管理子系统、网络考场四大模块组成。系统用户端划分为学生端、教师端和管理员端,通过数据库操作权限设定等机制来保证系统及相关数据的安全性。 3、网上购物系统的设计与实现 着重研究、设计与实现用户管理、目录管理、信息录入管理、定单管理、浏览和查找、购物结帐等功能。 (1)会员注册、登录与管理模块,包括新会员注册、会员身份验证、会员身份注销和预定制商品。 (2)商品陈列上架模块,实现商店所有商品的分类上架,供用户浏览选择。 (3)为客户提供各个商品信息细节展示模块。 (4)为客户提供所选择商品的浏览、退货等管理模块。 (5)购物车模块,需要完成用户选购商品,购物订单生成功能。 4、病员监护系统的设计与实现

北航 软件测试技术与实践(3)

软件测试技术与实践(3) 1.William E.Perry 著,兰雨晴,高静译,软件测试的有效方法,机械工业出版社,2004年 2.郑人杰等, 实用软件工程, 清华大学出版社, 1997年 3.郑人杰, 计算机软件测试技术, 清华大学出版社, 1992年 4.G.J. Myers, 周之英,郑人杰译,计算机软件测试技巧,1987年 5.G.M. Weinberg, The Psychology of Computer Programming, New York: Van Nostrand Reinhold 1971. 6.朱鸿,金凌紫著,软件质量保障与测试,科学出版社,1997年 7.William Perry, Effective Methods for Software Testing, New York, NY: John Wiley & Sons, Inc., 1995 8.Tim Koomen and Martin Pol, Test Process Improvement, Addison –Wesley 1999. 9.Cem Kaner, Jack Falk and Hung Quoc Nguyen, Testing Computer Software, John Wiley & Sons, Inc. 1999 10.Rick D. Craig and Stefan P. Jaskiel, Systematic Software Testing, Artech House Publishers, 2002 11.Ron Patton, 周予滨, 姚静译, 软件测试, 机械工业出版社, 2001

软件工程课 心得体会

心得体会 通过本学期的学习,独立完成了软件工程方法实践与案例的作业,同时也收获了学习方法和思维方式。由于我是从电气专业调剂到计算机专业,几乎没有基础,所以在刚开始进入学习时感觉非常的困难。但是,李老师每节课都循序渐进的引导教学,让我慢慢理解了软件工程的学习思维,并且坚持学习,逐渐找到了学习软件工程的方法。在整个的学习中,一点一点的学习:上网搜索、问同学和老师、找参考书、查文献,甚至下仓库管理的软件进行使用研究,用了很多方法,也终于对软件工程的整体设计有了深刻概念和理解。 老师给我们分组分配任务,同时又每个人有不同的具体任务,这样既锻炼了我们的合作沟通的能力,同时也强调了独立自主的思考。我们仓库管理小组进行过好几次集体讨论,大家互相讨论,共同学习,也曾出现过意见不统一,通过探讨,共同解决,我觉得这也是学习提升的过程。明确了自己的任务后,就努力去完成,按时完成自己的任务。 在完成作业的同时,学到了很多的数据库知识和软件使用方法。首先接触了visio软件,发现了它画图比较方便,之后老师介绍用rose软件后,发现其功能更加强大。由于rose软件是英文版,所以刚开始用的时候比较吃力,经过搜索使用教程和多次使用练习后,终于可以熟练使用了。 整个设计过程,包括调研设计、需求分析、概要设计、数据库设计、详细设计等。其中,我对UML图印象最为深刻,也是从这个地方开始,我对软件设计有了质的改变,体会和理解了软件设计应该树立的思维方式,对以后的学习和任务有有很大帮助,后期做作业时也没有那么困难了。 在这整个课程学习和完成作业过程中,收获知识,提高能力的同时,我也学到了很多人生习惯,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把这种习惯带到生活中,不畏,勇往直前! 最后感谢李老师对我们耐心的教育和指导,认真细心的给我们批改作业,给予我们这些没有基础的学生耐心指导,谢谢老师!

软件测试方法和技术练习题与答案

一、判断题 1. 测试是调试的一个部分(╳) 2. 软件测试的目的是尽可能多的找出软件的缺陷。(√) 3. 程序中隐藏错误的概率与其已发现的错误数成正比(√) 4. Beta 测试是验收测试的一种。(√) 5. 测试人员要坚持原则,缺陷未修复完坚决不予通过。(√) 6. 项目立项前测试人员不需要提交任何工件。(╳) 7. 单元测试能发现约80%的软件缺陷。(√) 8. 测试的目的是发现软件中的错误。(√) 9. 代码评审是检查源代码是否达到模块设计的要求。(√) 10. 自底向上集成需要测试员编写驱动程序。(√) 11. 测试是证明软件正确的方法。(╳) 12. 负载测试是验证要检验的系统的能力最高能达到什么程度。(√) 13. 测试中应该对有效和无效、期望和不期望的输入都要测试。(√)验收测试是由最终用户来实施的。(√) 14. 测试人员要坚持原则,缺陷未修复完坚决不予通过。(√) 黑盒测试也称为结构测试。(╳) 集成测试计划在需求分析阶段末提交。(╳) 15. 软件测试的目的是尽可能多的找出软件的缺陷。(√) 16. 自底向上集成需要测试员编写驱动程序。(√) 17. 负载测试是验证要检验的系统的能力最高能达到什么程度。(╳) 18. 测试程序仅仅按预期方式运行就行了。(╳)19. 不存在质量很高但可靠性很差的产品。(╳) 20. 软件测试员可以对产品说明书进行白盒测试。(╳) 21. 静态白盒测试可以找出遗漏之处和问题。(√) 22. 总是首先设计白盒测试用例。(╳) 23. 可以发布具有配置缺陷的软件产品。(√) 24. 所有软件必须进行某种程度的兼容性测试。(√) 25. 所有软件都有一个用户界面,因此必须测试易用性。(╳) 26. 测试组负责软件质量。(╳) 27. 按照测试实施组织划分,可将软件测试分为开发方测试、用户测试和第三方测试。(√) 28. 好的测试员不懈追求完美。(×) 29. 测试程序仅仅按预期方式运行就行了。( ×) 30. 在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。( √) 31. 静态白盒测试可以找出遗漏之处和问题。( √) 32. 测试错误提示信息不属于文档测试范围。( ×) 33. 代码评审是检查源代码是否达到模块设计的要求。(√) 34. 总是首先设计黑盒测试用例。( √) 35. 软件测试是有风险的行为,并非所有的软件缺陷都能够被修复。(∨) 36. 软件质量保证和软件测试是同一层次的概念。(x ) 37. 程序员兼任测试员可以提高工作效率。(x ) 38. 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(∨)

软件实践课程学习的心得体会

三一文库(https://www.wendangku.net/doc/465472930.html,)/总结报告/学习体会软件实践课程学习的心得体会 经过潘老师讲授软件工程实践后,感觉对软件工程这门学科有了深一层的认识。软件工程是一门重视实际操作的科学。对于软件产品,无非是产品定义、设计代码、调试维护几个步骤,看似简单,可是实际操作却复杂困难,它不比其它行业产品可预见可触及,所以学好软件工程能为以后从事软件开发行业打好基础。 在软件实践这门课中,讲到了有效利用现有资源进行软件编程的方法。提到软件开发也可以像练习书法一样,采用临贴的方式,借鉴他人的优秀代码资源。临摹优秀软件是学习软件开发的一个重要方法。正如一首诗中说的:“熟读唐诗三百首,不会写来也会吟”。软件开发也是一个道理。为了真正地掌握软件开发的技巧,“临贴”是个不错的起步方法。 以前总是觉得,既然编写一个程序,就应该完全靠自己,那样写出来才有成就感,才算是自己的程序,可是这门课程教会我原来适当地借鉴别人的东西,也不算抄,相反,还可以提高效率,节省时间。这可真是与以往的观点不一样了。具体如下: “软件编程,拿来主义的作用很大: 1、源代码交换方便。

2、可行的例程序用处大。 3、借鉴现成少走弯路。” 不过借鉴别人的东西可是有说法的,可不是盲目地抄袭,下 面是一些提到的途径: 1、既有系统:借鸡下蛋,买来就用; 2、书本例子:简单修改、直接使用; 3、联机或联网帮助:帮助文档、官方支持; 4、开放软件源代码:linuxapacheeclipse… 5、互联网资源:论坛、搜索引擎、新闻组 借鉴过来后,还要多方面综合考虑,比如说代码的具体作用,完整性,还要考虑每个借鉴过来的东西的好坏。这些都要多方面考虑,可不能因为前面说软件编程可以借鉴别人的,就盲目地抄袭。到时候代码弄一堆凑在一块儿,谁也不知道它们会不会好好工作。弄不好乱了程序计划是小,公司的损失可不是哪个人都能承受得起的。 课程还提到,应该用一个小项目先从头到尾地练完,这样,有个整体性的了解,可以增加不少开发经验。看来,不学习此门课程,还不能深入地解读软件工程的奥义。这门课程为我们深入地了解软件工程这个庞大的前沿学科起到了推动性的作用。以上是我就此门课中提到的众多方法的一小段做的一些浅谈,更多的知识还在于我们自己去学习体会。

软件工程理论与实践习题答案

习题答案 习题一答案 一、选择题 1. 软件的主要特性是(A B C)。 A) 无形 B) 高成本 C) 包括程序和文档D) 可独立构成计算机系统 2. 软件工程三要素是(C D)。 A) 技术、方法和工具B) 方法、工具和过程 C) 方法、对象和类D) 过程、模型、方法 3. 包含风险分析的软件工程模型是(A)。 A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型 4. 软件工程的主要目标是(C)。 A) 软件需求B) 软件设计C) 风险分析D) 软件实现 5. 下列属于面向对象开发方法的是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高B) 软件产品的质量低劣 C) 软件开发人员明显不足D) 软件生产率低下 7. 软件开发方法的主要工作模型有(A B C) A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型 8. 软件工程的目标有(A B C)。 A) 易于维护B) 低的开发成本 C) 高性能D) 短的开发期 9. 软件工程学的目的和意义是( )。 A) 应用科学的方法和工程化的规范管理来指导软件开发 B) 克服软件危机 C) 作好软件开发的培训工作 D) 以较低的成本开发出高质量的软件 二、判断题 1. 软件就是程序,编写软件就是编写程序。(×) 2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模型进行开发。(×) 4. 结构化方法和JSP方法都不适合于大型软件的开发。(√) 5. 原型化开发方法包括生成原型和实现原型两个步骤。(×) 6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。( √) 7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。(×) 8. 软件工具的作用是为了延长软件产品的寿命。(×) 9. 软件工程过程应该以软件设计为中心,关键是编写程序。(×)

软件测试课程形成性考核作业及实践2

软件测试(本科)课程形成性考核册 中央广播电视大学工学院

使用说明 本形考册是中央广播电视大学软件工程(本科)专业软件测试课程形成性考核的依据,与《软件测试(本科)》教材(贺平编著,中央电大出版社出版,2011,1)配套使用。 本课程3学分,共54学时,在一个学期内开设。本课程的特点为综合性强,基本理论知识及基本技术方法的覆盖面宽、课程基本涵盖了软件测试全貌,同时实践性也较强。学习本课程,不仅要求同学们正确理解、掌握软件测试的基本知识和基础理论,更要求能够运用这些知识与技术方法,分析所面对的软件测试的(工程)问题,结合软件工程、软件设计、软件编程的相关知识与技术,通过实践运用,学会对软件测试问题的分析、技术方法运用策略及过程,完成实际测试任务。 本课程的形成性考核成绩占课程总成绩的30%(终结性考试成绩占课程总成绩的70%,课程总成绩按百分制记分,60分为合格。 形成性考核按百分制计分,每次形成性考核任务也按照百分制计分。形考任务的形式为综合性的,共有5次,其中作业形式3次,主要检查课程学习情况,检查对课程内容理解与掌握的程度;实践是完成本课程学习目标的重要组成部分,实践环节培养同学们运用软件测试技术方法解决实际测试程序(案例)的重要环节,主要培养和考核大家对这方面的掌握程度及工程应用的能力,实践形式2次。考核成绩由地方电大教师根据学生完成情况进行评定。两种形成性方式考核,每次均占20%。

软件测试作业1 (本作业覆盖教材中的第1至2章的内容) 一、单项选择题(每小题3分,共45分) 1.软件测试目的可以是:( B ) A.发现缺陷 B.确认软件能够正常运行 C.预防缺陷 D.直接提高产品的售价 E.减少整个产品开发周期时间 a)A, B b)A, B, C c)A, B, C 和 D d)所有选项 2.基本的测试过程主要由下面哪些活动组成:( B )计划和控制(control) B.分析和设计 C.实现和执行 D.评估准出准则和测试报告 E.测试结束活动 a)A, B 和 C b)A, B, C 和 D c)除 E 以外所有选项 a)所有选项 3.关于测试作用的描述,不正确的是:( A ) a)测试无法显示软件潜在的缺陷; b)测试能保证软件的缺陷和错误全部找到; c)测试只能证明软件存在错误而不能证明软件没有错误; d)所有的软件测试都应追溯到用户需求。 4.可维护性测试属于:() a)非功能测试

软件工程实践者的研究方法 中文版第七版 课后习题答案

作业答案。 2.1 a.设计者对于用户要问的问题: 项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些? b. 用户对设计者应该问的问题: 目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成? c. 软件问题用户自问? 还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗? d. 软件过程问题自问? 用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileStone? 2.2 为沟通活动设计一系列动作,选定其一并设计任务集。 (批作业的时候,以合理为目标,不一定要一样) 需求获取、需求规范说明(建模)、需求协商、需求确认等。 例如,书上page 23。 2.7 详细描述三个适合用于瀑布模型的软件项目。 (要求学生不仅仅列出项目的名称,而要说明为什么适合) 瀑布模型适合于项目开发而不是产品开发。信息管理系统一般适合于用瀑布模型。因为这类系统业务功能较为明确,架构比较单一,技术难点较少。图书馆系统、销售管理系统都是。

3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。 结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代. 码质量。 3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。 特征集合模板: an 如:出售一件商品 特征定义模板: the a(n) 特征集合:展示Web页面内容。 特征: 1)本地解析HTML页面 2)展示HTML页面 3)从网络上下载页面相关图片 4)在浏览器上展示图片 附加:统一过程模型的图。 (要求有图有说明) 5.9 为如下活动开发一个完整的规约 注意按照书本59页格式,包括用例名称,参与者,场景,异常等等。5.10 用例异常代表什么 1)非正常输入。 2)环境状态不满足要求。 3)备选方案

软件测试方法和技术练习题与答案

一、判断题 1.测试是调试的一个部分(╳) 2.软件测试的目的是尽可能多的找出软件的缺陷。(√) 3.程序中隐藏错误的概率与其已发现的错误数成正比(√) 测试是验收测试的一种。(√) 5.测试人员要坚持原则,缺陷未修复完坚决不予通过。(√) 6.项目立项前测试人员不需要提交任何工件。(╳) 7.单元测试能发现约80%的软件缺陷。(√) 8.测试的目的是发现软件中的错误。(√) 9.代码评审是检查源代码是否达到模块设计的要求。(√) 10.自底向上集成需要测试员编写驱动程序。(√) 11.测试是证明软件正确的方法。(╳) 12.负载测试是验证要检验的系统的能力最高能达到什么程度。(√) 13.测试中应该对有效和无效、期望和不期望的输入都要测试。(√)验收测试是由最终用户来实施的。(√) 14.测试人员要坚持原则,缺陷未修复完坚决不予通过。(√) 黑盒测试也称为结构测试。(╳) 集成测试计划在需求分析阶段末提交。(╳)15.软件测试的目的是尽可能多的找出软件的缺陷。(√) 16.自底向上集成需要测试员编写驱动程序。(√) 17.负载测试是验证要检验的系统的能力最高能达到什么程度。(╳) 18.测试程序仅仅按预期方式运行就行了。(╳) 19.不存在质量很高但可靠性很差的产品。(╳) 20.软件测试员可以对产品说明书进行白盒测试。(╳) 21.静态白盒测试可以找出遗漏之处和问题。(√) 22.总是首先设计白盒测试用例。(╳) 23.可以发布具有配置缺陷的软件产品。(√)24.所有软件必须进行某种程度的兼容性测试。(√) 25.所有软件都有一个用户界面,因此必须测试易用性。(╳) 26.测试组负责软件质量。(╳) 27.按照测试实施组织划分,可将软件测试分为开发方测试、用户测试和第三方测试。(√) 28.好的测试员不懈追求完美。(×) 29.测试程序仅仅按预期方式运行就行了。(×) 30.在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。(√) 31.静态白盒测试可以找出遗漏之处和问题。(√) 32.测试错误提示信息不属于文档测试范围。(×) 33.代码评审是检查源代码是否达到模块设计的要求。(√) 34.总是首先设计黑盒测试用例。(√) 35.软件测试是有风险的行为,并非所有的软件缺陷都能够被修复。(∨) 36.软件质量保证和软件测试是同一层次的概念。(x) 37.程序员兼任测试员可以提高工作效率。(x) 38.在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(∨) 39.传统测试是在开发的后期才介入,现在测试活动已经扩展到了整个生命周期。(∨)40.传统测试以发现错误为目的,现在测试已经扩展到了错误预防的范畴。∨ 41.软件测试的生命周期包括测试计划、测试设计、测试执行、缺陷跟踪、测试评估。(∨)42.软件生存周期是从软件开始开发到开发结束的整个时期。(x) 43.测试用例的数目越多,测试的效果越好。(x) 44.只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。(x) 45.单元测试属于动态测试。(∨) 46.验收测试是以最终用户为主的测试。(∨) 47.没有发现错误的测试是没有价值的。(∨) 48.可以把不合格的开发人员安排做测试。(x)

(学习心得体会)软件实践课程学习心得体会

软件实践课程学习心得体会 经过潘老师讲授软件工程实践后,感觉对软件工程这门学科有了深一层的认识。软件工程是一门重视实际操作的科学。对于软件产品,无非是产品定义、设计代码、调试维护几个步骤,看似简单,可是实际操作却复杂困难,它不比其它行业产品可预见可触及,所以学好软件工程能为以后从事软件开发行业打好基础。 在软件实践这门课中,讲到了有效利用现有资源进行软件编程的方法。提到软件开发也可以像练习书法一样,采用临贴的方式,借鉴他人的优秀代码资源。临摹优秀软件是学习软件开发的一个重要方法。正如一首诗中说的:熟读唐诗三百首,不会写来也会吟”。软件开发也是一个道理。为了真正地掌握软件开发的技巧,临贴”是个不错的起步方法。 以前总是觉得,既然编写一个程序,就应该完全靠自己,那样写出来才有成就感,才算是自己的程序,可是这门课程教会我原来适当地借鉴别人的东西,也不算抄,相反,还可以提高效率,节省时间。这可真是与以往的观点不一样了。具体如下: 软件编程,拿来主义的作用很大: 1、源代码交换方便。 2、可行的例程序用处大。 3、借鉴现成少走弯路。

不过借鉴别人的东西可是有说法的,可不是盲目地抄袭,下面是一些提到的途径: 1、既有系统:借鸡下蛋,买来就用; 2、书本例子:简单修改、直接使用; 3、联机帮助:帮助文档、官方支持; 4、开放软件源代码:linux apache eclipse … 5、资源:论坛、搜索引擎、新闻组 借鉴过来后,还要多方面综合考虑,比如说代码的具体作用,完整性,还要考虑每个借鉴过来的东西的好坏。这些都要多方面考虑,可不能因为前面说软件编程可以借鉴别人的,就盲目地抄袭。到时候代码弄一堆凑在一块儿,谁也不知道它们会不会好好工作。弄不好乱了程序计划是小,公司的损失可不是哪个人都能承受得起的。 课程还提到,应该用一个小项目先从头到尾地练完,这样,有个整体性的了解,可以增加不少开发经验。看来,不学习此门课程,还不能深入地解读软件工程的奥义。这门课程为我们深入地了解软件工程这个庞大的前沿学科起到了推动性的作用。以上是我就此门课中提到的众多方法的一小段做的一些浅谈,更多的知识还在于我们自己去学习体会。

软件工程—理论与实践-课后答案(许家怡-白忠建-吴磊-著)-高等教...

习题一答案 一、选择题 1. 软件的主要特性是(A B C)。 A) 无形 B) 高成本 C) 包括程序和文档 D) 可独立构成计算机系统 2. 软件工程三要素是(B)。 A) 技术、方法和工具 B) 方法、工具和过程 C) 方法、对象和类 D) 过程、模型、方法 3. 包含风险分析的软件工程模型是(A)。 A) 螺旋模型B) 瀑布模型 C) 增量模型 D) 喷泉模型 4. 软件工程的主要目标是(C)。 A) 软件需求 B) 软件设计 C) 风险分析 D) 软件实现 5. 下列属于面向对象开发方法的是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高 B) 软件产品的质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7. 软件开发方法的主要工作模型有(A B C) A) 螺旋模型 B) 循环模型 C) 瀑布模型 D) 专家模型 8. 软件工程的目标有(A B C)。 A) 易于维护 B) 低的开发成本 C) 高性能 D) 短的开发期 9. 软件工程学的目的和意义是(A D)。 A) 应用科学的方法和工程化的规 范管理来指导软件开发 B) 克服软件危机 C) 作好软件开发的培训工作 D) 以较低的成本开发出高质量的 软件 二、判断题 1. 软件就是程序,编写软件就是编写程 序。(×) 2. 瀑布模型的最大优点是将软件开发的 各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模 型进行开发。(×) 4. 结构化方法和OO方法都是一种面向 过程的软件开发方法。(×) 5. 原型化开发方法包括生成原型和实现 原型两个步骤。(×) 6. 面向对象的开发方法包括面向对象的 分析、面向对象的设计和面向对象的程序 设计。( √) 7. 软件危机的主要表现是软件的需求量 迅速增加,软件价格上升。(×) 8. 软件工具的作用是为了延长软件产品 的寿命。(×) 9. 软件工程过程应该以软件设计为中 心,关键是编写程序。(×) 10. RCP法与RSP法的主要区别是前者采 用循环渐进的开发方式,原型将成为最终 的产品,而后者原型将被废弃。(√) 三、简答题 1. 软件产品的特性是什么? 答:●软件是一种逻辑产品,具有无形性; ●软件产品的生产主要是研制;主要 是脑力劳动; ●软件不存在磨损和老化问题,但存 在退化问题; ●软件产品的成本非常昂贵,其开发 方式目前尚未完全摆脱手工生产方式; ● 软件具有“复杂性”,其开发和运 行常受到计算机系统的限制。 2. 软件发展有几个阶段?各有何特 征? 答:①程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 ②程序系统阶段。 硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。 软件特征:程序员数量猛增,开发人员素质低。 ③软件工程阶段。 硬件特征:向超高速、大容量、微型化及网络化方向发展。 软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3. 什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。 (2) 软件生产率低,不能满足需要。 4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点? 答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简 1

软件测试方法的分析与实践研究 叶旭

软件测试方法的分析与实践研究叶旭 发表时间:2018-04-18T15:05:45.623Z 来源:《电力设备》2017年第31期作者:叶旭颜薇薇 [导读] 摘要:随着信息技术的发展,软件的规模大幅度提高,软件行业关心的问题依旧是如何保证提高软件的质量。 (安徽继远软件有限公司安徽 230088) 摘要:随着信息技术的发展,软件的规模大幅度提高,软件行业关心的问题依旧是如何保证提高软件的质量。软件的可行性与有效性是衡量软件的重要标准,软件的失效有时候会带来财产和生命的巨大的损失,因此,软件测试越来越受到重视。近年来,软件测试成为软件开发过程中不可缺少的一部分,成为保证软件质量的必要手段。软件测试方法的分析与使用在整个过程中占据了举足轻重的位置,正确的使用软件测试的方法可以提高效率,节约成本。 关键词:系统测试;测试用例;缺陷管理 1软件测试概述 根据软件开发各个阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以发现错误的过程称为软件测试。软件测试的目的是为了发现程序中的错误为执行程序的过程。 1.1软件测试的目的 在计算机软件的应用当中,之所以要进行软件的测试,主要有三方面的目的:第一是对软件的正确性进行检测。一些软件因为程序编写存在着小错误,所以整个软件的运行走向了一个错误的方向,进行软件测试就是要将这些错误找出来并进行改正。第二是对软件的运行速度、性能等进行测试。软件的运行与环境的匹配性有着较为显著的关系,通过测试获得软件运行的速度以及性能结果,在结果基础上分析运行环境与其的适应性,可以更好的优化软件的运行环境。第三是进行软件的安全评判。一些软件会带有病毒,而此类软件在应用中会出现极大的安全风险,所以需要对其进行安全检测,这样可以对软件的安全性做出科学的评价。 1.2软件测试用例 软件测试用例是软件测试工作的核心内容,也是软件测试成功与否的重要基础,所以说测试用例的设计是整个测试工作中最具挑战性的工作之一。就目前的测试用例分析来看,其包括了测试输入数据、对步骤进行执行以及对与之对应的预期输出三个主要的部分。在整个软件的测试工作中,测试用例体现了五个方面的基本作用:第一是对整个测试工作的实施进行指导;第二是对测试数据的规划进行全面性的准备;第三是帮助完成测试脚本/设计规格说明书的编写;第四是评估测试结果的度量基准;第五是为缺陷分析的标准提供基础。 1.3软件测试方法 软件测试的关键是设计测试用例,测试用例需要包括功能特性,规范的输入和输出。每一个测试用例都有明确的测试目标。软件测试从不同的角度出发可以划分不同的类别,以下主要讨论软件测试方法。 1.3.1黑盒测试。黑盒测试是目前计算机软件测试当中运用的一种主要测试方法,此种测试方法主要是用来检测软件的每一种功能能否正常使用,因此此方法也被称之为功能测试。在整个测试的过程中,测试可以定义为一个不可打开的黑盒,因此其内部结构以及特征可以完全不考虑,只要进行程序的接口测试即可。在黑盒测试中,为了保证软件的质量,需要进行测试的量化,所以需要利用设计来实现测试量化。就目前测试量化的实现来看,主要利用到的设计方法有:边界值分析法、等价类划分法、因果图法;错误推测法;正交试验设计法等等。简而言之就是利用黑盒测试可以有效的判断软件运行的功能是否正常。 1.3.2白盒测试。在软件测试的方法当中,另一种被广泛使用的是白盒测试法,此种测试方法主要是根据程序的内部结构对程序的运行进行测试,所以此种方法也被称之为结构测试或者是逻辑驱动测试。这种检测的方式将被检测的程序视为了一个打开的盒子,所以在检测的过程中可以根据其内部的结构进行测试用例的选择,这样,程序测试的逻辑途径等都可以进行检测。 1.4从程序是否执行的角度 1.4.1静态测试。静态测试的主要特征是在测试源程序时,计算机并不真正的运行被测试程序。静态测试包括代码检查、界面测试、文档测试三个放面。 1.4.2动态测试。动态测试的主要特征是计算机必须真正的运行被测试程序,通过输入测试用例,对其运行的情况进行分析,判断期望结果和实际结果是否一致。 1.5从是否使用工具的角度 1.5.1人工测试。人工测试是由测试人员手工逐步执行所有的活动,并观察每一步是否成功完成。例如结构化走查、审查和正式评审。 1.5.2自动测试。自动测试是基于自动测试工具软件完成的。测试人员在事先编写好测试脚本利用计算机自动软件来检测软件的缺陷或错误。例如边界值测试、分支覆盖测试、原型和语法测试等。自动测试只适合于可重复利用的功能。 2计算机软件深度开发应用 2.1软件开发的三个阶段 就目前的软件开发来看,主要是通过软件工程这种方式进行的,利用这种方式进行软件开发的过程和机械工程存在着非常大的相似性,机械工程需要经过设计、施工和验收三个阶段,软件开发也需要经过定义、开发和维护三个基本的机端。定义阶段的工作内容主要有两项,第一是进行软件功能的基本确定,第二是进行功能实现的途径探讨。简言之就是通过定义,软件的基本功能完整性和开发的主要方向得以确立。开发是软件开发的第二个阶段,主要指的是利用程序结构以及途径实现软件功能的过程。第三是维护,此过程指的是在获得基本功能后对功能的稳定和持续进行保证。经历过三个基本的阶段,软件开发的完善性得到保障。 2.2应用软件开发方法 从目前的软件应用来看,一些比较大的应用软件很难由个人独立完成,需要由多人或者是团队的配合,这样,软件的质量才能够得到保证。就目前的应用软件开发来看,不同类型的软件,其开发方法存在着差异性,所以需要对目前应用软件的开发方法进行统一的分析和探讨。 2.2.1生命周期法。生命周期法目前应用软件开发的一种重要方法,此种方法主要从时间的角度对软件定义、开发和维护过程中出现的问题进行分解,从而将其变成几个较小的阶段,这样,每个阶段从开始到结束都会执行较为严格的标准,而这些标准的执行可以使此阶段

相关文档 最新文档