UML建模详解(1)—初识UML建模

UML建模简介:

      UML(Unified Modeling Language的缩写),也称统一建模语言。是用来做软件建模的。不光是在软件的设计阶段用到,在软件的测试,部署阶段都要用到。用于表达软件的操作,对象等信息。

学习UML主要是学习如何建模。它主要是利用一些图来表达信息。一幅图顶得上千言万语。所以UML的主要部分就是学会画那些图:比如用例图,类图等。

这里,我们主要通过Rational Rose建模,当然也有其它工具可以做UML建模,比如Visio、PowerDesign。

UML建模技术主要分为结构建模、动态建模和模型管理建模3个方面:

第1个方面是从系统的内部结构和静态角度来描述系统的,在静态视图、用例视图、实施视图和配置视图中适用,采用了类图、用例图、组件图和配置图等图形。例如类图用于描述系统中各类的内部结构(类的属性和操作)及相互间的关联、聚合和依赖等关系,包图用于描述系统的分层结构等;

第2个方面是从系统中对象的动态行为和组成对象间的相互作用、消息传递来描述系统的,在状态机视图、活动视图和交互视图中适用,采用了状态机图、活动图、顺序图和合作图等图形,例如状态机图用于一个系统或对象从产生到结束或从构造到清除所处的一系列不同的状态;

第3个方面描述如何将模型自身组织到高层单元,在模型管理视图中适用,采用的图形是类图。建模的工作集中在前两方面,而且并非所有图形元素都适用或需要采用。

在嵌入式软件开发中,面向对象技术内在支持了对系统的抽象、分层及复用技术,能够很好地控制系统的复杂性,也逐渐广泛应用。实时UML语言是在嵌入式开发中适用的建模语言。现有许多功能强大UML建模工具,有些工具在引入或加强嵌入式实时系统应用领域的功能,例如Rose
RealTime和Rhapsody。

UML建模要求:

用UML建模时,对软件开发过程是有要求的,必须是用例驱动,以架构为中心,迭代和递增的开发,如果软件开发组织的软件开发过程不能满足这三点要求,那么UML的使用效果就会大打折扣,下面详细论述:

一、用例驱动

用例驱动意味着为系统定义的用例是整个开发过程的基础。

用例在多个核心工作流程中都发挥了作用。

(1)     用例的概念可用来表示业务流程,我们称这种用例的变体为"业务用例"。

(2)     用例模型是需求工作流程的输出结果。在这一早期流程中,需要通过用例来建立用户希望系统完成的任务的模型。这样,用例构成了一个重要的基本概念,客户和系统开发人员都必须认可这个概念。

(3)     在分析设计中,用例是在设计模型中实现的。您需要生成用例实现来说明在设计模型中如何通过对象的交互来执行用例。此模型根据设计对象来说明所实施系统的各个组成部分,以及这些部分如何通过相互作用来执行用例。

(4)     在实施阶段,设计模型就是实施的规约。由于用例是设计模型的基础,所以用例需通过设计类来实施。

(5)     在测试期间,用例是确定测试用例和测试过程的基础。也就是说,通过执行每一个用例来核实系统。

(6)     在项目管理过程中,用例被用来作为计划迭代式开发的基础。

(7)     在部署工作流程中,它们构成用户手册阐述内容的基础。用例也可用来确定产品构件如何排列组合。例如,客户可通过将用例进行某种组合来配置一个系统。

二、以架构为中心

使用UML建模时要以架构为中心,构架之所以重要,原因有以下几点:

1、它使您可对项目进行并保持理智的控制,应付项目中复杂多变的情况,同时保持系统的完整性。

一个复杂的系统不仅仅是其各组成部分之和,也不光是一连串没有关联关系的、很小的技巧决定。它必须依靠某种连贯统一的结构来有条理地组织那些部分,并且提供准确的规则,使系统发展过程中,其复杂程度不会膨胀,超越人类的理解力。

