UML 及其建模工具的使用
2
内容提要
一、软件工程方法学
二,UML的基本概念
静态建模
动态建模
物理架构
建模步骤
三,Rose的使用
四、三个实例
五,Java代码生成
六,Rational统一过程
1,瀑布模型 (线形顺序模型 )
可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段一,软件工程方法学按照传统瀑布模型开发软件的特点
1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.每个阶段必须完成规定的文档 ;
每个阶段结束前完成文档审查,
及早改正错误。
2,原型模型 (快速原型法)
建造 /修改原型用户测试运行原型听取用户意见原型范型采用原型模型的软件生存周期分析定义系统需求生成原型系统设计程序设计编码测试运 行和维护原型化含原型化的软件生存期
7
技术发展背景 [1]
面向对象的含义
面向对象技术回顾
UML的产生
8
技术发展背景 [2]-面向对象的含义
面向对象中有几个非常重要的概念:
封装 ( encapsulation)
信息 /实现的隐藏 ( information/implementation
hiding)
状态保持 ( state retention)
对象标识 ( object identity)
消息 ( message)
类 ( class)
继承 ( inheritance)
多态性 ( polymorphism)
一般性 ( generality)
9
技术发展背景 [3]-面向对象的含义
封装,将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行。
信息 /实现的隐藏,将某些属性或方法限制在封装内部使用,限制外部的可见性。
状态保持,对象能够保持状态,可以用于后续的处理。
对象标识,每个对象可以作为软件实体被标识和处理,每个对象都有一个对象标识符( object
identifier OID)。
消息,对象间发送请求的载体。
10
技术发展背景 [4]-面向对象的含义
类,类是对象的类型(模版),对象是类的实例。
继承,子类隐式使用超类(或父类)的属性和操作。
多态性,子类覆盖( overriding)父类的方法,
它和重载( overloading)的区别在于重载是在同一个类中定义,利用参数的不同来进行动态绑定( dynamic binding)。
一般性,类的定义是参数化的或模版化的,提高了定义的通用性。
11
技术发展背景 [5]-面向对象技术回顾
面向对象技术是许多人历经多年研究积累的产物。
类的概念,是面向对象的重要组成部分。
Smalltalk,提出许多面向对象技术的核心概念,如:
消息和继承。
Dijkstra的软件正确性理念,提出了用抽象层构造软件的观点。
ADT抽象数据类型,奠定面向对象的基础,支持信息的隐藏。
Ada语言,提出了一般性和包两个概念。
C++语言,最广泛使用的面向对象的语言。
Eiffel语言,融合了许多最佳的计算机科学思想和面向对象思想。
12
为什么对面向对象方法感兴趣?
面向对象方法的主要优点:
自然性追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。
软件复用可复用性(可重用性) reusebility
可扩展性
可管理 性
13
可复用性(可重用性)
面向对象技术允许复用的不仅仅是代码,通过面向对象技术,我们可以复用需求、分析、设计、测试计划、用户界面以及体系结构等等,事实上,软件工程生存期中的每个部分都可以复用 。
14
传统系统分析,面向功能,把系统看成一组功能
OOA,把问题当作一组相互作用的实体,并确定实体间关系
15
面向对象技术是一个有全新概念的开发模式,其特点是,
(1)方法是对软件开发过程所有阶段进行综合考虑而得到的 ;
(2)从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性 ;
(3)将 OOA(分析),OOD(设计),OOP
(实现) 集成到生存期的相应阶段,
16
开发方法的组合分析 设计 编程结构化 结构化 面向对象结构化 面向对象 面向对象面向对象 结构化 第三代或第四代语言面向对象 面向对象 第三代或第四代语言面向对象 面向对象 传统编程与面向对象的混合面向对象 面向对象 面向对象
17
OO方法的开发过程
OO方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的,部件,都是 类,在面向对象生存期的各个阶段对各个 类的信息进行细化,类 成为分析,设计和实现的 基本单元 。
18
对象模型对象模型表示静态的、结构的系统数据的性质。
对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。
OO方法强调围绕对象而不是功能来构造系统 。
19
对象 ( object)
现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。
对象具有的含义:
在现实世界中:是客观世界中的一个实体
在面向对象程序中:
表达成计算机可理解、可操纵、具有一定 属性 和 行为 的对象
在计算机世界中:
是一个可标识的存储区域
20
面向对象方法是一种运用对象、
类、继承、封装、聚合、消息传递、
多态性等概念来构造系统的 软件开发方法 。
面向对象 =对象 + 类 + 继承 + 消息通信面向对象的主要特征:
封装性 (Encapsulation)
继承性 (Inheritance)
多态性 (Polymorphism)
21
类( class)
具有共同属性和行为的对象的抽象
类与对象的关系
类是对象的抽象
对象是类的实例类对象
22
对象、实体与类对象 实体类 抽象数据类计算机世界 现实世界计算机逻辑的实现影射抽象实例化抽象概念世界
23
封装封装是软件开发方法的重要原则,有两个涵义:
把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位
(对象)。
尽可能隐蔽对象的内部细节
(信息隐蔽)
24
传统方法数据与过程是分离的过程 1输入输出 过程 2
过程 3
数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元
25
传统方法和面向对象方法的比较传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息
26
继承 (继承性 inheritance)
继承性是父类和子类之间共享数据和方法的机制
继承性具有传递性
继承性包括单继承和多重继承 子类继承部分增加部分父类共性部分
27
继承性作用
使软件系统具有开放性
更好地进行抽象与分类
增强代码的重用率
28
多态(多态性 )
不同的对象收到同一消息可产生完全不同的结果,这一现象叫做 多态
多态的效果?
用户发送一个通用的消息,而实现的细节则由接收对象自行决定实现机制:重载( override)
29
多态性的作用
增强了操作的透明性,可理解性和可扩展性
增强了软件的灵活性和重用性
30
消息 (message)
消息? 对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明
消息内容? 通常包含接收方及请求接收方完成的功能信息
发送方? 发出消息,请求接收方响应
接收方? 收到消息后,经过解释,激活方法,予以响应
31
面向对象的软件工程
对传统软件工程的改进:
1、快速原型法(试用-反馈-修改,
多次反复)
2、面向对象的软件工程:面向对象的方法
(基本概念:对象、类、消息、继承、
多态性、封装)
优点:思维一致、稳定性好、可重用性好、可维护性好
32
两种技术的比较
1、这两种途径 并不是相互排斥 的,相反,它们是相互促进相互补充的。
工作要素:确定,做什么,,确定,怎样做,,,实现,,
,测试,
2、传统的 生命周期方法学强调,需求分析的重要性、强调软件文档的重要性,适用于需求模糊或者需求不稳定的系统。
3、面向对象方法学:工作重点在 分析和设计阶段,
阶段的划分是十分模糊的,通常在分析、设计和实现等阶段多次迭代。既适用于线性的瀑布开发模型,也适用于快速原型法。
33
软件系统的建模及建模原则
计算机软件是,产品,,因为它具有产品特征:
1)软件产品为用户提供功能;
2)开发者和使用者是脱离的;
3)软件产品具有质量的概念;
4)软件产品具备完备的用户手册技术文档;
5)软件产品的生产过程具有工业化生产的特点;
6)开发团队协同工作,软件产品需要使用工具,
技术可重用,质量必须稳定,不应在不同版本的软件之间产生质量不稳定。
34
在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。
所谓模型,就是为了理解事物而对事物作出的一种抽象。
35
软件建模基本目的有四点:
规范( specifying)、
可视化( visualizing),
建造( constructing)
和建档( documentation)。
(1)规范。在分析和设计阶段为软件系统的各个组成部分规定其功能、结构和对外接口。
(2)可视化。有助于软件规范的表达和交流。
36
(3)建造(生成源代码)。完整定义的软件规范可以实现通过模型向源代码的映射,
支持软件系统的建造。
(4) 建档。完整定义的软件模型是反映软件系统的结构和实现的重要技术资料,可以作为技术档案保存,以便后续产品或相关产品能有效地重用其中的成熟技术。
37
2.建模的原则
(1) 准确的原则
模型必须准确地反映软件系统的真实情况。模型必须准确,
意味着在软件开发的整个周期内模型必须和产品始终保持一致。
(2) 分层的原则
在建模的过程中,必须有不同的模型,以不同的抽象程度,
反映系统的不同侧面。在软件构筑的不同阶段,不同的开发人员如:投资者、管理者、设计者、程序员、测试者和使用者看待软件的侧重面有所不同。因此,软件系统的建模需要不同的模型以反映系统的不同侧面。如,一类模型描绘系统的外部边界和行为,另一类模型描绘系统的内部逻辑关系。
38
(3) 分治的原则
不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,
分别处理这些模型,相对独立但又互相联系,综合起来构成了此侧面的一个完整的模型。
(4) 标准的原则
模型必须在某种程度上是通用的。建模的基本目的是交流,
一个开发队伍内部的交流,同一软件的不同时期的版本的开发队伍的交流,不同软件的开发队伍之间的交流,以实现最大程度的软件复用。交流需要语言,语言是通用的、
标准的。
39
二、统一的 建模语言 方法由 Rumbaugh,Booch,
Jacobson 提出的统一建模语言
(Unify Modeing Language简称
UML)
UML是一种定义良好,易于表达,
功能强大且普遍实用的建模语言。
40
UML的产生
1988年到 1992年是面向对象方法学蓬勃发展的时期,人们从各自的经历和软件开发的经验提出了各种面向对象的开发方法,代表的有:
Sally Shlaer 和 Steve Mellor以信息模型化方法作为基础,并为目标系统增设了状态模型和过程模型;
Peter Coad 和 Ed Yourdon则在信息模型化、面向对象的程序设计语言和基于知识的系统的基础上,建立了他们的 OOA和 OOD,主要工具是类与对象图、
对象状态图和服务图;
HP公司的 Fusion开发方法。
41
UML的产生
Wirfs-Brock的职责驱动设计 (Responsibility-Driven
Design),也称类 -职责 -协作 Class-Responsibility-
Collaboration (CRC) cards,用类所承担的责任来描述系统,利用责任把封装的概念带到分析与设计活动中去;
Grady Booch在 Rational软件公司开发 Ada系统作了许多构件 (Component),并以此由底向上构筑大型软件系统,即 OOD方法;
Jim Rumbaugh在通用电子 (General Electric)领导一个研究小组,提出了对象建模技术 (OMT)方法,通过面向对象的三种模型:对象模型、动态模型和功能模型,
从不同角度对系统进行描述;
42
UML的产生
Ivar Jacobson和他的 Objectory 公司开发了 OOSE
( Object Oriented Software Engineering)面向对象的软件工程,利用 Use Cases来表达系统要求。
1994年任职于 Rational公司的 Grady Booch首先联合
Jim Rumbaugh加盟 Rational软件公司开始了统一 OO方法学和工具的历程。以融合 Booch和 OMT方法的 UML开发开始。 1995年 10月 UML0.8发布。 1995年秋,Ivar
Jacobson和他的 Objectory 公司加盟 Rational,UML
中加入了 OOSE方法,使其有可能最集中地包容当今最适用的各种 OO方法。 1996年,UML0.9版本发布,1997
年 1月,UML1.0被提交给 OMG组织,作为软件建模语言的候选,1997年 11月 7日,UML1.1正式被 OMG组织采纳为业界标准。 UML经历了 1.2,1.3,1.4,目前
UML2.0版本正在制定。
43
Rational三剑客
Jim Rumbaugh
Grady Booch
Ivar Jacobson
44
UML的基本概念 [1]
UML简介
UML的目标
UML概念范围
45
UML的基本概念 [2]- UML简介
UML(Unified Modeling Language)是一种构建软件系统和文档的通用可视化建模语言。
UML能与所有的开发方法一同使用,可用于软件开发的整个生命周期。
UML能表达系统的静态结构和动态信息,并能管理复杂的系统模型,便于软件团队之间的合作开发。
UML不是编程语言,但支持 UML语言的工具可以提供从 UML到各种编程语言的代码生成,也可以提供从现有程序逆向构建 UML模型。
46
UML的基本概念 [3]- UML简介
UML并不是万能的,它是一种离散的建模语言,对于特定的领域,比如,GUI、
VLSI电路设计或基于规则的人工智能,用特定的语言和工具可能更合适。
47
UML的基本概念 [4]- UML的目标
最重要目标,UML是所有建模人员可以使用的通用建模语言。它包含主流建模方法的概念,从而可以替代现有的软件分析和设计方法,比如:
OMT,Booch,OOSE等。
UML不是完整的开发方法,它不包括逐步的开发流程,但它提供所有必要的概念,具备足够的表达能力。
UML的另一个目标是:能尽量简洁地表达系统的模型。
48
UML的目标是:
1.易于使用,表达能力强,进行可视化建模;
2.与具体的软件开发过程无关,可应用于任何软件开发的过程;
3.简单、可扩展。扩展无需对核心概念进行修改;
4.为面向对象的设计和开发过程中涌现出的高级概念(例如协作、框架、组件)提供支持;
5.吸收当代最好的软件工程实践经验;
6.可升级,具有广阔的适用性和可用性;
7.有利于面向对象工具的市场成长。
49
UML语言包含三方面内容:
1,UML基本图素:它是构成 UML模型图的基本元素。
2,UML模型图:它由 UML基本图素按照 UML建模规则构成。
3,UML建模规则,UML模型图必须按特定的规则有机地组合而成,从而构成一个有机的、完整的 UML模型图( well-formed UML diagram)。
50
一、基本图素分为四类:
结构模型图素、
行为模型图素、
成组模型图素、
其他模型图素、
公用机制。
51
UML的基本概念 [5]- UML概念范围
UML概念可以划分为以下范围:
系统需求
静态结构
动态行为
交互行为
物理实现
各种图之间的关系
模型组织
扩展机制
52
UML的基本概念 [6]- UML概念范围
系统需求
用例视图 (Use Cases View)从外部用户的角度来描述系统的行为,它将系统功能划分为对用户有意义的事务,这些事务被称为 用例,用户被称为 执行者,用例视图 也就是描述活动者在各个用例中的参与情况,它指导所有的行为视图。
53
UML的基本概念 [7]- UML概念范围
静态结构,
静态视图 (Static View),一个模型必须首先定义各种事物的内部特征和相互之间的关系,
应用概念建模成 类,类描述事物的 属性 和以及在这些属性上的 操作 。类之间可以存在不同的关系,比如 泛化 (继承),关联 和 依赖 等,静态视图表示成 类图,静态视图在某一时刻的快照称为 对象图 。
54
UML的基本概念 [8]- UML概念范围
动态行为:
状态机视图 (State Machine View),通过对每个类的对象的生命周期进行建模,描述了对象时间上的动态行为。 状态机 是由 状态 和 迁移组成的图,状态机通常附属于类,描述类实例对接受 事件 的响应。
活动视图 (Activity View)是利用状态机对运算和 工作流 进行建模的特殊形式。 活动图 的状态代表了运算执行的状态,而非一般对象的状态,活动图和流程图很相似,不过它支持并发。
55
UML的基本概念 [9]- UML概念范围
交互行为:
交互视图 (Interaction View),对象通过交互来实现行为,交互视图通过 协作 来进行建模,
协作具有结构和行为两个方面,结构包含为行为方面而定义的一系列角色和关系,行为方面是绑定于角色的对象间的一系列交换的消息,
这些消息在协作中称为 交互,消息序列可用两种图来表示,顺序图 (重点在消息的时间顺序)
和 协作图 (重点在交换消息的对象间的关系)。
56
UML的基本概念 [10]- UML概念范围
物理实现:
物理视图 (Physical View),许多系统模型独立于最终的实现,在实现方面,必须充分考虑系统的重用性和性能。 UML有两种视图来表示系统的实现,实现视图 和 部署视图,实现视图将可重用的系统片段打包成 组件,部署视图描述系统运行时资源的物理分布,这些资源称为结点 。
57
UML的基本概念 [11]- UML概念范围
各种图之间的关系
静态视图(类图,对象图),物理视图(实现视图,部署视图)是描述系统的静态结构。
用例图是描述系统的外部视图。
活动图描述系统的外部 /内部视图。
交互视图(顺序图,协作图)描述系统的内部视图。
状态图描述单个类的动态行为。
58
UML的基本概念 [12]- UML概念范围
模型组织
模型管理视图 (Model Management View),
任何大系统必须划分为较小的单元,以使人们能在某一时刻只接触有限的信息,不影响团队间的并行工作。模型是利用 包 (Package)和 包的依赖 来进行管理的。包是 UML模型中通用的层次组织结构,包上的依赖总结了包内容的依赖关系。
59
UML的基本概念 [13]- UML概念范围
扩展机制
扩展机制 (Extension Mechanisms),UML
能满足绝大部分系统建模的需要,但任何语言都不是万能的,它必须考虑一定的扩展机制,
UML的扩展机制包括 约束,标签值 和 原型 。这些扩展机制可以用来为特定领域剪裁 UML的配置,这样带来一些好处:根据自身需要来使用建模语言。
60
基本图素
一个模型必须首先定义各种事物的内部特征和相互之间的关系,下面介绍一些基本的模型元素:
分类,共 12个
类( Class)
接口( Interface)
包( Package)
角色( Actor)
用例( Use Cases)
组件( Component)
结点( Node)
状态( state) ……
关系:
关联( Association)
泛化( Generalization)
依赖( Dependency)
实现( Realization)
约束( Constraint)
61
基本图素 [1]-角色
角色 是与系统、子系统或类交互的外部人员,进程或事务。在运行时,具体人员会充当系统的多个执行者,不同用户可能会成为一个执行者。
Student
Professor
Billing System
Registrar
根据上下文的不同而具有不同的含义
62
基本图素 [2]-用例
用例 是系统提供的外部可感知的功能单元,用例的目的是定义清晰的系统行为,
但不解释系统的内部结构。
用例可以与角色关联,也可以参与其他的多种关系,比如扩展、泛化和包含等。
用户的动态部分用交互视图来描述,比如顺序图、协作图。
用例用椭圆来表示,用例名标在椭圆下方,用实线与同自身通信的用户相连。
求一元二次方程根
63
基本图素 [3]-系统
系统也叫做系统边界,用于界定系统功能范围。
它用一个矩形框表示。描述该系统功能的用例都置于其中,而描述的与系统交互的角色都置于其外。系统(边界)常常省略不画。
64
基本图素 [4]-类
类 是具有相同属性、操作和关系的对象集合的总称。通常在 UML中类被画成矩形,包括三个部分:
名称、属性和操作。下面是可选的。
名称,每个类都必须有一个名字,用来区分其它的类。
类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如 Wall、
java::awt::Wall都是合法的类名。
属性,类可以有任意多个属性,也可以没有属性。在类图中属性只要写上名字就可以了,也可以在属性名后跟上类型甚至缺省取值 。
操作,操作是类的任意一个实例对象都可以调用的,
并可能影响该对象行为的实现。
65
基本图素 [4]-类类名属性操作
66
基本图素 [5]-对象
1、对象是类的实例。
2、对象图素中对象名的下面加下划线,对象图素所使用的符号与类图素基本相同。
二者的区别在于对象图素展示的是类的实例,而不是类本身。
3、对象图素除第一格外,其他格是可选的。
对象常常出现在活动图、序列图和协作图中。
67
68
基本图素 [6]-接口
接口 是未给出实现的对象行为的描述,接口包含操作,但没有属性,一个或多个类可以实现接口,
每个类实现接口的操作。
思考:为什么会有接口?
String
isEqual(String),Boolean
Hash(),Integer

