软件工程与软件测试.ppt
it软件工程与软件测试软件工程与软件测试林琳 软件技术教研室学习情境学习情境4-主要内容主要内容v软件工程发展历程v常见过程模型v面向对象技术vUML概述vRationalRose的安装与使用vRose与UMLv图书管理系统的UML建模软件工程发展历程软件工程发展历程软件工程的发展历史软件工程的发展历史v从20世纪60年代中期到70年代中期,软件业进入了一个发展时期。此时出现了所谓的软件公司。v1968年,出现“软件工程(SoftwareEngineering)”这一术语。v30余年来,尽管软件的一些毛病仍然无法根治,但软件的发展速度却超过了任何传统工业,并未出现真正的软件危机,这的确是前人的先见之明。如今软件工程成了一门学科。软件的发展历程软件的发展历程软件工程软件工程“软件作坊软件作坊”个体化的软件环境个体化的软件环境上世纪上世纪60年代中期年代中期上世纪上世纪70年代年代上世纪上世纪80年代年代面向对象软件开发面向对象软件开发软件规模小,编写者和软件规模小,编写者和使用者往往是同一个人,使用者往往是同一个人,除程序清单外,无其它除程序清单外,无其它文档资料。文档资料。面向对象技术的应用改面向对象技术的应用改变了软件界的开发方式。变了软件界的开发方式。计算机应用领域越来越广,系统规模越计算机应用领域越来越广,系统规模越来越大,逻辑越来越复杂,而且功能上来越大,逻辑越来越复杂,而且功能上需要不断更改和扩充。软件开发需要多需要不断更改和扩充。软件开发需要多个开发者一起开发,开发人员按各自的个开发者一起开发,开发人员按各自的爱好和习惯进行工作,没有统一的标准爱好和习惯进行工作,没有统一的标准可以遵循,以手工艺的方式形成可以遵循,以手工艺的方式形成“软件软件作坊作坊”来进行。来进行。1968年,北大西洋公约组织的计算机科学家,年,北大西洋公约组织的计算机科学家,在联邦德国召开国际会议,讨论软件危机问在联邦德国召开国际会议,讨论软件危机问题。正式提出题。正式提出“软件工程软件工程”这个名词这个名词新兴新兴工程学诞生了。工程学诞生了。用用“工程化工程化”的思想作指导,可以大大减少的思想作指导,可以大大减少软件开发成本并提高软件开发质量,软件开发成本并提高软件开发质量,“工程工程化化”为人们开辟了新的道路,为人们开辟了新的道路,“软件工程学软件工程学”蓬勃发展起来。蓬勃发展起来。软件危机软件危机软件工程软件工程“软件作坊软件作坊”个体化的软件环境个体化的软件环境上世纪上世纪60年代中期年代中期上世纪上世纪70年代年代上世纪上世纪80年代年代面向对象软件开发面向对象软件开发随着硬件成本的降低,电脑开始变得普及,人们对软件的需求越来越高,而这时候的软件行业还处于“手工作坊”阶段,软件的产量和质量远远不能满足人们的需要,于是出现了一系列严重问题,被称为“软件危机”拉布雷阿的焦油坑焦油坑(Mural of La Brea Tar Pits)过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。软件工程的产生软件工程的产生v为了解决“软件危机”,于是出现了“软件工程”学科,有众多专家学者致力于软件工程方法学的研究,并将研究结果应用于实践中进行检验,解决了软件开发中存在的各种问题,使得软件制造的质量大大提高。软件工程的生命周期软件工程的生命周期v经典的软件工程思想将软件开发分成以下5个阶段:需求捕获(RequirementsCapture)阶段系统分析与设计(SystemAnalysisandDesign)阶段。系统实现(Implementation)阶段。测试(Testing)阶段维护(Maintenance)阶段从项目的角度还加入了问题定义阶段可行性分析阶段 软件工程:技术层次软件工程:技术层次质量目标质量目标质量目标质量目标 a“quality”focusa“quality”focus过程模型过程模型过程模型过程模型 process modelprocess model方法方法方法方法 methodsmethods工具工具工具工具 toolstools常见过程模型常见过程模型常见过程模型常见过程模型v瀑布模型v快速原型模型v增量模型v螺旋模型v喷泉模型过程模型的选择过程模型的选择v首先,了解每一种过程模型的特点和适用性。v其次,根据软件项目的特点选择合适的过程模型。v值得注意的是,由于现实中项目的复杂性,通常会在一个项目中选择几种过程模型嵌套使用。瀑布模型瀑布模型 优点:1)可强迫开发人员采用规范的开发方法;2)严格规定每个阶段必须提交的文档;3)要求每个阶段的提交工作产品都必须通过QA的验证。缺点:缺乏灵活性,变动成本高。适用于需求非常明确的情况。快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求。原型又可分为抛弃型原型和演进型原型。适用:适用:主要适用于项目需求不太明确,或需主要适用于项目需求不太明确,或需要减少项目的不确定性的情况。要减少项目的不确定性的情况。快速原型模型快速原型模型增量模型特点:每次提交的都是一个满足用户需求子集的可运行的产品优点:用户每次都可以得到一个可完成部分功能的可用的产品,并有足够的时间去学习和适应新产品;困难之处:对软件体系结构的设计要求较高,体系结构必须是开放的。螺旋模型螺旋模型图2.6 简化的螺旋模型基本思想:使用原型及其它方法来尽量降低风险。可看作是在每个阶段之前都增加了风险分析过程的快速原型模型。喷泉模型喷泉模型 迭代迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。图2.8 喷泉模型案例分析案例分析1v辅导员张老师为了方便管理学生,他委托学生小明帮助他开发一个学生管理系统,用来管理他所带的班级的学生信息,该系统仅供张老师一个人使用,系统功能不是很复杂。张老师对自己需要的系统功能有了明确的认识,并且他本身也对软件开发有一定程度的了解,与小明的沟通过程非常的顺利。在这种情况下,如果你是小明,你会选用哪种过程模型?案例分析案例分析2v张扬是某大学软件技术专业的学生,在寒假中,他为他的邻居开发了一个小型的超市管理系统。他的邻居从来不懂软件开发,也不知道超市管理系统应该是什么样的。那么你建议张扬采用哪种过程模型呢?面向对象技术面向对象技术面向对象技术(面向对象方法面向对象技术(面向对象方法OOSD)v软件工程方法学传统方法学SA+SD+SP面向对象方法学OOA+OOD+OOP开发软件的开发软件的方法不同方法不同类的作用:类的作用:1.分类:用于区分不同事物。2.是创建对象的模板:产生对象。关联关联单向关联在现实世界中,对象之间通常会发生在现实世界中,对象之间通常会发生某种联系,程序世界中用某种联系,程序世界中用“关联关联”来来表示对象之间的联系。表示对象之间的联系。关联关联对象之间还可以以多种方式发生关联对象之间还可以以多种方式发生关联关联关联类也可以发生关联:一个类可以和多个类关联类也可以发生关联:一个类可以和多个类关联关联的多重性关联的多重性v在关联中一个类的对象可以对应另一个类的多少个对象。v一个教师多个学生v一门课程多个教师v一辆轿车4个车轮vv书P23图2-2表示出了关联的表示方法关联的多重性关联的多重性国家首都1个工作站窗口0个或1个公司雇员0个或多个1个或多个用户目录1+汽车车门12,41到2个或4个聚集聚集计算机系统计算机系统计算机由许多不同计算机由许多不同类型的构件组成,类型的构件组成,它是一个聚集体。它是一个聚集体。聚集是对象之间的另外一种关联。聚集是对象之间的另外一种关联。面向对象其他概念面向对象其他概念组成(强聚集)组成(强聚集)聚集对象和它的组成对象聚集对象和它的组成对象之间有强关联时,我们把之间有强关联时,我们把这种聚集叫做组成。这种聚集叫做组成。比如说,树没有树叶的话,就不能成为一棵树,因此树比如说,树没有树叶的话,就不能成为一棵树,因此树叶和树之间就是组成关系。叶和树之间就是组成关系。面向对象其他概念面向对象其他概念v抽象v封装v消息传递v继承v多态性怎么得到类和对象?怎么得到类和对象?抽象抽象v把事物共同点抽取出来,以统一的方式进行概要描述的过程;v从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征;v过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。抽象的例子抽象的例子洗衣机类洗衣机类vWashingMachine类,它是创建新的洗衣机实例的模板。属性 brandNamemodelNameserialNamecapacity操作acceptClothes()acceptDetergent()turnOn()turnOff()抽象的例子抽象的例子洗衣机类洗衣机类v模型中的属性和操作越多,模型就越接近实际。属性 brandNamemodelNameserialNamecapacitytrapmotormotorSpeed操作acceptClothes()acceptDetergent()turnOn()turnOff()acceptBleach()controlWaterLevel()是不是现实世界中类的所有属性和方是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢?法都需要在系统中进行抽象呢?v当然不是啦!作为一个分析人员,要根据用户实际的业务情况进行选择。v例如在课堂考勤系统中,教师类只需要有姓名、职称、性别这些属性,因为这些是用户需要的。v而在教职工人事管理系统中,教师类就需要姓名、出生年月、入职时间、所属单位、职称、性别、婚姻状况等属性。1.从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征;2.过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。让对象细节受到保护让对象细节受到保护封装封装v引入问题:现在让我们来编写一个java小程序,实现在命令行模式下输出以下形式的著名诗词春晓,你会怎么做?*春晓*春眠不觉晓,*处处闻啼鸟。*夜来风雨声,*花落知多少。你可能会这么写你可能会这么写1.publicclassChunXiao12.publicstaticvoidmain(Stringargs)3.(*春晓);4.(*春眠不觉晓,);5.(*处处闻啼鸟。);6.(*夜来风雨声,);7.(*花落知多少。);8.9.很简单,但是有时候并不是越简单越好!现在,如果想把*改变为*,该怎么办?改5次吗?【代码】Chunxiao1.java你可能还会这么写你可能还会这么写vpublicclassChunXiao2vpublicStringbuildStar()vreturn*;vvpublicstaticvoidmain(Stringargs)vChunXiao2c=newChunXiao2();vSystem.out.println(c.buildStar()+春晓);vSystem.out.println(c.buildStar()+春眠不觉晓,);vSystem.out.println(c.buildStar()+处处闻啼鸟。);vSystem.out.println(c.buildStar()+夜来风雨声,);vSystem.out.println(c.buildStar()+花落知多少。);vv利用方法buildStar()来产生,这样每次只用修改一个地方了我们把产生的功能封装封装了起来,对外界使用者来讲,不需要知道方法内部的细节,只需要知道调用这个方法可以产生就行了。【代码】Chunxiao2.java让对象细节受到保护让对象细节受到保护封装封装v当一个对象执行自己的操作时。它对外界隐藏了操作的细节。封封装装可可以以提提高高重重用用性性,并并且且让让程程序序易易于于维维护护封装的程度问题封装的程度问题v还是春晓。刚才我们将产生*的方法写在了类ChunXiao2中,根据前面所讲,类中的方法代表的是类的操作,而产生*和春晓没有直接关系,这样的封装看起来好像不合理,怎么改进一下呢?StarFactoryStarFactoryString build()String build()ChunXiao3【代码】StarFactory.java Chunxiaojava封装的不同,重用也不同了封装的不同,重用也不同了v现在我们不仅可以在春晓里面用*了,还可以在静夜思里面用*了StarFactoryStarFactoryString build()String build()ChunXiao3JingYeSi【代码】JingYeSi.java面向对象重要概念面向对象重要概念消息传递消息传递给对象发消息,让它做的更多给对象发消息,让它做的更多消息传消息传递递v还是春晓。有些同学不喜欢刚才的排版,全部是*,没有创意。既然StarFactory类是制造*的工厂,那么它应该有更多的产品啊,不能一直是*吧。怎么办?改良版StarFactory2StarFactory2StarFactory2String build(int i)String build(int i)ChunXiao4【代码】StarFactory2.java Chunxiao4.java面向对象重要概念面向对象重要概念继承继承在客观世界中,类是有在客观世界中,类是有着层次关系的,那么程着层次关系的,那么程序世界中,也要能够表序世界中,也要能够表现这种层次。于是,有现这种层次。于是,有了继承。了继承。用继承改变刚才的春晓用继承改变刚才的春晓v自从有了StarFactory,春晓的世界变得丰富起来。既然*可以创造,那么也应该可以吧。还有、呢?全部都可以。那么让我们创建GraphicFactory类吧。它表示创造上述图形的总厂,而它的子类用来创造每一种图形。StarFactoryStarFactoryString build()String build()GraphicFactoryGraphicFactoryString build()String build()PentacleFactoryPentacleFactoryString build()String build()SquareFactorySquareFactoryString build()String build()DiamondFactoryDiamondFactoryString build()String build()所有的子类都有build()方法,代表创造不同图形的操作创造*创造创造创造【代码】GraphicFactory.java StarFactory.java DiamondFactory.java PentacleFactory.java Chunxiao5.java面向对象重要概念面向对象重要概念多态性多态性v不同的类具有相同名称的操作。门窗盒子打开打开多态性的表现多态性的表现StarFactoryStarFactoryString build()String build()GraphicFactoryGraphicFactoryString build()String build()PentacleFactoryPentacleFactoryString build()String build()SquareFactorySquareFactoryString build()String build()DiamondFactoryDiamondFactoryString build()String build()回顾一下:回顾一下:v类和对象v关联、聚合、组成v抽象v封装v消息传递v继承v多态用到的代码目录:按出场顺序,可以到用到的代码目录:按出场顺序,可以到1.ChunXiao1.java2.ChunXiao2.java3.ChunXiaojava4.StarFactory.java5.JingYeSi.java6.ChunXiao4.java7.StarFactory2.java8.GraphicFactory.java9.StarFactory.java10.DiamondFactory.java11.PentacleFactory.java12.Chunxiao5.java了解这些概念的意义了解这些概念的意义v运用面向对象的概念可以帮助我们:理解客户的领域知识用客户能够理解的术语来说明你对问题的理解准确的建立模型顺利的进行OOA,OOD,OOP任务任务1v利用今天所学习的内容,构造自己的Factory类,利用封装抽象继承的知识实现一个命令行程序(内容和表现形式不限)UML概述概述什么是什么是UML?v统一建模语言(UnifiedModelingLanguage)v一种定义良好、易于表达、功能强大且普遍适用的可可视视化化建模建模语语言言。做做软软件件为为什么要建模?什么要建模?v我们回顾刚才讲的盖房子的过程,就是施工队把王大爷的需求变成了房子。而软件开发也很类似,做软件其实就是把客户的需求变成实际软件产品的过程。出租车公司的需求出租车计费系统变成从客从客户户需求到需求到产产品的品的过过程往往会出程往往会出现这样现这样的的问题问题:v为了保证做出来的软件是满足客户要求的,我们至少要保证以下两点:v1.客户的需求被正确的获取。v2.客户的需求被正确的传递。出出现现新新问题问题:如何保:如何保证证以上两点?以上两点?1.怎怎样样保保证证客客户户的需求被正确的的需求被正确的获获取?取?v解决办法:v使用科学的方法进行需求分析。2.怎么怎么样样保保证证客客户户的需求会正确的被的需求会正确的被传递传递下去呢?下去呢?游戏规则:两个小组A和B(每个组5人),分别得到客户需求,A组以文档形式传递,B组以口头形式传递。新新问题问题:如何:如何记录记录?v我们在整个软件开发的过程中,使用文档化,保证客户需求的正确传递。v换句话说,需求分析人员要把客户的需求记录下来,给设计人员,而设计人员要把设计记录下来,交给代码人员直到产品交给用户。小游小游戏戏告告诉诉我我们们:语言文字?语语言文字的二言文字的二义义性性v例子1:v小明,把你的笔记本拿给我。v例子2:v小胡桃真难吃。利用符号利用符号规规范范进进行行软软件需求、件需求、设计设计的描述的描述v由于语言和文字存在很大的二义性,不同人的理解对其产生很大的影响,因此在软件开发中,需要有一套所有人都接受的符号规范进行软件需求描述、设计描述由此来保证用户的需求在传递中,不会产生二义性。v这就像在盖房子时需要画工程一样的道理。v图纸大楼vUML模型软件系统回回顾顾一下一下刚刚才的分析才的分析过过程程v为了让开发的软件令用户满意。v所以需要正确获取需求,并且需求被正确传递。v所以在开发过程中需要文档化。v又因为文档化的时候使用自然语言文字会产生二义性。v所以需要符号规范进行描述,即需要建模。正确获取需求,正确传递需求软件令用户满意文档化建模为为什么要学什么要学习习UML?v作为一个专业的软件行业从业人员,学习UML很重要。v自身发展:程序员、测试员系统分析员、系统架构师UML语言概述语言概述v1UML的历史v2UML包含的内容v3UML的定义v4UML的应用领域为什么需要为什么需要UML?客户系统分析员其他人员开发人员UML模型1 UML的历史的历史v面向对象的分析与设计(OOA&OOD)方法的发展在20世纪80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其做了进一步的发展,并最终统一为大众所接受的标准建模语言。v公认的面向对象建模语言出现于20世纪70年代中期对象是问题域或实现域中某些事物的一个抽象。v1996年6月和10月分别发布了两个新的版本,即UML0.9和UML0.91,并将UM重新命名为UML(UnifiedModelingLanguage)。UML的开发者倡议并成立了UML成员协会。UML的诞生的诞生创始人 Grady BoochGrady(IBMfellow)因其在软件架构、软件工程和软件建模方面的杰出贡献而在国际上享有盛名。自Rational于1981年创建以来,他就一直担任IBMRational的首席科学家。Grady于2003年3月荣获IBM名士(IBMfellow)的称号。Booch方法的力量在于其丰富的符号体系,包括:.类图(类结构静态视图).对象图(对象结构静态视图).状态转移图(类结构动态视图).时态图(对象结构动态视图).模块图(模块体系结构).进程图(进程体系结构)UML的诞生的诞生创始人 Ivar JacobsonIvar JacobsonIvarJacobson博士是Objectory方法的发明者,也是瑞典ObjectoryAB公司的创始人。Jacobson博士是两本影响深远的畅销书的主要作者:面向对象的软件工程一种用例驱动方法(1992年计算机语言生产力奖获得者)和对象的优势采用对象技术的业务过程再工程。Jacobson将usecase模型与其它五种系统模型关联:.领域对象模型。usecase模型根据领域来表示。.分析模型。usecase模型通过分析来构造。.设计模型。usecase模型通过设计来具体化。.实现模型。该模型依据具体化的设计来实现usecase模型。.测试模型。用来测试具体化的usecase模型。UML的诞生的诞生创始人 James RumbaughJames Rumbaugh JamesRumbaugh博士是享誉全球的软件开发方法学家。Jim一直是引导UML未来开发的领袖,他提出了许多有关UML的概念。他与Rational的其他软件领袖一起工作在各个领域,比如Rational统一过程和实时开发方法学。自从2003年IBM收购了Rational之后,Jim就一直致力于推动IBM建模工具的开发。Rumbaugh的OMT方法将开发过程分为四个阶段:.分析.系统设计.对象设计 .实现UML发展历史发展历史2 UML包含的内容包含的内容v作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。(1)UML语义描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致和通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的表达方法所造成的影响。此外UML还支持对元模型的扩展定义。(2)UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。3 UML的定义的定义v1.UML的组成UML由视图(View)、图(Diagram)、模型元素(ModelElement)和通用机制(GeneralMechanism)等几个部分组成。v2.UML的建模机制:UML有两套建模机制:静态建模机制和动态建模机制。静态建模机制包括用例图、类图、对象图、包、组件图和配置图。动态建模机制包括消息、状态图、时序图、协作图、活动图。UML的组成的组成v模型模型是一个特定系统的完整描述。视图模型图模型和图模型和图Use CaseDiagramsUse CaseDiagrams用例图用例图ScenarioDiagramsScenarioDiagrams协作图协作图StateDiagramsStateDiagrams构件图构件图ComponentDiagramsComponentDiagrams部署图部署图StateDiagramsStateDiagrams对象图对象图ScenarioDiagramsScenarioDiagrams状态图状态图Use CaseDiagramsUse CaseDiagrams顺序图顺序图StateDiagramsStateDiagrams类图类图活动图活动图模型库模型库小例子小例子v用UML图来描述一台洗衣机。v一台洗衣机应该具备的属性:品牌,比如海尔。模式,比如全自动,半自动。序列号,比如AS19980909容量,比如5Lv一台洗衣机操作包括:装入衣物装入洗衣粉开电源关电源v一台洗衣机的功能:浸泡,洗涤,漂洗,脱水v人使用洗衣机来洗衣服。类图类图v类(class):一类或一组具有类似属性和共同行为的事物。类名属性名操作名类的图示洗衣机类的图示品牌模式序列号装入衣物装入洗衣粉容量开机关机对象图对象图对象名:类名匿名对象某台具体的洗衣机就是洗衣机类的一个对象。比如:小明家的海尔洗衣机用例图用例图v用例(usecase):从用户的观点对系统行为的一个描述。v用来从用户的观察角度收集系统需求。v用例图表达系统的外部事物(参与者)与系统的交互,它表达了系统的功能,即系统所提供的服务。v整个软件项目的开发可以采用UseCase驱动的方式进行。这个用例图描述了用户使用洗衣机洗衣服。状态图状态图v在任一给定的时刻,一个对象总是处于某一特定的状态。v状态图主要表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。起始状态中间状态结束状态开始结束浸泡洗涤漂洗脱水洗衣机的状态图顺序图的定义顺序图的定义v在一个运行的系统中,对象之间要发生交互,并且这些交互要经历一定的时间。v顺序图表达的正是这种基于时间的动态交互。重点是完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序。:活动者对象发送的消息自调用返回的消息顺序图顺序图v洗衣机的例子:定时器(timer)注水的进水管(waterpiper)装衣服的洗涤缸(drum)1浸泡定时2注水3储水4停止注水5洗涤定时6.反复旋转洗涤7.排脏水8.停止洗涤9.漂洗定时10.注水11储水12.反复旋转洗涤14.停止漂洗1排脏水15.脱水定时16.顺时针旋转17.停止脱水协作图协作图v协作图协作图通过对象之间的连接和它们相互发送的消息来显示参与交互的对象。:活动者对象类1:发送的消息2:自调用3:返回的消息协作图的图例协作图的图例1,5,9,15由定时器完成2,4,10由定时器调用注水管完成2,10由注水管调用洗衣缸完成6,7,8,12,13,14,16,17由定时器调用洗衣缸完成交互图的应用交互图的应用v顺序图和协作图都是交互图,它们既是等价的,又是有区别的。v顺序图和协作图都能等价的表现系统运行中对象通过消息发生的交互行为。v顺序图表示了时间的消息序列,便于分析交互的时序,但没有表示静态对象关系,顺序图可以有效地帮助人们观察系统的顺序行为。v协作图着重表示一个协作中的对象之间的联系和消息。活动图活动图v活动图实质上是一种流程图,只不过表现的是从一个活动到另一个活动的控制流。活动图描述活动的序列,并且支持对带条件的行为和并发行为表达。开始初始化条件判断并发1并发2结束同步成功失败洗涤缸往返旋转15分钟排掉脏水洗涤缸停止旋转构件图构件图v组件图代表系统的一个物理实现块,代表逻辑模型元素如类、接口的物理打包。部署图部署图v显示基于计算机系统的物理体系结构。UML2.0中的新图中的新图v组成结构图(compositestructurediagram)v交互纵览图(interactionoverviewdiagram)v计时图(timingdiagram)组成结构图组成结构图v从类的内部来审视这个类。交互纵览图交互纵览图计时图计时图4 UML的应用领域的应用领域vUML的目标是以面向对象图的方式来描述任何类型的系统。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。vUML模型可作为测试阶段的依据。系统通常需要经过单元测试、集成测试、系统测试和验收测试。不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用部件图和协作图;系统测试使用用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。Rational Rose的安装的安装 安装前的准备 安装的步骤 2.1 建模概建模概论论。v模型的作用就是使复杂的信息关联简单易懂,它使使用者容易洞察复杂的原始数据背后的规律,并能有效地将系统需求映射到软件结构上去。v建模的意义重大,“分而治之”是一个古老而有效的概念。可以想象,把特别复杂而困难的问题细化分解之后,一次只是设法解决其中一个,事情就变得容易多了。vRose是美国的Rational公司的面向对象建模工具,利用这个工具,可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C+、Java、VB和Oracle等语言和系统的代码。Rational 系列产品简介系列产品简介vRational系列工具贯穿于整个软件开发生命周期,覆盖了分析设计、需求管理、配置管理、测试管理、缺陷管理、功能测试、性能测试、单元测试等方面。以下是一些常用的Rational工具:1、Robot用于功能回归测试和性能测试测试脚步的自动生成和手工修改2、TestManager是一个测试管理工具,其中有测试计划、测试用例、测试执行的管理,性能测试的运行场景在这里部署3、Purfiy用于白盒测试,测试C、C、java程序的内存泄漏4、purCoverage代码覆盖测试工具,用于检查测试用例是否完全覆盖了被测试程序、序,或者覆盖率等5、ClearCase配置管理工具6、ClearQuestBug管理工具和Project集成7、SiteCheck网站连接检查工具,用于检查网站的坏连接,快速实用8、Rose分析设计工具开发设计人员必用的工具9、Rup文档描述,Rational统一开发过程描述与CMM紧密相关Rational 系列产品简介系列产品简介vRationalApplicationDeveloperforWebSphereSoftware用于架构和建模、模型驱动开发、组件、组件测试、运行时分析活动的工具。vRationalProfessionalBundle提供企业级桌面工具,以便设计、构建和测试J2EE/门户/面向服务的应用程序。vRationalRoseDeveloperforUNIX提供行业领先的模型驱动开发工具。vRationalRoseTechnicalDeveloper一个模型驱动开发解决方案,针对Java、C、C自动进行从设计到代码的转换。vRationalRoseXDEDeveloperforJava为基于J2EE的系统提供完整的可视化设计和开发环境。vRationalRoseXDEDeveloperforVisualStudio为基于.NET的系统提供完整的可视化设计和开发环境。vRationalRoseXDEDeveloperPlus为基于J2EE和基于.NET的系统提供可视化设计和开发环境。vRationalSoftwareArchitect利用UML为模型驱动开发提供整合设计和开发支持。vRationalSoftwareModeler支持UML可视化建模/设计,从不同的视图编制系统文档。vRationalSuiteDevelopmentStudioforUNIX合并屡获殊荣的开发工具,帮助人们更快速地构建更好的软件。vRationalSuiteforTechnicalDevelopers支持诸如实时和嵌入式技术应用程序的可视化开发。vRationalWebDeveloperforWebSphereSoftware简化和加速了Web、Web服务和Java开发。安装前的准备安装前的准备v安装Rose需要Windows2000/WindowsXP及其以上版本,并且如果是Windows2000则要确认已经安装了ServerPack2。v安装Rose,必须先得到Rose的安装包。建议购买Rational公司的正版软件,Rational现已被IBM收购,大家可以下载Rose的试用版。v的版本是用于教学使用的破解版软的版本是用于教学使用的破解版软件注意:仅供教学和学习使用,不得用件注意:仅供教学和学习使用,不得用于任何商业用途于任何商业用途安装的步骤安装的步骤v双击启动RationalRose2003的安装程序,进入安装向导界面。v单击【下一步】按钮,这里选择第2项即【RationalRoseEnterpriseEdition】。v单击【下一步】按钮,选择【DesktopinstallationfromCDimage】选项,表示创建一个本地的应用程序而不是网络的。v继续单击“下一步”按钮,进入安装向导界面。v单击【Next】按钮,进入产品声明界面。v继续单击【Next】按钮,进入协议许可界面,选中【Iacceptthetermsinthelicenseagreement】单选按钮即可。v继续单击【Next】按钮,进入安装路径设置界面。v设置好安装路径开始安装。v系统安装完毕,单击【Finish】按钮后,会弹出注册对话框,要求用户对软件进行注册破解方法破解方法v将文件rational_perm.dat拷贝到rational安装的根目录下的common目录即可.Rose的使用介绍的使用介绍Rational Rose使用介绍。使用介绍。vRationalRose主界面。v用RationalRose建模v设置全局选项v框图设计1 Rational Rose主界面主界面标题栏菜单栏工具栏工作区状态栏Rational Rose界面界面标准工具条浏览区文档描述窗口状态条图形工具条图形窗口Rose 标准工具条标准工具条vRose的工具条独立于当前打开的图形窗口界面建立新的模型存储模型或目录复制打印浏览文档浏览交互图浏览状态机图浏览前一幅图放大取消操作打开已存在的模型剪切粘贴内容感知帮助浏览类图浏览组件图浏览配置视图缩小缺省窗口浏览双亲图2 用用Rational Rose建模建模创建模型保存模型发布模型3 设置全局选项设置全局选项v全局选项可以通过菜单【ToolsOptions】进行设置,如图右图所示v接下来可以选择字体和颜色设置4 框图设计框图设计v1.创建UseCase(用例图)右键单击浏览器中的UseCaseView;选择弹出的菜单中的【NewUseCaseDiagram】,如图所示OOSE(JimRumbaugh)4 框图设计框图设计v.打开UseCase图(1)从浏览器中的视图中选择;(2)双击UseCase框图打开。或者通过菜单实现:(1)选择菜单【BrowseUseCaseDiagram】,在弹出窗口中进行选择,如图所示(2)在包列表(Package)中选择框图所在的包;(3)在UseCase列表框中选择所要打开的框图;(4)单击【OK】按钮打开。4 框图设计框图设计删除框图(1)在浏览器中右键单击框图;(2)在弹出菜单中选择【Delete】并确定,如图2-41所示。4 框图设计框图设计v新建一个UseCase框图以后,可以在如图2-42所示的设计页面中设计UseCase图。图中左边部分是UseCase的工具栏,右边部分是进行图形化建模的面板。对于工具栏,可以进行定制。如果看不到需要的工具按钮,可以通过菜单【ViewToolbarsConfigure】进行设置,如图所示,这里不仅可以对用例图,也可以对其他图的快捷工具栏内容进行定制。完成任务完成任务2第一个设计第一个设计UML语言初览语言初览1 概述 2 UML中的事物3 UML中的关系4 UML中的视图5 UML中的图1 概述概述 vUML用来描述模型的内容有3种,分别是事物(Things)、关系(Relationships)和图(Diagrams),而这3种内容下面又有具体的划分引入案例:用来分辨模型的种内引入案例:用来分辨模型的种内容容图这是一个类图,它描述的三个类:手机类,音乐手机类,手机类其中,音乐手机类和手机类是手机类的子类关系这个空心三角形箭头表示了一种泛化关系,它用来表示子类对父类的继承事物这个长方形表示一个类,其中包括类的属性,