软件工程完整版课件全书电子教案教材课件(完整)_第1页
软件工程完整版课件全书电子教案教材课件(完整)_第2页
软件工程完整版课件全书电子教案教材课件(完整)_第3页
软件工程完整版课件全书电子教案教材课件(完整)_第4页
软件工程完整版课件全书电子教案教材课件(完整)_第5页
已阅读5页,还剩231页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程概念企业级卓越人才培养第一章学习目标了解软件工程的概念理解软件工程的分类理解软件的生命周期理解UML的作用、组成软件的概述、特点软件的特点是:(1)软件具有抽象性。(2)软件没有明显的制造过程。(3)软件没有老化问题。(4)软件对计算机系统有依赖性。(5)软件的开发至今手工。(6)软件本身是复杂的。(7)软件成本相当昂贵。(8)相当多的软件工作涉及到社会因素。软件的分类按功能划分:按规模划分:按工作方式划分:按服务对象的范围划分:软件发展和软件危机计算机软件经历了三个发展阶段:程序设计阶段,约为50至60年代程序系统阶段,约为60至70年代软件工程阶段,约为70年代以后几十年来最根本的变化体现在:人们改变了对软件的看法。软件的需求是软件发展的动力。软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。软件发展和软件危机软件危机归结起来有:缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。软件需求在开发的初期阶段提得不够明确,或是未能得到确切的表达。开发过程没有统一的、公认的方法论和规范指导,参加的人员各行其事。未能在测试阶段充分做好检测工作,提交用户的软件质量差,在运行中暴露出大量的问题。软件开发中的方法

对于开发中小型系统的人员来说,理解优秀方法学的基础是非常必要的。我们可以从以下几个方面得知:方法学有助于对编码设置规则即使是了解方法学的基本步骤,也能增进对问题的理解,提高解决方案的质量。在每个阶段,方法学指定了下一步的工作,我们不会为下一步要干什么而烦恼方法学有助于编写出扩展性更高、可靠性更高、更容易调试的代码。一个优秀的方法能够解决如下问题:规划、调度、分配资源、工作流、活动、任务等等。软件开发的几个阶段软件生存周期的六个步骤。制定计划。需求分析。软件设计。程序编写。软件测试。运行/维护。软件的生命周期瀑布模型软件的生命周期螺旋模型软件的生命周期喷泉模式软件工程的目标付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用。软件工程的原则抽象。信息隐蔽。模块化。局部化。确定性。一致性。完备性。可验证性。面向对象方法学统一建模语言/统一过程(UML/UP)UML是一种用于描述、可视化和构架软件系统以及商业建模的语言。UP代表了在大型、复杂系统的建模领域得到认可的"优秀的软件工程方法"。

什么是UMLUML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。它具有以下一些特点:不是一种可视化的程序设计语言,而是一种可视化的建模语言。不是工具或知识库的规格说明,而是一种建模语言规格说明是一种表示的标准。不是过程也不是方法,但允许任何一种过程和方法使用它。什么是UML

所以我们可以说:UML是一种语言。UML是一种可视化的建模语言。UML是一种可用于详细描述的语言。UML是一种构造语言。UML是一种文档化语言。为什么需要UML

易于使用,表达能力强。与具体的实现无关。与具体的过程无关。简单并且可扩展。为OOA/D中涌现出的高级概念提供支持。与最好的软件工程实践经验集成。可升级具有广阔的适用性和可用性。有利于面对对象工具的市场成长。UML的发展探索阶段:Booch、Rumbaugh和Jacobson联合行动。UML的标准化:对象管理小组(OMG)在1997年1月提交UML1.0版的文档及其他资料。

工业化:继续促进统一建模语言的推广。

UML的组成

UML在软件开发中的应用

需求分析

UML的用例视图可以表示客户的需求。UML在软件开发中的应用

分析分析阶段主要考虑所要解决的问题,可用UML的逻辑视图和动态视图来描述。UML在软件开发中的应用

构造在构造或程序设计阶段,把设计阶段的类转换成某种面向对象程序设计语言的代码。UML在软件开发中的应用

测试对系统的测试通常分为单元测试、集成测试、系统测试和接受测试几个不同级别。总结

