zoukankan      html  css  js  c++  java
  • 步步为营UML建模系列一

    概述

    如果想搭一个狗窝,备好木料、钉子和一些基本工具(如锤子、锯和卷尺)之后,就可以开始工作了。从制定一点初步计划到完成一个满足适当功能的狗窝,可能不用别人帮助,在几个小时内就能够实现。只要狗窝够大且不太漏水,狗就可以安居。如果未能达到希望的效果,返工总是可以的,无非是让狗受点委屈。 
    如果想为家庭建造一所房子,备好木料、钉子和一些基本工具之后,也能开始工作,但这将需要较长的时间,并且家庭对于房子的需求肯定比狗对于狗窝的需求要多。在这种情况下,除非曾经多次建造过房子,否则就需要事先制定出一些详细的计划,再开始动工,才能够成功。至少应该绘制一些表明房子是什么样子的简图。如果想建造一所能满足家庭的需要并符合当地建筑规范的合格房屋,就需要画一些建筑图,以便能想清楚房间的使用目的以及照明、取暖和水管装置的实际细节问题。做出这些计划后,就能对这项工作所需的时间和物料做出合理的估计。尽管自己也可能建造出这样的房屋,但若有其他人协作,并将工程中的许多关键部分转包出去或购买预制的材料,效率就会高得多。只要按计划行事,不超出时间和财务的预算,家庭多半会对这新房感到满意。如果不制定计划,新房就不会完全令人满意。因此,最好在早期就制定计划,并谨慎地处理好所发生的变化。 
    如果你要建造一座高层办公大厦,若还是先备好木料、钉子和一些基本工具就开始工作,那将是非常愚蠢的。因为你所使用的资金可能是别人的,他们会对建筑物的规模、形状和风格做出要求。同时,他们经常会改变想法,甚至是在工程已经开工之后。由于失败的代价太高了,因此必须要做详尽的计划。负责建筑物设计和施工的是一个庞大的组织机构,你只是其中的一部分。这个组织将需要各种各样的设计图和模型,以供各方相互沟通。只要得到了合适的人员和工具,并对把建筑概念转换为实际建筑的过程进行积极的管理,将会建成这座满足使用要求的大厦。如果想继续从事建筑工作,那么一定要在使用要求和实际的建筑技术之间做好平衡,并且处理好建筑团队成员们的休息问题,既不能把他们置于风险之中,也不能驱使他们过分辛苦地工作以至于精疲力尽。 
    那么,模型是什么?简单地说:模型是对现实的简化。 
    模型提供了系统的蓝图。模型既可以包括详细的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个系统都可以从不同的方面用不同的模型来描述,因而每个模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织。它也可以是行为性的,强调系统的动态方面。 
    为什么要建模?一个基本理由是:建模是为了能够更好地理解正在开发的系统。 
    通过建模,要达到4个目的: 
    (1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。 
    (2)模型能够规约系统的结构或行为。 
    (3)模型给出了指导构造系统的模板。 
    (4)模型对做出的决策进行文档化。 

    建模并不只是针对大的系统。甚至像狗窝那样的软件也能从一些建模中受益。然而,可以明确地讲,系统越大、越复杂,建模的重要性就越大,一个很简单的原因是: 
    因为不能完整地理解一个复杂的系统,所以要对它建模。 
       每个项目都能从一些建模中受益。即使在一次性的软件开发中——由于可视化编程语言的支持,可以轻而易举地扔掉不适合的软件。建模也能帮助开发组更好地对系统计划进行可视化,并帮助他们正确地进行构造,使开发工作进展得更快。如果根本不建模,项目越复杂,就越有可能失败或者构造出错误的东西。所有实用系统都有一个自然趋势:随着时间的推移变得越来越复杂。虽然今天可能认为不需要建模,但随着系统的演化,终将会对这个决定感到后悔,但那时为时已晚。

    UML的历史

    1997年,OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。 
    2003年,UML已经获得了业界的认同。在所见过的专业人员的简历中,75%都声称具备UML的知识。然而,在同绝大多数求职人员面谈之后,可以明显地看出他们并不真正了解UML。通常地,他们将UML用作一个术语,或对UML一知半解。大家对UML缺乏理解的这种状况,促进我撰写这篇关于UML 1.4的快速入门文章。当阅读完本文时,您还不具备足够的知识可以在简历上声称自己掌握了UML,但是您已具有了进一步钻研该语言的良好起点。

    1

    UML的特点

    1、UML的主要特点包括:

    2、统一的标准

    3、面向对象。UML是支持面向对象软件开发的建模语言。

    4、可视化、表现能力强

    5、独立于过程,UML不依赖于特定的软件开发过程。

    6、概念明确,建模表示法简洁,图形结构清晰,容易掌握和使用。

    UML中的视图

    UML中的视图包括用例视图(Use Case View)、逻辑视图(Logical View)、实现视图(Implementation View)、进程视图(Process View)、部署视图(Deployment View)等,这5个视图被称作”4+1”视图.如下图所示:

    2

    逻辑视图。逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的"辅助功能模块";它们可能是逻辑层、功能模块等。

    开发视图。开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。

    处理视图。处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题。

    物理视图。物理视图关注"目标程序及其依赖的运行库和系统软件"最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。

    建模的四项基本原理

    第一,选择要创建什么模型,对如何动手解决问题和如何形成解决方案有着意义深远的影响。

    第二,可以在不同的精度级别上表示每一种模型。

    第三,最好的模型是与现实相联系的。

    第四,单个模型或视图是不充分的。对每个重要的系统最好用一小组几乎独立的模型从多个视角去逼近。

    UML中的事物

    UML中由4种事物:

    (1)结构事物

    (2)行为事物

    (3)分组事物

    (4)注释事物

    1.结构事物:描述概念元素或物理元素。结构事物总称为类目(classifier)。

    一、类。

    二、接口。

    三、协作:定义了一个交互,他是由一组共同工作以提供某种协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的总和。

    四、用例

    五、主动类:其对象至少拥有一个进程或者线程,因此他能控制活动。

    六、构件:设计系统设计的模块化部件,将实现隐藏一组外部接口之后。

    七、制品:是系统中物理的而且可代替的部件,它包括物理信息,如源代码文件、可执行程序和脚本。

    八、结点:运行时的物理元素,它表示一个计算机资源,通常至少由一些记忆能力和处理能力。

    上面这些元素是UML模型中可以包含的基本结构事物。它们也接受变体,如参与者、信号、是用程序、进程、线程、应用、文档、文件、库、页、表。

    2.行为事物

    3.分组事物:

    包:不像构件,纯粹是概念上的。

    UML中的关系

    在UML中有4种关系:

    (1)依赖

    (2)关联

    (3)泛化

    (4)实现

    第一,依赖(dependency)是两个模型元素间的语义关系,其中一个元素(独立元素)发生变化会影响另一个元素(依赖元素)的语义。在图形上,把依赖画成一条可能有方向的虚线,偶尔在其上还带有一个标记。

    3

    第二,关联(association)是类之间的结构关系,它描述一组链,链是对象(类的实现)之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。在图形上,把关联画成一条实线,它可能有方向,偶尔在其上还带有一个标记,而且它还经常含有诸如多重性和端名这样的修饰。

    4

    第三,泛化(generalization)是一种特殊/一般关系,在其中特殊元素(子元素)基于一般元素(父元素)而建立。用这种方法,子元素共享了父元素的结构和行为。在图形上,把泛化关系画成一条带有空心箭头的实线,该实线指向父元素。

    5

    第四,实现(realization)是类目之间的语义关系,其中的一个类目指定了由另一个类目保证执行的合约。在两种地方会遇到实现关系:一种是接口和实现它们的类或构件之间;另一种是在用况和实现它们的协作之间。在图形中,把实现关系画成一条带有空心箭头的虚线,它是泛化和依赖关系两种图形的结合。

    6

    UML中的公共机制

    我们再来看一下UML用户指南中UML公共机制介绍。在UML中有种贯穿整个语言且一致应用的公共机制,这4种机制是:

    1.详述 
    UML不仅仅是一种图形语言。在它的图形表示法的每部分背后都有一个详述,这个详述提供了对构造块的语法和语义的文字描述。

    2.修饰

    3.通用划分

    ① 类和对象划分

    类是一种抽象,对象是这种抽象的具体表现,在图形上,UML用与类同样的符号表示对象,并且在对象名的下面画一道线。 
    前者表示一个匿名的ExamFlag对象,后者则是Elyse,明确表示是ExamFlag对象。

    ② 接口和实现的分离

    ③ 类型和角色的分离

    4.扩展机制

    ① 衍型(stereotype)

    衍型扩展了UML词汇,可以用来创造新的构造块。可以把衍型看做元类型(一种定义其他类型的类型),因为每一个衍型将创建一个相当于UML元模型中新类的等价物。

    ② 标记值(taggedvalue)

    标记值扩展了UML衍型的特性,可以用来创建衍型的详述的新信息。

    ③ 约束

    扩展了UML构造块的语义,可以用来增加新的规则或修改现有的规则。

  • 相关阅读:
    LOJ 6089 小Y的背包计数问题 —— 前缀和优化DP
    洛谷 P1969 积木大赛 —— 水题
    洛谷 P1965 转圈游戏 —— 快速幂
    洛谷 P1970 花匠 —— DP
    洛谷 P1966 火柴排队 —— 思路
    51Nod 1450 闯关游戏 —— 期望DP
    洛谷 P2312 & bzoj 3751 解方程 —— 取模
    洛谷 P1351 联合权值 —— 树形DP
    NOIP2007 树网的核
    平面最近点对(加强版)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2302669.html
Copyright © 2011-2022 走看看