Wish you a happy day~(❁´◡`❁)

2015年12月山东大学软件工程考试重点整理

[ 糊糊说事儿 ] zoey 1042次浏览 4个评论

考试周终于结束了,又可以开始愉快的敲代码了,前提是得搞定所有的实验报告…6df98cb1cb1349542af998d3534e9258d0094a43

据知情人透露,史清华老师的题目每年几乎都出的差不多,重点也就这一份变来变去,所以特意把这段时间内整理的重点贴出来造福学弟学妹,2333

需要说明的是我是山东大学2013级,课本是杨卫东译的软件工程第4版。如果版本不同可能重点有出入..

(笔者期末考试软件工程96分)


先放个下载链接好了:http://pan.baidu.com/s/1pKlwp5p


以下是正文。应该是比较靠谱的。

糊糊小公举整理的软工重点

chapter01:

1.软件工程的定义、目的、方法及作用:

定义:在将有关软件开发与应用的概念科学体系化的基础上,研究如何有计划,有效率经济的开发和利用能在计算机上正确运行的软件的理论和技术的工程方法学,一些开发和维护软件的方法、过程和原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。

目的:生产出高质量软件,进而找到解决方案,并考虑那些对质量有影响的特性。软件工程师使用工具、技术过程和范型来提高软件产品的质量,他们的目标是使用高效的、高效率的方法形成相关问题的有效解决方案。

方法:方法和技术是产生某些结果的形式化过程。

工具是用更好的方式完成某件事情的设备或自动化系统

过程:把工具和技术结合起来,共同生产特定产品。

范型:表示构造软件的特定方法与哲学。

作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。

2.说明错误、缺陷、失败的含义与联系:

错误:错误是在软件生产过程中人为产生的错误(需求说明中的错误、代码中的错误等)

缺陷:缺陷是在功能实现中产生的问题(一个错误可能产生几个静态缺陷)

失败:失败是相对于系统指定行为的偏离(动态存在的)

缺陷是系统内部的观点,就像从开发者的角度看待问题那样;失败是外部观点:即用户所看到的问题,并非每个缺陷都对应相应的失败。

3.软件质量应该从哪几个方面来衡量?论述之。

产品的质量:用户从外部特性看,软件具有足够的功能并且易于学习和使用就说明软件有高的质量;开发者从内部特性来看错误数量和类型来评判软件质量的高低。

过程质量:很多过程都能影响最终产品的质量,如果任何一个活动除了差错,整个产品的质量就会受到影响,因此许多软件工程师认为开发和维护过程的质量与产品的质量同等重要。

商业应用背景下的软件质量:在商业环境中,质量是根据软件所出的商业环境提供的产品和服务来看待的。也就是说,我们考虑的是产品的技术价值,而不是更广泛的商业价值,而我们只根据最终产品的技术质量来作出决定。

4.现代软件工程大致包含的几个阶段以及各个阶段文档?

需求分析:主要包括问题定义、可行性研究、需求分析、复审等。(所有参与者)文档:《需求规格说明书》

系统设计:主要包括用户界面和软件结构图。文档:系统结构图

程序设计:主要包括模块功能算法与数据描述、复审等。(开发者)文档:UML图

程序实现:主要包括编程和复审(设计者和编码人员)文档:源代码和注释

单元测试:模块测试与性能测试,复审(测试团队)文档:测试报告

集成测试:按照结构图进行测试产生测试报告,复审(测试团队)

系统测试:按照SRS对系统总体功能进行测试,复审(开发者和用户)

系统交付:交付产品,复审(使用者和操作人员)文档:用户培训

维护:修改软件过程,为满足改错或新需求,复审(维护团队)。文档:维护报告。

5.使现代SE实践发生变化的七个关键因素是什么?

商用产品投入市场时间的紧迫性

计算技术在经济中的转变,更低的硬件成本,更高的开发、维护成本

功能强大的桌面计算的可用性

广泛的局域网和广域网

面向对象技术的采用及其有效性

使用窗口、图标、菜单和指示器的图形用户界面

软件开发瀑布模型的不可预测性

6.什么是抽象?

抽象是某种概括层次上对问题的描述,使得我们能够集中于问题的关键方面而不会陷入细节。通常,抽象可以认为是标识对象的类,使得我们能够把多个项组合在一起。

7.什么是软件过程?软件过程的重要性是什么?包含几个阶段?

软件过程:软件开发活动中的各种组织及规范方法。可以将一组有序的任务称为过程,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。

软件过程的重要性:过程之所以重要,是因为它强制活动具有一致性和一定的结构性和指导性,它允许我们分析、理解、控制和改进组成过程的活动,并以此来指导我们的行动。

软件过程的阶段:9个(就是软件工程的9个阶段。)每一阶段本身就可以描述为一组活动的过程,并且每一个活动都包括约束、输出、和资源。每个活动涉及输入,子活动,约束,输出,和资源。

*过程阶段化的目的: 尽量通用化,以确保最终产品的高质量.

8.什么是重用等软件工程主要概念?

在软件开发和维护中,通常通过复用以前开发项目中的项来利用应用程序之间的共性。我们是指重复使用软件系统的任何部分,包括文档、代码、设计、需求、测试用例和测试数据等。从复用者的角度来看有两种复用:生产者复用创建可复用的构建,而消费者复用是在以后的系统中使用它们。

chapter02:

1.瀑布模型及各阶段文档,优缺点?

需求分析 →系统设计→ 程序设计 →编码→ 单元测试和集成测试→ 系统测试 →验收测试 →运行和维护

优点:(1)瀑布模型一直用来规范软件开发活动,每一个过程活动都有与其相关联的里程碑和可交付产品,以便于项目经理能够用模型判断在某一时刻项目里最后完成还有多远。

(2)它的简单性使得开发人员很容易向不熟悉软件开发用户作出解释。

(3)很多更复杂的模型实际上是在瀑布模型的基础上的润色,如加入反馈循环以及额外的活动。

缺点:(1)它并不能反映实际的代码开发方式。除了一些理解非常充分的问题之外,实际上软件是通过大量的迭代进行开发的。

(2)它没有揭示每一个活动如何把一种制品转化为另外一种制品

(3)没有吧软件看做一个问题求解的过程,而是从制造业的角度来看待软件开发的,软件开发应该是一个创造的过程,而不是制造的过程。

2.原型的概念

原型是一个部分开发的产品,它使客户和开发人员能够对计划开发的系统的相关方面进行检查,以决定它对最终产品是否合适或恰当。

3.论述分阶段开发模型的含义,其基本分类及特点是什么?

含义:从编写需求文档到系统交付使用会经过若干年,称为循环周期,使用这种方法设计系统时使其能够一部分一部分的交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分功能。 因此,通常会有两个系统并行运行,运行系统(产品系统)或开发系统。

基本分类:增量开发、迭代开发

增量开发:在增量开发中,需求文档中指定的系统按功能划分为子系统,定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。

迭代开发:迭代开发是在一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。

特点:(1)即使还缺少某些功能,但在早期的发布中就可以开始培训。

(2)可以及早为那些以前从未提供的功能开拓市场。

(3)当运行系统出现未预料到的问题时,经常性的发布可以使开发人员能全面、快速地修复这些问题

(4)针对不同的发布版本,开发团队将重点放在不同的专业领域技术上。

4.螺旋模型四个象限的任务及四重循环的含义?

定义:螺旋模型把开发活动和风险管理结合起来,以将风险减到最小并控制风险

任务:确定目标,可选方案及约束(2 左上);评估可选方案及风险(1 右上);计划(3 左下);开发与测试(4右下)

四重循环的含义:(1)操作概念是第一次迭代的产品;(2)需求是第二次迭代的主要产品;(3)第三次迭代产中,系统开发产生设计;(4)第四次迭代能够进行测试。(5)螺旋模型的每一次迭代都根据需求和约束进行风险分析,以权衡不同的选择,并且在确定某一特定选择之前,通过原型化验证可行性或期望度。当风险确认之后,项目经理必须决定如何消除或最小化风险。

5.习题2

  优点 缺点
瀑布模型 (1)瀑布模型一直用来规范软件开发活动,每一个过程活动都有与其相关联的里程碑和可交付产品,以便于项目经理能够用模型判断在某一时刻项目里最后完成还有多远。

(2)它的简单性使得开发人员很容易向不熟悉软件开发用户作出解释。

(3)很多更复杂的模型实际上是在瀑布模型的基础上的润色,如加入反馈循环以及额外的活动。

 

(1)它并不能反映实际的代码开发方式。除了一些理解非常充分的问题之外,实际上软件是通过大量的迭代进行开发的。

(2)它没有揭示每一个活动如何把一种制品转化为另外一种制品

(3)没有吧软件看做一个问题求解的过程,而是从制造业的角度来看待软件开发的,软件开发应该是一个创造的过程,而不是制造的过程。

 

V模型 使得隐藏在瀑布模型中的迭代和重做活动更加明确。它通过开发和测试同时进行的方式来缩短开发周期,提高开发效率

 

V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。

 

原型化模型 可以得到比较良好的需求定义,容易适应需求的变化;有利于开发培训同步;需求表达清楚,利于确认各项系统服务的可用性;降低开始风险和开发成本。 不适用于开发大型的信息系统;系统难以维护;如果用户合作不好,盲目纠错,会拖延开发进度;准确的原型设计比较困难,且不利于开发人员的创新。

 

可转换模型 通过去除某些主要开发步骤来设法减少出错的机会,简化了开发过程 应用转换方法的主要障碍在于需要一个精确表述的形式化的规格说明,这样才可以基于它进行操作。

 

螺旋模型 1)设计上的灵活性,可以在项目的各个阶段进行变更。

2)以小的分段来构建大型系统,使成本计算变得简单容易。

3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。

4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。

5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

 

很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

利用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能及时标识风险,势必会造成重大损失。

 

 

6.习题3 讨论模型是如何处理开发后期的重要需求的?

瀑布模型:由于瀑布模型的不可逆性,若要重新进行需求调整,需要推翻或对  之前的流程设计进行大调整,重新按照流程再来一遍。

原型化模型:重新考虑和变更需求规格说明。

V模型:重新对左边的步骤进行修正和改进

可转换模型:重新进行转换过程。

螺旋模型:再次进行风险分析并将风险降至最低。

7.什么是UP,RUP

统一过程(UP)可以用三句话来表达:它是用例驱动的、以基本架构(体系结构)为中心的、迭代式和增量性的软件开发过程框架,它使用对象管理组织(OMG)的UML 并与对象管理组织(OMG)的软件过程工程原模型(SPEM)等相兼容。 “统一过程”将重复一系列生命期,这些生命期构成了一个系统的寿命。每个生命期都以向客户推出一个产品版本而结束。每个周期包括四个阶段:开始阶段、确立阶段、构建阶段和移交阶段。每个阶段可以进一步划分为多次迭代。

chapter03

1.什么是项目调度?活动?里程碑?

活动:活动是项目的一部分,它在一段时间内发生。

里程碑:里程碑是活动的完成—某一特定时刻。

项目调度:项目进度通过列举项目的各个阶段,把每个阶段分解成离散的任务或活动,来描述特定项目的软件开发周期。进度还描绘这些活动之间的交互,并估算每项任务或活动将或花费时间。因此,进度是一个时间线,说明活动将在什么时候开始,什么时候结束以及相关的开发产品将在什么时候完成。

2.计算活动图的关键路径,习题23,冗余时间,最早和最迟开始时间。

3.软件团队人员应该具备的能力是什么?

(1)完成工作的能力(2)对工作的兴趣(3)开发类似应用的经验(4)使用类似工具或语言的经验(5)使用类似开发环境的经验(6)使用类似技术的经验(7)培训(8)与其他人交流的能力(9)与其他人共同承担责任的能力(10)管理技能

4.软件项目组织的基本结构?

无标题

5.试叙述COCOMO模型的三个极端基本工作原理或含义。

在阶段一,项目通常构建原型以解决包含用户界面、软件和系统交互、性能和技术成熟性等方面在内的高风险问题。这时,人们对正在创建的最终产品可能的规模知之甚少,因此COCOMOⅡ用应用点来估算规模。

在阶段二,即早期设计阶段,已经决定将项目开发向前推进,但是设计人员必须研究几种可选的体系结构和操作的概念。同样,仍然没有足够的信息支持准确的工作量和工期估算,但是远比第一阶段知道的信息要多。在阶段二,COCOMOⅡ使用功能点对规模进行测量。

在阶段三,即后体系结构阶段,开发已经开始,而且已经知道了更多的信息。在这个阶段,可以根据功能点或代码行来进行规模估算,而且可以较为轻松地估算很多成本因素。

6.什么是软件风险?主要风险管理活动?有几种降低风险的策略?

风险:是一种具有负面后果的、人们不希望发生的事情。

风险的特点(区别风险和其他项目事件):

(1)与事件有关的损失:与风险有关的损失称为风险影响

(2)事件发生的可能性:对风险进行的测量称为风险概率

(3)更够改变结果的程度:能降低或消除风险所采取的行动称为风险控制

(4)风险成本(风险暴露)=风险影响*风险概率

三种策略来降低风险:

(1)通过改变性能或功能需求,避免风险

(2)通过把风险分配到其他系统中,或者购买保险以便在风险成为事实时弥补经济上的损失,从而转移风险。

(3)假设风险会发生,接受并用项目资源控制风险。

7.找出图3.233.24的关键路径。(习题2.3)关键路径就是加权值最长的那条路径。

chapter04

1.需求的含义是什么?

需求:是对期望行为的表达。需求处理的是对象或实体,它们可能处于的状态,以及用于改变状态或对象特征的功能。

需求的目标:是理解客户的问题和需要,需求集中于客户和问题,而不是解决方案的实现。

2.需求作为一个工程,其确定需求的过程是什么?

23.举例说明获取需求时,若有冲突发生,如何考虑到优先级的需求分类及相互关系?

请求客户对需求进行优先级划分通常是有用的,这可以迫使客户思考提议的服务或特征中哪些是最重要的。

一种大致的优先计划分方案可能将需求分为3类:

(1)绝对要满足的需求(必须的)

(2)非常值得要的但并非必须的需求(值得要的)

(3)可要可不要的需求(可选的)

举例:信用卡记账系统必须能够列出最近的费用,将他们加起来并要求在某个日期前支付,这是必须的需求。但是,该记账系统也可能按照购买类型区分费用,以帮助消费者理解购买的模式,这是值得要的需求。最后,记账系统可能要求用黑色来打印贷方账目,用红颜色打印借方账目,这用需求是有用的,但它是可选的需求。

按照类型对需求进行优先级的分类,能够帮助所有相关人员理解自己到底需要什么。当软件开发项目受到时间或资源的限制时,如果系统的成本太高或者开发的时间太长,就可以去掉可选需求,并对值得要的需求进行分析,考虑是去掉还是延期。还可解决与质量需求之间的矛盾。

4.需求文档分为哪两类?

(1)需求定义:是客户想要的每一件事情的完整列表

(2)需求规格说明:将需求重新陈述为关于要构建的系统将如何运转的规格说明

5.什么是功能性需求和非功能性需求/质量需求?设计约束?过程约束?

功能需求:根据要求的活动来描述需求的行为。(描述系统内部功能或系统与外部环境的交互作用,如对输入的反应,活动发生时每一个实体之前和之后的状态)

非功能需求(质量需求):描述一些软件解决方案必须拥有的质量特征,如快速的响应时间、易使用性、高可靠性或低维护代价等。

设计约束:是已经做出的设计决策或限制问题解决方案集的设计决策。

物理环境:对环境或设备的限制等

                     接口:涉及输入输出的限制或约束条件. (输入格式预定等)  

                     用户:使用者的基本情况

过程约束:是对用于构建系统的技术和资源的限制。

资源 :材料、人员技能或其它。

                     文档 :类型、数量或其它。(涉及其针对性及要求等)

6.需求的特性?(正确性、一致性、完整性)P109

(1)正确性(2)一致性(3)无二义性(确定性)(4)完备性(5)可行性(6)相关性(7)可测试性(8)可跟踪性

 

7.了解DFD图的构成及画法。P121数据流图

8.在需求原型化方面,什么是抛弃型原型?什么事演化型原型?

抛弃型原型:是为了对问题或者提议的解决方案有更多的了解而开发的软件,永远不会作为交付软件的一部分。

演化型原型:不仅帮助我们回答问题,而且还要演变成最终产品

这两种技术有时都称为快速原型化,因为它们都是为了回答需求的问题而构建软件。

chapter05:

1.什么是软件体系结构?设计模式?设计公约?设计?概念设计?技术设计?

设计是一种将问题转换为解决方案的创造性过程,他考虑如何实现所有的客户需求。设计所产生的计划也叫设计。

软件体系结构是用来解释如何将系统分解为单元以及这些单元又如何相互关联,还描述这些单元的所有外部可见特性。

设计模式?:一种针对单个软件模块或少量模块而给出的一般性解决方案,它提供较低层次的设计决策。(此设计决策低于体系结构) (: 此处为说明,不是定义)

设计公约:一系列设计决策和建议的集合,用于提高系统某方面的设计质量。

概念设计:确切地告诉客户系统要做什么

技术设计:一旦客户认可概念设计,系统构建人员就将概念设计转换为更为详细的文档,即技术设计,技术设计确切的告诉开发人员系统将如何运转。

概念设计强调的是系统功能,而技术设计描述的是系统将要采取的方式。

2.设计过程模型的几个阶段?

3

3.三种设计层次及其关系?

设计分三层:体系结构、代码设计和可执行设计

(1)体系结构将需求格式说明中确定的系统能力与实现这些能力的系统构件关联起来。

(2)代码设计包含算法和数据结构

(3)可执行设计在比代码设计的层次还要低的静态层次处理代码设计,讨论内存分配、数据格式、位模式等

关系:自顶向下设计有益的:首先设计体系结构,然后进行代码设计,最后是       可执行设计

4.论述设计用户界面应该考虑的问题。?

(1)应处理以下几个关键要素:

1.隐喻:可识别和学习的基本术语,图片和概念

2.头脑中的模型:数据、功能、任务和角色的构成和表现

3.模型的导航没规则:怎样在数据、功能、活动和角色中转移

4.外观:系统向用户传输信息的外观特征

5.感觉:向用户提供有吸引力的体验的交互技术

(2)文化问题:需要考虑使用系统的那些用户的信仰、价值观、道德规范、传统、风俗和传说。两种解决方法:1.排除特定的文化参考或偏见,让界面变得尽可能“国际化”2.采用无偏见设计并使之时应使用软件的文化

(3)用户偏爱:可以为不同用户涉及多个界面。

5.什么是模块化?什么是抽象?

模块化:也称作关注点分离,是一种把系统中各不相关的部分进行分离的原则,以便于各部分能够独立研究。

抽象:抽象是一种忽略一些细节来关注其他细节的模型或表示,是基于某种归纳水平的问题描述。

  1. 5.5 模块独立性—耦合与内聚的概念及各个层次划分?

耦合:指构件之间的相互依赖性,从高到低可分为

(1)内容耦合:一个构件直接修改了另外一个构件(当一个构件修改了另外一个构件的内部数据项时,或一个构件内的分支转移到另外一个构件中的时候,就可能出现内容耦合)

(2)公共耦合:不同构件访问公共数据。例如,一个公共变量可以被不同的构件修改。

(3)控制耦合:某个构件通过传递参数或返回代码来控制另外一个构件的活动,模块间传递的是控制量。

(4)标记耦合:用一个复杂的数据结构来从一个构件到另一个构件传送信息,而且传递的是该数据结构本身。

(5)数据耦合:构件间通过传递数据来完成信息的传递。

(6)非耦合

7.举例说明耦合与内聚的基本分类。以及各个分类的含义与特征。

内聚:指构件内部元素(比如数据、功能、内部模块)的“粘合”程度,从低到高可分为:

(1)巧合内聚:构件的各部分互不相关

(2)逻辑内聚:当一个模块中的各个部分只通过代码的逻辑结构相关联时。

(3)时态内聚:设计被划分为几个用来表示不同执行状态的模块:初始化、读进输入、计算、打印输出、和清除,这样的内聚是事态内聚,在这种模块中数据和功能仅仅因在一个任务中同时被使用而形成联系。

(4)过程内聚:通常必须按照某个确定的顺序执行一系列功能,如果模块中的功能组合在一起只是为了确保这个顺序,叫过程内聚。

(5)通信内聚:围绕着同一个数据集构造的模块是通信内聚。

(6)功能内聚:在一个模块中包含了所有必需的元素,并且每一个处理元素对于执行单个功能来说都是必需的;某个功能内聚的模块不仅执行设计的功能,而且只执行该功能,不执行其他任何功能。

(7)信息内聚:在功能内聚的基础上,将其调整为数据抽象化和基于对象的设计,就是信息内聚。

8.习题45. 如何改进标记耦合??

chapter06:

1.什么是设计模式?

设计模式编写了设计决策以及最好的实践,他们根据设计原则来解决一些特定的问题。主要目标是提高设计的模块化。

2.OO开发有何优势?

(1)语言的一致性。我们可以用同样的术语描述问题及其解决方案:类、对象、方法、属性和行为

(2)过程的一致性。OO的过程使用数据和行为的封装形成的独立的单元。它从需求到应用实现和测试用相同语义的概念来表示系统。

3.OO开发过程有几个步骤?

OO需求,OO高层设计,OO低层设计,OO编码和测试

4.熟悉用例图的组成和画法,用例的几个要素的含义,掌握用例图的实例解析方法。

5.用例图、类图等对面向对象项目开发的意义是什么?

6.熟悉类图中各个类之间的基本关系分类。

7.了解UML其他图示结构的基本用途。

 

chapter07:

1.一般性的编程原则应该从哪三个方面考虑?

(1)控制结构:当设计转变成代码时,我们希望保留组件的控制结构,在隐含调用的面向对象设计中,控制是基于系统状态和变量而变化的。

(2)算法:在编写代码时,程序设计通常会制定一类算法,用于编写组件。

(3)数据结构:编写程序时,应该安排数据的格式并进行存储,这样的数据管理和操作才能简明易懂。

(4)通用性指导原则:有几种全局策略对于在代码中保持设计质量是很有用的。

2.在编写程序内部文档时,除了HCB外,还应该添加什么注释信息?

hcb:头部注释板块

1.其他程序注释,对程序正在做什么,为程序提供逐行的解释。用注释将代码分解成标识主要活动的段,接着每个活动还可以分解成更小的步骤。

2.有意义的变量名和语句标记。

3。安排格式以增强理解。注释的格式能够帮助读者理解代码的目标以及代码如何实现目标的。声明的缩进和间隔能够反映基本的控制结构。

4.文档化数据:数据地图对于当系统处理很多不同类型和目的的数据时是很有用的。

3.什么是极限编程?(XP)以及派对编程?

极限编程(XP)是一种轻量级的软件开发方法论,属于敏捷开发方法。XP从实践中来,是对实践的总结,也是经过实践检验的,其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。XP承诺降低软件项目风险,改善业务变化的反应能力,提高开发期间的生产力,为软件开发过程增加乐趣等等 。

XP的支持者强调敏捷方法的4个特性:交流、简单性、勇气以及反馈。

交流是指客户与开发人员之间持续地交换看法;简单性激励开发人员选择最简单的设计或实现来处理客户的需要;勇气体现在今早地和经常交付功能的承诺;在软件开发过程中的各种活动中,都包含反馈循环。例如,程序员一起工作,针对实现设计的最佳方式,相互提供反馈;客户和程序员一起工作时,以完成计划的任务。

 

派对编程属于主要的敏捷开发方法,其开发方式是两个程序员共同开发程序,且角色分工明确。一个负责编写程序,另一个负责复审与测试。两人定期交换角色。

chapter08:

1.几种主要的缺陷类型?

(1)算法故障:由于处理步骤中的某些错误,使得对于给定的输入,构件的算法或逻辑没有产生适当的输出。

(2)计算故障和精度故障:一个公式的实现是错误的,或者计算结果没有达到要求的精度。

(3)文档故障:文档与程序实际做的事情不一致。

(4)压力故障(过载故障):填充数据结构时超过了它们规定的能力

(5)能力故障(边界故障):系统活动到达指定的极限时,系统性能会变得不可接受

(6)计时故障(协调故障):在开发实时系统时,一个关键的考虑因素是几个同时执行的或按仔细定义的顺序执行的进程之间的协调问题,当协调这些事件的代码不适当时,就会出现计时故障。

(7)吞吐量故障(性能故障):系统不能以需求规定的速度执行

(8)恢复故障:当系统遇到失效时,不能表现的像设计人员希望的或者客户要求的那样

(9)硬件和系统软件故障:提供的硬件和系统软件实际上并没有按照文档中的操作条件和步骤运作。

(10)标准和过程故障:程序员未能遵循必须的标准。

2.什么是正交缺陷分类?

故障被分为不同的类别,被分类的任何一个只能属于一个类别,这种分类方案就是正交的。分为疏漏型故障和犯错型故障。

3.测试的各个阶段及其任务?

(1)单元测试:将每个程序构件与系统中其它构件隔离,对其本身进行测试。验证针对设计预期的输入类型,构件能否适当地运行。

(2)集成测试:验证系统构件是否能够按照系统和程序设计规格说明中描述的那样共同工作。

(3)功能测试:对系统进行评估,以确定集成的系统是否确实执行需求规格说明中描述的功能(功能需求)。

(4)性能测试:将系统与软件和硬件需求的剩余部分进行比较

(5)验收测试:确定系统是按照客户的预期运转的

(6)安装测试:确保系统将按照它应该的方式来运行(在用户环境下)

4.测试的方法—黑盒、白盒的概念?

黑盒测试:从外部观察测试对象,将其看作是一个不了解其内容的黑盒,在测试的时候向黑盒提供输入数据,并记录产生的输出。在这种情况下,测试的目标是确保每一种输入都被提交,并且观察到的输出与预期的输出相匹配。

白盒测试:将测试对象看作是一个透明的盒子,然后根据测试对象的结构用不同的方式来进行测试。例如,可以设计执行构件内所有语句或所有控制路径的测试用例。

 

5.什么是单元测试?什么是走查和检查?

走查:程序员向评审小组提交代码及其相关文档,然后评审小组评论他们的正确性。在走查的过程中,程序员领导并且掌控讨论。注意力集中在代码之上,而不是集中在编码者身上。

审查:评审小组按照一个事先准备好的关注问题清单来检查代码和文档。在审查的过程中,由一个小组主持人来单人会议的领导。

6.黑盒白盒方法各自的分类?测试用例的设计和给出方法。(课件)

黑盒:等价分类法、边界值分析法、错误猜测法、因果图法。

白盒:逻辑覆盖法、路径测试法。

7.黑盒白盒方法的分类,各种覆盖方法等。(课件)

8.考虑如何面对一个命题,设计和给出测试用例的问题。

9.集成测试及其主要方法的分类?(桩和驱动程序,课件)

1.自底向上集成:通过合并构件来测试较大型系统的流行方法

2.自顶向下集成:顶层构件通常是一个控制构件,独立进行测试,然后将被测构件调用的所有构件组合起来作为一个更大的单元进行测试,重复执行这种方法直到所有的构件都被测试。

3.一次性集成:

当所有构件都分别经过测试,再将他们合在一起作为最终系统进行测试看是否能够一次运行成功。

4.三明治集成:将自顶向下和自底向上结合起来,将系统看成三层,目标层处于中间,在顶层使用自顶向下,底层使用自底向上。

10.传统测试和OO测试有何不同?OO测试有何困难?

主要表现在测试用例生成、源代码分析、覆盖分析、测试开发。

1.需求可能在需求文档中表述,但是几乎没有什么工具支持表述为对象和方法的需求的验证。

2.帮助测试用例生成的大多数工具并不能处理用对象和方法表述的模型。

3.大多数源代码测度的定义是针对过程代码,而不是针对对象和方法。

4.由于对象的交互性是复杂性的根源,代码覆盖测度和工具在面向对象测试中的作用要比在传统测试中的作用小。

chapter09:

1.系统测试的主要步骤及各自含义?

功能测试、性能测试、验收测试、安装测试。

2.功能测试的含义及其作用?

作用:有效的功能测试具有很高的故障检测概率。

3.功能测试的基本指导原则?

1.具有很高的故障检测概率

2.使用独立与设计人员和程序员的测试小组

3.了解期望的动作和输出

4.测试合法和不合法输入

5.永远不要为了使测试更容易而去修改系统

6.指定停止测试标准。

4.性能测试的主要分类?含义与作用?

作用:

分类:压力测试、容量测试、配置测试、兼容性测试、回归测试、安全测试、计时测试、环境测试、质量测试、回复测试、维护测试、文档测试、人为因素测试。

5.确认测试,确认测试分类?

基准测试、试验性测试、并行测试。(p346)

6.什么是α测试?β测试?

试验性测试中,公司内部组织机构进行的内部测试叫α测试,而客户的试验成为β测试。

7.什么是安装测试?

 

 


喜欢 (2)or分享 (0)