软件的概念、特点。软件生存周期的六个阶段。瀑布模型及其优缺点。软件工程的原则。UML的构成。用例视图、静态视图的概念和用途。静态视图企业级卓越人才培养第二章学习目标了解静态视图的作用理解静态视图包含哪些元素掌握类图、类关系类类元用来描述结构和行为特性的机制,它包括类、接口、数据类型、信号、组件、节点等等。关系在进行系统建模时,不仅要抽象出形成系统词汇的事物,还必须对这些事物间的关系进行建模。关系是事物间的联系。关系在类的关系中,最常用的有以下4种。依赖(Dependency)泛化(Generalization)关联(Association)实现(Realization)依赖依赖是按两个元素之间的关系,对一个元素(提供者)的改变可能会影响或提供消息给其他元素(客户)。

依赖关系依赖UML建模过程中,常用依赖指明一个类把另一个类作为它的操作的特征标记中的参数。当被使用的类发生变化时,那么另一个类的操作也会受到影响,因此这个被使用类此时已经有了不同的接口行为。

泛化泛化是一般事物(称为超类或父类)和该事物的较为特殊的种类(称为子类)之间的关系。子类继承父类的属性和操作,除此之外通常子类还添加新的属性和操作,或者修改了父类的某些操作。

泛化关系泛化泛化有两个主要的用途:定义多态、描述继承。关联关联是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。

关联关联在实际建模过程中,在关联实例中说明两个类间存在多少个相互连接是很重要的。修饰语意0…10或11为10…*或0…n0或更多1…*或1…n1或更多*或n0或更多实现实现是规格说明和其现实间的关系。它表示不继承结构而只继承行为。实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。

对照图在某一时刻一个系统特定的静态配置叫做快照。快照的图包含对象的图像,因此也叫对象图。实例在建立系统的静态视图的过程是对系统领域问题及其解决方案的分析和设计的过程。以“图书馆管理系统”为例来建立相应的静态视图。建立类图步骤建立类图的步骤如下:研究分析问题领域,确定系统的需求发现对象和对象类,明确类的属性和操作发现类之间的静态关系,一般与特殊关系,部分和整体关系,研究类之间的继承性和多态性设计类和联系绘制对象类图并绘制相应得说明类的生成读者类的基本信息名字邮编地址城市省份借书预留书籍书籍类的基本信息书名作者序列号类型

使用RationalRose绘制类图开始菜单打开“RationalRoseEnterpriseEdition”使用RationalRose绘制类图建立工程点击“SaveAs”,弹出如下对话框,输入项目名及其保存路径。

使用RationalRose绘制类图建立工程然后就可以看到如下图所示界面使用RationalRose绘制类图建立工程我们先创建一个类视图如下图所示:

使用RationalRose绘制类图建立工程

类视图名称修改为“Test”,并双击类视图,可以看到工具箱如下图所示:使用RationalRose绘制类图建立工程

点击工具箱中的类,在编辑区画出一个类,把NewClass改成BrowserInformation如下图所示:

使用RationalRose绘制类图建立工程

双击并添加方法getBrowerInformation():使用RationalRose绘制类图画UML图

用同样的方法创建Persistent类,然后单击工具栏上的“”图标,接着点击Persistent类,并延伸到BrowserInformation,表明相互继承的关系:

使用Visio2013绘制类图从开始菜单打开“MicrisoftVisio2013”使用Visio2013绘制类图在搜索栏中搜索“uml”,出现对话框使用Visio2013绘制类图点击“UML静态结构图”使用Visio2013绘制类图点击创建使用Visio2013绘制类图开始制作类图,把左边的类拖到右边使用Visio2013绘制类图双击里面的类名并更改为BrowerInformation,并用同样的方法创建Persistent类。然后把左边工具栏中的继承图标,这是两个类实现了继承总结静态视图的关键元素。类的定义及其在UML中的图形表示。最常用的4种类的关系:依赖(Dependency)、泛化(Generalization)、关联(Association)、实现(Realization)。

用例视图企业级卓越人才培养第二章学习目标了解用例视图的作用理解如何识别用例理解用例间的关系概述UML中的用例视图描述了一组用例、参与者以及它们之间的关系,因此用例图包括以下3个方面内容:用例参与者用例之间的关系参与者参与者(Actor,也称角色)是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者可以是人、另一个计算机系统或一些可运行的进程。

