第一章:1:Uml:中文名为统一建模语言。(已纳入OMG标准,成为业务,应用和系统架构的标准可视化建模语言)2:uml的三大特性:UML是一种Language(语言);UML是一种Modeling(建模)Language;UML是Unified(统一)ModelingLanguage。3:uml的发展现状:(1)已进入全面应用阶段的事实标准(2)应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域(3)成为“生产式编程”的重要支持技术:MDA、可执行UML等4:模型是对现实的简化:常见的模型:生活相关:气象图、道路交通图、交通标志…:展示相关:建筑物模型、沙盘、公司总部的3D复制品…;数据分析相关:条形图、饼状图…;业务分析相关:组织结构图、跨职能流程图……;设计相关:建筑平面图、管线图、电路板设计图5:对于软件系统而言,涉及的模型主要是描述业务,业务规则,系统使用,运用程序,系统架构以及系统内交互的一种可视化表示方式。6:建模的最大好处在于:更好的理解正在开发的系统。7:建模的目的(1)帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化;(2)仅当需要模型时,才构建它建模的原则:选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理8:为什么使用UML建模,可以建立什么模型:(1)UML是一种统一的、标准化的建模语言(2)UML是一种应用面很广泛的建模语言9:模型的种类模型的用途业务模型对业务过程、工作流、组织的建模需求模型对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通设计模型包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息数据库模型设计数据库的结构、表结构以及与应用系统的交互实现模型用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导10:草图与蓝图:蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型;草图则通常是指手工绘制的、规范度较低的在纸张的UML模型11:选择蓝图和草图的原则:大胆地绘制草图,尽可能基于草图进行讨论。对于局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中。12(了解)谁应该建模:(1)业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与(2)需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与(3)设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。(4)实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导。(5)数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。13;常见UML认识误区:1)UML是一种方法论{因为它仅仅是一种描述模型的标准语言}2)UML就是一堆图形{UML是一种建模的标准,图是一种最主要的表现形式}{有效利用UML的要点是:在uml建模原则的指导下,选择合适的建模元素和图,根据被建模对象的实际信息来有机构成,并采用必要的文字进行描述;}3)UML只能够应用于面向对象开发中;4)UML就是Rose里的符号(还有Together);5)UML的学习周期很长、很复杂{主要原因:第一,缺乏基本的理论基础;第二,横向思考少,纵向研究多}14:从面向对象思想中挖掘UML建模元素的精髓,从建模内容的角度运用UML。第二章:15:UML组成:(建模要素三个)1基本构造块:也就是建模元素,是模型的主体2)UML规则:也就是支配基本构造块如何放在一起的规则3)公共机制:运用于整个UML模型中的公共机制、扩展机制16:事物和关系是两种最基本的构造块,它们将组成“图”这个最核心的构造块。17:事物构造块是对模型中最具有代表性的成分的抽象18:UML中将各种事物构造块归纳成了四类:结构事物:UML中的名词,它是模型的静态部分,描述概念或物理元素。行为事物:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。分组事物:UML中的容器,用来组织模型,使模型更加的结构化。注释事务:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。19:面向软件开发的本质思想:首先建立反应现实世界中不同事物的“构造块”,然后确定“构造块”之间的“关系”,再确定各个构造块的属性和“行为”。这样,在软件系统中就可以模拟现实世界的“构造块”之间的交互与协作20面向对象软件开发的一个最本质的原则:面向对象软件开发的核心思想就是高内聚(封装)、低耦合(消息驱动),使用简洁的接口拼合简单的部件是最重要的思想。21:结构事物:类(class)和对象(object)接口(interface)主动类(activeclass)用例(usecase)协作(collaboration)构件(component)节点(node):22:类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象;UML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法对象则是类的一个实例23:接口:接口是描述某个类或构件的一个服务操作集(分有:供给接口和需求接口)24:主动类:主动类实际上是一种特殊的类。引用它的原因,实际上是在开发中需要有一些类能够起到启动控制活动的作用;主动类是指其对象至少拥有一个进程或线程,能够启动控制活动的类UML构造块规则公共机制事物关系图详述修饰通用划分扩展机制命名范围可见性完整性执行25:用例是著名的大师IvarJacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具用例的定义:用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个用例定义一组用例实例。26:协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构成的一个群体。对于某个用例的实现就可以表示为一个协作。27:在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)28构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换。29:为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件30节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力31:行为事物:交互(interaction):是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合:交互的表示法很简单,就是一条有向直线,并在上面标有操作名;状态机(statemachine):是一个对象或交互在生命周期内响应事件所经历的状态序列;在UML模型中将状态画为一个圆角矩形,并在矩形内写出状态名称及其子状态。32:分组事物:对其进行分组对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要。在UML中,提供了“包(Package)”来完成这一目标33:注释事物:结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分34:UML模型关系的种类种类变种表示法关键字或符号种类变种表示法关键字或符号抽象派生依赖关系《derive》导入私有依赖关系《access》显现《manifest》公有《import》实现实现关系虚线加空心三角信息流《flow》精化依赖关系《refine》包含并《merge》跟踪《trace》许可《permit》关联关联关系实线协议符合未指定绑定依赖关系《bind》(参数表)替换依赖关系《substitute》部署《deploy》使用调用《call》扩展Extend《extend》(扩展点)创建《create》扩展extension扩展关系实线加实心三角实例化《instantiate》泛化泛化关系实线加空间三角职责《responsibility》包含依赖关系《include》发送《send》35:关联关系:关联(Association)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的;在UML中,使用一条实线来表示关联关系;在关联关系中,有两种比较特殊的关系:聚合和组合;聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系;如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述(判断是聚合还是组合关系,关键在于要放到具体的应用场景中讨论。)36:泛化、实现、扩展与依赖:泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件的服务。扩展表示将一个构造型附加到一个元类(metaclass)上,使得元类的定义中包括这个构造型。有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。37:在uml中,对泛化关系有3个要求:(1)子类应与父类完全一致,父类所具有的关联和属性和操作,子类都应具有。(2)子类中除了与父类一致的信息外,还包括额外的信息(3)可以使用父类实例的地方,也可以使用子类的实例。38:uml规则:命名:也就是为事物、关系和图起名字。和任何语言一样,名字都是一个标识符;范围:与类的作用域相似,包括所有者作用域(ownerscope)和目标作用域(targetscope)两类可见性:可见性规则标准表示法Rose属性Rose方法public任一元素,若能访问包容器,就可以访问它+protected只有包容器中的元素或包容器的后代才能够看到它#private只有包容器中的元素才能够看得到它-package只有声明在同一个包中的元素才能够看到该元素~39-uml的公共机制:规格描述,修饰,通用划分和扩展机制40:规格描述:在图形表示法的每个部分后面都有一个规格描述(也称为详述),它用来对构造块的语法和语义进行文字叙述。这种构思,也就使可视化视图和文字视图的分离:41:UML修饰与通用划分:在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类;UML通用划分:1)类与对象的划分:类是一种抽象,对象是一个具体的实例2)接口与实现的分离:接口是一种声明、是一个契约,聚合组合也是服务的入口;实现则是负责实施接口提供的契约.42:UML扩展机制:构造型:在实际的建模过程中,可能会需要定义一些特定于某个领域或某个系统的构造块{第一种是最优先采用的:当你想强调可视性时则在第一种的基础上加上个性化图标:在确保模型所有可能的读者都能理解新图标时才能使用新图标代替。}标记值则是用来为事物添加新特性的。标记值的表示方法是用形如“{标记信息}”的字符串约束是用来增加新的语义或改变已存在规则的一种机制(自由文本和OCL两种表示法)。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近。:43:UML定义