UML与面向对象


UML(统一建模语言,Unified Modeling Language)主要以图形的方式对系统进行分析、设计。
任何大规模的系统设计都是相当困难的:

  1. 我们如何与客户沟通,了解客户对系统的需求?
  2. 如何在开发人员之间共享设计,以确保各个部分能够无缝地协作?

在开发复杂的系统时,如果缺乏相应的帮助工具,则很容易曲解或遗忘很多细节,这就是使用UML的原因。

1、面向对象开发

1.1、理解面向对象开发

面向对象(Object-Oriented,OO)不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。

概括来讲,面向对象方法的基本思想包括两个主要方面:

  • 一方面是从现实世界中客观存在的食物出发来构造软件系统
  • 另一方面在系统的构造中尽可能地运用人类的自然思维方式

1.2、面向对象的主要概念

对象(Object)从一般意义上来讲,它是现实世界中的一个实际存在的事物。

对象具有自己的状态特性和动作。

1.3、OO开发的优点

面向对象的方法最初用于计算机模拟和图形用户界面,但更常用在信息系统开发上,究其原因是OO开发的优点:

  • 自然性:是指在开发中总是以对象的形式来认识世界,因此当人们分析和设计系统需求时,总是很自然地定义各类对象。
  • 重用性

2、OO开发中三层设计

面向对象开发中,通常把OO系统中相互联系的所有对象分成三类:问题域类、GUI类 和 数据访问类:
在这里插入图片描述

3、UML简介

统一建模语言(UML)仅仅是一种语言,不是一种系统设计的方法,而是系统系统建模的标准。UML经历了多年的研究、发展并不断完善,成为现在诸多领域内建模的首选标准。开发人员主要是用UML来构造各种模型,以便描述系统需求和设计。

3.1、为什么对系统建模

问题:开发人员如何与用户进行沟通以了解系统的需求?开发人员之间如何沟通以确定各个部分能够无缝地协作?这就是为什么需要系统建模。

在系统设计中采用模型化设计的重要原因之一是管理系统设计的复杂性。模型化可以帮助用户从高层理解系统,使用户专注与系统设计的重要部分,手机关键信息,而不需要关心一些无关重要的部分。

3.2、UML的发展

在20世纪80年代,尝试不同方法进行面向对象的分析与设计。其中有少数方法开始在一起关键项目中发挥作用,包括Booch方法、OMT方法、RDD方法、OBA方法和Objectory方法。

20世纪90年代中期,出现了第二代面向对象方法,包括Booch’94、OMT等。面向对象方法已经成为软件分析和设计方法的主流,这些方法所做的最重要的尝试是在程序设计与计算机科学之间寻求合理平衡,来进行复杂软件的开发。

UML是Grady Booch (Booch) 、James Rumbaugh(OMT)和Ivar Jacobson(OOSE)智慧的结晶。

三人曾分别创立自己的建模语言,在1995年前后,决定停此竞争,取三种建模语言的精华,将之融为一体,为软件开发师、架构师和分析师提供一个更方便的工具。他们还加盟到Rational Software Corporation(Rational)公司。这家公司开发工具和软件,以支持基于统一建模语言 的软件设计。

许多公司感到UML能够适应公司的战略目标,因此成立了一个UML联盟。联盟的成员包括DEC、Hewlett-Packard、Intellicorp、Microsoft、 Oracle、 Rational和其他一 些公司。1997年,应“对象管理组织”(OMG) (Object
Management Group )向外界征求标准建模语言的建议,联盟制订了UML 1.0版并提交给OMG。

3.3、UML的构成

UML包括了一些可以相互组合图标的图形元素,以及组合这些元素的语法规则。

UML提供这些图的目地是用多个视图来展示一个系统,这组视图被称为一个模型。

一个UML模型只描述了一个系统要做什么,没告诉我们是如何实施的。

在科学和工程技术领域中模型是一个很有用途的概念。
在最通常的意义下,当我们建立了一个模型后,其实就在运用我们已经了解的很多知识来帮助我们理解暂时还不知道的事物。

在某些领域中,一个模型可能是一组数学方程式;而在另一些领域中,一个模型肯是计算机仿真程序。模型可能有许多种类型。

一个模型是一组UML图, 为了理解和开发一个系统,我们可以检查、获取和修改这些图。

3.3.1、模型、图

UML大科普:一文梳理清 14种 UML图!
在这里插入图片描述
这些图分为结构图和行为图。

1.结构图:
(1)类图

是使用UML建模时最常用的图。它展示了系统中的静态事物、它们的结构以及它们之间的相互关系。这种图的典型用法是描述系统的逻辑设计和物理设计。

(2)构件图

展示一组构建的组织和彼此间的依赖关系。构件图说明系统如何实现,软件系统内构建如何协同工作。

(3)对象图

展示系统中的一组对象。它是系统在某一时刻的快照。对象图是类图在某一时刻的快照。