角色

参与者参与者是一个群体概念,代表的是一类能使用某个功能的人或事,不是指某个个体。参与者与系统进行通信的收、发消息机制,与面向对象编程中的消息机制很像。参与者可以分成主要参与者和次要参与者,也可以分成主动参与者和被动参与者。参与者在获取用例前要先确定系统的参与者,可以根据以下一些问题来寻找系统的参与者:谁或什么使用该系统交互时,它们扮演什么角色谁安装系统谁启动和关闭系统谁维护系统参与者在获取用例前要先确定系统的参与者,可以根据以下一些问题来寻找系统的参与者:与该系统交互的是什么系统谁从系统获取信息谁提供信息给系统有什么事情发生在固定的事件参与者在建模参与者过程中,记住以下要点:参与者对于系统而言总是外部的,因此它们在你的控制之外参与者直接同系统交互,这可以帮助定义系统边界参与者表示人和事物与系统发生交互时所扮演的角色,而不是特定的人或者特定的事物。一个人或事物在与系统发生交互时,可以同时或不同时扮演多个角色。例如,某研究生担任某教授的助教,同职业的角度看,它扮演了两个角色——学生和助教。参与者在建模参与者过程中,记住以下要点:每一个参与者需要有一个具有业务一样的名字,在建模中,不推荐使用诸如NewActor这样的名字。每个参与者必须有简短的描述,从业务角度描述参与者是什么。像类一样,参与者可以具有分栏,表示参与者属性和它可接受的事件。一般情况下,这种分栏使用的并不多,很少显示在用例图中。

用例图用例是一个叙述型的文档,用来描述参与者使用系统完成某个事件使的事情发生顺序。图形上的用例用一个椭圆来表示,用例的名字可以书写在椭圆的内部或下方。识别用例用例是一个叙述型的文档,用来描述参与者使用系统完成某个事件使的事情发生顺序。图形上的用例用一个椭圆来表示,用例的名字可以书写在椭圆的内部或下方。用例间的关系用例除了与其参与者发生关联外,还可以参与系统中的多个关系,这些关系包括:泛化关系、包含关系和扩充关系。

关系功能表示法关联参与者与其参与执行的用例之间的通信途径扩展在基础用例上插入基础用例不能说明的扩展部分用例泛化用例之间的一般和特殊关系,其中特殊用例继承了一般用例的特性并增加了新的特性包括在基础用例上插入附加的行为,并且具有明确的描述实例购买的商品入库;将积压的商品退给供应商;将商品移送到销售部门;销售部门将商品移送到仓库;实例管理员盘点仓库;供应商提供各种货物;用户查询销售部门的营销记录;用户查询仓库中所有变动记录。实例创建以下参与者。操作员管理员供应商商品领料人商品退料人实例建立如下用例:仓库进货仓库退货仓库领料仓库退料商品调拨仓库盘点实例建立如下用例:库存查询业务分析仓库历史记录查询供应商信息维护仓库信息维护用户管理实例对用例进行分类:操作员:仓库进货、仓库退货、仓库领料、仓库退料、商品调拨、用户管理。管理员:仓库进货、仓库退货、仓库盘点、商品调拨、库存查询、业务分析、仓库历史记录查询、供应商信息维护、仓库信息维护、用户管理。实例对用例进行分类:供应商:仓库进货、仓库退货。领料人:仓库领料。退料人:仓库退料。实例仓库信息系统的用例图总结在UML中用例图的用途。参与者的定义。用例的图形表示。用例的多个关系:泛化、包含、扩充。动态视图企业级卓越人才培养第四章学习目标了解动态视图包含哪些内容理解时序图的作用掌握活动图的作用时序图时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换时序图描述了类与类之间相互交换,以完成期望行为的消息。时序图的概念和内容我们可以看到时序图中包括如下元素:类角色、生命线、激活期和消息。时序图的用途在用例脚本的语境中将动态行为有效地可视化。用来表示用例中的行为顺序。时序图的用途时序图有别于协作图的特性。时序图有生命线时序图有激活期

时序图的建模技术

