《UML课程——福州大学计算机系.ppt》由会员分享,可在线阅读,更多相关《UML课程——福州大学计算机系.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象分析与设计(UML)授课教师:刘秉瀚联系电话:83716525Email:内容提要l第一部分 内容概要:介绍面向对象软件开发所使用的过程和技术,讲解UML的基础知识及其应用 1.基本概念和背景知识 2.UML语言详述 3.UML对象分析设计l第二部分 Rose的使用:介绍支持UML的CASE软件开发工具Rational Rosel第三部分 学习实例:结合实例,应用面向对象思想,分析UML的应用方法与技巧2参考书面向对象分析与设计(UML2.0版)l美MikeO,Docherty 著 俞志翔 译l清华大学出版社l介绍面向对象的软件开发所使用的过程和技术,描述了UML语言以及UML在面向对
2、象的软件系统分析与设计中的应用UML基础、案例与应用 美Joseph Schmuller 著 李虎 王美英 万里威 译l人民邮电出版社l通俗易懂UML 与 Rational Rose2002从入门到精通l美Wendy Boggs Michael Boggs著 邱仲潘 等译l电子工业出版社l很大篇幅介绍Rose的使用,适于入门UML参考手册l最经典的书籍,由三剑客编写,适于精通 3l资源链接中国UML论坛:大量有关UML的资源和讨论Rational公司了解UML和Rose进展的站点资源链接4考试方式l40%-笔试l60%-课程设计5基本概念及背景知识l软件开发方法概述l面向对象的系统分析与设计l
3、UML(Unified Modeling Language)诞生6软件开发方法概述 方法学(过程、方法):指开发项目通常应遵循的一系列规则,其中可能包含文档的描述、设计模式及其他按某种顺序产生的产品。7方法学的优势开发中小型系统l有助于对编码设置规则。l增进对问题的理解,提高解决方案的质量。l有助于在提交源代码之前找出概念错误和实践性的错误。l能明确指定下一步工作。l有助于编写出扩展性更高(可用于解决其他问题)、可靠性更高(容易修改)、更容易调试(有较多的说明)的代码。开发大型项目l文档说明:开发的每个阶段提供全面的说明,完成的系统不会艰涩难懂。l等待时间减少:由于工作流、活动的相互依赖性更容
4、易理解,资源等待工作做的可能性也减少了。l工作能及时交付,且不超过预算。l人员之间有更好的交流:好的方法学建立在逻辑和常识的基础之上,所有参与者较容易抓住其根本,因此,开发更有序,误解和浪费资源的情况也较少。l可重复性:类似项目可重用。l更准确的成本。8软件开发中的经典阶段l需求:需求:需求捕获就是找出新软件要达到的目标,包含两方面:业务建模与系统需求建模。l分析:分析:分析表示理解我们要处理的商务。在设计解决方案之前,需要了解相关实体、它们的属性和相关关系。l设计:设计:在设计阶段,要确定如何解决问题。系统设计把系统分解为逻辑设计子系统(过程)和物理设计子系统(计算机和网络)。l规范:规范:
5、规范是按合同设计的、至关重要的底层规则,用来描述编程组件的期望行为。如:需求阶段的结果是系统必须做什么的规范;分析的结果是我们要处理什么事务的规范,等。l实现:实现:编写代码,形成子系统。子系统之间协同工作,形成整个系统。l测试:测试:软件完成后,根据系统需求对其进行测试,检测系统是否符合最初目标。l部署:部署:将硬件和软件交付给最终用户,并提供手册和培训材料。l维护:维护:投入运行后,对系统进行修改和完善。9软件开发阶段的关键问题l需求阶段:需求阶段:什么是我们的上下文?要达到什么目的?l分析阶段:分析阶段:要处理什么实体?如何确保有正确的实体?l系统设计阶段:系统设计阶段:如何解决问题?在
6、完成的系统中需要什么硬件和软件?子系统设计阶段:子系统设计阶段:如何实现解决方案?源代码和支持文件有哪些?l规范阶段:规范阶段:哪些规则控制着组件之间的接口?可以去除模糊,确保正确吗?l实现阶段:实现阶段:如何编写符合规范要求的组件?如何编写漂亮代码?l测试阶段:测试阶段:完成的系统满足要求吗?系统能否被攻破?l部署阶段:部署阶段:系统管理员必须做什么?如何培训最终用户?l维护阶段:维护阶段:可以找出和更正错误吗?可以改进系统吗?10软件开发方法概述l瀑布方法学l螺旋式方法学l迭代式方法学l递增式方法学l合并方法学l面向对象方法学11瀑布开发维护部署测试实现规范设计分析需求12瀑布模型的优点l
7、使早期的手工作坊式的软件开发转变为软件工程l消除非结构化软件、降低软件复杂度l有一套严格的计划、步骤、规格、方法,保证软件产品达到预期的质量要求l20世纪70年代以来得到广泛的传播13瀑布模型的缺点:僵化l瀑布模型要求:各阶段要遵守严格的顺序。l瀑布模型要求:预先定义并“冻结”软件需求。l实际情况是:软件开发往往在反复实践中完成。l实际情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时14瀑布模型适用于:l重复某种区别很小的开发。l作为一个架构,来学习软件开发中使用不同的技术:尽管瀑布方法对于实际的开发来说过于简单,但仍包含逻辑顺序的经典阶段,适合于学习。l是
8、螺旋方法学中的一遍过程。l作为支持迭代方法学的架构。l用于开发人员较少的小项目的快速开发。如:原型、概念证明或快速应用程序开发等。15螺旋式方法学规范规范分析分析设计设计需求需求实现实现测试测试部署部署维护维护在完成了一次循环后,就增进了对问题域和解决方案的理解,还使用户参与进来,这样用户就可以更正我们对最终系统中包含的事务或功能的误解。在经过三四遍的开发过程,完成系统后,就可以全面测试和部署系统了。16与瀑布相比,问题少:l用户参与整个生命周期;l每个人都可以看到开发人员的工作;l可以调整改动的次数和每次改动所花的时间;l比较适合于软件开发的创新性。不完美之处:l只是把瀑布开发过程进行了三四
9、次,尽管问题越来越小,但并没有消失。l不灵活,在经典阶段要按照有序的方式进行。l如果发现错误,必须在下一遍开发过程中才能更正。螺旋式方法学17迭代方法学规范规范分析分析设计设计需求需求实现实现测试测试部署部署维护维护允许重复各阶段,根据需要前后移动或来回移动。把软件从早期阶段传递给下述完备、使所有用户满足的整体系统。有三个原则避免混乱:经典阶段提醒我们应该在每个阶段做什么,向什么方向移动。经典阶段的工作中产生的制品(图、描述、代码等)不应抛弃,应在进入部署阶段的过程中逐步改进。支持所选方法学的软件生产工具和表示法有助于保持制品的一致性,并在一个地方保存所有制品。18递增式方法学l在首次交付的系
10、统版本(1.0)中,将包含最基本、最重要的功能。在以后的某个时间交付1.1版本,其中包含附加的功能(替代1.0)。之后,在对整体进行大的修改,交付2.0版本。这将延续至系统的生命周期。l能满足不断变化的需求,适应市场的变化。时间发布1.01.12.02.119合并方法学l在最高层上,根据递增式方法学,必须规划一系列递增部分。l在每个递增部分,螺循式方法学建议,开发每个递增部分至少应进行二遍。l在每一遍中,瀑布方法学制定了各个阶段和它们的顺序。l在每一个子瀑布中,迭代式方法学允许重复各个阶段,直至满足需求为止。迭代式方法学还允许一发现问题就更正它。时间发布1.01.12.02.120软件设计准则
11、l认识抽象认识抽象:建立软件的设计模型时常采用分层抽象的办法。在最高的抽象层次上,可以采用问题的环境语言概括地描述问题的解法;在较低层次上,则采用过程化的方法描述问题的解法。l模块化模块化:模块化把一个复杂的软件系统的设计问题转化为若干个较小的、容易处理的模块的设计问题,便于分别解决。l信息屏蔽和局部化信息屏蔽和局部化:信息隐蔽是指每个模块的实现细节(过程和数据)对于其它模块是隐蔽的和不能访问的。信息局部化是指把一切关系密切的软件元素物理地就近安置。l结构化程序设计结构化程序设计:采用自顶向下逐步求精方法。基本控制结构:顺序、选择、循环。l软件规范软件规范:当今国际和国内都制订了一系列的软件规
12、范,对软件开发的目标、开发方法、开发过程、软件文档、质量标准等都给出了明确的规定。21面向对象技术 面向对象是一种新的软件工程方法,新的程序设计范型l基本技术:使用对象、类、继承、封装、消息等基本概念进行程序设计和实现l基本思想:尽可能地运用人类的自然思维方式来构造软件系统。现实世界的问题是由客观实体和实体之间的联系构成的,对象就是客观实体的抽象。22面向对象技术的基本观点l客观世界是由对象组成的。l具有相同类型数据和相同操作的对象可以归并为一类,对象是类的一个实例。类可以产生对象。l类可以派生子类,子类继承父类的特性。l对象之间通过消息传递相互联系。软件工程学家认为:面向对象=对象+类+继承
13、+通讯23面向对象的软件工程(OOSE)方法l面向对象的分析(OOA)l面向对象的设计(OOD)l面向对象的编程(OOP)l面向对象的测试(OOT)l面向对象的维护(OOSM)24传统软件系统分析与设计存在的问题1、问题域和系统责任、问题域和系统责任:问题域是指待开发的系统的应用领域,也称为业务领域。系统责任是指待开发的系统应具备的职能。问题域与系统责任密切相关,但两者侧重点不同。准确、透彻地理解问题域与系统责任是软件系统开发的首要任务。但要做到这一点很不容易,其原因有:软件开发人员往往不是领域专家,对业务领域的理解深度有限,而参与系统分析的领域专家又往往对软件开发的一些要求和方法不熟悉,难以
14、恰当地归纳和提供软件系统分析所要求的领域知识。迫切需要有效的方法和工具能够简单明了地描述待开发软件的问题域与系统责任。252、人员交流与通讯障碍、人员交流与通讯障碍:软件开发是一项创造性的思维活动,在软件开发过程中人员的交流十分频繁。软件开发项目的有关人员包括用户、领域专家、系统分析员、软件设计员、程序员、测试员、项目管理员等,需要经常交流,探讨系统的需求,明确软件成分的定义,协商系统的结构与衔接,进行工作的交接等,因而,软件工程是“面向人”的。通讯障碍常是人员交流的一个困难。例如,用户、领域专家或项目管理员看不懂、不明白软件开发人员表达问题的概念、术语、表示法,反之亦然。需要有一套通用的思维
15、方法和便于交流的语言,包括系统的模型、术语、表示法、文档书写格式等。263、系统需求变化、系统需求变化:在软件开发过程中系统的需求常不断地发生变化。这种变化可能由多种原因引起。最常见的是用户对系统的要求发生了改变。在软件开发之初,用户对系统的需求认识可能不够深入,随着软件开发的进展,用户提出对早期的系统需求进行修改和补充;也可能是客观情况发生了变化,用户提出新的需求。其它如经费、技术因素、竞争因素等都可能引起系统需求的变化。一个好的软件开发方法和技术要能有效的应付系统需求的变化。274、软件重用、软件重用:软件重用是提高软件开发效率、改善软件质量的重要途径。正如一座房屋由许多门、窗、墙、楼板等
16、构件构成,一台机器由许多零部件构成一样,一个软件系统也是由许多软件构件构成的,其中很大部分可以复用已有的软件构件,无须重复设计和编程。需要解决重用构件的提取和制作、重用构件库的组织、重用构件的检索、重用构件的组装等技术问题。28面向对象方法的优点l按照人类的自然思维方式,面对客观世界建立软件系统模型。有利于对问题域和系统责任的理解,有利于人员交流。l对需求变化的适应性。把最稳定的部分,即对象作为构筑系统的基本单位,而把容易发生变化的部分,既属性与服务,封装在对象之内,对象之间通过接口联系,使得需求变化的影响尽可能地限制在对象内部。l可维护性好。l支持软件重用。对象所具有的封装性和信息屏蔽等特性
17、,使它容易实现软件重用。类可以产生实例对象,对象类可以派生出新类,这些就实现了对象类的数据结构和操作代码的软构件重用。29面向对象的软件开发语言与工具l1981推出的Smalltalk-80l面向对象的C/C+、Basic、Pascal、Fortran、Lisp、ADA、Java等lMicroSoft公司的Visual C+、Visucal Basicl计算机辅助软件工程(CASEComputer Aided Software Engineering)lRational Rose一个面向对象的且支持UML的CASE工具30面向对象的系统分析与设计方法 -面向对象中的基本概念对象 (Object
18、)/类(Class)抽象 (Abstraction)继承 (Inheritance)多态性(Polymorphism)封装 (Encapsulation)消息 (Message)关联 (Association)聚集 (Aggregation)31什么是对象?(Object)l一个对象代表了一个现实的或虚构的实体自然实体(有形)概念实体(无形)化学过程化学过程生产计划生产计划32对象(对象技术围绕对象的概念来建立)l对象从不同的角度有不同的含义问题论域:对象指现实世界中的一个事物。如:人、房屋、洗衣机等建模和实现:对象描述描述客观事物的一个实体,是构成系统的基本单元。l对象特征:静态特征和动态特
19、征问题论域:一个对象所包含的特性和行为 系统:一个对象所包含的数据(属性)和使用这些数据的所有功能(操作)对象属性:描述对象静态特征的数据项对象操作:是对象动态特征的体现l对象之间通过消息通信 一个对象通过向另一个对象发送消息激活某一 个功能33l在面向对象软件中,真实世界中的对象会转化为代码。l在编程术语中,对象是独立的模块,有自己的数据和操作。lPerson对象:有头衔、名字、出生日期和地址,它还可以改名,搬到新地址,告诉我们它有多大等。如果以后需要知道Person身高,就可以把身高的知识和相关的行为直接添加到Person代码中。在系统的其余部分中,只有需要身高属性的代码才需要修改,其余代
20、码保持不变。l面向对象软件的重要特征:改变的简单性和本地化。l电视机对象呢?-改变其价格?给自己做一个新广告?如果电视机不做这些工作,系统的其余部分就要做。问题:电视的特性泄漏给代码的其余部分,违背简单性和本地化。34什么是类?(Class)l类是对象的抽象,它给出了属于该类的全部对象的抽象定义。(从对象产生类)问题域:类是一组具有相同特性和行为的对象的通用定义系统:共同的特性通过属性表现出来(数据)共同的行为通过操作表现出来(功能)l类是对象的模板,用它可以产生多个对象,一个具体的对象只是类的一个实例。(从类产生对象)l在面向对象的系统分析与设计中,并不需要对逐个对象进行说明,而是着重描述代
21、表一批对象共性的类35类的示例 StructureNameAddressPositionSalaryStart DateEnd DateClassEmployeeBehaviorHireFirePromoteIncrease SalaryRetire36类l具有相同特征和操作的对象可以归到同一类中。l在下面这副图中您看到了什么类?37对象的类l您看到了几个类?38属性l 属性是类的特征或特性l 属性的值是某一特定对象的属性值 l 在类中属性名必须是唯一的l 每一个类的实例都有为这个类定义的所有属性的值l 例如:银行帐户类属性银行帐户类属性帐号帐号银行名称银行名称拥有者拥有者金额金额Mary的银
22、行帐户属性值的银行帐户属性值12345678First National BankMary Smith$1024.4839属性取决于视点从从销售人员销售人员的角度的角度 型号型号 价格价格 颜色颜色 里程数里程数 从从维修人员维修人员的角度的角度 马达类型马达类型 传动类型传动类型 维修记录维修记录一辆汽车具有的一辆汽车具有的属性属性:40操作l对象的行为是由为此对象定义的一系列操作决定的l 操作访问或修改对象的属性值l 一个类的所有实例都可以使用在这个类中定义的操作41操作取决于视点l从销售人员的角度 处理客户定单 准备销售合同 加入清单 从清单中删除l从维修人员的角度 测试刹车 修理刹车
23、转动轮胎 检查马达速度一辆汽车具有的一辆汽车具有的操作操作:42属性和操作的标记法l在类的图标中描述属性和操作l通常只显示最重要的属性和操作,避免图形混乱l属性显示在操作上方,操作的名字后跟有()班机班机flightNumberdatedeparturetimestatusrelease()takeOff()属性属性操作操作43类和对象的关系l每一个对象都是某一个类的实例l每一个类在某一时刻都有零个或更多的实例l类是静态的;它们的存在、语义和关系在程序执行前就已经定义好了l对象是动态的;它们在程序执行时可以被建立和删除44抽象(Abstraction)l一个对象是现实世界中一个实体的抽象l 抽
24、象是一种单一化的描述:强调与给出应用有关的特性 抑制不相关的特性l 一个类是一组对象的抽象l 抽象通过注重主要的、与问题有关的特性,帮助 我们处理复杂系统l关键在于找出重要的、有关的类,以及每个类中重要、有关的操作和属性45继承(Inheritance)l子类(特化类、派生类)可以自动拥有父类(基类、泛化类、超类)的属性和操作。例如:“洗衣机”、“冰箱”、“电视机”公共的属性:开关、电线 “家用电器”公共的操作是:开机、关机 则:“家用电器”类是父类 “洗衣机”、“冰箱”、“电视机”等是子类l继承可以提高软件的可重用性。46多态性(Polymorphism)l在父类中定义的属性和服务为其子类继
25、承后,可以具有不同的数据类型或表现出不同的行为。如:“打开一扇门”“打开一个银行帐号”“打开一段对话”等,虽然都是“打开”操作,但执行的是不同的行为动作。l对建模者,多态性也很重要,它可以让建模者用客户的语言和术语与客户交流。有些术语可能导致操作词有多种不同的含义。理解多态性的概念可以让建模者省去发明新术语以及维护术语一致性的麻烦。l多态性机制不但为软件的结构设计提供了灵活性,减少信息冗余,而且显著提高了软件的可复用性和可扩充性。47封装(Encapsulation)l将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行。l封装体现了面向对象方法的“信息屏蔽与局部化”的
26、原则。48消息(Message)l对象间在交互中所传送的通讯信息。如:电视机,遥控器对象向电视机对象发送消息。49关联(Association)l关联:对象之间所存在的联系。联系:分类关系(一般与特殊),聚集和组成关系(部分与整体),属性之间的静态联系(实例连接),对象行为的动态联系(消息连接)。多重性:关联中一个类的对象可以对应另一个类的多个对象。50面向对象的系统分析与设计方法l面向对象分析(OOA-Object Oriented Analysis)的主要任务是分析问题论域,找出问题解决方案,发现对象,分析对象的内部构成和外部关系,建立软件系统的对象模型。l面向对象设计(OOD-Objec
27、t Oriented Design)的主要任务是根据已确立的系统对象模型,运用面向对象技术,进行系统软件设计。l系统建模软件开发中极其重要的环节。在系统分析阶段,建立系统的分析模型。在系统设计阶段,建立系统的设计模型。51面向对象分析l问题论域分析l发现和定义对象和类l识别对象的外部联系l建立系统的静态结构模型l建立系统的动态行为模型52面向对象分析(1)-问题论域分析 分析应用领域的业务范围、业务规则和业务处理过程,确定系统的责任、范围和边界,确定系统的需求。在分析中需要着重对系统与外部用户和其它系统的交互进行分析,确定交互的内容、步骤和顺序。53面向对象分析(2)-发现和定义对象和类 识别
28、对象和类,确定它们的内部特征:属性和服务操作。这是一个从现实世界到概念模型的抽象过程,是认识从特殊到一般的上升过程。例如,系统中的对象是现实世界中事物的抽象,对象的属性是事物的静态特征的抽象(数据抽象),对象的服务是事物动态特征的抽象(过程抽象),对象的类是对象的抽象,一般类是特殊类的抽象等等。54面向对象分析(3)-识别对象的外部联系 在发现和定义对象与类的过程中,需要同时识别对象与对象、类与类之间的各种外部联系,包括结构性的静态联系和行为性的动态联系,包括一般与特殊、整体与部分、实例连接、消息连接等联系。55面向对象分析(4)-建立系统的静态结构模型 分析系统的静态结构,建立系统的静态结构
29、模型,并把它们用图形和文字说明表达出来。这主要是在前面对于类和对象,及其联系的分析的基础上,绘制对象类图和对象图、系统与子系统结构图等,编制相应的说明文档。56面向对象分析(5)-建立系统的动态结构模型 分析系统行为,建立系统的动态行为模型,并且把它们用图形和文字说明表达出来。如:绘制Use Case图、交互图、活动图、状态图等,编制相应的说明文档。57面向对象分析-总结lOOA对系统行为的分析以对象为单位,包括对象的服务操作,对象之间的交互、工作流、事件流、消息传递、对象状态转换等。l现实世界中的事物的行为是及其复杂的,需要从中抽象出对建立系统模型有意义的行为。在分析中需要控制系统行为的复杂
30、性,应当注意确定行为的归属和作用范围,确定事物之间的行为依赖关系,区分主动和被动,认识并发行为和状态对行为的影响。l系统的静态结构模型和动态行为模型,以及必要的需求分析说明书、系统分析说明书一起构成了系统的分析模型,即对象模型。它是系统分析活动的成果,是下一步进行系统设计的基础。58面向对象设计l设计对象与类l设计系统结构l设计问题论域子系统l设计人机交互子系统l设计数据管理子系统l设计任务管理子系统l设计优化,提高系统的性能59面向对象设计(1)-设计对象与类 在OOA的对象模型的基础上具体设计对象与类的属性、服务操作(设计数据结构和操作的实现算法),设计对象与类的各种外部联系的实现结构,设
31、计消息与事件的内容、格式等。类和对象的设计可以并且应当充分利用预定义的系统类库或其它来源的现有的类,把它们加入到解决方案中去,并采用继承、复用、演化等方法设计所需要的新类。60面向对象设计(2)-设计系统结构 设计系统结构的主要任务是设计组件与子系统,以及它们的相互的静态和动态结构。一般的应用系统可有四个组成部分:问题论域、人机界面、数据管理、任务管理。在OOA阶段重点对问题域进行了分析,建立了问题域的业务对象模型,在OOD阶段需要进行软件设计,实现系统领域业务的服务功能。对于人机界面、数据管理、任务管理等问题,在OOA阶段一般较少分析或者没有进行分析,而是留待OOD阶段解决。61面向对象设计
32、(3)-设计问题论域子系统 问题域子系统应包括与应用领域的业务直接有关的全部的类和对象。OOD继承OOA对问题域的分析工作,适当地进行改进和补充,对OOA模型中的某些类、对象、结构、属性、操作进行调整,根据软件实现的要求增加必要的类、属性和联系。例如,把问题域的专用类关联在一起,建立类层次;为公共操作建立一般类;调整继承的表示结构等。在设计中应当考虑对时间与空间的折衷与权衡,以及内存管理等问题。62面向对象设计(4)-设计人机交互子系统 设计人机交互子系统的主要任务是设计用户界面,设计工作的内容包括用户分类,描述交互场景,设计人机交互操作命令、命令层次和操作顺序,设计详细交互过程,设计人机交互
33、类,如窗口、对话框、菜单等。现在的软件系统一般都采用图形界面(GUI)和人机应答形式,力求操作简便,用户界面友好。人机交互子系统中的类与所使用的操作系统和编程语言密切相关。63面向对象设计(5)-设计数据管理子系统 数据管理子系统负责数据的管理,包括数据的录入、操纵、检索、存储,以及对数据的访问控制等。设计数据管理子系统的主要任务是:确定数据管理的方法,设计数据库与数据文件的逻辑结构和物理结构,设计实现数据管理的对象类。64面向对象设计(6)-设计任务管理子系统 设计任务管理子系统就是要设计软件系统的内部模块的管理机制,即把事件驱动、时钟驱动、优先级管理、关键任务和协调任 务等系统管理任务分配
34、给硬件和软件执行。65面向对象设计(7)-设计优化,提高系统的性能 一个系统的质量和性能指标有多个,如运行速度、内存开销、资源占用等,它们的重要性是不同的,指标之间还存在着矛盾。例如,要求运行速度高常导致多用内存,多占资源。因此,应根据实际情况制定一个设计优化的折衷方 案,进行系统优化,提高系统的性能和质量。66UML的诞生 面向对象的分析和设计方法已逐渐取代了传统的方法,成为当前计算机软件工程学中的主流方法。目前使用的面向对象的分析与设计方法主要有Booch、Jacobson的OOSE、Rumbaugh的OMT等方法,它们各有特色,也各有不足之处,而且术语不统一,缺乏共同标准,常给软件开发人员带来困惑。67UML的诞生l从1995年起,著名的软件工程学家Grady Booch、Ivar Jacobson、Jim Rumbaugh携手合作、共同努力,综合了他们各自原创的面向对象的分析与设计方法,加以扩充改进,并汲取其他同类方法的优点,提出了统一建模语言UML。1997年被美国工业标准化组织OMG(Object Management Group)接受,并发布了UML的标准版本,提供给计算机业界使用。68UML的诞生 Rational三剑客Grady BoochJim RumbaughIvar Jacobson69