通过建立用于讨论设计问题的一套公共参考材料和一个公共词汇表,构架提供了增进交流和理解的手段。

2、它是大规模复用的有效基础。

通过明确阐述它们之间的主要构件和关键接口,构架为您决定重复使用提供依据,包括内部复用(确定公用的部分)和外部复用(并入现成的构件)。它还允许更大规模上的复用:构架本身的复用,用于处理同一领域中的不同功能。

3、构架还可作为项目管理的基础。

项目计划和人员配备是根据主要构件的类别组织进行的。基本的结构决策是由一个人员组成相对固定的构架小组作出的,他们不是分散的。而开发活动则被分配给若干个小组,每个小组负责开发系统的一个或若干个部分。

三、迭代和递增的开发

使用UML建模时迭代式方法一般要优于线性或瀑布式方法,其原因很多。

1、允许变更需求。需求有时会变化,这常常给项目带来麻烦,它们会导致延期交付、工期延误、客户不满意、开发人员受挫。

2、逐步集成元素。在迭代式方法中,集成可以说是连续不断的。过去在项目结束时要占到整个项目工作量的那段较长的、不确定的且棘手的时期,现分散到六至九个集成部分中,每一部分要集成的元素都比过去少得多。

3、及早降低风险。因为风险一般只有在集成阶段才能发现或得到处理。在初期迭代时,检查所有的核心工作流程,对项目使用的工具、市售软件及人员技能等许多方面进行磨合。过去认定的风险可能被证明不再是风险,而又可能出现一批新的未曾怀疑过的风险。

4、有助于组织学习和提高。团队成员有机会在整个生命周期中边做边学,各显其能。测试员可以早一些开始测试,技术文档编写员可及早开始编写,其他人也是如此。如果是非迭代式开发,这些人在初期只能制定计划或培训技能,空等着开始他们的工作。培训需求等也可在评估复审中尽早提出。

5、提高复用性。因为分部分设计或实施比起预先确定所有共性更容易确定公用部分。确定和开发可重复使用的部分并非易事。早期迭代中的设计复审可使构架设计师确定毋庸置疑的潜在复用部分,并在以后的迭代中开发和完善这些公用代码。

6、生成性能更强壮的产品。因为在多次迭代中您总是不断地纠正错误。在产品脱离先启阶段后的初期迭代中仍然可以发现缺陷。性能上的瓶颈可以尽早发现并处理,而不象在交付前夕,此时已来不及处理。

7、容许产品进行战术改变。例如同现有的同类产品竞争。可以决定采用抢先竞争对手一步的方法,提前发布一个功能简化的产品,或者采用其他厂商的已有技术。

8、迭代流程自身可在进行过程中得到改进和精炼。一次迭代结束时的评估不仅要从产品和进度的角度来考察项目的情况,而且还要分析组织和流程本身有什么待改进之处,以便在下次迭代中更好地完成任务。

通常在软件开发过程中,迭代在数量、持续时间和目标上都是按计划进行的。参与者的任务和职责都已确定好。对进度进行的目标评测都将记录备查。从一次迭代到下一次迭代确实会存在返工现象,但返工也是严格按规定进行的。

四、使用不当的问题

很多企业员工在使用UML建模的过程中,只是进行了领域建模,没有进行用例建模,这样是不能最大可能地发挥UML的优势的,因为该组织的软件开发过程不是用例驱动的。

如果软件开发组织的软件开发过程不能满足上述三点要求,那么UML的使用效果就会大打折扣。也会产生一些问题,有些组织在使用UML之后,发现前期花很长时间设计的模型到了项目的中后期和真正的开发成果相去甚远,以至于全都束之高阁了,如果产生这样的问题,就应该仔细研究一下组织的软件开发过程,是否满足上述三点要求,如果软件开发过程不满足迭代的开发,模型没有随着进度改进,这种问题就很容易出现。