使用时序图对系统建模时,可以遵循如下策略。设置交互的语境,这些语境可以是系统、子系统、操作、用例和协作的一个脚本。通知识别对象在交互中扮演的角色,根据对象的重要性,将其从左向右的方向放在时序图中。设置每个对象的生命线。一般情况下,对象存在于交互的整个过程,但它也可以交互过程中创建和撤销。时序图的建模技术从引发某个交互的信息开始,在生命线之间按从上向下的顺序画出随后的消息。设置对象的激活期,这可以可视化实际计算发生时的时间点、可视化消息的嵌套。如果需要设置时间或空间的约束,可以为每个消息附上合适的时间和空间约束。给某控制流的每个消息附上前置或后置条件,这可以更详细地控制这个控制流。

协作图协作图对在一次交互中有意义的对象和对象间的链建模。协作图的一个用途是表示一个类操作的实现。协作图用各个角色的几何排列图形来表示角色之间的关系,并用消息来说明这些关系。活动图活动图是UML中描述系统动态行为的图之一,它用于展现参与行为的类的活动或动作。动作状态UML里,动作状态是以执行指定动作,并在此动作完成后通过完成变迁转向另一个障碍而设置的状态。这里所指出的动作有3个特点:原子性的、不可中断的、瞬时的。

活动状态活动状态的特点是:它可以被分解成其他子活动或动作状态。它能够被中断,占有有限的事件。活动状态如果某活动状态是只包括一个动作的活动状态,那它就是动作状态。动作状态是活动状态的一个特例。活动状态在UML中,动作状态和活动状态的图标没有什么区别,都是圆端的方框。只是活动状态可以有附加的部分,例如可以指定入口动作、出口动作、状态动作以及内嵌状态机。转移当一个动作状态或活动状态结束时,该状态就会转换到下一个状态,这就是无触发转移或称为自动转移。无触发转移实际上是没有任何特定的事件触发的转移,即当状态结束工作时就自动的发生转移。分支

活动图中的分支用来描述其他的程序结构 活动图中的分支用一个菱形表示,可以有一个进入转换和两个或多个输出转换。分叉和汇合建模过程中,可能会遇到对象在运行时存在两个或多个并发运行的控制流。在UML中,可以使用分叉把路径分成两个或多个并发流,然后使用结合,同步这些并发流。泳道

泳道将活动图的活动状态分组,每一组表示负责那些或的业务组织 在活动图里泳道区分了活动的不同职责,在泳道活动中,每一个活动都只能明确地属于一个泳道。

泳道活动图的用途活动图用于动系统的动态行为建模。活动图描述了从活动到活动的流。活动图实际上是状态图的特殊形式。在UML中,可以把活动图作为流程图来使用,用于对系统的操作建模。活动图的建模技术在活动图建模过程中,参照以下步骤进行:(1)识别要对其工作流进行描述的类;(2)对动态状态建模(3)对动作流建模(4)对对象流建模(5)对建模结果进行净化和细化。总结动态模型主要是建立系统的交互图和行为图。交互图包括时序图和协作图行为图则包括状态图和活动图时序图(SequenceDiagram)是强调消息时间顺序的交互图。时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换时序图中包括:类角色、生命线、激活期和消息等元素协作图对在一次交互中有意义的对象和对象间的链建模活动图是UML中描述系统动态行为的图之一,它用于展现参与行为的类的活动或动作泳道将活动图的活动状态分组,每一组表示负责那些或的业务组织项目管理企业级卓越人才培养第五章学习目标了解管理的意义理解管理中的多个过程理解计划和控制在项目管理中的重要性管理的意义软件公司中核心员工需要拥有两类知识:管理知识和技术知识。程序员应该既懂技术又懂一部分管理。管理的定义管理可以有很多角度的定义,一般而言,我们可以把管理理解成领导、也可以理解为决策、还可以理解为协调组织。管理是通过有效地计划、组织、控制和激励、领导等活动来协调人、财、物的配置以达到更好地组织目标的过程。管理的作用管理是一门软科学,它同时具有科学和艺术两方面的特点。科学的一面表现为它真实的反映了客观规律。艺术的一面表现在背熟了管理规则不一定能够进行有效地管理。

管理的作用培养一种管理理念,对于技术人员而言能有效地促进技术人员理解企业制度、岗位规范;能理解专业分工协作的前提条件和重要性;能在大的项目中有序地展开工作;时刻用时间、成本、质量来衡量自己的工作,改进不足,提高团队工作效率。让软件开发在和谐的环境高效率的组织中顺利的开展。

