西安交通大学 刘海岩 1
第 7章 面向对象软件工程的概念
传统软件开发方法的局限性
面向对象的过程模型
面向对象的概念
几种面向对象方法
统一建模语言- UML
西安交通大学 刘海岩 2
7.1传统软件开发方法的局限性传统的软件工具、软件技术和抽象层次越来越难以适应大规模复杂软件系统的开发特点。软件能力问题已经成为制约软件发展的因素。
软件工程自 70年代以来,有力的推动了软件能力的解决。自顶向下的分析与设计的方法、软件项目的工程化管理、软件工具和开发环境、软件质量保证等都对软件的发展起了非常重要的作用。传统的软件开发方法在当时的软件工程中起了主导作用,随着系统复杂性、多变性增强,传统方法的缺陷就显露了出来:
( 1)面向过程为主。系统围绕着由计算机来实现功能的复杂过程而建立,在分析和解决问题时与人们对现实世界的认识有一定差距。
西安交通大学 刘海岩 3
( 2)软件结构稳定性差。需求分析阶段重点是功能模型,
难以彻底明确全部需求。设计阶段的软件体系结构是基于系统功能建立的。每个模块完成一个基本功能,多个模块的组合完成一个整体功能。一个模块的变动可能会影响到多个模块。用户的需求大多针对功能,功能的变化会引起体系结构的变化,不利于系统的维护。
( 3)软件开发的抽象力度小。解决问题的类型一般用于
“输入 -处理 -输出”为核心的数据处理系统,不适应于复杂的实时、交互、事件驱动、分布式等新型应用的系统开发。
( 4)软件重用未能得到很好的解决。传统的方法一般从
“零”开始开发软件,数据与操作作为相互分离的实体来考虑,使软件的可复用性差。重用的实施仅仅是公用模块的调用。面向对象的封装性、继承性、多态性等特性支持软件重用且重用的粒度大。软件的重用导致更快地、高质量地开发软件,为软件工业化生产奠定基础。
西安交通大学 刘海岩 4
传统方法数据与过程是分离的过程 1输入输出 过程 2
过程 3
数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元西安交通大学 刘海岩 5
传统方法与面向对象方法的比较面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出西安交通大学 刘海岩 6
7.2 面向对象的过程模型计 划 分 析 设 计分 析 设 计 分 析 设 计计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估评 审 及 精 化早 期 的 分 析 / 设 计 迭 代评 审 及 精 化评 审 及 精 化评 审 及 精 化第 一 个原 型下 一 个增 量
1、演化 /并行模型
( p402)
是 Booch等人在 90年代初建议的。该模型与第 1章介绍的螺旋模型、
增量模型相似。但强调:
( 1)对 OO系统的分析和设计建模不在相同的抽象层次上进行。
( 2)分析和设计可以并发地应用到独立的系统构件。
西安交通大学 刘海岩 7
该模型每次迭代都要计划、工程和评估。每个计划都要调整进度以适应和本次迭代相关的变化。早期阶段迭代进行的分析与设计工作为了分离出 OO模型中的所有重要元素;当工程工作不断进展时,产生软件的增量版本;在评估阶段对每个增量的评估其反馈将影响下一次计划活动及后续增量。
2,RUP
98年 6月推出,该过程强调了开发方法的统一、建模语言的统一、研究成果的统一。该过程是基于构件的,
即所构造的系统是由软件构件通过明确定义的接口相互连接所建造起来的。它使用 UML来制定软件系统的所有蓝图。 RUP的主要特点:
( 1)用例驱动用例作为系统分析、设计、实现和测试的基本输入。
西安交通大学 刘海岩 8
即用例不只是一种确定系统需求的工具,它还能驱动系统的设计、实现和测试的进行。
基于用例模型,开发人员可以创建一系列实现这些用例的设计模型和实现模型。开发人员可以审查每个后续建立的模型是否与用例模型一致。测试人员测试实现以确定实现模型的构件是否实现了用例。所以用例启动了开发过程,还使开发过程结合为一体。开发过程是沿着一系列从用例得到的工作流前进的。
西安交通大学 刘海岩 9
下图显示了用例模型与其他模型之间的相关性:
用例模型由 … 建立分析模型为系统描述一系列类由? 设计设计模型为系统定义一系列子系统和界面由? 实现实现模型将类映射到构件由? 分配测试模型由? 验证验证系统是否提供了用例模型中描述的功能配置模型定义软件分布西安交通大学 刘海岩 10
( 2)以构架( Architecture)为中心软件系统的构架从不同角度描述了即将构造的系统,
它刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特征,包含了系统中最重要的静态结构和动态行为。
构架是根据应用领域的需要逐渐发展起来的,并在用例中得到反映。每种产品都具有功能和表现形式,功能与用例对应,表现形式与构架对应。用例与构架是相互影响的,用例在实现时必须符合于构架,构架必须预留空间以实现现在或将来所有需要的用例。
西安交通大学 刘海岩 11
3、迭代与增量的过程迭代指工作流中的步骤,增量指产品中增加的部分。
迭代过程要处理一组用例,这组用例合起来能扩展所开发产品的可用性,后续的迭代过程建立在前一次迭代过程末期所开发的产品上。
构架 提供了一种结构来指导 迭代 过程中的工作,用例则确定了目标并驱动每次迭代的工作。 —— 三条腿的凳子!
4、基于构件统一过程所构造的软件系统,是由软件构件通过明确定义的接口相互连接所建造起来的。
5、使用 UML
统一过程使用 UML来制定软件系统的所有蓝图,
UML是整个统一过程的一个完整部分,他们是共同发展起来的,它强调创建和维护模型。
西安交通大学 刘海岩 12
6、过程可剪裁用统一过程开发软件时,各阶段应该有多长?各个阶段迭代多少次是合适的?候选构架可以在哪一点完全建立起来?这些问题的答案取决于系统的规模、
项目的性质、开发组织的领域经验,甚至包括相关人员有效配合程度。总之,统一过程是一个框架,可以根据具体情况加以裁剪,以此来适应各种各样的开发过程。
西安交通大学 刘海岩 13
7.3 面向对象的概念面向对象( Object Oriented,简称 OO)的概念起源于
20世纪 60年代中期的 Simula 67。 80年代初,Smalltalk语言及其程序设计环境的出现成为面向对象技术发展的一个重要里程碑。 80年代中期硬件的发展使 C到 C++过渡平滑,推出了相应工具及面向对象集成环境,使 OOP模式进入主流。 80年代中后期,面向对象分析与设计的研究开始发展。进入 90年代,面向对象软件工程成了许多软件产品的建造笵型。
( 1)对象 (object)
是现实世界中个体或事物的抽象表示。封装了其属性及相关的操作。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作指出了该对象具有的行为并提供了对外的服务。
西安交通大学 刘海岩 14
( 2)类 (class)
是具有相同属性和相同操作的对象的抽象。通常用类名、类的属性、类的操作三方面的内容来定意一个类。一个具体对象是类的一个实例。
( 3)消息 (message)
是一个对象发送给另一个对象的操作请求。消息一般由三部分组成:对象名、消息名、参数。消息传递是对象与外部世界相互通信的唯一途径。
( 4)方法 (method)
是对象操作的实现,描述了对象中操作的算法和响应消息的方式。
西安交通大学 刘海岩 15
( 5)继承 (inheritance)
是子类自动的共享其父类中定义的属性和操作的机制,该机制构成了类的层次结构。较高层的父类称为基类、超类、一般类。子类称为派生类、特殊类。
子类除了继承父类的特征,还可有自己的特征。继承有传递性,子类能继承上层的全部特征。
继承性使得相似的对象可以共享程序代码和数据结构,从而简化了创建类及对象的工作量,基类解决一般性问题,派生类解决特殊问题,提高了软件的可重用性。继承性还使得软件便于维护,当需要扩充软件原有功能时,从要修改的类中派生出一个子类,在该子类中添加新的代码。
西安交通大学 刘海岩 16
( 6)多态 (polymorphism)
指在类的不同层次上可以使用相同的操作名。同一操作名可有不同的实现方式,运行时可动态地选择哪一个算法。
多态性增加了软件的灵活性,可扩充性,通用功能的操作放在高层,不同地实现这一功能的行为放在低层,以实现不同的相应。
西安交通大学 刘海岩 17
7.4 几种面向对象方法
20世纪 80年代以来,出现了几十种面向对象软件开发方法。每一种都有自己的符号体系和开发过程,都支持以下基本活动:
标识类及对象
描述类及对象之间的关系
定义类的属性和操作
1,Booch方法
Booch是面向对象方法最早的提出者之一,提出了面向对象软件工程的概念。提出了“微开发过程”和“宏开发过程”的思想。
西安交通大学 刘海岩 18
微开发过程:定义一组分析任务,包括标识类和对象以及类和对象的语义、定义类和对象间的关系、
描述类和对象的动态行为。
宏开发过程:将微过程反复应用,并包含了体系结构设计的计划活动:
将相似的对象聚集到独立的模块;
描述对象管理、内存管理、错误处理等其它功能的实施;
可使用原型对上述任务进行精化;
将同时执行的进程分配到不同的处理机。
该方法提出建立以下模型:
类图、对象图、状态转移图、时序图、模块图、
进程图。
西安交通大学 刘海岩 19
2,Coad/Yourdon方法著名的 OOA/OOD方法,也是最早的面向对象的分析与设计方法之一。简单、易学。
OOA阶段的任务:
标识类及对象
定义结构(一般-特殊结构、整体-部分结构)
划分主题
定义属性及对象间的实例连接
定义服务及对象间的消息连接上述任务迭代进行,产生 5个层次的问题域模型(主题层、类及对象层、结构层、属性层、服务层)
西安交通大学 刘海岩 20
OOD阶段的活动:
问题域部分
人机交互部分
任务管理部分
数据管理部分
3,OMT方法
Rumbaugh等人提出的对象建模技术 (Object Model
Technology,OMT),该方法强调了三种模型,并将软件开发过程划分为以下几个阶段:
( 1)系统分析
问题描述
建立对象模型产品:对象模型=对象图+数据字典西安交通大学 刘海岩 21
建立动态模型产品:动态模型=状态图+事件跟踪图
建立功能模型产品:功能模型=数据流图+约束
( 2)系统设计
将系统分解为各个子系统
确定问题中固有的并发性
将各子系统分配给处理器
数据存储管理
全局资源管理
选择软件控制机制
边界条件处理西安交通大学 刘海岩 22
( 3)对象设计对分析模型细化:
将三种模型结合起来以获得对象类上的操作。如功能模型中的加工,动态模型中对应一个事件的活动。
设计实现操作的算法
优化数据访问路径
实现系统设计中的控制机制
为提高继承而调整类结构
设计对象之间的关联
将类和关联集成到模块中西安交通大学 刘海岩 23
4,Jacobson方法也称 OOSE方法。最大特点是强调 使用实例 ( Use-
Case),每一个用例就是一个使用系统的方式,用例的执行将引发执行一系列与行为相关的事务。
该方法将用例贯穿于整个开发阶段,并在用例描述中引入了 角色或参与者 ( Actor)的概念。角色指使用系统的人以及与系统相互作用的软硬件环境。
该方法还将对象区分为 实体对象 (业务对象),接口对象 (界面对象)和 控制对象 。
需求分析阶段活动:定义潜在的角色、识别问题域中的对象和关系、基于需求规格说明和角色的需要描述用例。
设计阶段的活动:从用例的描述中发现与设计有关的对象,并描述其属性、行为和关联。同时把所有用例的行为分派给每个对象。
西安交通大学 刘海岩 24
7.5 统一建模语言 UML
UML(Unified Modeling Language)产生于 90年代中期。
它不仅统一了 Booch,OMT和 OOSE方法中的概念和表示法,
而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。
1,UML概述
UML的发展历程
(下图)
UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视化建模。 UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。
西安交通大学 刘海岩 25
Booch’93 OMT-2
UML 0.8
UML 0.9&0.91
UML 1.0
UML 1.1
UML同行专家意见
OMG认证
10/95
10/96 & 9/96
OMG审核,1/97
OMG修正,9/97
OMG采纳为标准,11/97 UML 1.3
UML2.02001年重要修改
OOSE
UML开发历程西安交通大学 刘海岩 26
2,UML中的模型视图
UML有以下主要模型元素,构成了 UML中的各种模型视图:
包
+ 操 作 ( )
- 属 性类
+ 操 作 ( )
- 属 性对 象注 释组 件结 点用 例状 态西安交通大学 刘海岩 27
用户模型视图用例图,从用户的角度描述系统能提供哪些功能以及功能的使用者。
结构模型视图:
类图:描述系统的静态结构;
对 象图:描述系统在某个时刻的静态结构;
包图:将类分组成更高层次的静态结构。
行为模型试图顺序图:按时间顺序描述系统元素之间的交互;
协作图:从时间和空间的顺序描述系统元素之间的交互;
状态图:描述系统元素对事件的响应引起的状态转换;
活动图:描述系统元素的活动。
实现模型视图构件图:描述实现系统的元素的组织结构;
配置图:描述环境元素的配置,并把实现系统的元素映射到配置上。
西安交通大学 刘海岩 28
(1)用例图用例:根据 Jacobson的定义,用例规定了一个动作序列,系统执行这些动作并产生出对于特定参与者可见的有价值的结果。 参与者 可以是人、组织、硬件设备或外部系统。
用例图用于展示参与者 与系统提供的用例之间的连接(通信)关系。仅仅从参与者使用系统的角度描述系统,不反映内部的处理方式。因此用例图定义的是系统的 功能需求 。
下图是某保险业务的用例图。
西安交通大学 刘海岩 29
签定一份保险单客户保险销售人员销售统计客户统计某保险业务的用例图西安交通大学 刘海岩 30
某金融贸易系统用例图设置边界风险分析交易估价进行交易超越边界更新帐目评价交易人员交易经理计帐系统销售员,extend》
,include》
,include》
西安交通大学 刘海岩 31
其中:,include》,,extend,为用例图中可用的构造型元素,表示“风险分析”和“交易估价”都包含有公共的“评价”动作,因此把“评价”作为一个独立的用例。而“超越边界”用例是“进行交易”用例的扩展,
指交易时对某个特定用户规定了最大贸易量,不能执行一般的常规动作。因此,当描述一般行为时有例外、任选或异常处理时,采用,extend,;当在两个或多个用例中出现重复描述(有共用行为)而又想避免重复时,采用,include,。
( 2)类图用来描述系统中类和类之间的关系,是系统的静态结构。类图中还描述了类的属性、操作、以及对模型中各种成分的约束。类图包含有类、关联和关系等模型元素。见下图,
西安交通大学 刘海岩 32
类名属性操作类的完整表示类名类的简单表示类 1
类 2
角色角色关联名关联表示类之间的语义联系(是运行时实例之间的关系)。角色表示该类在这个关联中的作用。
关联中可以有重数,
重数指一个角色可以有多少个对象来扮演。
① 类的表示:
② 类的关联 (association):
西安交通大学 刘海岩 33
公司 董事会办公室 分配 员工0..1 *
人员董事会成员
0,3..8 * 董事会同时省略关联名和角色名,默认关联名是 has(有),
省略重数默认 1..1。
每一个员工可能没有或者只有一个办公室每一个董事会没有或者有 3~8个董事会成员
(有角色名,可以省略关联名)
西安交通大学 刘海岩 34
在一些情况下关联可能需要记录一些信息,但这些信息不能放在任何一个类中,可引入一个关联类记录这些信息。如下图:
学生 * 选修 * 课程 学生 * * 课程选修成绩学生 * 选修 *
成绩课程一个多对多关联。“成绩”
属性不能放在任何一方(每个学生只有一个成绩或每门课程只有一个成绩) 创建一个关联类来保存成绩与带有关联类的多对多关联等价的两个一对多关联的图西安交通大学 刘海岩 35
整体类 部分类 整体类 部分类项目 人员1 * 建筑物 楼房类的聚合 类的强聚合(组合)
*
③ 类的聚合 (aggregation):
是表示“整体 -部分”的特殊关联。
组合 (composition)是一种强类型的聚合,整体类和部分类共存亡,如果整体类被撤销,部分类也不存在。
部分类的存在只是为整体类服务。
西安交通大学 刘海岩 36
一般类特殊类人员教师 学生由一个超类和几个直接子类构成的结构通常称为泛化 。类的这种关系也称为一般 -特殊关系或继承关系,
将现实世界实体的共同特性抽象为一般类,通过增加独有的特性而成为各种特殊类。如图所示:
④ 类的泛化 (generalization):
下图是一个网上售货系统的部分类图。
其中用 {}括起来的内容是约束条件。 UML提供了对类图中的基本成分可进行限制与约束的手段。
西安交通大学 刘海岩 37
销售代表 0,,1
定货 name
address
顾客
creditRating( ):String
产品雇员
1
DateReceived
isPrepaid
number:String
price:Money
协作顾客
contactName
creditRating
creditLimit
creditCard#
个人顾客
{creditRating( )
==“poor”}
定货作业线
dispatch( )
close( )
remind( )
billForMonth( )
Quantity:Integer
price:Money
isSatisfied:Boolean
1
*
*
*
* 1
物品西安交通大学 刘海岩 38
( 3)对象图对象图是类的实例图,给出了存在于程序执行过程中某个特定点的对象与链接的配置示例。
对象名:类名属性对象名,类名 对象 1 对象 2链名对象的三种描述方式链的表示教师 讲授 课程类图李伟编号= 3658
职称=教授软件工程编号= 401
学分= 3
数据库编号= 301
学分= 3
对象图西安交通大学 刘海岩 39
其中,链是类图中关联的实例,类图中关联表示两个类之间可能存在的所有链接,而对象图中的链上不附加重数。对象图中也不可能包含泛化。
对象图不像类图那样具有重要地位,通常用来实例化一个复杂的类图以分析特定的场景。对象图也常用在协作图中,反映一组对象之间的动态协作关系。
西安交通大学 刘海岩 40
( 4)包图包是将类分组成更高层次的单位。包图用以描述包中存在的类以及包与包之间的依赖关系和泛化关系。包的内容可以是类的列表、类图、或另一个包图。依赖关系用虚线箭头表示。
保险单填写界面内部系统保险单 客户数据库界面
Oracle界面
Sybase界面某保险信息管理系统的包图西安交通大学 刘海岩 41
( 5)状态图状态图描述类的对象在生命周期内所有可能的状态以及事件发生时状态的转移 (transition)情况。一个转移可以有一个与之相连的动作 (action),这个动作指明了状态转移时应该作些什么。
状态图是类图的补充。不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。
西安交通大学 刘海岩 42
在一楼 上升空闲下降到达一层到达楼层升楼层电梯运行的状态图开始 上下降楼层在大楼一层到达楼层上升楼层超时移到一层西安交通大学 刘海岩 43
初态 终态状态名
do/活动名中间态行驶向前 向后 向前 向后低速 高速行驶或关系子状态
(只取一种) 与关系子状态
(某时刻可同时到达多个子状态)
① UML中的状态表示
② 转移状态 1
do/活动 1
状态 2
do/活动 2
事件 [条件 ] / 动作其中:状态内部的“活动”不引起状态转移;箭头上的
“动作”指状态转移时要执行的动作。
西安交通大学 刘海岩 44
( 6)顺序图用来描述对象之间的动态协作关系以及协作过程中的先后次序。它常用来描述一个用例的行为,显示该用例中所涉及到的对象以及对象之间交互的时间顺序。
每个对象图符下面的垂直虚线表示对象的生命线,
每条对象生命线上的细长矩形表示该对象正处于活动时期,细长矩形底部的,×,表示该对象被删除。
对象生命线之间的带箭头连线表示对象之间的交互与通信,一般指消息传递并具有以下类型:
简单消息,不考虑通信细节。
同步消息,必须等待消息的返回。
异步消息,不等待消息返回,继续执行。
返回消息,同步消息激活的动作返回到发送对象的消息。
消息泛指操作调用、信号传送、事件唤醒等。
西安交通大学 刘海岩 45
:呼叫者,交换机,远程交换机,受话者拿起话筒响拨号声拨号码
......
接通信号 响铃铃响停止信号拿起话筒铃响停止
<10
d
e
a
b
c
{b-a<1s}
{e-d<5s}
{c-b<10s}
路由选择接电话的顺序图西安交通大学 刘海岩 46
:计算机,打印服务器,打印机,队列打印 ( )
[打印机空闲 ]打印 ( )
[打印机忙 ]存储 ( )
打印结束 ( )打印结束 ( )
用例“打印程序”的顺序图西安交通大学 刘海岩 47
( 7)活动图活动图可有不同的抽象级别。既可以在企业业务模型中描述业务工作流,又可以描述满足一个用例要求所进行的活动及相应约束关系,还可以描述每个活动的具体操作步骤(相当于流程图)。主要图形元素:
泳道 活动图中用垂直分隔线划分成的纵向区域,说明由谁来完成该泳道中的任务。
起点 活动图中所有活动的开始,用 表示。
终点 活动图中所有活动的结束,用 表示。
可有几个终点。
活动 完成的任务或操作步骤,用圆角矩形表示。
决策 是特殊的活动,表示活动流程中的判断,
用菱形表示。
西安交通大学 刘海岩 48
同步 表示活动之间的同步或并发,表示引入的信息流同时到达,引出的信息流同时被触发。同步用一条粗线表示,称为同步线。
业务对象 对象可以作为活动的输入或输出,即活动会改变对象的状态。用虚线箭头表示数据传送的方向。
转移 是活动之间的关系,由隐含事件引起活动转移。转移连接各个活动及各个特殊活动(起点、终点、决策、同步线等)。转移用带箭头的线表示,其上不标注事件和动作,可标注转移的条件。
下面是两个活动图示例:
西安交通大学 刘海岩 49
顾客 售货 库房请求服务支付收货开订单供货交货顾客购物的活动图西安交通大学 刘海岩 50
采购部经理 副总经理协商采购协议签定采购协议草案采购协议草案 (待审 ) 审批通过否生成正式采购协议通知供货商采购协议草案 (未通过 )
正式采购协议 (通过 )
通过未通过采购协议活动图西安交通大学 刘海岩 51
( 8)协作图同对象图的画法一样,但强调对象之间的交互关系。
不像顺序图那样侧重于某种特定情况下对象之间交互的时序。协作图中用箭头表示消息,并注明消息名称和可选参数。箭头附在有协作关系的每对对象的通信链上。在每个消息前加数字标明消息发送的顺序。下图是打印程序的协作图:
西安交通大学 刘海岩 52
1.2,[打印机忙 ]
保存打印文件
:队列:计算机
1.3,[打印机空闲 ]打印文件
:打印机:打印服务器
1:打印文件协作图举例西安交通大学 刘海岩 53
( 9)构件图构件可以是源代码文件、二进制文件或可执行文件。构件图用来说明这些构件之间在编译、链接或执行时的依赖关系,利用这种依赖关系能容易的分析一个构件的变化对其他构件的影响。
以下是一个某教学管理的构件图,该图例中:
表示构件接口,对外提供可见的操作和属性表示依赖关系属性为,dll的构件为动态链接库中的构件。
西安交通大学 刘海岩 54
教学管理,exe
课程课程管理,dll 成绩管理,dll 人事管理,dll
开设课程 选课注册 教师 学生构件接口某一教学管理构件图西安交通大学 刘海岩 55
( 10)配置图用来描述系统中硬件设备的配置、通信以及在各硬件设备上软构件和对象的配置。能清楚地展示分布式系统运行时的体系结构。在该图中硬件设备称为结点,之间的连接为通信路径,连接上要标明通信协议或网络类型。
下图是银行 ATM系统的配置图。
西安交通大学 刘海岩 56
,局域网,
,Internet
ATM客户 机银行储户
ATM应用服务器
ATM数据服务器
ATM系统配置图,
客户管理事务管理帐务管理
》
西安交通大学 刘海岩 57
3,UML对软件开发过程的支持需 求 规 格说 明场 景
U M L 活 动 图 U M L 状 态 图
U M L 类 图 U M L 对 象 图
U M L 顺 序 图 U M L 协 作 图
U M L 包 图
U M L 组 件 图
U M L 配 置 图对 象 模 型
U M L 用 例描 述 和 图工 作 流 图类 定 义 和 关 系需 求状态类结构交互设 计编 码
U M L 如 何 支 持 开 发 过 程西安交通大学 刘海岩 58
用例图输入新客户创建新订单订单运货客户订单 客户创建新订单的顺序图核实客户准备输入的项目 准备发运订单类的状态图几种视图之间的关系西安交通大学 刘海岩 59
习题
1、传统软件开发方法有什么缺陷?
2、解释面向对象软件开发过程的特点。
3、比较几种面向对象的软件开发方法。
4,UML是什么?如何支持软件开发过程。
5,UML中有哪些模型视图?各有什么特点?
第 7章 面向对象软件工程的概念
传统软件开发方法的局限性
面向对象的过程模型
面向对象的概念
几种面向对象方法
统一建模语言- UML
西安交通大学 刘海岩 2
7.1传统软件开发方法的局限性传统的软件工具、软件技术和抽象层次越来越难以适应大规模复杂软件系统的开发特点。软件能力问题已经成为制约软件发展的因素。
软件工程自 70年代以来,有力的推动了软件能力的解决。自顶向下的分析与设计的方法、软件项目的工程化管理、软件工具和开发环境、软件质量保证等都对软件的发展起了非常重要的作用。传统的软件开发方法在当时的软件工程中起了主导作用,随着系统复杂性、多变性增强,传统方法的缺陷就显露了出来:
( 1)面向过程为主。系统围绕着由计算机来实现功能的复杂过程而建立,在分析和解决问题时与人们对现实世界的认识有一定差距。
西安交通大学 刘海岩 3
( 2)软件结构稳定性差。需求分析阶段重点是功能模型,
难以彻底明确全部需求。设计阶段的软件体系结构是基于系统功能建立的。每个模块完成一个基本功能,多个模块的组合完成一个整体功能。一个模块的变动可能会影响到多个模块。用户的需求大多针对功能,功能的变化会引起体系结构的变化,不利于系统的维护。
( 3)软件开发的抽象力度小。解决问题的类型一般用于
“输入 -处理 -输出”为核心的数据处理系统,不适应于复杂的实时、交互、事件驱动、分布式等新型应用的系统开发。
( 4)软件重用未能得到很好的解决。传统的方法一般从
“零”开始开发软件,数据与操作作为相互分离的实体来考虑,使软件的可复用性差。重用的实施仅仅是公用模块的调用。面向对象的封装性、继承性、多态性等特性支持软件重用且重用的粒度大。软件的重用导致更快地、高质量地开发软件,为软件工业化生产奠定基础。
西安交通大学 刘海岩 4
传统方法数据与过程是分离的过程 1输入输出 过程 2
过程 3
数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元西安交通大学 刘海岩 5
传统方法与面向对象方法的比较面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出西安交通大学 刘海岩 6
7.2 面向对象的过程模型计 划 分 析 设 计分 析 设 计 分 析 设 计计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估计 划 分 析 设 计提 取 可复 用 类原 型实 现测 试客 户评 估评 审 及 精 化早 期 的 分 析 / 设 计 迭 代评 审 及 精 化评 审 及 精 化评 审 及 精 化第 一 个原 型下 一 个增 量
1、演化 /并行模型
( p402)
是 Booch等人在 90年代初建议的。该模型与第 1章介绍的螺旋模型、
增量模型相似。但强调:
( 1)对 OO系统的分析和设计建模不在相同的抽象层次上进行。
( 2)分析和设计可以并发地应用到独立的系统构件。
西安交通大学 刘海岩 7
该模型每次迭代都要计划、工程和评估。每个计划都要调整进度以适应和本次迭代相关的变化。早期阶段迭代进行的分析与设计工作为了分离出 OO模型中的所有重要元素;当工程工作不断进展时,产生软件的增量版本;在评估阶段对每个增量的评估其反馈将影响下一次计划活动及后续增量。
2,RUP
98年 6月推出,该过程强调了开发方法的统一、建模语言的统一、研究成果的统一。该过程是基于构件的,
即所构造的系统是由软件构件通过明确定义的接口相互连接所建造起来的。它使用 UML来制定软件系统的所有蓝图。 RUP的主要特点:
( 1)用例驱动用例作为系统分析、设计、实现和测试的基本输入。
西安交通大学 刘海岩 8
即用例不只是一种确定系统需求的工具,它还能驱动系统的设计、实现和测试的进行。
基于用例模型,开发人员可以创建一系列实现这些用例的设计模型和实现模型。开发人员可以审查每个后续建立的模型是否与用例模型一致。测试人员测试实现以确定实现模型的构件是否实现了用例。所以用例启动了开发过程,还使开发过程结合为一体。开发过程是沿着一系列从用例得到的工作流前进的。
西安交通大学 刘海岩 9
下图显示了用例模型与其他模型之间的相关性:
用例模型由 … 建立分析模型为系统描述一系列类由? 设计设计模型为系统定义一系列子系统和界面由? 实现实现模型将类映射到构件由? 分配测试模型由? 验证验证系统是否提供了用例模型中描述的功能配置模型定义软件分布西安交通大学 刘海岩 10
( 2)以构架( Architecture)为中心软件系统的构架从不同角度描述了即将构造的系统,
它刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特征,包含了系统中最重要的静态结构和动态行为。
构架是根据应用领域的需要逐渐发展起来的,并在用例中得到反映。每种产品都具有功能和表现形式,功能与用例对应,表现形式与构架对应。用例与构架是相互影响的,用例在实现时必须符合于构架,构架必须预留空间以实现现在或将来所有需要的用例。
西安交通大学 刘海岩 11
3、迭代与增量的过程迭代指工作流中的步骤,增量指产品中增加的部分。
迭代过程要处理一组用例,这组用例合起来能扩展所开发产品的可用性,后续的迭代过程建立在前一次迭代过程末期所开发的产品上。
构架 提供了一种结构来指导 迭代 过程中的工作,用例则确定了目标并驱动每次迭代的工作。 —— 三条腿的凳子!
4、基于构件统一过程所构造的软件系统,是由软件构件通过明确定义的接口相互连接所建造起来的。
5、使用 UML
统一过程使用 UML来制定软件系统的所有蓝图,
UML是整个统一过程的一个完整部分,他们是共同发展起来的,它强调创建和维护模型。
西安交通大学 刘海岩 12
6、过程可剪裁用统一过程开发软件时,各阶段应该有多长?各个阶段迭代多少次是合适的?候选构架可以在哪一点完全建立起来?这些问题的答案取决于系统的规模、
项目的性质、开发组织的领域经验,甚至包括相关人员有效配合程度。总之,统一过程是一个框架,可以根据具体情况加以裁剪,以此来适应各种各样的开发过程。
西安交通大学 刘海岩 13
7.3 面向对象的概念面向对象( Object Oriented,简称 OO)的概念起源于
20世纪 60年代中期的 Simula 67。 80年代初,Smalltalk语言及其程序设计环境的出现成为面向对象技术发展的一个重要里程碑。 80年代中期硬件的发展使 C到 C++过渡平滑,推出了相应工具及面向对象集成环境,使 OOP模式进入主流。 80年代中后期,面向对象分析与设计的研究开始发展。进入 90年代,面向对象软件工程成了许多软件产品的建造笵型。
( 1)对象 (object)
是现实世界中个体或事物的抽象表示。封装了其属性及相关的操作。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作指出了该对象具有的行为并提供了对外的服务。
西安交通大学 刘海岩 14
( 2)类 (class)
是具有相同属性和相同操作的对象的抽象。通常用类名、类的属性、类的操作三方面的内容来定意一个类。一个具体对象是类的一个实例。
( 3)消息 (message)
是一个对象发送给另一个对象的操作请求。消息一般由三部分组成:对象名、消息名、参数。消息传递是对象与外部世界相互通信的唯一途径。
( 4)方法 (method)
是对象操作的实现,描述了对象中操作的算法和响应消息的方式。
西安交通大学 刘海岩 15
( 5)继承 (inheritance)
是子类自动的共享其父类中定义的属性和操作的机制,该机制构成了类的层次结构。较高层的父类称为基类、超类、一般类。子类称为派生类、特殊类。
子类除了继承父类的特征,还可有自己的特征。继承有传递性,子类能继承上层的全部特征。
继承性使得相似的对象可以共享程序代码和数据结构,从而简化了创建类及对象的工作量,基类解决一般性问题,派生类解决特殊问题,提高了软件的可重用性。继承性还使得软件便于维护,当需要扩充软件原有功能时,从要修改的类中派生出一个子类,在该子类中添加新的代码。
西安交通大学 刘海岩 16
( 6)多态 (polymorphism)
指在类的不同层次上可以使用相同的操作名。同一操作名可有不同的实现方式,运行时可动态地选择哪一个算法。
多态性增加了软件的灵活性,可扩充性,通用功能的操作放在高层,不同地实现这一功能的行为放在低层,以实现不同的相应。
西安交通大学 刘海岩 17
7.4 几种面向对象方法
20世纪 80年代以来,出现了几十种面向对象软件开发方法。每一种都有自己的符号体系和开发过程,都支持以下基本活动:
标识类及对象
描述类及对象之间的关系
定义类的属性和操作
1,Booch方法
Booch是面向对象方法最早的提出者之一,提出了面向对象软件工程的概念。提出了“微开发过程”和“宏开发过程”的思想。
西安交通大学 刘海岩 18
微开发过程:定义一组分析任务,包括标识类和对象以及类和对象的语义、定义类和对象间的关系、
描述类和对象的动态行为。
宏开发过程:将微过程反复应用,并包含了体系结构设计的计划活动:
将相似的对象聚集到独立的模块;
描述对象管理、内存管理、错误处理等其它功能的实施;
可使用原型对上述任务进行精化;
将同时执行的进程分配到不同的处理机。
该方法提出建立以下模型:
类图、对象图、状态转移图、时序图、模块图、
进程图。
西安交通大学 刘海岩 19
2,Coad/Yourdon方法著名的 OOA/OOD方法,也是最早的面向对象的分析与设计方法之一。简单、易学。
OOA阶段的任务:
标识类及对象
定义结构(一般-特殊结构、整体-部分结构)
划分主题
定义属性及对象间的实例连接
定义服务及对象间的消息连接上述任务迭代进行,产生 5个层次的问题域模型(主题层、类及对象层、结构层、属性层、服务层)
西安交通大学 刘海岩 20
OOD阶段的活动:
问题域部分
人机交互部分
任务管理部分
数据管理部分
3,OMT方法
Rumbaugh等人提出的对象建模技术 (Object Model
Technology,OMT),该方法强调了三种模型,并将软件开发过程划分为以下几个阶段:
( 1)系统分析
问题描述
建立对象模型产品:对象模型=对象图+数据字典西安交通大学 刘海岩 21
建立动态模型产品:动态模型=状态图+事件跟踪图
建立功能模型产品:功能模型=数据流图+约束
( 2)系统设计
将系统分解为各个子系统
确定问题中固有的并发性
将各子系统分配给处理器
数据存储管理
全局资源管理
选择软件控制机制
边界条件处理西安交通大学 刘海岩 22
( 3)对象设计对分析模型细化:
将三种模型结合起来以获得对象类上的操作。如功能模型中的加工,动态模型中对应一个事件的活动。
设计实现操作的算法
优化数据访问路径
实现系统设计中的控制机制
为提高继承而调整类结构
设计对象之间的关联
将类和关联集成到模块中西安交通大学 刘海岩 23
4,Jacobson方法也称 OOSE方法。最大特点是强调 使用实例 ( Use-
Case),每一个用例就是一个使用系统的方式,用例的执行将引发执行一系列与行为相关的事务。
该方法将用例贯穿于整个开发阶段,并在用例描述中引入了 角色或参与者 ( Actor)的概念。角色指使用系统的人以及与系统相互作用的软硬件环境。
该方法还将对象区分为 实体对象 (业务对象),接口对象 (界面对象)和 控制对象 。
需求分析阶段活动:定义潜在的角色、识别问题域中的对象和关系、基于需求规格说明和角色的需要描述用例。
设计阶段的活动:从用例的描述中发现与设计有关的对象,并描述其属性、行为和关联。同时把所有用例的行为分派给每个对象。
西安交通大学 刘海岩 24
7.5 统一建模语言 UML
UML(Unified Modeling Language)产生于 90年代中期。
它不仅统一了 Booch,OMT和 OOSE方法中的概念和表示法,
而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。
1,UML概述
UML的发展历程
(下图)
UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视化建模。 UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。
西安交通大学 刘海岩 25
Booch’93 OMT-2
UML 0.8
UML 0.9&0.91
UML 1.0
UML 1.1
UML同行专家意见
OMG认证
10/95
10/96 & 9/96
OMG审核,1/97
OMG修正,9/97
OMG采纳为标准,11/97 UML 1.3
UML2.02001年重要修改
OOSE
UML开发历程西安交通大学 刘海岩 26
2,UML中的模型视图
UML有以下主要模型元素,构成了 UML中的各种模型视图:
包
+ 操 作 ( )
- 属 性类
+ 操 作 ( )
- 属 性对 象注 释组 件结 点用 例状 态西安交通大学 刘海岩 27
用户模型视图用例图,从用户的角度描述系统能提供哪些功能以及功能的使用者。
结构模型视图:
类图:描述系统的静态结构;
对 象图:描述系统在某个时刻的静态结构;
包图:将类分组成更高层次的静态结构。
行为模型试图顺序图:按时间顺序描述系统元素之间的交互;
协作图:从时间和空间的顺序描述系统元素之间的交互;
状态图:描述系统元素对事件的响应引起的状态转换;
活动图:描述系统元素的活动。
实现模型视图构件图:描述实现系统的元素的组织结构;
配置图:描述环境元素的配置,并把实现系统的元素映射到配置上。
西安交通大学 刘海岩 28
(1)用例图用例:根据 Jacobson的定义,用例规定了一个动作序列,系统执行这些动作并产生出对于特定参与者可见的有价值的结果。 参与者 可以是人、组织、硬件设备或外部系统。
用例图用于展示参与者 与系统提供的用例之间的连接(通信)关系。仅仅从参与者使用系统的角度描述系统,不反映内部的处理方式。因此用例图定义的是系统的 功能需求 。
下图是某保险业务的用例图。
西安交通大学 刘海岩 29
签定一份保险单客户保险销售人员销售统计客户统计某保险业务的用例图西安交通大学 刘海岩 30
某金融贸易系统用例图设置边界风险分析交易估价进行交易超越边界更新帐目评价交易人员交易经理计帐系统销售员,extend》
,include》
,include》
西安交通大学 刘海岩 31
其中:,include》,,extend,为用例图中可用的构造型元素,表示“风险分析”和“交易估价”都包含有公共的“评价”动作,因此把“评价”作为一个独立的用例。而“超越边界”用例是“进行交易”用例的扩展,
指交易时对某个特定用户规定了最大贸易量,不能执行一般的常规动作。因此,当描述一般行为时有例外、任选或异常处理时,采用,extend,;当在两个或多个用例中出现重复描述(有共用行为)而又想避免重复时,采用,include,。
( 2)类图用来描述系统中类和类之间的关系,是系统的静态结构。类图中还描述了类的属性、操作、以及对模型中各种成分的约束。类图包含有类、关联和关系等模型元素。见下图,
西安交通大学 刘海岩 32
类名属性操作类的完整表示类名类的简单表示类 1
类 2
角色角色关联名关联表示类之间的语义联系(是运行时实例之间的关系)。角色表示该类在这个关联中的作用。
关联中可以有重数,
重数指一个角色可以有多少个对象来扮演。
① 类的表示:
② 类的关联 (association):
西安交通大学 刘海岩 33
公司 董事会办公室 分配 员工0..1 *
人员董事会成员
0,3..8 * 董事会同时省略关联名和角色名,默认关联名是 has(有),
省略重数默认 1..1。
每一个员工可能没有或者只有一个办公室每一个董事会没有或者有 3~8个董事会成员
(有角色名,可以省略关联名)
西安交通大学 刘海岩 34
在一些情况下关联可能需要记录一些信息,但这些信息不能放在任何一个类中,可引入一个关联类记录这些信息。如下图:
学生 * 选修 * 课程 学生 * * 课程选修成绩学生 * 选修 *
成绩课程一个多对多关联。“成绩”
属性不能放在任何一方(每个学生只有一个成绩或每门课程只有一个成绩) 创建一个关联类来保存成绩与带有关联类的多对多关联等价的两个一对多关联的图西安交通大学 刘海岩 35
整体类 部分类 整体类 部分类项目 人员1 * 建筑物 楼房类的聚合 类的强聚合(组合)
*
③ 类的聚合 (aggregation):
是表示“整体 -部分”的特殊关联。
组合 (composition)是一种强类型的聚合,整体类和部分类共存亡,如果整体类被撤销,部分类也不存在。
部分类的存在只是为整体类服务。
西安交通大学 刘海岩 36
一般类特殊类人员教师 学生由一个超类和几个直接子类构成的结构通常称为泛化 。类的这种关系也称为一般 -特殊关系或继承关系,
将现实世界实体的共同特性抽象为一般类,通过增加独有的特性而成为各种特殊类。如图所示:
④ 类的泛化 (generalization):
下图是一个网上售货系统的部分类图。
其中用 {}括起来的内容是约束条件。 UML提供了对类图中的基本成分可进行限制与约束的手段。
西安交通大学 刘海岩 37
销售代表 0,,1
定货 name
address
顾客
creditRating( ):String
产品雇员
1
DateReceived
isPrepaid
number:String
price:Money
协作顾客
contactName
creditRating
creditLimit
creditCard#
个人顾客
{creditRating( )
==“poor”}
定货作业线
dispatch( )
close( )
remind( )
billForMonth( )
Quantity:Integer
price:Money
isSatisfied:Boolean
1
*
*
*
* 1
物品西安交通大学 刘海岩 38
( 3)对象图对象图是类的实例图,给出了存在于程序执行过程中某个特定点的对象与链接的配置示例。
对象名:类名属性对象名,类名 对象 1 对象 2链名对象的三种描述方式链的表示教师 讲授 课程类图李伟编号= 3658
职称=教授软件工程编号= 401
学分= 3
数据库编号= 301
学分= 3
对象图西安交通大学 刘海岩 39
其中,链是类图中关联的实例,类图中关联表示两个类之间可能存在的所有链接,而对象图中的链上不附加重数。对象图中也不可能包含泛化。
对象图不像类图那样具有重要地位,通常用来实例化一个复杂的类图以分析特定的场景。对象图也常用在协作图中,反映一组对象之间的动态协作关系。
西安交通大学 刘海岩 40
( 4)包图包是将类分组成更高层次的单位。包图用以描述包中存在的类以及包与包之间的依赖关系和泛化关系。包的内容可以是类的列表、类图、或另一个包图。依赖关系用虚线箭头表示。
保险单填写界面内部系统保险单 客户数据库界面
Oracle界面
Sybase界面某保险信息管理系统的包图西安交通大学 刘海岩 41
( 5)状态图状态图描述类的对象在生命周期内所有可能的状态以及事件发生时状态的转移 (transition)情况。一个转移可以有一个与之相连的动作 (action),这个动作指明了状态转移时应该作些什么。
状态图是类图的补充。不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。
西安交通大学 刘海岩 42
在一楼 上升空闲下降到达一层到达楼层升楼层电梯运行的状态图开始 上下降楼层在大楼一层到达楼层上升楼层超时移到一层西安交通大学 刘海岩 43
初态 终态状态名
do/活动名中间态行驶向前 向后 向前 向后低速 高速行驶或关系子状态
(只取一种) 与关系子状态
(某时刻可同时到达多个子状态)
① UML中的状态表示
② 转移状态 1
do/活动 1
状态 2
do/活动 2
事件 [条件 ] / 动作其中:状态内部的“活动”不引起状态转移;箭头上的
“动作”指状态转移时要执行的动作。
西安交通大学 刘海岩 44
( 6)顺序图用来描述对象之间的动态协作关系以及协作过程中的先后次序。它常用来描述一个用例的行为,显示该用例中所涉及到的对象以及对象之间交互的时间顺序。
每个对象图符下面的垂直虚线表示对象的生命线,
每条对象生命线上的细长矩形表示该对象正处于活动时期,细长矩形底部的,×,表示该对象被删除。
对象生命线之间的带箭头连线表示对象之间的交互与通信,一般指消息传递并具有以下类型:
简单消息,不考虑通信细节。
同步消息,必须等待消息的返回。
异步消息,不等待消息返回,继续执行。
返回消息,同步消息激活的动作返回到发送对象的消息。
消息泛指操作调用、信号传送、事件唤醒等。
西安交通大学 刘海岩 45
:呼叫者,交换机,远程交换机,受话者拿起话筒响拨号声拨号码
......
接通信号 响铃铃响停止信号拿起话筒铃响停止
<10
d
e
a
b
c
{b-a<1s}
{e-d<5s}
{c-b<10s}
路由选择接电话的顺序图西安交通大学 刘海岩 46
:计算机,打印服务器,打印机,队列打印 ( )
[打印机空闲 ]打印 ( )
[打印机忙 ]存储 ( )
打印结束 ( )打印结束 ( )
用例“打印程序”的顺序图西安交通大学 刘海岩 47
( 7)活动图活动图可有不同的抽象级别。既可以在企业业务模型中描述业务工作流,又可以描述满足一个用例要求所进行的活动及相应约束关系,还可以描述每个活动的具体操作步骤(相当于流程图)。主要图形元素:
泳道 活动图中用垂直分隔线划分成的纵向区域,说明由谁来完成该泳道中的任务。
起点 活动图中所有活动的开始,用 表示。
终点 活动图中所有活动的结束,用 表示。
可有几个终点。
活动 完成的任务或操作步骤,用圆角矩形表示。
决策 是特殊的活动,表示活动流程中的判断,
用菱形表示。
西安交通大学 刘海岩 48
同步 表示活动之间的同步或并发,表示引入的信息流同时到达,引出的信息流同时被触发。同步用一条粗线表示,称为同步线。
业务对象 对象可以作为活动的输入或输出,即活动会改变对象的状态。用虚线箭头表示数据传送的方向。
转移 是活动之间的关系,由隐含事件引起活动转移。转移连接各个活动及各个特殊活动(起点、终点、决策、同步线等)。转移用带箭头的线表示,其上不标注事件和动作,可标注转移的条件。
下面是两个活动图示例:
西安交通大学 刘海岩 49
顾客 售货 库房请求服务支付收货开订单供货交货顾客购物的活动图西安交通大学 刘海岩 50
采购部经理 副总经理协商采购协议签定采购协议草案采购协议草案 (待审 ) 审批通过否生成正式采购协议通知供货商采购协议草案 (未通过 )
正式采购协议 (通过 )
通过未通过采购协议活动图西安交通大学 刘海岩 51
( 8)协作图同对象图的画法一样,但强调对象之间的交互关系。
不像顺序图那样侧重于某种特定情况下对象之间交互的时序。协作图中用箭头表示消息,并注明消息名称和可选参数。箭头附在有协作关系的每对对象的通信链上。在每个消息前加数字标明消息发送的顺序。下图是打印程序的协作图:
西安交通大学 刘海岩 52
1.2,[打印机忙 ]
保存打印文件
:队列:计算机
1.3,[打印机空闲 ]打印文件
:打印机:打印服务器
1:打印文件协作图举例西安交通大学 刘海岩 53
( 9)构件图构件可以是源代码文件、二进制文件或可执行文件。构件图用来说明这些构件之间在编译、链接或执行时的依赖关系,利用这种依赖关系能容易的分析一个构件的变化对其他构件的影响。
以下是一个某教学管理的构件图,该图例中:
表示构件接口,对外提供可见的操作和属性表示依赖关系属性为,dll的构件为动态链接库中的构件。
西安交通大学 刘海岩 54
教学管理,exe
课程课程管理,dll 成绩管理,dll 人事管理,dll
开设课程 选课注册 教师 学生构件接口某一教学管理构件图西安交通大学 刘海岩 55
( 10)配置图用来描述系统中硬件设备的配置、通信以及在各硬件设备上软构件和对象的配置。能清楚地展示分布式系统运行时的体系结构。在该图中硬件设备称为结点,之间的连接为通信路径,连接上要标明通信协议或网络类型。
下图是银行 ATM系统的配置图。
西安交通大学 刘海岩 56
,局域网,
,Internet
ATM客户 机银行储户
ATM应用服务器
ATM数据服务器
ATM系统配置图,
客户管理事务管理帐务管理
》
西安交通大学 刘海岩 57
3,UML对软件开发过程的支持需 求 规 格说 明场 景
U M L 活 动 图 U M L 状 态 图
U M L 类 图 U M L 对 象 图
U M L 顺 序 图 U M L 协 作 图
U M L 包 图
U M L 组 件 图
U M L 配 置 图对 象 模 型
U M L 用 例描 述 和 图工 作 流 图类 定 义 和 关 系需 求状态类结构交互设 计编 码
U M L 如 何 支 持 开 发 过 程西安交通大学 刘海岩 58
用例图输入新客户创建新订单订单运货客户订单 客户创建新订单的顺序图核实客户准备输入的项目 准备发运订单类的状态图几种视图之间的关系西安交通大学 刘海岩 59
习题
1、传统软件开发方法有什么缺陷?
2、解释面向对象软件开发过程的特点。
3、比较几种面向对象的软件开发方法。
4,UML是什么?如何支持软件开发过程。
5,UML中有哪些模型视图?各有什么特点?