Hashable
Comparable
接口标记
69
基本图素 [7]-协作
协作实质代表一组模型元素协同完成对应用例的功能。
协作与对应的用例存在着一种所谓的实现关系。
协作与对应的用例分离带来的好处是为描述一个用例可以用不同的协作实现提供了可能。
70
求一元二次方程根 求一元二次方程根
71
基本图素 [8]-组件
组件 是可重用的系统片段,具有良好定义接口的物理实现单元。每个组件包含了系统设计中某些类的实现。
组件设计的原则,良好的组件不直接依赖于其它组件,而是依赖于其它组件所支持的接口。这样的好处是系统中的组件可以被支持相同接口的组件所取代。
一个组件可能是 源代码,可执行程序或 动态库 。
Student
72
基本图素 [9]-结点
结点 代表系统运行时的物理对象,结点通常拥有运算能力,它可以容纳对象和组件实例。
Registration
Database
Library
客户
Main
Building
73
基本图素 [10]-包
任何大系统都必须划分为较小的单元,以便人们在某一时刻可以和有限的信息工作,
使团队的工作不相互影响。
包可以包含各种模型元素和其它的包,包之间还可能存在一定的依赖。
<<package>>
Finances
<<subsystem>>
Credits
<<subsystem>>
Accounts
<<subsystem>>
BankInterface
74
基本图素 [10]-包
具有独立的说明和实现部分的包,它代表了与系统其它部分具有清晰接口的清晰单元,它通常代表了系统在功能或实现范围上的划分。
75
基本图素-消息
消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求。
序列图中的消息有简单、异步、同步之分
1、简单消息是一个对象到另一个对象的转移。
2、如一个对象发送了同步消息,必须等待对方的回答后才继续自己的操作。
3、相反,如一个对象发送了异步消息,不必等待对方的回答就继续自己的操作。
76
77
基本图素 [11]-关系-关联
关联 描述了系统中对象和其它实例之间的离散的连接,关联是有序的,它允许重复,关联的实例是 链 。
关联至对象的连接点称为 关联端点,很多信息被附在关联端点上,它拥有角色名、重数(多少个类的实例可以关联于另一个类的实例),可见性等。
关联有自己的名称,可以拥有自己的属性,这时关联本身也是类,称为 关联类 。
78
基本图素 [11]-关系-关联
Manages
Job
boss
worker
employeeemployer
1..*
*
*
0..1
Company Person
Job
Salary
角色名重数 关联名称关联类二元关联自关联
79
基本图素 [11]-关系-关联
聚集 ( Aggregation)用来表达整体-部分关系的关联。 组合 ( Composition)是一种聚集,是关联更强的形式。
Polygon
Point
1
3..* points
Contains
Polygon
Window
Slider
1
2 Scrollbar
Header
1 Title
1 1
Panel
1 Body
聚集 组合
80
基本图素 [11]-关系-泛化
泛化 是一般化和具体化之间的一种关系。
继承 就是一种泛化关系,更一般化的描述称为 双亲,双亲的双亲称为 祖先,更具体化的描述称为孩子,在类的范畴,双亲对应超类,孩子对应子类。
Tree
Oak Elm Birch
孩子 双亲
Person
Student
Graduate
祖先
81
基本图素 [11]-关系-泛化
多重继承,一个孩子可以从多个双亲继承属性和方法。多重继承可能存在 冲突,因为被继承的双亲可能存在相同的类声明,这时,最好显式解决冲突问题。
Assistant
Teacher Student
82
基本图素 [11]-关系-依赖
依赖 指明两个或两个以上模型元素之间的关系。
依赖有很多种类,比如:实现( realize)、使用、
( usage)、实例化( instantiate)、调用
( call),派生( derive)、访问( access)、
引入( import)、友元( friend)等等。
<<subsystem>>
Application Server
<<subsystem>>
DataBase
<<usage>>
依赖类型
83
基本图素 [11]-关系-实现
实现 是依赖的一种,但由于它具有特殊意义,所以将它独立讲述。实现是连接说明和实现之间的关系。
String
isEqual(String),Boolean
Hash(),Integer