管理的原则统一领导和指挥。制度与纪律。权利与责任。公平原则。一般化管理一般化管理在这里是管理中一般都要涉及的一个基本活动。管理的基本流程。管理的基本流程要素分组。项目项目的定义。项目的特征。项目与运作的对比。项目与战略的关系。项目管理项目管理的定义。项目管理的过程。项目管理三角形。项目管理过程为了更好地管理项目我们把项目过程分为若干阶段:初始化阶段,计划阶段,执行阶段、监督与控制、收尾阶段。简单过程管理是:计划、执行、检查、总结。

初始阶段初始阶段主要任务是正式的启动一个新的项目。许多工作在项目正式启动之前已经完成了。这些工作不在项目过程之内。初始阶段计划阶段计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;

执行阶段计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;

监督和控制计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;

收尾阶段收尾阶段主要是有序结束各项工作。主要任务列表:结束项目;了结合同;

计划和控制

从项目管理(PMI)试题的分布可以看出,计划和监控都是重要的过程。

考试内容问题的比率项目初始过程8.5%项目计划过程23.5%项目执行过程23.5%项目监控过程23%项目收尾过程7%职业道德方面14.5%计划的重要性第一、通过制定计划,使得小组和有关管理人员对项目有关事项形成共识和事先约定。第二、通过计划,可以使得一些支持性工作以及并行工作及时得到安排,避免因计划不周造成各子流程之间的相互牵掣。第三、可以使项目实施人员明确自己的职责,便于自我管理和自我激励。计划的重要性第四、计划可以有效的支持管理,作为经理们对开发工作跟踪和检查的依据。第五、做好事先计划,就可以使注意力专心于解决问题,而不用再去想下一步做什么?第六、计划是项目总结,项目总结是把实际运行情况与项目计划不断比较以提炼经验教训的过程。制定项目计划制定项目计划的过程被称为项目策划。使用MicrosoftProject编制的文件可以称为计划进度表,可以用来规划项目时间进度,辅助项目跟踪。计划进度表的制定步骤是:工作分解和定义(WBS)、任务排序、活动历史估算、编制。制定项目计划制定项目计划的过程被称为项目策划。使用MicrosoftProject编制的文件可以称为计划进度表,可以用来规划项目时间进度,辅助项目跟踪。计划进度表的制定步骤是:工作分解和定义(WBS)、任务排序、活动历史估算、编制。控制控制的主要任务:设定控制标准确定检查时间安排合适人员选择适当方式控制的方式:检查抽查评审控制的内容:成本质量进度范围总结项目的定义项目的特征项目管理的定义和过程项目管理三角的构成项目过程的阶段项目实战——广告管理系统企业级卓越人才培养第六章学习目标掌握UML解决实际问题引言

这里通过一个广告管理系统的分析与设计,阐述如何通过UML降低开发难度和提高开发效率。基本特征和功能模块该系统具有以下一些特征:充分适应原有广告工作流程并进行合理的改进,通过系统提供的灵活的人员权限设置和全面的财务核算方式,实现真正的集团多报管理;基本特征和功能模块该系统具有以下一些特征:在实现广告订单的电子化、工作流程的数字化同时,帮助集团领导提高决策的科学化水平;基本特征和功能模块该系统具有以下一些特征:多套广告价目表的支持,使广告管理部门能在当前激烈的市场竞争中能采取更为灵活的价格策略;基本特征和功能模块该系统具有以下一些特征:通过对客户信息的管理,实现对客户广告走势和重要客户情况统计和分析。

基本特征和功能模块总体结构及功能模块:UML分析与实现UML是一种编制系统蓝图的标准化语言UML可以对大型复杂系统的各种成分可视化说明并构造系统模型UML还可以建立各种必要的文档UML分析与实现下面通过UML来分析并构造广告管理系统模型,并结合Rational统一过程加以描述。图形使用RationalRose工具软件绘制。业务建模和需求分析下图是广告管理系统层次的用例模型,只包含了最基本的UseCase模型,是系统的高层抽象。广告管理系统设计系统分析与设计是研究欲采用的实现环境和系统结构,结果是产生一个对象模型,也就是设计模型。系统结构设计系统主要有以下四个包:用户接口包(UserInterfacePackage)业务逻辑包(BusinessRulePackage)数据持久访问包(DataPersistencePackage)通用工具包(UserPackage)系统架构设计用户接口包(UserInterfacePackage)用户接口包在其他包的顶层次,为系统用户提供访问信息和服务。系统架构设计业务逻辑包(BusinessRulePackage)

