对于开发中小型系统的人员来说,理解优秀方法学的基础是非常必要的。我们可以从以下几个方面得知:方法学有助于对编码设置规则即使是了解方法学的基本步骤,也能增进对问题的理解,提高解决方案的质量。在每个阶段,方法学指定了下一步的工作,我们不会为下一步要干什么而烦恼方法学有助于编写出扩展性更高、可靠性更高、更容易调试的代码。一个优秀的方法能够解决如下问题:规划、调度、分配资源、工作流、活动、任务等等。软件开发的几个阶段软件生存周期的六个步骤。制定计划。需求分析。软件设计。程序编写。软件测试。运行/维护。软件的生命周期瀑布模型软件的生命周期螺旋模型软件的生命周期喷泉模式软件工程的目标付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用。软件工程的原则抽象。信息隐蔽。模块化。局部化。确定性。一致性。完备性。可验证性。面向对象方法学统一建模语言/统一过程(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如下图所示:
双击并添加方法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,也称角色)是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者可以是人、另一个计算机系统或一些可运行的进程。
角色
用例图用例是一个叙述型的文档,用来描述参与者使用系统完成某个事件使的事情发生顺序。图形上的用例用一个椭圆来表示,用例的名字可以书写在椭圆的内部或下方。识别用例用例是一个叙述型的文档,用来描述参与者使用系统完成某个事件使的事情发生顺序。图形上的用例用一个椭圆来表示,用例的名字可以书写在椭圆的内部或下方。用例间的关系用例除了与其参与者发生关联外,还可以参与系统中的多个关系,这些关系包括:泛化关系、包含关系和扩充关系。
时序图的建模技术
协作图协作图对在一次交互中有意义的对象和对象间的链建模。协作图的一个用途是表示一个类操作的实现。协作图用各个角色的几何排列图形来表示角色之间的关系,并用消息来说明这些关系。活动图活动图是UML中描述系统动态行为的图之一,它用于展现参与行为的类的活动或动作。动作状态UML里,动作状态是以执行指定动作,并在此动作完成后通过完成变迁转向另一个障碍而设置的状态。这里所指出的动作有3个特点:原子性的、不可中断的、瞬时的。
活动状态活动状态的特点是:它可以被分解成其他子活动或动作状态。它能够被中断,占有有限的事件。活动状态如果某活动状态是只包括一个动作的活动状态,那它就是动作状态。动作状态是活动状态的一个特例。活动状态在UML中,动作状态和活动状态的图标没有什么区别,都是圆端的方框。只是活动状态可以有附加的部分,例如可以指定入口动作、出口动作、状态动作以及内嵌状态机。转移当一个动作状态或活动状态结束时,该状态就会转换到下一个状态,这就是无触发转移或称为自动转移。无触发转移实际上是没有任何特定的事件触发的转移,即当状态结束工作时就自动的发生转移。分支
活动图中的分支用来描述其他的程序结构活动图中的分支用一个菱形表示,可以有一个进入转换和两个或多个输出转换。分叉和汇合建模过程中,可能会遇到对象在运行时存在两个或多个并发运行的控制流。在UML中,可以使用分叉把路径分成两个或多个并发流,然后使用结合,同步这些并发流。泳道
泳道将活动图的活动状态分组,每一组表示负责那些或的业务组织在活动图里泳道区分了活动的不同职责,在泳道活动中,每一个活动都只能明确地属于一个泳道。
管理的原则统一领导和指挥。制度与纪律。权利与责任。公平原则。一般化管理一般化管理在这里是管理中一般都要涉及的一个基本活动。管理的基本流程。管理的基本流程要素分组。项目项目的定义。项目的特征。项目与运作的对比。项目与战略的关系。项目管理项目管理的定义。项目管理的过程。项目管理三角形。项目管理过程为了更好地管理项目我们把项目过程分为若干阶段:初始化阶段,计划阶段,执行阶段、监督与控制、收尾阶段。简单过程管理是:计划、执行、检查、总结。
初始阶段初始阶段主要任务是正式的启动一个新的项目。许多工作在项目正式启动之前已经完成了。这些工作不在项目过程之内。初始阶段计划阶段计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;
执行阶段计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;
监督和控制计划阶段主要任务确定项目范围,开发项目管理计划,安排项目活动。计划阶段主要任务列表:开发项目计划;开发范围管理计划;创建WBS;定义活动;为活动分配资源;制定成本预算方案;确定质量计划;创建沟通计划;开发风险管理计划;
收尾阶段收尾阶段主要是有序结束各项工作。主要任务列表:结束项目;了结合同;
计划和控制
从项目管理(PMI)试题的分布可以看出,计划和监控都是重要的过程。
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图如下:
如果我们在测试代码中显式定义了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在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中的标记
每个构建文件对应一个项目。
一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。Ant的目标、项目、属性、及任务