UML学习笔记
UML学习心得耿庆博
UML学习心得(一) UML(Unified Modeling Language,统一建模语言)是一组用于描述OOAD过程的图形化表达方式。
UML为交流面向对象的设计中的需求,行为、体系结构的实现提供了一套综合的表示法。
(二) UML由9个不同类型的图组成:用例图:显示了系统的外部可视行为。
用例图描述了系统外的人员和系统的交互动作,以及系统的响应,该类型的图可以用于描述系统的功能需求。
活动图:显示系统行为的峡谷纳西描述。
活动图描述了单个功能需求内部的细节行为,包括基本的场景和一些可选的场景。
组件图:显示了系统的体系结构。
组件图描述了系统的可部署单元(可执行文件,组件,数据存储和其他一些内容)以及一些借口,可部署单元通过这些接口进行交互,该图可以用于研究系统的体系结构。
顺序图:显示了对象随着时间的交互。
顺序图描述了某个功能需求的路径或场景内相对时间的详细行为,该图可用于理解系统元素之间的消息流程。
协作图:显示了对象的交互,强调对象之间的关系。
(在UML2.0里面找不到了)类图:显示了类的定义和关系。
类图描述了系统设计中的类和接口,以及他们之间的关系。
该图可用于定义内部的,面向对象的代码结构。
状态图:显示了响应时间的状态改变。
状态图描述了系统如何改变状态以相应内部的和外部的事件,确保每个事件都被适当的处理。
部署图:显示了系统的物理体系结构。
部署图描述了系统的可部署单元(应用,组件,数据存储等)如何被赋予不同的节点,这些节点如何交互通信,用于系统映射和负载的研究。
包图:显示了设计的层次结构。
包图描述了设计的相关元素如何按组结合在一起,以及他们之间的关系。
(三) 各种图的作用1.用例图(UseCaseDiagram)它是UML中最简单也是最复杂的一种图。
说它简单是因为它采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。
说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。
UML复习知识要点
UML 复习知识要点1.什么是UML ?用UML 进行建模的目的是什么?UML 的主要特点是什么?2.UML 中包含哪9 种图?每种图的用途是什么?3.什么是用例?什么是参与者?用例之间、参与者之间以及用例与参与者之间有分别什么关系?其表示符号是什么?根据需求分析要求能画出系统的用例图。
4.什么是交互图?什么是顺序图和协作图?二者有何异同?顺序图和协作图中分别包含哪些建模元素?5.怎么设计顺序图和协作图?会根据需求分析设计顺序图和协作图。
6.什么是类和类图?类之间的关系有哪几种?关联的命名方式?会判断类之间的各种关系。
会画类图。
7.一般可以把类图分为哪三个抽象层次?各有什么用途?8.类关联中聚集( aggregation )和组合( composition )两者之间有何区别?9.类和对象的关系?关联和链的关系?10.数据库设计可分为哪几个阶段?在Rose 中数据库设计的步骤是什么?何谓对象模型转换为数据模型?何谓数据模型转换为对象模型?11.什么是正向工程和逆向工程?12.什么是活动图和状态图?二者有何异同点?分别适用于什么场合?掌握状态图和活动图中的基本概念?会根据需求描述画系统的状态图和活动图。
13. 什么是构件图和部署图?二者有什么作用?构件有哪几种类型?熟悉部署图中的基本概念?考试题型:一、选择题(每题1分,共20分)二、填空题(每题2分,共20分)三、判断改错题(每题2分,共10分。
对的打“,错的打“X”并说明错误原因,只打“X”未说明错误原因记1分)四、简答题(约30分)五、案例分析与设计:(约20分)1、网络的普及带给了人们更多的学习途径,随之用来管理远程网络教学的“远程网络教学系统”也诞生了。
“远程网络教学系统”的功能需求包括:(a) .学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。
(b) .教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。
UML学习笔记
UML学习笔记 这个学期有幸选到章⽼师的UML精品课程,虽然到⽬前仅仅上课两周,但是收益匪浅。
尽管在本科接触过UML,却没有⾮常详细的对其进⾏深⼊的了解,只是对⼀些图的名称有所⽿闻,没有深究其功能。
就最近所学知识,谈⼀下我对uml统⼀建模语⾔的⼀个总体认识,软件⼯程作为⼀门⼯程类学科,如同建筑类学科⼀样,当我们需要搭建⼀所建筑时,我们都需要对其进⾏需求和设计,在施⼯的时候,我们就需要⼀些设计图纸,例如各个房间的具体设计、三维视图等,通过这些图纸进⾏施⼯。
软件⼯程也是如此,当我们拿到⼀个项⽬时,并不是直接开始编码,⽽是在此之前进⾏⼀系列的需求分析和详细设计,UML在详细设计中得到了⼴泛的应⽤,我们使⽤UML绘出的类图、⽤例图、时序图、部署图等作为依据,以及按照这些图表实现相应的编码,这些⽤UML语⾔绘制的图形就好⽐建筑⾏业中的设计图纸,以这些图纸为标准,进⾏coding。
UML绘图⼯具主要有 Visio 2007,开发⼯具主要有:Star UML,IBM Rational Rose,RSA等。
下⾯对⼀些⽐较常⽤的UML图进⾏⼀些详细的介绍(本次博⽂重点介绍⼀下类图):⼀、类图我们知道⾯向对象主要有三个特征:封装(抽象)、继承以及多态,对象作为类的实例化,这些特征⽤类图可以很好的表⽰出来,类图也是最常⽤的UML图,通常看到类图就能了解各类之间的关系以及每个类中所具有的属性,在⼀些软件中,可以通过类图⽣成⽣成相应的代码。
所以类图在软件⼯程中应⽤⾮常⼴泛。
下⾯介绍⼀些类图的基本⽤法,1、类如图所⽰,⼀个类主要由三部分组成:类名、属性、⽅法组成。
其中属性和⽅法都有⼀定的作⽤域,public⽤+表⽰,private⽤-表⽰,protect⽤#表⽰,package⽤~表⽰。
2、类与类之间的关系1) Association(关联关系)通常⽤直线(相互关联)或者(直接关联)表⽰,相互关联和直接关联有⼀定的区别,⽐如A B 可以表⽰A类知道B类的属性和⽅法,同时B类也可以知道A类的属性和⽅法,但是直接关联AB 中A可以知道B类的属性和⽅法,但是通过B不能知道A的属性和⽅法,是单向关联,相互关联的实现可能需要使⽤指针来实现。
UML各章知识点小结
UML各章知识点小结第一章面向对象分析和设计在OO开发中,至关重要的能力是什么?为软件对象分配职责什么是分析?▪强调的是对问题和需求的调查研究,而不是解决方案▪澄清两个概念:需求分析:对需求的调查研究面向对象分析:对领域对象的调查研究什么是设计?▪强调的是满足需求的概念上的解决方案(在软件方面和硬件方面),而不是其实现。
面向对象分析(做正确地事)▪强调的是在问题领域内发现和描述对象(或概念)面向对象设计(正确地做事)▪强调的是定义软件对象以及它们如何协作以实现需求。
OOAD 最关心流程与元件1. 描述流程(剧情) ---- 分析2. 安排主/配角(元件)演出---- 设计OOAD 最主要的工具UML (Unified Modeling Language)第一章思维导图第二章迭代、进化和敏捷动机:迭代和进化式瀑布生命周期▪在编程之前就预先完成需求和设计步骤▪软件项目的高失效率迭代和进化式开发▪及早地引入编程和测试,并重复这一循环▪会在还没有详细定义所有需求的情况下假设开发开始▪使用反馈来明确和改进演化中的规格说明▪依赖于短时快速的开发步骤、反馈和改写来不断明确需求和设计▪软件项目的较高成功率什么是迭代和进化式开发如何在迭代项目中处理变更抱以接受变更和改写的态度,是迭代和进化式开发真正本质的驱动力!!迭代反馈和进化向预期系统的方向发展。
需求和设计的不稳定性随着时间逐步下降迭代开发的优点⏹减少项目失败可能性,提高生产率、降低缺陷率⏹在早期缓解高风险⏹早期可见的进展⏹早期反馈、用户参与和调整,会产生更接近涉众真实需求的精华系统⏹可控复杂性⏹一次迭代中的经验可以被系统地用于改进开发过程本身UP的阶段第三章案例研究案例研究中涵盖的内容☐一个应用程序通常包括:✓UI元素✓核心应用逻辑✓数据库访问✓与外部软硬件的协作用户界面应用逻辑层其它层或构件较少关注讨论如何与其它层连接案例研究主要关注讨论如何设计对象次要关注UP 思维导图敏捷开发 思维导图第四章初始不是需求阶段初始阶段是建立项目共同愿景和基本范围的比较简短的起始步骤它包括:▪10%的用例进行分析▪关键的非功能需求的分析▪业务案例创建▪开发环境的准备▪初始阶段需解决的问题:本项目的愿景(vision)和业务案例(business case)?可行性(Feasible)?购买/开发(Buy and/or build)?粗略估计成本(cost): 1万-10万,还是百万?项目是进行下去还是停止?什么是初始阶段用一句话来概括初始阶段:预见项目的范围、愿景和业务案例用一句话来概括初始阶段要解决的主要问题:涉众是否就项目愿景基本达成一致,项目是否值得继续进行认真研究。
UML学习笔记
UML(统一建模语言)学习笔记面向对象的问题的处理的关键是建模问题。
建模可以把在复杂世界的许多重要的细节给抽象出来。
许多建模工具封装了UML(也就是Unified Modeling Language),即统一建模语言。
学习UML ,必须熟悉面向对象解决问题的根本原则――从模型的建造开始的。
一个模型model 就是根本问题的抽象。
域domain 就是问题所处的真实世界。
模型是由对象objects 组成的,它们之间通过相互发送消息messages 来相互作用。
对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。
对象的属性的值决定了它的状态state。
类Classes 是对象的“蓝图”。
一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。
对象是类的实例instances。
UML 中有九种建模的图标,即:用例图,类图,对象图,顺序图,协作图,状态图,活动图,组件图和配置图。
最主要的两种图为:类图和顺序图。
通过学习,简单总结如下:一、用例图(Use case diagrams)1、用例图描述了作为一个外部的观察者的视角对系统的印象。
强调这个系统是什么而不是这个系统怎么工作。
简例和解释如图一:图一一个门诊部Make Appointment 用例2、角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线。
一个用例图是角色,用例,和它们之间的联系的集合。
3、一个单独的用例可以有多个角色。
4、应用领域:①决定特征(需求)。
当系统已经分析好并且设计成型时,新的用例产生新的需求②客户通讯。
使用用例图很容易表示开发者与客户之间的联系。
③产生测试用例。
一个用例的情节可能产生这些情节的一批测试用例。
二、类图(Class diagram)1、类图通过显示出系统的类以及这些类之间的关系来表示系统。
类图是静态的——它显示出什么可以产生影响但不会告诉我们什么时候产生影响。
第2章 UML通用知识点概述
2、图
序 列 图
序列图显示了一个具体用例或者用例的一部分的一个详细流程。它几 乎是自描述的,序列图不仅可以显示了流程中不同对象之间的调用关系, 还可以很详细地显示对不同对象的不同调用。 序列图有两个维度:垂直维度,也称时间维度,以发生的时间顺序显 示消息或调用的序列;水平维度显示消息被发送到的对象实例。
UML统一建模语言
二、常用的UML元素分析
1、视图
活 动 视 图
活动视图是一种特殊形式的状态机视图,是状态机的一个变体,用 来描述执行算法的工作流程中涉及的活动。 通常活动视图用于对计算流程和工作流程建模。活动视图中的状态 表示计算过程中所处的各种状态。 活动视图是在假定整个计算处理的过程中没有外部事件引起的中断 的条件下进行描述的,否则普通的状态机更加适合于描述这种情况。
UML统一建模语言
二、常用的UML元素分析
2、图
用 例 图
用例图描述了系统提供的一 个功能单元。用例图的主要目的 是帮助开发团队以一种可视化的 方式理解系统的功能需求,包括 基于基本流程的“角色”关系, 以及系统内用例之间的关系。 使用用例图可以表示出用例 的组织关系,这种组织关系包括 整个系统的全部用例或者是完成 相关功能的一组用例。 在用例图中画出某个用例方 式是在用例图中绘制一个椭圆, 然后将用例的名称放在椭圆的中 心或椭圆下面的中间位置。
三、UML的通用机制
2、修饰
在UML的图形表示中,每一个模型元素都有一个基本符号,这个基本 符号可视化地表达了模型元素最重要的信息。 用户也可以把各种修饰细节加到这个符号上以扩展其含义。这种添加 修饰细节的做法可以为图中的模型元素在一些视觉上的效果上发生一些 变化。
UML统一建模语言
三、UML的通用机制
UML学习笔记
UML(统一建模语言)
课程目录
◆面向对象分析和设计(OOA/D)
◆UP过程与“瀑布”模型
◆UML概念
◆需求分析与用例(用例图)
◆类图
◆领域模型(分析模型)
◆交互图(顺序图和协作图)
◆UML活动图
◆UML状态图
◆GRASP与GOF(设计模型)
面向对象分析和设计
◆课程目标:
◆介绍如何将UML应用于UP过程
◆介绍如何应用UML进行OOA/D
◆UML不是OOA/D,也不是方法,它仅仅只是一种图形表示法
◆如果不掌握面向对象思想,那么UML或者任何case工具(如Rose)将毫无意义
◆我们需要一种用于OOA/D的语言,这既是一种思考的工具,也是一种沟通的形式。
因
此,我们将在OOA/D中应用UML。
◆分析(analysis)-对问题和需求的调查研究
◆设计(design)-满足需求的概念上的解决方案
◆面向对象分析(object-oriented analysis)-在问题域内发现和描述对象
◆面向对象设计(object-oriented designe)-如何定义软件对象以及他们之间如何协作以实
现需求。
UML书上整理的知识点
第一章:1:Uml:中文名为统一建模语言。
(已纳入OMG标准,成为业务,应用和系统架构的标准可视化建模语言)2:uml的三大特性:UML是一种Language(语言);UML是一种Modeling(建模)Language;UML是Unified(统一)Modeling Language。
3:uml的发展现状:(1)已进入全面应用阶段的事实标准(2)应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域(3)成为“生产式编程”的重要支持技术:MDA、可执行UML等4:模型是对现实的简化:常见的模型:生活相关:气象图、道路交通图、交通标志…:展示相关:建筑物模型、沙盘、公司总部的3D复制品…;数据分析相关:条形图、饼状图…;业务分析相关:组织结构图、跨职能流程图……;设计相关:建筑平面图、管线图、电路板设计图5:对于软件系统而言,涉及的模型主要是描述业务,业务规则,系统使用,运用程序,系统架构以及系统内交互的一种可视化表示方式。
6:建模的最大好处在于:更好的理解正在开发的系统。
7:建模的目的(1)帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化;(2)仅当需要模型时,才构建它建模的原则:选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。
对每个重要的系统最好用一组几乎独立的模型去处理8:为什么使用UML建模,可以建立什么模型:(1)UML是一种统一的、标准化的建模语言(2)UML是一种应用面很广泛的建模语言10:草图与蓝图:蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型;草图则通常是指手工绘制的、规范度较低的在纸张的UML模型11:选择蓝图和草图的原则:大胆地绘制草图,尽可能基于草图进行讨论。
UML建模学习笔记
1、过程、工具、方法---三大要素2、UML不是OOA/D,也不是方法,它仅仅是一种图形表示法。
要掌握对象的思想3、分析(analysis)-对问题的需求的调查研究4、设计(design)-满足需求的概念上的解决方法5、OOA-在问题域内发现和描述对象6、OOD-如何定义软件对象及它们之间如何协作以实现需求7、东北人都是活雷锋。
东北人实现雷锋,继承人8、骰子游戏:软件模拟游戏者投掷两个骰子,如果总点数是7则赢得游戏,否则为输过程:定义用例-》定义领域模型-》定义交互图(时序图)-》定义设计类功能性的需求,我怎样用它,场景的描述;定义用例:(需求分析的一种工具,它是一些情节的描述,做什么)骰子游戏:游戏者请求骰子;系统展示结果:7为赢,否则为输定义领域模型(OOA)-识别问题中的概念,它是对现实世界中概念和想象的可视化,与具体的实现的软件技术无关(比如java或C#)游戏者;骰子;骰子游戏定义时序图:OOD关注的是:软件对象的定义-职责与协作定义设计类图:从领域模型以及交互图中获得启示并不是完全一一对应的,定义软件类。
包括属性、方法;职责就是一种行为,行为就是一种方法。
(职责就是一种方法)9、UML的三种方式:草图蓝图编程语言10、学习UML的要素:表示法(图形);过程(UML与过程无关,但最好用于RUP-ratioanal unified process统一软件开发过程);工具(比如:rational rose)11、UML:描述、构造和文档化的可视化语言。
12、UML不是编程,它只是指导编程的,指导开发。
13、什么是UP软件开发过程描述了构造、部署以及维护软件的方式。
统一过程(The unified Software Development Process)是一种流行的构造面向对象系统的迭代软件开发过程。
特别是,rational 统一过程(RUP)已被广泛采纳。
UP也可以引进其它方法中的有用的实践,比如极限编程(XP-Extreme Programming)。
UML学习笔记
一、业务用例与系统用例的区别系统用例是从使用者的角度定义“软件系统”需求。
而业务用例不研究“软件系统”需求,它更关心一个“业务组织”对外提供哪些服务。
系统用例研究软件系统,借助用例定义软件系统需求。
而业务用例是以业务组织外部业务参与者的角度定义业务组织提供的服务。
业务用例研究一个目标组织,借助业务用例定义目标组织应该具有哪些业务流程,以及这些流程应该是什么样子的。
业务用例是用来捕获功能性需求的,功能性需求是由actor的业务目标来体现的。
也就是对于actor 来说,他所负责的业务需要由一系列的业务目标组成。
比如一个档案管理员,他的业务目标就是维护档案。
比如论坛管理员,他的业务目标有维护用户、维护帖子等。
这些业务目标构成actor职责的全部。
业务用例体现了需求。
而需求的实现有多种方式。
如何实现它,是由系统用例来体现的。
系统用例和业务用例并不是一个简单的细分关系。
就说维护档案吧,这样一个业务目标,会有多种不同的用例场景去完成它,这些场景包括如何增加档案,如何修改档案,如何删除档案……对于系统用例来说,就是通过分析这些场景,来决定哪些场景中的哪些部分是要纳入系统建设范围的。
比如维护档案业务用例中,假设由于某个原因,修改档案很困难,只能通过先删除,再全部重建的方式来实现,那么系统用例就有增加档案,删除档案,而没有修改档案。
业务用例和系统用例是分别站在客户的业务视角和系统建设视角来规划的。
业务用例不是接近,而是完全的直接需求,系统用例是系统对需求的实现方式,它只是说,要建设的系统功能性需求由这些系统用例构成。
业务用例是仅从系统业务角度关注的用例,而不是具体系统的用例。
它描述的是“该实现什么业务”,而不是“系统该提供什么操作”。
业务用例仅包含客户“感兴趣”的内容。
二、业务活动图1.为什么要画业务活动图?完成了业务用例图后,需要为每个业务用例绘制一个活动图。
业务活动图描述了在这个业务用例中,用户可能会进行的操作序列。
UML笔记
状态图和活动图细分:状态图是描述某一对象的状态转化的,它主要表现的是该对象的状态。
从状态图中可以看出,该对象在接受了外界的某种刺激之后,会做出什么样的反应。
描述的是一个对象的事情。
可以说是对类图的一种补充,帮助开发者完善某一类。
活动图是描述系统在执行某一用例时的具体步骤的,它主要表现的是系统的动作。
从活动图中可以看出,系统是如何一步一步的完成用例规约的,主要用于业务建模阶段。
活动图描述的是整个系统的事情。
可以说活动图是对用例图的一种细化,帮助开发者理解业务领域。
比如说:学校用的学生选课系统。
在系统中,学生是一个对象(UML中的对象,不是编程语言中的对象),那么学生“未登录”“已登录”“未完成选课”“已完成选课”“已选XX课”“未选XX课”等都是学生的状态。
描述这些状态之间是如何转化的,就要用状态图。
而学生选课的这个动作涉及到:学生、课程、教师、学生课表等多个对象。
同时这个动作也是学生选课系统的一个用例,所以要描述它就要用到活动图。
包图、构建图和部署图包图在UML的建模机制中,模型的组织是通过包来实现的。
包把建立的各种模型组织起来,形成各种功能或用途的模块,并可以控制包中元素的可见性以及描述包之间的依赖关系。
通过这种方式,系统模型的实现者可在高层把握系统的结构。
包图是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包之间关系的描述,展现出系统的模块与模块之间的依赖关系。
包图由两个矩形表示(单选项卡),包图名称写在大矩形中间。
除包名外,还有元素,元素可见性,包构造型及包间的关系组成。
在包下可以创建各种模型元素:类,接口,构件,节点,用例,图以及其它包。
包图的作用包图可以描述需求,设计的高阶概况;包图通过合理规划自身功能反应系统的高层架构,在逻辑上将系统进行模块化分解;包图最终是组织源码的方式。
例:构件图构件图提供系统物理视图,在一个非常高的层次上显示系统中的构件与构件之间的依赖关系。
UML系统学习笔记
目录一、关系元素 (3)二、视图和图 (3)2.1 视图 (3)2.1.1静态视图 (3)2.1.2用例视图 (4)2.1.3交互视图 (4)2.1.4状态机视图 (4)2.1.5活动视图 (4)2.1.6物理视图 (4)2.1.7模型管理视图 (5)2.2 图 (5)2.2.1用例图 (5)2.2.2类图 (6)2.2.3序列图 (7)2.2.4状态图 (8)2.2.5活动图 (8)2.2.6构件图 (8)2.2.7部署图 (9)三、UML的公用机制 (9)3.1 通用机制 (9)3.2 扩展机制 (10)四、用Rational Rose生成代码 (11)4.1生成代码的方法 (11)4.2 逆向工程 (11)五、特殊图 (12)5.1对象图 (12)5.2包图 (12)5.3协作图 (12)六、Rational统一过程的核心工作流 (13)6.1统一过程的概念 (13)6.2统一过程的核心工作流 (13)6.3统一过程的最佳实现 (15)一、关系元素1、依赖关系(------→)指两个事物之间的一种语义关系,当其中一个事物(独立事物)发生变化就会影响另外一个事物(依赖事物)的语义;标识箭头指向独立事物;2、关联关系( →)是一种事物之间的结构关系,用它来描述一组链,链是对象之间的连接,在系统开发中经常会被使用到,系统元素之间的关系如果不能明显的由其他三种关系来表示,都可以抽象成关联关系;关联关系可以是聚合或者组成关系,也可以没有方向的普通关联关系,其中,聚合描述了整体和部分间的结构关系,而组成也是描述整体和部分间的结构关系,只是部分是不能够离开整体而独立存在;即当一个类必须“知道”另一个类时,标识箭头指向“被知道”类;3、泛化关系( )是事物之间的一种特殊/一般的关系,特殊元素(子元素)的对象可替代一般元素(父对象)的对象,即在面向对象中常常提到的继承,通过继承,子元素具有父元素的全部结构和行为,并允许在此基础上再拥有自身特定的结构和行为;标识箭头指向父对象;4、实现关系( )描述了一组操作的规约和一组操作的具体实现之间的语义关系,一般在两个地方需要用到实现关系,一种是在接口和实现接口的类与构件之间,另一种是用在用例和实现用例的协作之间,当类或者构件实现接口时,表示该类或者构件履行了在接口中规定的操作;二、视图和图2.1 视图2.1.1静态视图是对在应用领域中的各种概念以及系统实现相关的各种内部概念进行的建模;主要由类与类之间的关系构成,这些关系包括关联、泛化和依赖关系,我们又把依赖关系具体分为使用和实现关系;主要包括类图;2.1.2用例视图描述系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图,一个用例是系统的一个功能单元,是系统参与者与系统进行的一次交互作用;用例视图用用例图来表示;2.1.3交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系,是描绘系统中的各种角色或者功能交互的模型,显示了跨越多个对象的系统控制流程,以相互作用的一组对象为中心进行描述的称之为交互视图,它适合于描述一组对象的整体行为,可通过两种图的形式来表示:序列图和协作图;2.1.4状态机视图通过对象的各种状态建立模型来描述对象随时间变化的动态行为,状态机视图也是通过不同对象间的相互作用来描述系统的行为的,不同的是它以独立的对象为中心进行描述,每一个对象拥有自己的状态,这些状态之间的变化是通过事件进行触发的,状态机用状态图来表达;2.1.5活动视图是一种特殊的状态机视图,是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动;用于对计算流程和工作流程建模,该视图中的状态表示计算过程中所处的各种状态,活动视图用活动图来表示;2.1.6物理视图对应用自身的实现结构建模,如系统的构件组织情况以及运行节点的配置等,物理视图提供了将系统中的类映射成物理构件和节点的机制,分为实现视图和部署视图两种;实现视图将系统中的可重用的块包装成为具有可替代性的物理单元,这些单元称为构件;通过构件和构件间的接口和依赖关系来表示设计元素(如类)的具体实现,是系统高层可重用的组成部件;部署视图表示运行时的计算资源的物理布置,这些运行资源称为节点,在运行时,节点包括构件和对象,如果含有依赖关系的构件实例放置在不同的节点上,部署视图可展示出执行过程中的瓶颈;其中,实现视图使用构件图来表示,部署视图使用部署图来表示;2.1.7模型管理视图对模型自身组织进行的建模,是由自身的一系列模型元素(如类、状态机和用例)构成的包所组成的模型,模型是从某一个观点以一定的精确程度对系统所进行的完整描述,模型管理由包与包之间的依赖组成,模型管理信息通常在类图中表达;2.2 图2.2.1用例图用例图描述了系统的一个功能单元,帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于流程的角色关系,以及系统内用例之间的关系;用例的粒度指的是用例所包含的系统服务或者功能单元的多少,用例的粒度越大,用例包含的功能越多,反之则包含的功能越少;其中,Rose中并不支持绘制用例图的系统边界,在visio中可使用“方框”来表示;标识用例间的关系:1、泛化:指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系,在用例的泛化关系中,子用例继承了父用例所有的结构,行为和关系,子用例是父用例的一种特殊形式;此外,子用例还可以添加,覆盖,改变继承的行为;2、扩展(extend):在一定的条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系,一个基础用例可以拥有一个或者多个扩展用例,这些扩展用例可以一起使用;值得注意的是,在扩展关系中是基础用例而不是扩展用例被当作例子使用;3、包含(include):包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分,即包含关系代表着基础用例会用到被包含用例,具体来讲就是讲被包含用例的事件流插入到基础用例的事件流中;现阶段包含关系使用“<<include>>”,而先前版本uml中使用“<<uses/使用>>”;2.2.2类图显示系统的静态结构,表示了不同的实体(人/事物/数据)是如何彼此相关联的,可用于表示逻辑类,逻辑类通常就是用户的业务所涉及的事物,比如仓库,仓库中的物料等,还可表示实现类,即程序员处理的实体,两者可能显示一些相同的类;类与类之间的关系通常有依赖、泛化和关联三种,如果把接口也看做一种类,那么还存在实现关系,即类对接口的实现;其中类图中设置的各个类的属性和操作方法将贯穿整个UML建模制作过程中,所以划类图是很关键的一个步骤,需要将所有的类全部作出,且需要将各个类的相关属性和方法思考全面;类图的构造型:1)实体类(entity):在实体类中保存需要放进永久存储体的信息;例如,为数据库中的每一个表创建一个实体类,在数据表中永久的存储记录信息,而实体类在系统运行中在内存中保存信息;2)控制类(control):被用来负责协调其他类的工作,通常其本身并不完成任何功能,其他类也不想其发送很多消息,而是由控制类以委托责任的形式向其他类发出消息;控制类有权知晓和执行机构的业务规则,并且可以执行其他流和知道在发生错误时如何对错误进行处理;3)边界类(boundary):位于系统和外界的交界处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口;4)其他:除了上述的构造型意外,也可以自己创建新的构造型,如为窗体类创建Form构造型,通过构造型还可以方便的将类进行划分,当需要迅速的查找到模型中所有窗体时,之前将所有的窗体指定为Form构造型后,只需要寻找Form构造型的类即可;Class类型的类也就是我们所说的普通类,还有两种较常用的类型,如下:1)实例化类(InstantiatedClass):是具有实际变元值的参数化类,类是事物的抽象,参数化类是更高一等的抽象,指明一群有类似属性和行为的类,通过参数的具体化,能产生出不同的类来,这种具体化的类就是实例化类;2)参数化类(ParameterizedClass):参数化类通常被用于创建一系列其他类,可以说,参数化类就是某种容器,所以也被成为模板类,模板类是对一个参数化类的描述符,模板体可能包含代表模板本身的默认元素,还包括形式参数,通过把参数绑定到实际值上就可以生成一个实际的类,模板类里的属性和操作可以用形式参数来定义;模板类可能是一个普通类的子类,这意味着所有通过绑定模板而形成的类都是给定类的子类,它也可以是某个模板参数的孩子,这意味着被绑定的模板类是被当作参数传递的类的孩子;2.2.3序列图显示一个具体用例或者用例的一部分的详细流程,几乎是自描述的,不仅可以显示流程中不同对象之间的调用关系,而且还可以很详细地显示对不同对象的不同的调用,有两个维度,垂直维度,也称为时间维度,以发生的时间顺序显示消息或者调用的序列;水平维度,显示消息被发送到的对象实例,序列图又名顺序图;其中,销毁对象标识对象生命线的结束,使用一个“X”来进行标识显示,2.2.4状态图表示某个类所处的不同状态以及该类在这些状态中的转换过程,虽然每个类通常都有自己的各种状态,但是只对“感兴趣的”或“需要注意的”类才使用状态图进行描述;其中,状态图中存在“判定”和“同步”两个均会造成工作流的分支,很容易混淆,其区别为:1)判定是根据监护条件使工作流分支,并且监护条件的取值最终只会触发一个分支的执行;2)同步的不同分支是并发执行,并不会因为一个分支的执行造成其他分支的中断;2.2.5活动图用来表示两个或者更多的对象之间在处理某个活动时的过程控制流程,活动图能够在业务单元的级别上,对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模;与序列图相比,活动图更能够适合对较高级别的过程建模;主要用于描述系统行为,可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件;●活动图与流程图的区别:(1)活动图不仅能够表达顺序流程控制还能够表达并发流程控制;(2)活动图是面向对象的,而流程图是面向过程的;●活动图是状态图的一种变种,并且其符号非常相似,其区别为:(1)活动图中的状态转换不需要任何触发事件,活动图中的动作可以放在泳道中,泳道可以将模型中的活动按照职责组织起来,而状态图不可以;(2)活动图的主要目的是描述动作及对象的改变结果,而状态图则是以状态的概念描述对象、子系统、系统在生命周期中的各种行为;2.2.6构件图某些功能实际存在哪些地方,需要构件图来表示,构件图提供系统的物理视图,它根据代码构件显示系统代码的整个物理结构,其用途是显示系统中的某些构件对其他构件的依赖关系;构件(Component)作为系统的一个物理实现单位,包括软件代码(包括源代码、二进制代码和可执行文件等)或者相应组成部分,如脚本或命令行文件等,还包括带有身份标识,并有物理实体的文件,如运行时的对象,文档,数据库等。
UML学习笔记new
UML学习笔记1.建模1.1 为什么要建模建立大厦和建立狗窝的区别是建设狗窝不需要设计。
要生产合格的软件就要有一套关于体系结构、过程和工具的规范。
建模的定义:建模是对现实的简化。
建模的目标:1)模型帮助我们按照实际情况或按照我们所需要的样式对系统进行可视化。
2)模型允许我们详细说明系统的结构和行为。
3)模型给出一个知道我们构造系统的模板。
4)模型对我们的决策进行文档化。
建模就是把复杂的系统变成小的系统,采用“各个击破”的原则逐一解决。
1.2 建模原理1)选择创建什么模型很重要,模型要反映你难于处理的开发问题。
2)模型要在不同的精度级别上来表示。
你可以根据观察的角色和观察的原因来选择精度。
3)建造模型要和现实相连。
4)重要的系统需要用一组独立的模型去处理。
在面向对象的软件体系中,为了理解系统的体系结构,你需要几个互补和连锁的视图:用例图、设计视图、进程视图、实现视图和实施视图。
1.3 面向对象的建模面向算法的建模在需求发生变化或者系统增长后就变得难以维护。
面向对象的建模把对象和类作为其主要构造块。
例如,在三层结构中,我们可以在用户接口层、中间层和数据库层中找到你想要的对象。
2 UML介绍2.1 概述UML可以对软件密集型系统的制品进行可视化、详述、构造和文档化。
最好把它用于以用况(用例)为驱动、以体系结构为中心、迭代及增量的过程中。
UML是一种语言,它是一种可视化的语言,它是一组图形符号。
它可用于详细描述。
它又是一种构造语言,可以直接生成代码。
用Rational XDE就可以实现从UML到C#,或者从C#到UML的双向工程。
2.2 UML的概念模型学习建模的三个要素:UML的基本构造块、这些构造块放在一起的规则、一些运用于整个UML的公共机制。
UML中有以下四种事物1)结构事物---类、接口、协作(它是一个交互,它是由一组共同工作以提供某协作行为的角色和其它元素构成的一个群体。
)、用例、主动类(至少拥有一个进程或者线程,其元素的行为可以和其它元素的行为并发)、构件(如COM+和Java Bean)、节点。
uml用户指南读书笔记
uml用户指南读书笔记嘿,今天想跟大家聊聊我读《uml用户指南读书笔记》的一些感受呢!哎呀呀,这可真是一本超棒的书哇!在开始读这本书之前呀,我对UML(统一建模语言)只是有个模糊的概念呢。
但是读了这本《uml用户指南》之后,哇,就像是打开了一扇新世界的大门呀!UML呢,它在软件开发过程中可是相当重要的呀!就像是一张地图对于旅行者一样重要呢!书里首先介绍了UML的基础知识,那些个不同的图形符号呀,哎呀呀,刚开始看的时候还真有点眼花缭乱的呢。
可是随着一点点深入阅读呀,就像是在解谜一样,超级有趣!比如说类图,这可是UML里非常关键的部分呢。
它可以清晰地展现出类之间的关系,是继承呢?还是关联呢?通过类图,我们可以一目了然哇!这对于开发人员理解整个软件的架构来说,简直就是一个神器呀!再说说活动图吧。
活动图就像是在描述一个流程的故事呢。
从开始到结束,每个步骤都清晰可见呀。
在书里看到那些关于活动图的讲解和示例的时候,我就在想,这可太有用了吧!无论是大型的企业级项目,还是小型的个人项目,只要有流程在,活动图就能派上大用场呀!书中还有关于用例图的精彩讲解呢。
用例图可以把系统的功能和用户的需求很好地联系起来呀。
我们可以清楚地看到用户是怎么与系统交互的呢?哪些功能是用户最常用的呢?这对于软件的设计和开发方向的确定,真的是太有帮助了呀!读这本书的时候,我还做了不少笔记呢。
有些地方理解起来有点困难,但是反复琢磨之后呀,就有一种恍然大悟的感觉呢!哇,就像是在黑暗中摸索了很久,突然找到了一盏明灯一样呢!这本书不仅仅是在教我们UML的语法和规则,更重要的是在教我们如何用UML 去思考问题呢。
这一点,我觉得是超级厉害的呀!而且呀,书里的例子都很实用呢。
不是那种很抽象、很难理解的例子,而是我们在实际开发中很可能会遇到的情况呢。
这就方便我们把书里学到的知识直接运用到实践当中去呀!我就在想,要是早一点读到这本书就好了呢!在读完《uml用户指南》之后呢,我感觉自己看待软件开发这个事情都有了新的视角呢。
2-UML基础知识扫盲-学习笔记(20200512)
(一)用例图(1)要用好UML,要多多培养:(1)书面表达能力;(2)归纳总结能力;(3)“面向对象”的思维能力和抽象能力;(2)下面通过这个表格来总结一下我在需求分析工作中应用各种UML图的情况:(3)用例图:用例图源于Jacobson的OOSE方法,用例图是需求分析的产物,描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。
它的主要目的就是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的“角色”关系以及系统各个功能之间的关系。
它通过用例(Use Case)来捕获系统的需求,再结合参与者(Actor)进行系统功能需求的分析和设计。
用例图表达的是什么角色通过软件系统能做什么事情,我们可以使用用例图系统地表达软件系统的绝大部分需求。
(4)用例图有四部分组成:用例(Use Case)、参与者(Actor)、系统边界、关联参与者:在一个系统开发前,我们必定首先要确定系统的用户,系统的用户就是系统的参与者。
除此以外,我们还会想打,我们开发的系统与其他的系统有什么关联?因此,系统的参与者可分为两类,一类是人,包括系统的使用者、维护者等,另外一类是其他系统。
用例:用例(Use Case)是参与者(Actor)可以感受到的系统服务或功能单元。
任何用例都不能在缺少参与者的情况下独立存在。
同样,任何参与者也必须要有与之关联的用例,所以识别用例的最好方法就是从分析系统参与者开始,在这个过程中往往会发现新的参与者。
用例是有粒度的,用例的粒度指的是用例所包含的系统服务或功能单元的多少。
用例的粒度越大,用例包含的功能越多,反之则包含的功能越少。
系统边界:所谓系统边界是指系统与系统之间的界限。
把系统边界以外的同系统相关联的其他部分称之为系统环境。
关联:为了减少模型维护的工作量、保证用例模型的可维护性和一致性,可以在用例之间抽象出包含(Include)、扩展(Extend)和泛化(Generalization)这几种关系;包含关系是指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
UML笔记——精选推荐
UML笔记第三章运⽤⾯向对象的思想⼀、类的可视化class student{可见性[公私保][属性⾏为]}1、绘图2、绘图应注意问题确定⼀个具体类---→类名。
属性。
类⾏为确定什么样的编程语⾔确定类属性的可见性,数据类型类⾏为返回值的数据类型。
⼆、类的其他表⽰⽅法1带有路径的类类名::类名------→继承[域限定符]研究⽣::学⽣2 虚基类的表⽰---------→,名称的斜体书写3 类的省略表⽰三、类的职责和约束1 约束2 注释四如何发现类●正式的⽅法1 可感知物理实体2 ⼈或者组织的⾓⾊3 应该记忆的事件4 两个或者两个以上事物的交互5 需要说明的概念●⾮正式的⽅法1 ⽤⾃然语⾔书写需求陈述并对其分析⼀、名词---→类或者对象候选者⼆、动词---→⾏为三、形容词---→发现属性线索分析●删除冗余者●剔除⽆关者●含糊不清楚笼统的概念●删除可能是属性的名词●删除可能是⾏为的名词10⽉12⽇第四章类与类——>C++、JA V A⼀、继承 1 单继承2 多继承(1)多重继承(2)多级继承⼆、友元三、嵌套四、⼀般化关系JA V A继承---------->单继承[接⼝]友元嵌套⼀般化类与类——>UML关系如何表⽰[⼀]关联直线普遍纯在的关系关联关联约束关联类类与类之间关联关系可能是⼀个类⾃⾝关联司机1乘客4乘客限定关联银⾏柜员1对多储户(本银⾏的储户)[⼆]泛化与继承继承---------泛化语⾔UML----------------------》[空⼼三⾓尖头]⾯向过程[结构化]⾯向对象模型--->过程(技术⽅法⼯具环境)[三]依赖关系⼀个类使⽤了另外⼀个类(1)关系联系直线(2)泛化关系直线空三⾓(3)依赖关系虚线尖头第四章聚集组成接⼝实现⼀类与类关系补充(4)实现关系直线关节窝直线(rose)(直线圆圈)[V isio]关联关系1强[聚集] 箭头空型的矩形2 弱[组成箭头]实型的矩形10⽉19复习UML组成->同意建摸语⾔->⼯具->⾯向对象软件⼯程(oose)->OOSE->类->需求->需求陈述{1、五类客观事物。
UML笔记---
第一部分绪论1、在OO开发中,至关重要的能力是熟练地为软件对象分配职责;个人认为将对象进行抽象的能力也相当重要。
2、分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案;设计(design)强调的是满足需求的概念上的解决方案(在软件方面和硬件方面),而不是其实现。
有益的分析和设计可以概括为:做正确的事(分析)和正确地做事(设计)。
3、需求分析可能包括人们如何使用应用的情节或场景,这些情节或场景可以被编写成用例(use case)。
4、面向对象分析关注从对象的角度创建领域描述,面向对象分析需要鉴别重要的概念、属性和关联。
面向对象分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念或对象。
5、面向对象设计关注软件对象的定义-它们的职责和协作。
6、与领域模型表示的是真实世界的类,设计类图表示的是软件类。
7、敏捷建模(agile m odeling)强调了UML作为草图的方式,这也是适用UML的普通方式,而且通常对时间投入具有高回报(一般费时较短)。
8、迭代开发(iterative developm ent)是UP和大多数其他现代方法中的关键实践。
在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,称为迭代(iteration),每次迭代都产生经过测试、集成并可执行的局部系统。
每次迭代都具有各自的需求分析、设计、实现和测试活动。
9、迭代开发的优点包括:∙减少项目失败可能性,提高生产率,降低缺陷率。
∙在早期缓解高风险(技术、需求、目标、可用性等等)。
∙早期可见的进展。
∙早期反馈、用户参与和调整,会产生更接近涉众真实需求的精化系统。
∙可控复杂性;团队不会被“分析瘫痪”或长期且复杂的步骤所淹没。
∙一次迭代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去。
10、在复杂、变更系统中(如大多数软件项目),反馈和调整是成功的关键要素。
11、如何进行迭代和进化式分析和设计:1)在第1次迭代之前,召开第一个时间定量的需求工作会议,例如确切地定义为两天时间,业务和开发人员(包括首席架构师)需要出席。
uml课程总结
UML课程总结一、引言UML(统一建模语言)是一种软件工程中广泛使用的建模语言,用于描述和设计软件系统的结构、行为和交互。
UML已成为软件开发过程中必不可少的工具,有助于提高软件开发的效率和质量。
本文将对我在学习UML课程期间所学到的知识和经验进行总结和回顾。
二、UML的基本概念和术语2.1 UML的定义和用途•UML是一种用图形符号来表示软件系统的标准建模语言。
•UML可以用于描述需求分析、系统设计、系统实现等软件开发的各个阶段。
•UML提供了一系列的图表和符号,用于表示类、对象、用例、活动、时序等概念和关系。
2.2 UML的核心元素•类:用于表示对象的属性和行为。
•对象:类的实例化。
•用例:描述系统和用户之间的交互。
•活动:展示系统进行的操作。
•时序:描述系统各个对象之间的交互顺序。
2.3 UML的图表和符号•类图:表示类和类之间的关系。
•对象图:表示对象和对象之间的关系。
•用例图:表示系统和用户之间的关系。
•活动图:表示系统内部的操作流程。
•时序图:表示对象之间的交互顺序。
三、UML在软件开发中的应用3.1 需求分析阶段1.用例图:通过识别和定义系统的需求和功能,形成用例图。
2.时序图:分析和描述系统中各个对象的交互顺序,帮助理解系统的行为。
3.2 系统设计阶段1.类图:通过识别和定义系统中的类以及类之间的关系,帮助设计系统的结构。
2.活动图:描述系统流程,帮助理解系统的行为和操作流程。
3.3 系统实现阶段1.时序图:在系统实现时可以使用时序图来指导编码和调试工作。
2.类图:在系统实现时也可以使用类图来定义和组织代码结构。
四、学习UML的收获与感悟4.1 对软件开发的帮助•UML作为一种标准化的建模语言,有助于提高软件开发的效率。
•使用图表和符号来表示系统结构和行为,能够更直观地理解和沟通系统设计。
•UML提供了一种规范和标准,可以减少开发者之间的误解和不一致。
4.2 对系统理解和设计的帮助•通过使用UML图表,可以更清晰地描述系统的需求和功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章为什么要建模这一章的内容或许在应用过建模技术后才能有所领悟,对于我这种初学者而言感觉象是政治课本。
①为什么要建模?人对复杂问题的理解能力是有限的,通过建模我们可以将复杂的问题分解成一系列的小问题,解决了这些小问题,最终就可以解决整个复杂的问题。
建模是为了使我们更好的理解正在开发的系统。
②建模要达到的目的⑴模型帮助我们按照实际情况或按照我们所需要的样式对系统进行可视化。
⑵模型允许我们详细说明系统的结构或行为。
⑶模型给出一个指导我们构造系统的模板。
⑷模型对我们作出的决策进行文档化。
③建模的四项基本原理⑴选择创建正确的模型。
⑵根据需要用不同精度级别来表示模型。
⑶模型要与现实相联系。
⑷单个模型是不充分的,对重要系统应用一组独立的模型去处理。
第二章 UML介绍UML(Unified Modeling Languag)统一建模语言①UML概述⑴UML用于对软件进行可视化、详述、构造和文档化。
⑵UML是一种图形化语言。
⑶UML是一种标准语言,可以精确的、无歧义的、完整的描述模型。
一个开发者用UML绘制了一个模型,另一个开发者可以无歧义的理解这个模型。
⑷UML绘制的图形可以用于制作文档。
⑸UML不限于对软件建模,也可以用于非软件系统建模。
②UML的概念模型学习建模的三个主要要素:⑴UML的基本构造块。
⑵支配这些构造块放在一起的规则。
⑶运用于整个UML语言的公共机制。
下面分别对三个要素进行介绍:⑴UML的基本构造块UML的基本构造块有3种:Ⅰ、事物(thing)Ⅱ、关系(relationship)Ⅲ、图(diagram)UML中包含4类事物,以下列出这些事物类别以及组成它们的具体事物:Ⅰ、结构事物(structural thing):类(class)、接口(interface)、协作(collaboration)、用况(use case)、主动类(active class)、构件(component)、节点(node)Ⅱ、行为事物(behavioral thing):交互(interaction)、状态机(state machine)Ⅲ、分组事物(grouping thing):包(package)Ⅳ、注释事物(annotational thing):注释(note)UML包含4种关系:Ⅰ、依赖(dependency)Ⅱ、关联(association)Ⅲ、泛化(generalization)Ⅳ、实现(realization)UML包含9种图:Ⅰ、类图(class diagram)Ⅱ、对象图(object diagram)Ⅲ、用况图(use case diagram)Ⅳ、顺序图(sequence diagram)Ⅴ、协作图(collaboration diagram)Ⅵ、活动图(activity diagram)Ⅶ、状态图(statechart diagram)Ⅷ、构件图(component diagram)Ⅸ、部署图(deployment diagram)⑵UML的规则(没看懂什么意思)⑶UML中的公共机制UML中包含4种公共机制:Ⅰ、规格说明也就是每种图形所代表的语义的文字叙述。
Ⅱ、修饰UML中大多数元素都可以用图形对其最重要部分进行可视化表示,而修饰用于描述这些元素的其他细节。
例如描述一个类的某个操作的性质(公共操作、保护操作或私有操作)。
Ⅲ、通用划分通用划分有两种:对类和对象的划分、对接口和实现的分离。
UML的每一个构造块几乎都存在这两种划分法,因此称为通用划分。
Ⅳ、扩展机制UML是可以以受控方式扩展的语言,它的扩展机制包括:㈠构造型(stereotype)用于扩展UML的词汇,创建新的构造块。
新构造块可以从现有构造块派生,用构造型来标记。
㈡标记值(togged value)用于扩展UML构造块的特性,创建元素的新信息。
㈢约束(constraint)用于扩展UML构造块的语义,增加新的规则或修改现有的规则。
③体系结构建议采用5个互连的视图来描述一个软件的体系结构:⑴系统的用况视图(use case view)⑵系统的设计视图(design view)⑶系统的进程视图(process view)⑷系统的实现视图(implementation view)⑸系统的实施视图(deployment view)注意:这里的视图并非前面提到的UML的基本构造块中的图(diagram),可以理解为从多个角度来观察系统的体系结构,每个视图包含多个图(diagram)。
第四章类(class)这里的类的概念和面向对象中类的概念是一致的,代表的是一种类型的对象,而不是个体对象(实例)。
对类的描述可以从下面几个方面来进行:⑴名称(name)为类定义一个有别于其他类的名称,简单的名称叫Simple Name,带有包名的名称叫Path Name。
⑵属性(attribute)属性是类的一些特性,是对类的一种数据或状态的抽象。
在程序中体现为方法,是对类能做的事情的抽象。
可以通过操作的特征标记(参数的名称、类型、缺省值、返回类型)来详细描述操作。
⑷对属性和操作的组织一个类可能包含众多的属性和操作,在画一个类时不必把每个属性和操作都显示出来,可以只显示一些与当前的图(diagram)相关的属性和操作。
当属性和操作的列表很长时,也可以利用构造型对属性和操作进行分类,使得列表更容易被浏览。
⑸职责职责就是对类的功能的描述,详细描述一个类的职责是对类建模的一个好的开始点。
⑹其他特征一般来说属性、操作和职责基本可以描述一个类的特征了,但有一些特殊类还需要其他的方式来描述它的特性,例如对异常的描述,这些被列为类的高级概念,在第9章讨论。
在UML中以上的特征都用图形的方式表现出来,在编程中我们也用程序代码来描述了这些特征,例如这里的属性对应程序中的属性,操作对应程序中的方法),职责对应对类的总描述(在Java中就是每个类的描述,写在public class ...之前的注释),因此很多建模工具都可以通过UML图来直接生成程序代码。
类在建模技术中通常应用于:⑴对系统词汇建模也就是把系统中的对象抽象出来用类来描述。
⑵对系统中职责的分布建模将系统的职责均衡的分布到各个类中,大概是用于设计控制类时。
⑶对非软件事物建模通常是系统外部的事物,但参与系统内部的运作。
⑷对简单类型建模例如自定义的枚举类型。
第五章关系(relationship)这一章讲述了三种最重要的关系:⑴依赖(dependency)依赖用来表示类之间的使用关系,包括精化、跟踪、绑定。
通常当A类的某个操作中使用B类作为参数,那么称A依赖B。
此外对A事物进行了B注释时,A事物依赖B 注释。
A类中如果引用(import)了B包(package)中的类,也称A类依赖B包。
可以为依赖定义一个名称来区别不同的依赖,通常是不需要的,我们可以使用构造型来区别依赖的不同含义。
(构造型是UML公共机制中扩展机制下的一种机制)关联用来表示对象之间的结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。
书中强调关联是对象之间而非类之间的关系,面向对象中对象就是类的实例,所以它是表示实例之间的结构关系的。
关联相比依赖和泛化要复杂一些,可以用4种修饰来描述一个关联:Ⅰ、名称可以为关联定义一个名称,用来描述该关系的性质,同时该名称还可以定义一个方向,表明是从谁指向谁。
Ⅱ、角色角色是关联中一端的对象对另一端的对象所呈现的职责。
如果有角色的修饰,通常就不需要名称的修饰了。
Ⅲ、多重性这里的多重性指的是关联的另一端的类的每个对象要求在本端的类必须有多少个对象。
也就是通常的数量对应关系,1对1,1对多,多对1等等。
Ⅳ、聚合聚合是一种特殊的关联,它描述的是整体/部分的关系。
⑶泛化(generalization)泛化用来表示一般类/特殊类之间的关系。
它在编程中体现为继承,父类与子类的关系就是一种泛化关系。
依赖和关联是可以自连接(由自己连接到自己)的,而泛化不可以。
第六章公共机制第二章的UML介绍中,提到了UML的公共机制,分别是规格说明、修饰、通用划分和扩展机制。
这一章针对修饰和扩展机制进行更详细的说明。
①注解(note)注解是附加在元素或元素集上用来表示约束或注释的图形符号。
注解可以含有文字或图解或者URL。
使用原则:⑴应放置在对应元素附件,并使用依赖关系连接注解和对应元素。
⑵只在需要的时候显示注解。
⑶如果注解很长,可以考虑放置在外部文本中,使用链接指定位置。
⑷适当的舍弃无保留价值的注解。
②其他修饰例如用于修饰关联的角色、多重性等。
对于类、构件、节点等事物,也可以在图形底部增加分隔栏,以填写修饰信息。
③构造型(stereotype)用于对UML的词汇的扩展,可以把构造型看作元类型,因为每一个构造型会创建一个相当于UML元模型中新类的等价物。
新构造块可以有自己的具体特性、语义和表示法。
最简单的构造型可以是在UML的事物图形上增加一个《name》。
使用原则:⑴确认用基本的UML无法表达你要描述的事物。
⑵应从UML基本事物中选取最相似的图形来构造新构造块。
⑶通过定义一组标记值和约束来详述新构造块的特性和语义。
⑷为了更清晰的标出新构造块,可以对其使用新图标。
④标记值(togged value)最简单的标记值是在UML的事物图形的名称下增加一个用{ 内容 }的标记。
例如指定枚举类型的值。
使用原则:⑴确认用基本的UML无法表达你要描述的特性。
⑵泛化的应用规则是:为一种元素定义的标记值可应用到它的子孙事物。
⑤约束使用约束,可以增加新的语义或改变已存在的规则。
一个约束可以用{ 内容 }标记起来放在相关元素的附近。
使用原则:⑴确认用基本的UML无法表达你要描述的语义。
⑵将约束放到对应元素的附件,并使用依赖关系连接起来。
⑶如果需要把新语义描述得更精确和更形式化,可用OCL书写新语义。
(OCL不知道什么意思)总的说来,使用基本的UML可以描述你的系统,在某些情况下可能不能完全满足你的需求,那么就可以使用扩展机制来弥补。
应该尽可能的使用UML定义好的基本元素,这样才能保证你的UML能被他人理解。
第七章图这里再次提到对软件体系结构进行可视化、详述、构造和文档化,有5种最重要的互补视图:用况视图(use case view)、设计视图(design view)、进程视图(process view)、实现视图(implementation view)、实施视图(deployment view)。
每一种视图都包含结构建模(对静态事物建模)和行为建模(对动态事物建模)。
UML中包含9种图,这在第二章已经介绍过。
可以将这9种图分为两类,一类用于结构建模,称为结构图;一类用于行为建模,称为行为图。
①结构图结构图有4种,分别是:⑴类图(class diagram)类图显示一组类、接口、协作以及它们之间的关系。