该包是广告管理系统业务的核心实现部分,包括广告、合同、客户等。系统架构设计数据持久访问包(DataPersistencePackage)

该包实现数据的持久化,也就是与数据库交互,实现数据的存取、修改等操作。系统架构设计通用工具包(UserPackage)该包主要包括应用程序安全检查的类,可以为上面三个包提供安全检查。引言预订业务对普通客户的顺序框图系统详细设计财务业务对代理客户的协作框图系统详细设计划版业务的顺序框图系统详细设计财务业务对代理客户的协作框图系统详细设计部署图实现、测试和系统配置在系统编码前,需要考虑系统的实际部署情况,可以利用Rose的部署视图。系统采用三层逻辑结构:界面与业务逻辑分开,业务逻辑又与数据库访问逻辑分开。同时,部署视图还需要处理一些其他问题,如系统容错、网络带宽、故障恢复和响应时间。实现、测试和系统配置经过系统分析和设计后,就可以根据设计模型在具体的环境中实现系统;进而需要对系统进行测试和排错,保证系统符合预定的要求。测试结果将确认所完成的系统可以真正使用;最后完成系统配置,其任务是在真实的运行环境中配置、调试系统,解决系统正式使用前可能存在的任何问题。总结将UML应用于广告管理系统的建设,可以加速开发进程,提高代码质量,支持动态的业务需求。测试驱动开发简介企业级卓越人才培养第一章学习目标了解测试驱动开发的原理理解单元测试的作用和原理掌握JUnit框架什么是高质量的软件一个优秀软件一般要具备如下特性:满足用户的需求。合理进度、成本、功能关系。具备扩展性和灵活性。能够有效的处理例外的情况。保持成本和性能的平衡。能够可持续的发展。测试驱动开发测试为导向在成本上更经济。其原因有四:节约了设计的成本。减轻了测试的工作量。可以节省设计上的工作量。避免代码出现回归。优势测试驱动开发先考虑代码的使用需求。

对代码的内聚性的提高和复用都非常有益。测试用例代码就是对代码的最好的解释。测试驱动开发提供的测试集是信心的来源。保障代码的正确性,迅速发现、定位bug。原理

测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。传统的V模型测试驱动的X模型过程测试驱动开发的基本过程如下:明确当前要完成的功能。可以记录成一个TODO列表。快速完成针对此功能的测试用例编写。测试代码编译不通过。编写对应的功能代码。测试通过。对代码进行重构,并保证测试通过。循环完成所有功能的开发。原则测试列表。测试驱动。先写断言。可测试性。及时重构。测试范围、粒度那些重要或复杂的功能、核心的代码就应该编写更全面、细致的测试用例重点测试。测试范围没有静态的标准,应该可以随着时间改变。小步前进。怎么编写测试用例操作过程尽量模拟正常使用的过程。全面的测试用例应该尽量做到分支覆盖,核心代码尽量做到路径覆盖。测试数据尽量包括:真实数据、边界数据。测试语句和测试数据应该尽量简单,容易理解。为了避免对其他代码过多的依赖,可以实现简单的桩函数或桩类(MockObject)。如果内部状态非常复杂或者应该判断流程而不是状态,可以通过记录日志字符串的方式进行验证。

需要注意的一些问题测试必须自动化自动化测试的范围测试的分类测试的成本测试文化测试必须是自动化的手动测试可能引入错误。大量重复性的手动测试可能成本较高。手动测试的覆盖面不广。没有办法对组件进行隔离的测试。自动化测试的范围哪些应该进行自动化测试呢?最理想的情况是全部。测试一切可能是测试的基本原则,让一切测试都变成自动化则是测试驱动开发的准则。测试的分类单元测试集成测试系统测试验收测试测试的成本工作量估算方式的改变。项目进度。人员的主动性和勇气。建立测试文化测试文化测试同样需要重构,以及必须的文档。固定测试的目录组织和包组织。使测试成为日创建的核心步骤。测试是所有人的事情,而不仅是QA的事。单元测试单元测试是我们编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。单元测试的核心内涵:为了令代码变得更加完美。Junit历史在1997年,ErichGamma和KentBeck为Java语言创建了一个简单但有效的单元测试框架,称作JUnit。JUnit(www.J)是一个开源软件。所以,JUnit很快成了Java中开发单元测试的框架的事实标准。手写单元测试我们先写一个简单的类Calculator。我们可以编写一个小的命令行程序来判断返回值是否我们期望。我们把测试独立成一个方法。