UML2.0和MDA(模型驱动架构)提出了一些解决开发周期前期和后续的模型不一致问题的方法,就是通过模型的转换来完成模型的自动变更,而不是对各个抽象层次的模型全部进行修改,但MDA为大部分人所接受还需要些时日。

五、总结

综上所述,UML建模虽然是软件建模的有利武器,也要遵循一定的规则来使用,否则就不能很好地发挥它的价值,也会事倍功半。理解UML使用的前提,并认真按照这些方法进行实施,相信会有理想的效果。

时间: 2024-11-09 20:02:14

UML建模详解(1)—初识UML建模的相关文章

【UML】详解六种关系

UML中包含六中关系,分别是:关联(Association).聚合(Aggregation).组合(Composition).泛化(Generalization).依赖(Dependency).实现(Realization) 一. 1关联关系(Association) 关联关系表示两个类之间存在某种语义上的联系.例如,一个人为一家公司工作,一家公司有许多办公室.我们就认为人和公司.公司和办公室之间存在某种语义上的联系. 关联关系提供了通信的路径,它是所有关系中最通用.语义最弱的.在UML中,用一

Android进阶——Preference详解之Preference系的基本应用和管理(二)

引言 前面一篇文章Android进阶--Preference详解之初识Preference及Preference系(一)简单描述下了Preference的家族构成和基本知识,相信对于Preference早已不会陌生,肯定也跃跃欲试了吧,这篇文章就给大家总结下Preference.PreferenceActivity.PreferenceGroup.RingtonePreference的普通应用和管理,还有通过一些测试来验证一些机制和原理. 一.PreferenceActivity 1.Prefe

RxJava2.0的使用详解

RxJava2.0的使用详解 1,初识RxJava RxJava就是一种用Java语言实现的响应式编程,来创建基于事件的异步程序 RxJava是一个基于事件订阅的异步执行的一个类库,目前比较火的一些技术框架! 参考资料: Github上RxJava的项目地址: https://github.com/ReactiveX/RxJava 技术文档Api: http://reactivex.io/RxJava/javadoc/ RxAndroid,用于 Android 开发: https://githu

【UML 建模】在线UML建模工具 ProcessOn 使用详解

总结 : -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发现还不错, 推荐给大家; -- 工具地址 : https://www.processon.com/ ; 一. UML 使用流程 1. 创建 UML 图 创建 UML 图 : 点击主页的右上角的 "+" 按钮, 即可弹出创建页面; -- 创建按钮 : -- 创建页面 : -- 选择模板 :

【转】UML类图与类的关系详解

UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(Dependency)和关联(Association).其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition).下面我们结合实例理解这些关系. 基本概念 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类

Java利器之UML类图详解

前言 UML(Unified Modeling Language)中文统一建模语言,是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效. [维基百科] 最近看一些开源项目的时候,总是看到UML中的类图,一开始自己的做法就是跳过去类图的部分,不过后来又遇到了几次,就决定学习下,不能再选择逃避了,这也是一个即将优秀的程序探索者应该必备的

UML基本架构建模--图的通用建模技术(一)

 Modeling Different Views of a System 建模系统的不同视图 When you model a system from different views, you are in effect constructing your system simultaneously from multiple dimensions. By choosing the right set of views, you set up a process that forces y

UML建模快速入门04 基本结构建模 关系

2015/03/26 - 09:25 [声明]欢迎转载,但请保留文章原始出处:http://blog.csdn.net/yelangjueqi/article/details/45529235 在面向对象的系统建模中,有3中特别重要的关系:依赖(dependency),它表示类之间的使用关系(包括精化.跟踪和绑定关系):泛化(generalization),它把一般类连接到它的特殊类:关联(associatiota),表示对象之间的结构关系.其中的每一种关系都为组合对象提供了不同的方法. 1,入

UML类图与类的关系详解--转

http://www.uml.org.cn/oobject/201104212.asp 原文地址 UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(Dependency)和关联(Association).其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition).下面我们结合实例理解这些关系. 基本概念 类图(