UML发展历史公认的面向对象建模语言出现于20世纪70年代中期,到了80年代末发展极为迅速。据统计,从1989年到1994年,面向对象建模语言的数量从不到10增加到50多种。各位语言的创造者极力推崇自己的语言,并不断地发展完善它。但由于各种建模语言所固有的差异和优缺点,使得使用者不知道该选用哪种语言。其中比较流行的有Booch,Rumbaugh(OMT),Jacobsom(OOSE),Coad-Yourdon等方法。OMT擅长分析,Booch擅长设计,OOSE擅长业务建模。Rumbaugh于1994年离开GE加入Booch所在的Rational公司,他们一起研究一种统一的方法,一年后,UnifiedMethod0.8诞生,同年,Rational收购了Jacobson所在的ObjectoryAB公司。经过三年的共同努力,UML0.9和UML0.91于1996年相继面世。此后UML的创始人Booch等邀请计算机软件工程界的著名人士和著名的企业如IBM,HP,DEC,Microsoft,Oracle等对UML进行评论,提出修改意见。1997年1月Rational公司向OMG递交了UML1.0标准文本。1997年11月OMG宣布接受UML,认定为标准的建模语言。UML目前还在不断发展和完善。什么是UML(UnifiedModelingLanguage)统一:表示是一种通用的标准,它被OMG(ObjectManagementGroup)认可,成为软件工业界的一种标准。UML表述的内容能被各类人员所理解,包括客户、领域专家、分析师、设计师、程序员、测试工程师及培训人员等。他们可以通过UML充分理解和表达自己所关注的那部分内容。建模:即建立软件系统的模型。为说明建模的价值,Booch给出一个类比:盖一个宠物窝棚、修一个乡间别墅和建一座摩天大楼。建立一个简单的系统,例如盖一个宠物窝棚,模型可有可无;建立一个比较复杂的系统,例如修一个乡间别墅,模型的必要性增大;建立一个高度复杂的系统,例如建一座摩天大楼,模型必不可少。语言:表明它是一套按照特定规则和模式组成的符号系统,它用半形式化方法定义,即用图形符号、自然语言和形式语言相结合的方法来描述定义的。我们不过多介绍UML中的元素和规则,主要结合建模过程介绍UML各种图的用法。UML有9种图,它们结构不同,但是对同一领域不同角度的观察。UP(UnifiedProcess)UML是建模语言,它的表示和规则能够用来为系统进行面向对象的建模,但并没有定义一种标准的开发过程。开发过程是指实施于软件开发和维护中的阶段、方法、技术、实践及相关产物(计划、文档、模型、代码、测试用例和手册等)的集合。行之有效的软件开发过程可以提高开发软件组织的生产效率、提高软件质量、降低成本并减少风险。UP(UnifiedProcess)是目前市场上领先的软件开发过程之一,它提供了一种严谨的途径来分派开发组织的任务和职责。传统的软件开发过程想要开发一个软件系统,开发组可能希望马上投入编码工作,但他们可能对要对什么编码还没完全搞清楚。开发组必须要经历一个软件开发过程,在开发过程中要经历一定的步骤。在进行程序设计前开发人员必须要充分理解所要解决的问题,这需要专门有人负责需求的分析。进行了需求分析之后,还必须有人将分析产品转化为设计产品。然后程序员再根据设计产品编制代码,这些代码在经过测试和部署后,最终成为目标系统。上面对开发过程中各个阶段的简单描述可能会使大家觉得开发过程中各个活动是按照时间顺序一个接着一个顺序展开的。事实上,早期的开发方法就是采取这种方式,它被称为瀑布模型,它规定了软件生命周期上各阶段的软件工程活动:制定计划、需求分析、软件设计、编码、测试、运行和维护。各阶段严格按顺序进行,前一阶段的任务没有完成,不能进入下一阶段工作。传统软件开发过程的缺点这种方式下的开发过程被分割开来,分析人员将分析结果转交给设计人员,设计人员再把设计结果交给开发人员。它不利于各类人员协同工作及共享信息。它不利于在项目开发过程中对问题的逐步理解。例如在这种方法中要求系统的需求分析在软件设计前完成,并给出明确的、所有的需求定义,这在实际上往往是做不到的。无论分析人员怎样在开始进行调查研究与分析,都不可能对未来系统的一切需求都定义得完整无缺。往往在以后的设计阶段或编码阶段,才发现原来对系统的需求定义必须进行修改或补充。越在后期发现问题,越难补救,会导致大量费用的投入,并可能降低软件的质量。面向对象的软件开发过程面向对象的软件开发过程强调开发阶段的无缝集成,例如,系统分析员和设计人员,通常要往返进行分析和设计,为程序设计人员提供坚实的基础。程序设计人员反过来也要与分析人员和设计人员交互,共享重要的见解、修改设计、充实代码。这种方法的优点是随着对问题理解的深入,项目小组能及时发现问题,建立起更完善的系统。缺点是分析和设计时间长,不能很快看到代码。UP的核心原则由用例驱动以体系结构为中心迭代化开发用例驱动用例是捕获用户需求的方法,它在整个软件开发过程中起着驱动的作用。分析员使用用例建立需求模型,设计人员根据用例进行设计,测试人员使用用例作为测试的依据。以体系结构为中心体系结构对于软件如同建筑物的结构对于建筑物一样,体系结构的核心是根据某种规则将内容在宏观上作一个分隔,确保它们在后续的活动中稳定地被充实,同时促进内容更易于被复用。系统的构造、管理均围绕系统的体系结构进行。常见的体系结构有层次结构和MVC结构。迭代化开发首先介绍迭代的概念。迭代的思想很简单,通常来说,人们发现解决小问题比解决大问题容易,因此我们把软件开发项目划分成许多小的项目,它们更容易管理和成功完成。每个小项目是一个迭代,每个迭代产生最终系统部分完成的版本,最终产生完整的系统。在每个迭代中都包括正常软件项目开发的所有元素:需求、分析、设计、实现、测试等。每个迭代都是一个独立完整的开发小单元,都有预先规划的进入准则和产出结果,遇到问题能够及时处理并加入必要的变更。每个迭代结束时都需要对所获得的系统模型进行评价,判断是否已满足预定目标和要求,决定是否需要继续下一轮的迭代。另外每个迭代还可产生一个可以执行的原型系统,可投入试运行,以判断是否符合要求。系统在一次次的迭代中逐渐精化与完善,直至完成系统的开发,形成最终的软件产品。UP的软件开发过程UP的软件开发过程被划分为四个阶段:初始阶段细化阶段构建阶段移交阶段初始阶段探讨软件开发的必要性和可行性;捕获基本需求以界定系统范围;识别关键任务。细化阶段细化用例,确定系统的基本架构。细化包括分析、设计、编码和测试文件。通过迭代的方法建造软件系统。每个迭代包括5个核心工作流,每个迭代将得到一个更准确的接近未来系统的模型。构建阶段完成所有的需求、分析和设计,进行大量的编码。移交阶段它是系统正式投入运行前的阶段,要做的工作有系统的β测试、系统性能的调整、创作用户手册和其他文档、人员培训等。在上述每个阶段中,都存在一个或多个迭代,在每个迭代中,都执行5种核心工作流:需求工作流、分析工作流、设计工作流、实现工作流、测试工作流。每个阶段迭代的精确数目依赖于项目的规模,但每个迭代不应超过2~3个月。例如,一个中等规模的项目大约持续18个月,有6~9个迭代。RationalRose工具好方法一定要有好的工具支持才能取得预期的好结果,UML也不例外。由于UML本身是一个以图形化图符为主的建模方法,因此UML支持工具就显得更为重要了。工具的作用不仅在于它可以帮助人们很方便地实现图示模型的绘制,实现模型的更改,更重要的是,工具使得人们可以全面地对模型进行整个开发过程的管理。当软件规模迅速扩大时,工具的作用就显得更为突出,因为人们自己已经无法管理非常庞大的模型了。RationalRose正是这样的一种工具,它是由Rational公司在Booch,Rumbaugh,Jacobson三位软件工程专家的主持下研制的面向对象的CASE(Computer-AidedSoftwareEngineering)产品,由于有三位大师及Rational公司的鼎力相助,使得RationalRose可以随着UML的改版随时更新,因此它是目前最流行、使用最广泛的CASE工具。根据实现环境的不同,RationalRose有支持不同语言的add-in版本,可以支持VisualC++、VisualBasic、Smalltalk、Ada、Java、Oracle8、PowerBuilder等。RationalRose的这些add-in版本可以支持采用相应的语言建立应用系统模型和生成源代码,以及实现正向和逆向工程。RationalRose可以应用于Windows9x、WindowsNT、Sun/OS、IBM/OS2等平台。RationalRose详细描述系统的内容和工作方法,包括许多不同框图,使项目小组成员(包括客户、设计人员、项目经理、测试人员等)可以从不同角度观察系统,例如:客户和项目管理员用用例图确定项目范围项目管理员用用例图和文档将项目分解成可管理的小块分析人员和开发人员用顺序图和协作图了解系统的逻辑流程、系统中的对象及对象间的消息开发人员用类图和状态图取得系统各部分的细节及其相互关系的信息部署人员用组件图和部署图显示要创建的可执行文件、DLL文件和其他组件,以及网络上的进程和设备及其相互间的连接整个项目小组用模型来确保代码遵循了需求,代码可以回溯到需求Howthisbookandthiscoursewillbenefityou:Designrobustandmaintainableobjectsystems设计健壮的和易于维护的对象系统Followaroadmapthroughrequirements,analysis,design,andcoding提供从需求确定、系统分析、设计到编码这个过程的引路图UsetheUMLtoillustrateanalysisanddesignmodels使用UML描述分析和设计模型Improvedesignsbyapplyingthe“gang-of-four”andGRASPdesignpatterns运用“四人模式”和GRASP模式改进设计Learnefficientlybyfollowingarefinedpresentation通过一套精细的表述方式进行卓有成效的学习Learnfromarealisticexercise通过符合实际的例子辅助学习Translatetocode学会把设计转换成代码Designalayeredarchitecture设计出一种分层的系统体系结构Designaframework设计出系统框架IntendedAudienceDevelopersandstudentswithexperienceinanobject-orientedprogramminglanguage,butwhoarenew—orrelativelynew—toobject-orientedanalysisanddesign对面向对象程序设计语言有一定使用经验,但还不熟悉或不很熟悉面向对象分析和设计技巧的学生和开发人员Studentsincomputerscienceorsoftwareengineeringcoursesstudyingobjecttechnology在计算机科学或软件工程课程中学习对象技术的学生ThosewithsomefamiliarityinOOA/DwhowanttolearntheUMLnotation,applypatterns,orwhowanttosharpenanddeepentheiranalysisanddesignskills对面向对象分析与设计有一定熟悉程度,并想进一步学习UML表示法和运用设计模式的人,或者想磨练和提高自己的分析和设计技巧的人PrerequisitesKnowledgeandexperie