Comparable
<<interface>>
Comparable
isEqual(String),Boolean
Hash(),Integer

实现特殊的实现标记
84
基本图素 [11]-关系-约束
约束 用来表示各种限制,如关联路径上的限制,
和属性特征检测(存在、所有)。
Person Committee
Member-of
约束
Chair-of
{subset}
85
模型图
静态视图:
类图
对象图
部署图
组件图
86
静态建模 [1]-类图
静态视图 是 UML的基础,静态视图表示为类图,
主要是描述类和类之间的关系。
继承关联
Person
House
residence 0..*
owner 0..*
Financial
Institution
client creditor
0..*0..*
Mortgage
principal
rate
term
关联类
{ordered}
0..*
1
Bank TrustCompany
87
静态建模 [2]-对象图
对象图是系统在某一时刻的快照。
Smith,Person
cottage,House home,House
first,Mortgage
second,Mortgage
RoyalBank,Bank

88
静态建模 [3]-组件图
组件图 描述可重用的系统组件以及组件之间的依赖。
Course Course
Offering
Student Professor
Course.dll
People.dll
Course
User
Register.exeBilling.exe
Billing
System
89
静态建模 [3]-部署图
部署图 描述系统资源在运行时的物理分布,系统资源成为结点。
Registration Database
Library
Dorm
Main
Building
90
动态建模 [1]
用例图:从外界对系统的感知
状态图:对象自身的活动
活动图
序列图:对象之间的关系
协作图
91
动态建模 [1]-用例图
用例图 描述执行者在各个用例中的参与情况。
Student
Registrar
Professor
Maintain Schedule
Maintain Curriculum
Request Course Roster
Billing System
92
动态建模 [1]-用例图
用例图 描述各个执行者在各个用例中的参与情况,
描述系统为用户所感知的外部视图。
用例图的功能:
捕获系统用户需求
描述系统边界
指明系统外部行为
指导系统开发者的功能开发
系统建模的起点,指导所有的类图和交互图的设计
产生测试用例,用户文档
估计项目大小和进度。
93
动态建模 [1]-用例图
用例可以参与多种关系:关联、扩展、泛化和包含。
Customer
Salesman
Supplier
Supervisor
Sale
Management
Supply
执行者用例系统边界
94
动态建模 [2]-状态机图
状态机图 是对单个类的对象的生命周期进行建模,
描述了对象时间上的动态行为,每个对象被认为是 事件驱动 的孤立实体。
事件 表达对象间的调用、显式信号、值的改变或时间的推移。
调用事件、变更事件、信号事件、时间事件
状态 描述对象生命周期的一段时间,可以是等待其它事件时所处的时间,或是执行某一活动时所处的时间,状态分为 简单状态 和 复合状态 。
95
动态建模 [2]-状态机图
状态机图是由 状态 和 跃迁 组成的图,通常状态机附属于类,描述类实例对接受事件的响应。
跃迁 定义对象对某一事件发生的反应,通常,迁移具有 触发事件,跃迁条件,动作 和 目标状态 。
跃迁的种类有 外部跃迁 和 内部跃迁 。外部跃迁是最普通的跃迁,会发生状态改变;内部跃迁不发生状态改变。
跃迁有两个隐式动作,进入动作 和 退出动作 。无论何时进入和退出时都要执行,这方便进入时进行初始化工作,退出时进行资源的释放工作。
96
它强调对象行为的事件顺序,强调对象对外部事件的响应及相应的状态变迁。
通过状态图可以了解一个对象所能到达的所有状态以及对象涉及的事件(消息、超时、错误、条件满足)对对象状态的影响。
97
动态建模 [2]-状态机图
created
readyHandleEvent
Initialize
Object
Terminate
Object
Wait for
Event start/^master.ready()
poll/^master.ack()
stop/
初始状态结束状态状态机状态触发事件动作表达式跃迁
98
动态建模 [3]-活动图
活动图 是用状态机对工作流进行建模的特殊形式,
它和流程图很类似,不过它支持并发控制。
活动图一般不描述所有的运算细节,它显示活动的流,但不显示执行活动的对象。
活动图处于系统的外部和内部视图之间,所以它可以作为设计的起点,为了完成设计,每个活动必须扩展成一个和多个操作,每个操作被指派给特定的对象来实现。
带有生命线的活动图和无生命线的活动图。
99
动态建模 [3]-活动图
Customer Sales Stockroom
Request
Service
Pay Take Order
Fill Order
Deliver Order
Collect Order
泳道
100
动态建模 [3]-带有对象流的活动图
Customer Sales Stockroom
Request
Service
Pay
Take Order
Fill Order
Deliver Order
Collect Order
泳道
Order
[Placed]
Order
[Entered]
Order
[Filled]
Order
[Delivered]
对象
101
动态建模 [4]-序列图
对象行为是通过交互来实现的,交互 是对象间为完成某一目的而进行的一系列 消息 交换。
消息 是对象间的单向通信,从发送者到接受者的携带信息的控制流。消息可能带有 值参 。
消息序列可用两种图表示,序列图 (重点在消息的时间顺序)和 协作图 (重点在交换消息的对象间的关系)。对协作图来说,时间顺序可以从顺序号获得。
102
动态建模 [4]-序列图
序列图 用二维表来表示交互,纵向是时间轴,横向是参与的角色以及它们交换的消息。
角色的生命周期表现为 生命线,一条垂直的线,
在激活的时间段里是双线,在状态保持的时间里是虚线。
消息表示为从一条生命线出发到另一条生命线的有向线,从上而下,表示消息的时间顺序。
103
动态建模 [12]-序列图
Caller Operator Callee
时间轴
call
ack
number
call
ack
talk
transfer
顺序图生命线激活状态保持角色
104
动态建模 [5]-协作图
协作图 包含分类角色和关联角色,当它实例化时,
对象被绑定到分类角色,链被绑定到关联角色,
关联角色还可能被各种暂时性的链来充当,如过程参数和局部过程变量,链可以指定暂时性的原型,<<parameter>>,<<local>>或自身调用 <<self>>。
协作图对实现协作的对象和链进行建模,而忽略其他对象。
105
动态建模 [5]-协作图
Student
Registration Form
Registration Manager
1,fill in info
2:submit
3,add(smith,math)
math
4,add(smith)
106
动态建模 [5]-协作图
通常在一个协作图中每个对象分配一个符号,然而有时不同状态的对象需要显式指出,流 将同一个对象的不同状态版本关系在一起,使用
<<become>>原型。流的 <<copy>>原型不太常用。
:Controller
:Directory[closed]
:Directory[open]
1:expand()
2:sort()
1.1 <<become>>