了解单元测试框架所有单元测试框架都应当遵守的3条规则:每个单元测试必须独立于其他单元测试而运行。必须以单项测试为单位来检测和报告错误。必须易于定义要运行哪些单元测试。使用Junit测试在JUnit中的设计目标是:框架必须可以帮助我们编写有用的测试。框架必须帮助我们创建随着时间的过去依然保持有用的测试。框架必须通过复用代码降低我们编写测试的成本。总结测试驱动开发起源于XP法中提倡的测试优先实践。测试优先实践重视单元测试,强调程序员除了编写代码,还应该编写单元测试代码。测试驱动开发的基本思路就是通过测试来推动整个开发的进行。测试驱动开发的基本思想就是在开发代码之前,先编写测试代码测试驱动开发简介企业级卓越人才培养第二章学习目标掌握JUnit的框架组成掌握JUnit中的几个核心类的作用掌握利用JUnit框架编写测试类探索Junit核心若需编写更多的testcase时,我们要创建更多的TestCase对象。执行这些TestCase对象的时候,可以创建一个TestSuite的对象。由TestRunner来执行TestSuite。探索Junit核心TestCase(测试用例):扩展了JUnit的TestCase类的类。TestSuite(测试集合):一组测试。BaseTestRunner(测试运行器):执行testsuite的程序。探索Junit核心以上3个元素是JUnit框架的骨干。在正常情况下,只需要编写testcase,其它类会在幕后完成测试。

探索Junit核心testrunner可以执行测试并提供关于结果的统计信息。在JUnit中还提供了其他的TestRunner类,比如提供图形界面的junit.swingui.TestRunner类TestCase当创建一个测试类的时候,会先创建一个类,该类从TestCase类继承而来。其声明如下:publicabstractclassTestCase extendsAssert implementsTest

AssertAssert类提供了许多函数,帮助确定某个被测试的函数是否正常工作。通常,所有这些函数统统称为断言。它确定:某条件是否为真;两个数据是否相等或者不等,以及其他情况。下面将逐个介绍JUnit提供的每一个断言(assert)方法。Assert当断言为假,或者有错误了(遇到一个意料外的异常)的情况,通过JUnit的一些类来报告这些结果。当一个失败或者错误出现的时候,当前测试将会被终止,但是(位于同一个测试类中的)其他测试将会继续运行。断言是单元测试最基本的组成部分。assertEquals用来做相等性测试。这是使用的最多的断言形式,该方法有很多重载函数。任何对象都可以拿来做相等性测试:适当的相等性判断方法会被用来做这样的比较。对于原生类型(boolean,int,short等)和object类型也提供了不同的函数签名。

assertNull

验证一个给定的对象是否为Null(或者为非null),如果答案为否,则将会失败。assertSame

验证expected参数和actual参数所引用的是否为同一个对象,如果不是,将会失败。assertTrue

验证给定的二元条件是否为真,如果为假,将会失败。fail

上面的断言将会使测试立即失败,这种断言通常被用于标记某个不因该被到达的分支。使用断言在继续测试之前先修复失败的测试。

把问题分离出来。需要一种能够运行所有测试(或者一组测试、某个特殊子系统等等)的辅助方法。TestCase成员方法描述countTestCases计算run(TestResultresult)所执行的TestCase的数目(由Test接口规定)createResult创建默认的TestResult对象getName获得TestCase的名字Run运行TestCase并收集TestResult中的结果(由Test接口规定)runBare运行测试序列,但不执行任何特殊功能,比如自动发现test方法runTest重载以运行测试并断言其状态setName设置TestCase的名字setUp初始化,例如打开网络连接。这个方法会在测试执行之前被调用(由Test接口规定)teardown销毁,例如关闭网络连接。这个方法会在测试执行之后被调用(由Test接口规定)toString返回TestCase字符串表示TestCase成员JUnit的TestCase基类提供两个方法供你改写,分别用于环境的建立和清理:

protectedvoidsetUp();protectedvoidtearDown();testCase会在运行每个测试之前调用setUp,并且在每个测试完成之后调用tearDown。TestCase成员

把不止一个测试方法放进同一个TestCase可以共享这些代码。执行过程如下图所示:TestCaseTestSuite被可以运行一个或多个testcase,testrunner负责启动TestSuite,而要运行哪些testcase则由TestSuite来决定。任何测试类都会包含一个名为suite的静态方法。

publicstaticTestsuite()

;

TestSuite若我们没有提供自己的TestSuite,testrunner会自动创建一个。缺省的TestSuite会扫描你的测试类,找出所有以test开头的方法。缺省的TestSuite在内部为每个testXXX方法都创建一个TestCase的实例。TestSuiteJUnit框架执行了如下动作:创建一个TestSuite。创建一个TestResult。执行测试方法。

TestSuite

TestRunner先寻找TestCalculator类中的suite方法。若有则调用它,若没有则创建一个默认的TestSuite对象。其UML图如下:

TestSuite

如果我们在测试代码中显式定义了suite方法,那么,测试会调用改suite方法,其UML图如下:

TestResultTestResult负责收集TestCase的执行结果。

JUnit区分失败和错误。失败是测试时可预期的,错误则是不可预料的。当遇到错误,好的分析步骤是:检查环境检查测试检查代码总结JUnit的核心类。测试类继承自TestCase类。Assert是TestCase的基类。断言是单元测试最基本的组成部分。setUp和tearDown方法的用途。TestSuite的用途。suite的静态方法。TestResult的用途。JUnit自动化企业级卓越人才培养第三章学习目标了解自动化测试的原理理解Ant的作用和功能掌握buildfile的编写Ant简介Ant是构建Java程序的事实标准

Ant是管理及自动化的卓越工具Ant的概念

Apache的Ant是一个自动化编译和测试程序构建工具,是构建java程序的事实标准。

Ant是个运行工具的构架,可以用来配置制和启动编译器、生成代码、执行JDBC查询、自动化整套测试。Ant的概念Ant的优点跨平台性。操作简单。Ant可以集成到开发环境中。Ant的概念

Ant是一个开源软件,安装于配置都非常简单。在Ant的主页http:///中可下载最新的Ant版本。

Ant在Windows系统中配置过程如下。(1)右击我的电脑图标,"属性"|"高级",如下图所示。Ant的概念

(2)单击环境变量按钮,出现环境变量对话框,单击系统变量选项框的新建按钮,出现新建系统变量的对话框。(3)在变量名和变量值文本矿中分别填上"ANT_HOME"和Ant的根目录,然后单击确定按钮。如下图所示。

(4)在环境变量对话框中双击PATH变量名,在变量值后面加上C:\apache-ant-1.5.4\bin,最后单击确定按钮。当然,我们还要设置好JAVA_HOME变量。Ant的目标、项目、属性、及任务Ant允许你为每个项目建立一个构建文件以帮助你管理构建过程。下面是一个典型的项目层次结构。src存放源文件class存放编译后的文件lib存放第三方jar包Ant的目标、项目、属性、及任务Ant的要素如下:构建文件(buildfile)目标(target)属性要素(propertyelement)

Ant的目标、项目、属性、及任务在buildfile中的标记<project>标签<target>标签<delete>标签<mkdir>标签<javac>标签<jar>标签<java>标签Ant的目标、项目、属性、及任务<project>标签<?xmlversion="1.0"encoding="ISO-8859-1"?><projectname="MyTask"basedir="."default="jar">…</project>

每个构建文件对应一个项目。<project>标签是构建文件的根标签。每个构建文件对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有自己的构建文件。Ant的目标、项目、属性、及任务<target>标签<?xmlversion="1.0"><project> <targetname="clean"description="Deleteallgeneratedfiles"> … </target> … <targetname="compile"description="CompiletheTask"> … </target> …</project>

一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。Ant的目标、项目、属性、及任务<delete>标签<target> <deletedir="${class

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论