(4)部署图

展示物理系统运行时的架构。部署图描述系统中的硬件和硬件上驻留的软件。

UML2.0新增了以下几种结构图:

(5)组合结构图

展示模型元素的内部结构。

(6)包图

描绘包之间的依赖关系(包是一个用于组织其他模型元素的通用模型元素)。

(7)用例图
2.行为图:
(1)活动图

显示系统内的活动流。通常需要使用活动图描述不同的业务过程。

(2)状态图

显示一个对象的状态和状态之间的转换。状态图包括状态、转换、事件和活动。状态图是一个动态视图,对事件驱动的行为建模尤其重要。例如,可以利用状态图描述一个电话路由系统中交换机的状态,用状态图对交换机建模有助于理解交换机的动态行为。在UML2.0中,状态图被称作状态机图(state machine diagram)。

(3)合作图

是交互图的一种,交互图还包括顺序图、时间图等。合作图突出对象之间的合作与交互。在UML2.0中,合作图被通信图(communication diagram)所取代。

(4)顺序图

是另一种交互图。顺序图强调一个系统中不同元素间传递消息的时间顺序。
UML2.0增加了下列几种行为图:

(5)时间图

也是一种交互图。它描绘与交互元素的状态转换或条件变化有关的详细时间信息。

(6)交换概述图

是一种高层视图,用于从总体上显示交互序列之间的控制流。

3.3.2、视图

视图定义:一个系统应从不同角度进行描述,从一个角度观察到的系统成为一个视图。
视图有多个图构成,它不是一个图表,而是在某一个抽象层上,对系统的抽象表示。
如果要为系统建立一个完整的模型图,需要定义一定数量的视图,每个视图表示系统的一个特殊方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。

视图包括以下类型:

①用例视图(use-case view)
  • 表示外部参与者看到的系统将提交的功能。
②逻辑视图(logical view)
  • 表示系统内部如何提供系统的功能
  • 静态结构用类图和对象图来描述,动态行为用状态图、时序图、协作图、活动图来描述
③构件视图(component view)
  • 构件视图表示代码构件的组织,描述了实现模块及它们之间的依赖关系。构建视图针对开发者
④进程视图(process view)
  • 表示系统的并发性,包括进程的通信和同步。
  • 用动态图(即状态图、时序图、协作图和活动图)和实现图(即构件图和部署图)来描述。
  • 针对开发者和系统集成者。
⑤部署视图(deployment view)
  • 表示系统的物理部署。
  • 构件被部署到物理结构中的映射,用部署图来描述。
  • 它针对开发者、集成者和测试者。

3.4、UML的主要特点

标准建模语言UML的主要特点可以归结为三点:

  1. UML统一了Booch、OMT和OOSE等方法中的基本概念。
  2. UML还吸取了面向对象技术领域中其他流派的长处。
  3. UML在演变过程中还提出了一些新的概念。在UML标准中新加了模板、职责、扩展机制、线程、过程、分布式、并发、模式、合作、活动图等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interface)和组件(Conponents)等概念。

因此可以认为,UML是一种先进适用的标准建模语言。

3.5、“统一”的含义

UML的含义为统一建模语言,“统一”在UML中的含义:

  • 在以往出现的方法和表示法方面UML合并了许多面向对象方法中被普遍接受的概念,对每一种概念UML都给出了清晰的定义、表示法和有关术语。使用UML可以对已有的各种方法建立的模型进行描述,并比原来的方法描述得更好。
  • 在软件开发的生命周期方面UML对于开发的要求具有无缝性,开发过程中的不同阶段可以采用相同的一套概念和表示法,在同一个模型中它们可以混合使用,而不必去转换概念和表示法。这种无缝性对迭代的增量式软件开发至关重要。

4、UML应用

UML可用于任何面向对象系统开发建模,不仅可以为使用UML进行软件建模,同样可以使用UML对其他非计算机领域系统进行建模,UML常进行一下应用:

  • 信息系统(Information System):向用户提供信息的存储、检索和提交,处理存放在关系或对象数据库中大量具有复杂关系的数据。
  • 技术系统(Technical System):处理和控制技术设备,如电信设备、军事系统或工业过程。
  • 嵌入式系统(Embedded Real-Time System)它以软件的形式来嵌入到硬件设备中从而来控制硬件设备中的运行,通常在手机、家电或汽车等设备上的系统。

5、UML建模

开发软件活动包括两个方面的工作:

  • 对业务和业务规则的理解和表示。
  • 规划和设计软件系统。

由于业务规模和复杂度不断增加,软件的规模和复杂度也不断增长,人们对业务的理解、对软件的设计和构造越来越困难,只有借助UML来表示和理解业务,借助UML来设计和构造软件系统,通过UML来表示和展现系统组成和交互。
在软件开发活动中,UML主要用于两个方面的建模:对业务建模和对要构造的软件建模。