107
公用机制
注释
规范说明
修饰
扩充机制
公共划分
108
公用机制 [1]-注释
注释 用于解释设计的思路,便于理解。
一个好的模型应该有详尽的注释。
Represents
an incorporated entity
Company

注释
109
规范说明
软件模型必须是完整的,以便于软件系统的建造。也就是说,此模型必须具备足够的详细信息以供软件建造使用。这些构成完整模型的详细信息就是模型的规范说明
(简称规范)。所有 UML模型成员都有规范说明。
不同的模型成分规范说明的内容不同,这些规范说明的内容一般用属性名和属性值的形式来表达。 UML中有许多预定义的属性,比如:文档 (documentation)、持续性 (persistence)和并发性 (Concurrency)等。
属性一般作为模型成分附加说明,比如,用一些文字逐条列举类的功能,这种规范说明方式是非形式化的。
110
修饰
UML模型图中的图素通常都有一个基本的结构,
它描述模型成分最主要的特征。为了表达和建造系统的需要,基本图素表达时,UML提供了有选择地公开相关细节的方式。
表示的类的属性和方法的可见性图示出了。
UML模型中类的成分带,-”表示私有的
(Private),带,+”表示公开的( Public),其他类可以访问,带,#” 表示受保护的
( Protected)。
111
扩充机制
当使用 UML的基本图素难以有效地表达复杂事物时,就需要对 UML进行某种形式的扩充,正如同人类的语言需要不断地扩充语汇,以描述各种新出现的事物一样。
UML提供了这种扩充机制( extensibility
mechanisms)。
112
建模规则
UML的模型图不是 UML基本图素的简单堆砌,它必须按特定的规则有机地组合而成,从而构成一个完整的 UML模型图。
UML建模规则包括,
( 1) 命名,任何一个 UML基本图素和模型图(统称 UML
成员)都必须命名。
( 2) 作用域,UML成员所定义的内容起作用的上下文环境,如类名受所属包的约束。
( 3) 可见性,UML成员能被其它成员引用的方式。
( 4) 完整性,UML成员之间互相关联的合法性和一致性。
( 5) 运行属性,UML成员在运行时的特性,如进程、线程、同步等。
113
UML建模
五个视图:
用例视图
设计视图
进程视图
组件视图
部署视图逻辑视图
114
用例视图
用例视图用于描述系统应该具有的功能集。它是从 系统的外部用户 角度出发,对系统行为的抽象表示。它所描述的系统为用户或另一个系统提供服务 。
用例视图主要为用户、系统分析人员、系统开发人员和测试人员服务,这些人员利用用例视图交流,以达到各自的目的。
用户和系统分析人员通过用例视图达到系统功能上的共识,系统开发人员通过用例视图完成系统逻辑模型的建立,测试人员通过用例视图测试系统是否满足用户要求。
115
逻辑视图
用例视图只考虑系统应提供什么功能,对这些功能的内部运作情况不予考虑,为了揭示系统内部的设计和协作状况,要使用逻辑视图描述系统。
逻辑视图用来显示系统内部的功能是怎样设计的。逻辑视图通过类图、对象图描述系统类、对象和它们之间的关系。逻辑视图也称为结构模型视图或静态视图或系统结构建模。
原则上软件系统逻辑视图在与软件系统的实现平台无关。
逻辑视图包含的模型图有,类图、对象图、交互图 。
类图是构成逻辑视图的核心,通常用对象描述客观世界中某个具体的实体。建立类模型时,应尽量与应用领域的概念保持一致,使模型更符合客观实际、易修改、易理解和易交流。对象图、交互图描述系统的动态行为。
116
组件视图
当系统的逻辑视图被定义之后,需要定义逻辑结构的物理实现。
这包括:逻辑结构对应的源代码文件、物理文件之间的关系、存放路径等。
组件视图主要描述系统部件的配置。通常情况下,组件图看起来似乎是系统物理组件图标的集合。
117
部署视图
提供给开发者、部署、集成者和测试者。
在网络开发环境中,部署视图是系统模型必不可少的一部分。
部署视图用来描述软件产品在计算机硬件系统和网络上的安装、分发和分布。
118
UML建模
UML将软件的体系结构分解为四个不同的层次,
分别是:用例视图、逻辑视图、组件视图、部署视图。其中每个视图分别关注软件开发的一个层次。视图由一种或多种模型图构成。
用例视图关注系统需求,逻辑视图关注系统的逻辑结构,组件视图关注系统定义逻辑结构的物理实现,部署视图关注系统中软件和硬件之间的物理关系。
119
建模步骤 [1]
UML是一种建模语言而不是方法,这是因为 UML
中没有过程的概念,而过程正是方法的一个重要组成部分。 UML本身独立于过程,这意味着用户在使用 UML进行建模时,可以选用任何适合的过程。
一般采用的建模过程有,瀑布开发模型,迭代递增开发模型 。
120
建模步骤 [2]-瀑布开发模型
瀑布开发模型需求分析与设计编码测试产品维护
121
建模步骤 [3]-迭代递增开发模型
迭代递增开发模型最初需求与分析设计编码测试产品维护请求 更多需求与分析
122
建模步骤 [4]- UML建模过程
基于 UML的系统开发采取增量迭代开发模型。
[1] 需求 最初 需求规格说明 应当由代表系统最终用户的人员提供,内容包括系统基本功能需求和对计算机系统的要求。
[2] 分析 分析的任务是找出系统的所有需求并加以描述,同时建立模型,以定义系统中的关键领域类,应由系统用户和开发人员合作完成。
分析的 第一步是定义用例,以描述所开发系统的外部功能需求。用例分析包括阅读和分析需求说明,此时需要与系统的潜在用户进行讨论。
123
建模步骤 [5]- UML建模过程
[3] 设计 设计阶段的任务是通过综合考虑所有的技术限制,以扩展和细化分析阶段的模型。
设计阶段可以分为两个部分,结构设计 是高层设计,其任务是定义包(子系统),包括包间的依赖性和主要通信机制。我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。 第二部分是 详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。
124
建模步骤 [6]- UML建模过程
结构设计 一个设计良好的系统结构是系统可扩充和可变更的基础。包实际上是一些类的集合。
类图中包括有助于用户从技术逻辑中分离出应用逻辑(领域类),从而减少它们之间的依赖性。
详细设计 详细设计的目的是通过创建新的类图、
状态图和动态图(顺序图、协作图和活动图),
描述新的技术类,并扩展和细化分析阶段的对象类。
125
建模步骤 [7]- UML建模过程
[4] 实现 构造或实现阶段是对类进行编程的过程。可以选择某种面向对象对象编程语言(如
Java)作为实现系统的软件环境。 Java很容易实现从逻辑视图到代码部件的映射,因为类到
Java代码文件之间是一一映射关系。
在实现阶段中,可以选取各种图的说明来辅助编程,比如:类图,状态图和动态图等。
126
建模步骤 [8]- UML建模过程
[5]测试和配置 完成系统编码后,需要对系统进行测试,它通常包括,单元测试,集成测试,系统测试 和 验收测试 。
在单元测试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。
系统的配置是实际地交付系统,包括文档和组成模型等。
127
实例:饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置 50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。
销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。
取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。
128
步骤,
(1)找出对象及其关联
(2)赋予类及关联的属性数据
(3)组织类的结构对象图
129
找出饮料自动售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置 50罐饮料,其按钮设计在各种饮料样本的下方,若经 金额计算器 累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。
销售顾客 将硬币投入 售货机,经累加金额足额的饮料 选择键 灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。
取消交易顾客可在按下选择键前任何一个时刻,拉动 退币杆 取消交易收回硬币。
130
饮料自动售货机 系统 对象图贩卖机饮料号码价格投币 -接受饮料掉出金额显示按纽退币杆售完显示存量计算器饮料号码存量递减售完显示重置选择钮选择钮状态灯亮灯熄售完灯亮按钮顾客姓名硬币投币 -置入拿取饮料退币杆退币杆状态拉动金额计算器金额累加找零重置购买选取被拉动属于属于属于属于
131
建立数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类,
包括,
成员
约束
关联、属性、操作
132
动态模型用来描述系统与时间相关的动态行为即系统的控制逻辑,表现对象彼此间经过相互作用后,随时间改变的不同运算顺序。
动态模型以,事件,( Events)
和,状态,( States)为其模型的主要概念。
动态模型 以 状态图 形式呈现。
133
事件,? 瞬时发生的行为;
引起对象状态转换的控制信息 。
事件类和属性举例:
飞机起飞(航线、航班号、城市)
按动鼠标按钮(按钮、位置)
……,.
134
通话(只包括影响电话线的事件)
17,打电话者挂断电话
16,电话切断
15,接电话者挂断电话
14,通电话
12,接电话者电话停止振铃
13,铃声在打电话者电话中消失
11,接电话者回答
10,铃声在打电话者电话传出
9,接电话者的电话开始振铃
8,打电话者拨数字 (3)
7,打电话者拨数字 (7)
6,打电话者拨数字 (3)
5,打电话者拨数字 (2)
4,电话忙音结束
3,打电话者拨数字 (8)
2,电话忙音开始
1,打电话者拿起听筒
135
状态,对象属性和对象关联的抽象形式状态的特征表示方法举例:
状态,闹铃响描述,闹铃响表示预定时间到产生本状态的事件序列:
设置闹钟(预定时间)
不包括清除闹铃的任何后续操作当前时间 =预定时间表征本状态的条件:
闹铃 =开,从预定时间起没有按键的情况下,
目标时间?当前时间?目标时间 =20秒本状态接受的各种时间:
事件 动作 下一个状态当前时间 =目标时间 +20 重新设置闹钟 正常按下按钮(任意按钮) 重新设置闹钟 正常
136
动态模型表示方法
状态图状态和事件的网络,侧重描述每一类对象的动态行为。
137
状态图例:
状态 1
Do:活动 1 状态 2.…...
事件 1[条件 1] / 动作 1 结束事件初始事件空闲 可视菜单左边按钮按下 /显示弹出菜单左边按钮弹起 /擦除弹出菜单光标移动 /高亮菜单项弹出菜单动作
138
举例,饮料自动售货机 系统 的状态图投入硬币
(有效的)
按下选择饮料键
Do:显示售货机在备用所有灯都关闭
Do:显示金额总数
Do:显示金额已够饮料选择灯亮取出饮料结算找零扣减存量完成交易饮料“售完”灯亮投入硬币金额
(1元,5元,10元 )
金额不足再投币存量为零无效的硬币取消取消回到备用状态回到备用状态
139
序列 图举例,打电话的序列图挂断电话电话切断挂断电话通 话 通 话停止振铃停止振铃响应电话电话振铃铃 声拨 号 (3)
拨 号 (7
拨 号 (3)
拨 号 (2)
电话忙音结束拨 号 (8)
电话忙音开始拿起听筒电话线 接电话者打电话者
140
存量为零找零扣减存量灯亮余额饮料结算选择键 #
选择按纽灯亮金额总够显示总额总额累加投入硬币金额计算器 存量计算器顾客 售货机 选择键举例,饮料自动售货机 系统 的序列图售完灯
141
3,功能模型用来描述系统中数据的变换。
传统 DFD + 控制流对象 A 对象 B过程 1 过程 2
数据存储区控制流数据流
142
步骤一
寻找类和对象
143
问题域描述中的 名词,往往是候选的及对象 ;根据问题域结构可提取候选的类及对象 ;
例,银行储蓄管理系统
144
与系统发生作用的 其它系统 和必要的 设备 可作为候选的类及对象 ;
如,打印机等
(分析阶段可不把与实现有关的计算机部件作为候选的类及对象 )
145
系统必须观测,记忆 的与时间有关的事件 可作为候选的类及对象 ;
如:建立帐户的日期打开一个帐户等
与系统发生交互的 人 及系统必须保留其信息的人,可作为候选的类及对象 ;
如:柜员、储户等
这些人所属的 组织 单位,可作为候选的类及对象 ;
如:总行、分行等
146
系统必须记忆、且不在问题域约束中的顺序 操作过程可作为候选的类及对象 ;
如:柜员事务、远程事务等。
其中属性是操作过程名,操作特权及操作步骤的描述 ;
系统需了解掌握的物理位置、办公地点 等可作为候选的类及对象 ;
如,ATM机器、帐户等
147
(2)审查和筛选,
舍弃无用的类
对象的精简?
只有一个属性的对象?
只有一个服务的对象
推迟到 OOD考虑的对象
148
帐册
@上级系统接口供货员销售事件商品特价商品计量商品
@收款机商品一览表超市销售管理系 统
(对象层 )
149
步骤 2,定义属性与服务
定义属性
定义服务对象的状态与状态转换图例:栈的状态 /服务对照表空 半满 满压入 可执行 可执行 不可执行弹出 不可执行 可执行 可执行
150
例:栈状态转换图空半满满创建压入 (未满 )
弹出 (未空 )
压入
(报错 )
弹出 (报错 )
弹出 (已空 )压入弹出压入 (已满 )
151
定义服务对象行为分类发现服务的策略审查与调整识别对象的主动行为服务的详细说明 (服务解释、消息协议、
消息发送、约束条件、服务流程图 )
152
帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班
@上级系统接口帐目目册
@消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款……
销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品
*单价计量单位计价方式*售出
*补充
*价格更新
@收款机本班收款员开始时间结束时间
@登录售货结帐商品一览表商品目录检索种类增删超市销售管理系 统
153
建立数据字典为所有模型实体准备一个数据字典,
精确描述每一个对象类,包括,
成员
约束
关联、属性、操作
154
对象字典举例:
类名 父类 提供的服务 需要的服务帐户 …… …… ……
ATM …… …… ……
银行 …… …… ……
出纳员 …… …… ……
…… …… …… ……
155
步骤 3,定义结构与连接
初步确定关联
对应于描述性动词或动词短语
需求陈述中隐含
根据问题域知识得出
筛选
完善
分析标识对象之间的关系
对象之间的分类关系:一般 -特殊结构
对象之间的组成关系:整体 -部分结构
对象之间的静态联系:实例连接
对象之间的动态关系:消息连接
156
从一般类发现特殊类 公司职员股东姓名身分证号码
……
股份
……
职员工资
……
公司职员姓名身分证号码股份工资
……
…… …… ……
……
??
157
从特殊类发现一般类 公司职员股东姓名身分证号码
……
股份
……
职员工资
……
…… ……
……
股东姓名身分证号码股份
…………
职员姓名身分证号码工资
…………

158
取消没有特殊属性的特殊类大学生 研究生研究方向指导教师
……
学生姓名学号班级
……
……
研究生研究方向指导教师
……
学生姓名学号班级
……
……
159
通过增加属性简化一般 -特殊结构人员……
……
男人
……
……
女人
……
……
……
……
美国人
……
……
日本人
……
……
人员性别国籍……
……
中国人
160
中央计算机总行通信银行代码
ATM
拥有分行计算机出纳工作站远程业务 现金卡分行 帐户 储户出纳员出纳业务

通信授权存取拥有拥有持有组成拥有拥有雇佣进入被进入修改修改进入
ATM系统的初始对象图
161
步骤 4,定义服务及消息连接分析和认识对象之间在行为上的往来关系。
162
帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班
@上级系统接口帐目目册
@消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款
……
销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品
*单价计量单位计价方式
*售出*补充
*价格更新
1 m
商品一览表商品目录检索种类增删
1m
(关系层,完整的类图 )
@收款机本班收款员开始时间结束时间
@登录售货结帐
163
范例:移动电话系统移动电话系统的功能:
用手机做移动通讯
下载铃声
下载图案
管理电话簿移动电话系统的使用用例图
Talk to Others
Download Icons
Manage Phonebook
Download RingsMobile user Mobile Network
165
定义移动电话系统的对象(简化)
手机包括的对象:
手机屏幕
手机按钮
手机(屏幕、按钮以外的部件)
其它对象:
基站
MButton
MDisplqy
MmobileStation
MmobileHandset
移动电话系统的类图
166
移动电话系统对象间的通信
MButton MDisplqy
:MMobileStation
:
MMobileHandset
Mobile user
1:pushDigButton()
3:pushSendButton() 2:displayButtonNumber()
4:connectStation() 7:displayConnectSuccess()
6:connectSuccess ()5:createConnection()
移动电话系统的协作图
167
移动电话系统的序列图
:MButton,MDisplqy,MMobileHandset
Mobile user
pushSendButton()
displayButtonNumber()
displayConnectSuccess() connectSuccess ()
createConnection()
pushDigButton()
connectStation()
:
MMobileStation
168
MButton
MDisplqy
MmobileStation
MmobileHandset
移动电话系统的类图之二
pushDigButton()
pushSendButton()
pushDisconnectButton()
createConnection()
destoryConnection ()
responseError()
displayError()
displayButtonNumber()
displayConnectSuccess()
displayIncomingCall()
connectStation()
disconnectStation()
connectSuccess ()
Diaconnectsuccess()
169
三,Rose的使用 [1]
ROSE是美国 Rational公司的面向对象建模工具,
利用这个工具,我们可以建立用 UML描述的软件系统的模型,而且可以自动生成和维护 C++、
Java,VB,Oracle等语言和系统的代码。
ROSE的界面分为三个部分 —— Browser窗口,
Diagram窗口 和 Document窗口 。 Browser窗口用来浏览、创建、删除和修改模型中的模型元素;
Diagram窗口用来显示和创作模型的各种图;而
Document窗口则是用来显示和书写各个模型元素的文档注释。
170
Rose的使用 [2]
Browser
窗口
Diagram
窗口
Document
窗口
Specification
对话框工具栏工具箱
171
Rose的使用 [3]
Browser窗口有四个视图,
Use Case
Logical
Component
Deployment
172
Rose的使用 [4]
在 Use Case视图的图的类型有:用例图、顺序图、协作图和活动图。
173
Rose的使用 [5]
在 Logical视图中的类型有:类图和状态图。
174
Rose的使用 [6]
在 Component视图的图的类型有:组件图。
175
Rose的使用 [7]
在 Deployment视图的图的类型有:部署图。
176
Rose的使用 [8]-各种图用例图顺序图协作图活动图
177
Rose的使用 [9]-各种图类图 状态图
178
Rose的使用 [10]-各种图组件图 部署图
179
四、实例一 [1]- Hello World
很多教科书上的第一个程序就是 Hello world,
一个在屏幕上简单地打印出,Hello world!”语句的例子。
在 java中一个在浏览器中显示,Hello World!”的
Applet的 代码如下:
import java.awt.Graphics;
class HelloWorld extends java.applet.Applet{
public void paint( Graphics g ){
g.drawString("Hello World!",10,10 );
}
}
180
实例一 [2]- Hello World
用例图
HelloWorld
181
实例一 [3]- Hello World
HelloWorld类
HelloWorld
Paint() g.drawString("Hello World!",10,10)
注释
182
实例一 [4]- Hello World
类图
HelloWorld
Paint()
Applet
Graphics
继承使用依赖
183
实例一 [5]- Hello World
顺序图
:Thread,Toolkit,ComponentPeer target:HelloWorld
run
callbackLoop
handleExpose paint
184
实例二 [1]-图书馆系统- 用例图
执行者
读者
图书馆员
管理员
用例
图书馆管理
185
实例二 [2]-图书馆系统- 用例图
读者用例图
186
实例二 [3]-图书馆系统- 用例图
图书馆员用例图
187
实例二 [4]-图书馆系统- 用例图
管理员用例图
188
实例三 [1]-超市进销存
超市进销存管理系统按其业务功能分成订货、销售、库存和统计四部分,这些职能往往对应于系统不同组织部门。
189
实例三 [2]-超市进销存
超市进销存管理系统顶层用例图
190
实例三 [3]-销售管理子系统用例图
191
实例三 [4]订货管理子系统用例图
192
实例三 [5]库存管理子系统用例图
193
实例三 [6]统计分析子系统用例图
194
身份验证子系统用例图
195
身份验证用例的活动图
196
197
身份验证序列图
198
订货管理序列图
199
统计分析管理序列图
200
销售管理序列图
201
超市进销存管理系统的逻辑视图
( 1)身份验证类图
202
订货管理子系统类图
203
统计分析管理子系统类图
204
第五,Java代码生成
Rose工具可以将系统模型生成相应的应用程序框架下的代码,也可以把应用程序框架下的代码逆向生成其相应的 Rose模型( UML类图),这种工程技术叫软件的正逆向工程技术。
准确地说,Rose工具将系统模型生成应用程序代码的框架,例如它可以生成类的方法的首部,
方法体需要程序员编写。尽管如此,Rose工具生成统一的应用程序代码框架也有助于整个系统开发小组人员的协同编程和开发。
205
一个程序员要把系统模型成功地生成相应的应用程序框架,必须有两个前提:
第一,程序员必须保证模型是正确的;
第二,程序员必须熟悉相应的应用程序框架下的语法。只有这样,程序员才能正确设置系统模型生成代码时需要的各种控制属性,完成代码生成或 Rose模型生成。
206
Java的语法单元与 Rose模型图素的对应
207
设置属性
1、与 项目 有关 Java代码生成控制属性
2、与 类 有关 Java代码生成控制属性
3,类特征 生成 Java代码有关的属性
4,类操作 生成代码的有关属性
5,关联作用 生成代码有关的属性
208
逆向工程
Rose从 Java代码读取类、类之间的关系、
类成员变量(特征)、类成员方法、包及组件的信息生成相应的模型或更新当前的
Rose模型。
209
第六 Rational统一过程
UML的模型成分和建模规则能够用来为系统进行面向对象的建模,但并没有指定应用 UML的过程和方法。尽管如此,要想成功地使用 UML,科学的过程是完全必要的,尤其在一些需要团队合作的大型系统时,此时必须协调所有人的工作,确保大家向同一方向努力。合理的过程能够有效地计划工作进程,控制和改进工作效率,保证软件的质量和软件的重用。
Rational的统一过程的核心体现在下列几方面:
迭代地开发软件,管理需求,使用基于组件的架构,为软件可视化建模,验证软件质量,控制对软件的变更,为软件开发团队提供指南、文档模板和工具 。
210
如何在过程中使用 UML
以架构为中心
使用 UML的过程是以架构为中心的一个过程。
也就是说,确定系统基本架构是非常重要的,
并且在过程的早期就要建立这个架构。系统架构是由一组视图表达的,一般包括逻辑视图、
并发视图、组件视图和展开视图,而用例视图则把这四种视图联系在一起。架构定义了系统的不同组成部分、它们之间的关系、交互、通信机制。
211
用例驱动
在进行一个大型面向对象项目时,典型地是从收集需求开始的用例技术开始,然后分析和设计,最后主要的工作是编写代码。过程的每个小步骤都是迭代的,
但总体来看又遵循需求、分析、设计和编码这几个主要步骤。由于 UML包含对系统功能的描述,所以它们影响了所有的阶段和视图,用例把需求、分析、设计、
实现和测试这些工作流程有机地统一在一起。
在需求分析阶段,使用用例来描述所要求的功能,并由客户确定这些功能;在设计和实现阶段,必须实现用例;最后,在测试阶段,由用例对系统进行验证;
它们是测试的全部基础。
212
UML对迭代开发过程的支持
UML图从整体来看是一个顺序的过程,而从各阶段、每个工作流程来看是一个迭代的过程。
UML不同视图之间的关系反映了面向对象建模的迭代特性。
UML图的状态图是用来为对象图建档的。
该图还表明源代码是用来为类图中的类建档的。
213
UML图与工作流程和模型之间的关系
模型是对系统架构进行可视化、构造和编制文档的手段和工具。在统一过程中的每个工作流程都用相应的模型来描述,对应每个流程可以 有一个或多个模型。而这模型就是用 UML图来表达的。
每个模型都是用一种或多种 UML图来描述,它们之间的对应如下:
( 1)用例模型。用用例图、序列图、协作图和活动图描述。
( 2)分析模型。用类图和对象图(包括子系统和包)、序列图、协作图、状态图和活动描述。
( 3)设计模型。用类图和对象图(包括子系统和包)、序列图、协作图、状态图和活动图描述。
( 4)部署模型。用部署图、序列图、协作图描述。
( 5)实现模型。用组件图、序列图和协作图描述。
( 6)测试模型。测试模型引用了所有其它模型,所以它使用它们对应的所有图。
214
软件过程成熟度( CMM)
能力成熟度模型 (Capability Maturity
Model,CMM)就是这种软件质量管理的体系。这里,,成熟,意味着一种环境。
在这种环境中,软件质量可预见性相对较高,未预测到的风险性相对较低。 CMM的目标重点是:在一个 IT企业逐步成熟的软件开发过程管理中,向他们提供协助。
215
CMM采用如下 5个等级的结构:
( 1)等级 1:初始级
( 2)等级 2:可重复级
( 3)等级 3:已定义级
( 4)等级 4:已管理级
( 5)等级 5:优化级
216
正确理解 CMM内涵
在首次实施 CMM时,最重要最本质的一点是理解 CMM的精神实质。 SEI的 CMM并不是软件开发的方法学,也不是产品样板,更不是一套过程法律。 CMM是开发、管理过程改进的途径,是一套指南,帮助企业通过持续的重复、测量和总结,稳步创造与精化开发环境。 CMM认为:如果一个企业不断重复、测量和总结开发环境,作为环境改进的副产物,质量便会自然地得以提高。
217
参考书与资源链接
有关 UML的书:
UML with Rational Rose从入门到精通
很大篇幅介绍 Rose的使用,适于入门
UML参考手册
最经典的书籍,由三剑客编写,适于精通
UML面向对象设计基础
用通俗易懂的语言描述了面向对象的各个方面,适于面向对象技术的入门
UML Programming Guide设计核心技术
中国人自己编写的书籍,以中国人的视觉描述 UML,
是一本很不错的介绍 UML设计的书。