①对业务建模

业务建模的目的是理解业务内容和业务过程。对业务过程建模,除了理解业务内容中规定要做什么,业务是如何进行的,还要识别业务的变更对业务造成的影响。对业务建模,有助于发现业务的优缺点,找出需要改进和优化的地方,在某些情况下还可以对几个可选的业务过程进行仿真。

②对软件建模

软件建模的目的是用UML表示软件的体系和组成,方便软件设计人员理解和修改软件方案,确保软件设计和计划能正确地实现。在设计和计划需要修改时,修改后的软件系统,要经受得起时间的检验。例如,当在一个软件系统
中增加一个组件时,你要保证系统不会因为增加了这个组件而崩溃。

5.1、建模的目的和原则

5.1.1、建模的目的

(1)对业务和软件进行可视化,便于对业务和软件系统的理解和交流。
(2)详细说明系统的组成、结构和系统交互的行为。便于开发人员对系统的宏观理解。
(3)用模型的方法为系统提供一个模板,开发人员依据该模板构造软件系统。
(4)将计划和决策文档化。

5.1.2、建模的原则

(1)仅当需要时,才为业务或软件系统构建模型。
(2)按照实际情况或按我们需要的样式,对业务或软件系统进行建模。
(3)以及解决方案,来构造需要的模型。
(4)最好用一组相对独立的模型,从不同的侧面,描述重要的业务或软件系统。

5.2、为什么要用UML建模

  1. UML是一种公共语言

UML为业务分析员、架构设计师、代码实现者、测试者、数据库设计师和许许多多参与软件设计和开发的人提供了一个公共“语言”,使他们能够理解业务、需求,理解软件和架构如何构造。

  1. UML是一种应用广泛的语言

UML不仅可以用于软件建模,也可以用于业务建模、知识建模、数据库建模、工作流建模、嵌入式系统建模。用同一种语言对不同的领域建模,便于理解和沟通。

  1. UML是一种很好的扩展语言

在UML框架上,用户可以定义和扩展UML语义和语法,建模更方便、更灵活。

5.3、用UML可以建立的模型种类

5.3.1、按产生模型的阶段性分类

  1. 业务模型:展示业务和业务规则的模型。领域专家和需求分析师创建该种模型。
  2. 需求模型:展示应用系统要求和业务要求的模型。需求分析师和系统分析师创建该模型。
  3. 设计模型:设计模型包含架构模型和详细设计模型,架构模型展示软件系统的宏观结构和组成;详细设计模型展示软件的微观组成和结构。架构师设计架构模型,详细设计模型则以资深开发人员为主,架构师提供指导,共同设计。
  4. 实现模型:表示可执行软件的组成要素和关系。以吱声开发人员(设计人员)为主,架构师提供总体指导。
  5. 数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。

5.3.2、按模型的用途分类

  1. 功能模型:从用户的角度展示系统的功能,包括用例图。
  2. 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图。
  3. 动态模型:展示系统的内部行为。包括序列图、活动图、状态图。

6、UML工具

6.1、主要工具介绍:

Rational公司推出的Rose是目前最好的基于UML的Case工具,它把UML有机地集成到面向对象的软件开发过程中。不论是在系统需求阶段,还是在对象的分析与设计、软件的实现与测试阶段,它都提供了清晰的UML表达方法和完善的工具,方便建立其相应的软件模型。使用Rose可以方便地进行软件系统的分析、设计,很容易同常见的开发环境和程序设计语言进行衔接。
Rose具有正向工程、逆向工程和对象模型更新等功能。用户修改模型后可以直接反映到代码上,同样用户对代码框架的修改也可以反映到模型上。同时它还提供对多种程序设计语言的支持,如C++、Java、Visual Basic等。

Visio Professional2000提供内建的UML支持。如Visio绘图工具提供绘制多种图形的功能,这是一个相当有价值的工具。

6.2、使用UML工具应注意方面(指标)

  1. 至少支持UML1.3
  2. 支持项目组的协同开发
  3. 支持双向工程
    正向工程:模型→代码
    逆向工程:代码→模型
  4. HTML文档化
    建模工具应能为对象工具模型及其组件无缝地产生HTML文档。HTML文档应当包括模型中每个图形,以便开发者可以通过浏览器迅速查询,而不需要加载建模工具本身。
  5. 打印支持
    建模工具应能用多个页面把一张大图能够准确地打印出来,并提供打印预览和缩放功能,能够把模型图放置到所需的页数内。最好能够允许将每一张模型图放置在单页中打印
  6. 健壮性
    不能崩溃
  7. 开发平台
    UML工具应该与应用系统保持平台一致。
  8. 提供XML支持
    WML将成为各种工具之间数据交换的标准格式。能够很好地支持XML无疑将成为软件的未来,提供更好的兼容性。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值