建模语言 UML 在软件开发中的应用
摘要:UML( Unified Modeling Language)是建立系统模型和分析业务处理流程强有力的工具,它能够帮助软件开发人员从不同角度描述系统,使开发人员弄清楚“做什么,谁去做,何时做,以什么顺序做”。本文简要介绍了UML的定义以及用例图、类图、顺序图和合作图等基本概念,探讨了基于UML的系统在软件开发中的应用方法。意在说明UML的若干视图具有从多角度描述系统的优点,分析了UML建模的基本思想和过程。
关键字:UML,软件开发,面向对象
   Abstract: UML is a stronger tools for creating system model and analyzing operation manager,it can help developer to describe system from different point of view and make clear “what,who,when,how”.In this text, it introduce the UML definition,case view,class view,sequence view and cooperation view,discuss the application method of basic UML system in software developing.It wish to show the excellence of UML,and analyzethe basic idea and process of UML in modeling.
   Keywords: UML,Software Develop,OOP
引言
UML是一种编制系统蓝图的标准化语言,可以实现大型复杂系统各种成分描述的可视化说明并构造系统模型,以及建立各种所需的文档,它是一种定义良好、易于表达、功能强大且普遍适用的建模语言。UML的发展对软件工程的发展做出了杰出的贡献。
1.       标准建模语言 UML
面向对象的分析与设计(OOA&D)方法的发展在80年代末至90年代中出现了一个高潮
UML正是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。UML代表了面向对象方法的软件开发技术的发展方向,具有巨大的市场前景,也具有重大的经济价值和国防价值。
2.   UML 语言的特征
UML语言不是一种可视化的程序设计语言,而是一种可视化的建模语言,是一种建模语言的规格说明,是面向对象分析与设计的一种表示,不是过程,也不是方法,但允许任何一种过程和方法使用它。
3.   UML 语言定义
UML语言的定义有两个主要组成部分:语义和表示法。UML的语义用自然语言描述,表示法定义了UML的可视化标准表示符号,这决定了UML是一种可视化的建模语言。这些图形符号和文字用于建立应用级的模型,在语义上,模型是元模型的实例。此外UML的定义还给出了语法结构的精确规则。
4.   UML 对系统的组织
UML 是一种可视化的建模语言,用模型来描述系统的结构或静态特征,以及行为或动态特征。从不同的视角为系统的构架建模,形成系统的不同视图( View )、用例视图 (Case view) ,强调从用户的角度看到的或需要的系统功能,是被称为参与者的外部用户所能观察到的系统功能的模型图。使用 UML 时,要从不同的角度观察系统, UML 定义了 9 种图来表示系统模型。
表 1. UML 中的五种视图
设计视图
过程视图
实现视图
部署视图
用况视图
静态方面
类、对象图
类、对象图
构件图
部署图
用况图
动态方面
交互、状态、活动图
同左(注重进程、线程)
交互、状态、活动图
交互、状态、活动图
交互、状态、活动图
用况视图由用况图组成,描述可被最终用户、分析人员和测试者看到的系统行为;设计视图包含类图、对象图、交互图、状态图和活动图,主要反映系统的功能需求;进程视图包含类图、对象图、交互图、状态图和活动图,主要描述形成系统并发与同步机制的线程和进程;实现视图包含构件图、交互图、状态图和活动图,反映用于装配与发布物理系统的构件和文件,主要针对系统发布的配置管理,可以用各种方法装配它们。部署视图包含部署图、交互图、状态图和活动图,主要描述对组成物理系统的部件的分布、交付和安装。根据实际需要,可以组合使用这些视图。
5.   UML 的概念模型
为了理解 UML ,需要掌握 UML 的概念模型,这要求学习三个要素: UML 的基本构造块、支配这些构造块如何放在一起的规则和一些运用于整个 UML 的机制,下面逐一予以介绍。
5.1     基本构造块
UML中有三种基本构造块,分别是事物、关系和图。 事物分结构事物(包括类、接口、协作、用况、主动类、构件和节点)、行为事物(包括交互和状态机)、分组事物(包)和注释事物(注解)。
下面对UML中的图的要点进行阐述。
类图:类图展示了一组类、接口和协作及它们间的关系,在建模中所建立的最常见的图就是类图。用类图说明系统的静态设计视图,类图要能给出类的职责、属性和操作。系统可有多个类图,单个类图仅表达了系统的一个方面。
对象图:对象图展示了一组对象及它们间的关系。用对象图说明类图中所反应的事物实例的数据结构和静态快照。对象图表达了系统的静态设计视图或静态过程视图,除了现实和原型的方面的因素外,它与类图作用是相同的。
用况图:用况图展现了一组用况、参与者以及它们间的关系。可以用用况图描述系统的静态使用情况。在对系统行为组织和建模方面,用况图的是相当重要的。
交互图:交互图展现了按一定的目的进行的一种交互,它由在一个上下文中的一组对象及它们间交互的信息组成。交互图也可用于描述一个用况的行为。顺序图和协作图都是交互图,顺序图和协作图可以相互转换。
顺序图:展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。用顺序图说明系统的动态视图。
协作图:展现了一组对象,这组对象间的连接以及这组对象收发的消息。它强调收发消息的对象的结构组织,按组织结构对控制流建模。
状态图:展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。一个状态图描述了一个状态机,用状态图说明系统的动态视图。
活动图:活动图是一种特殊的状态图,描述需要做的活动、执行这些活动的顺序(多为并行的)以及工作流(完成工作所需要的步骤)。它对于系统的功能建模特别重要,强调对象间的控制流程。
构件图:构件图展现了一组构件之间的组织和依赖,用于对原代码、可执行的发布、物理数据库和可调整的系统建模。
部署图:部署图展现了对运行时处理节点以及其中构件的配署。它描述系统硬件的物理拓扑结构(包括网络布局和构件在网络上的位置),以及在此结构上执行的软件(即运行时软构件在节点中的分布情况)。用部署图说明系统结构的静态部署视图,即说明分布、交付和安装的物理系统。
5.2     运用构造块的规则
UML用于描述事物的语义规则分别是:为事物、关系和图命名;给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;事物如何正确、一致地相互联系,即完整性;运行或模拟动态模型的含义是什么,即执行。另外,UML还允许在一定的阶段隐藏模型的某些元素、遗漏某些元素以及不保证模型的完整性,但模型逐步地要达到完整和一致。
5.3     机制
有四种在整个语言中一致应用的机制,使得该语言变得较为简单。这四种机制是详细说明、修饰、通用划分和扩展机制。
UML不只是一种图形语言。实际上,在它的图形表示法的每部分背后都有一个详细说明,提供了对构造块的语法和语义的文字叙述。UML表示法中的每一个元素都有一个基本符号,这些图形符号对元素的最重要的方面提供了可视化表示,对元素的描述还包含其他细节。例如,一个类是否是抽象类,或它的属性和操作是否可见,要把这样的修饰细节加到基本符号上。  
6.   UML 的应用
UML是一种建模语言,不是一种方法,它独立于过程。利用它建模时,可遵循任何类型的建模过程。该建模语言的作者们给出了一种推荐性的建模过程指导,即RUP。本部分阐述RUP如何支持UML的应用。
RUP是以用况为驱动、体系结构为中心、迭代和增量的过程。RUP包括四个阶段,每个阶段又分为若干次迭代,每次迭代都有一个核心工作流(包括5个活动),请参见下图。

         

迁 移
需求
分析
设计
实现
测试
初 始
细 化
构 造
用况驱动旨在为到最终产品为止的每个阶段都可以回溯到用户的真正需求。以体系结构为中心是指关注体系结构模式的开发,以引导后续系统,保证系统的平滑演进。每一次迭代包括迭代计划、迭代评价和一些具体活动。关于核心工作流中的五个活动:需求、分析、设计、实现和测试较好理解,这里不再赘述。下面对RUP的四个阶段要做的工作做一阐述。
6.1     初始阶段
本阶段确定所设立的项目是否可行,具体要做如下工作:
对需求有一个大概的了解,确定系统中的大多数角色和用况,但此时的用况是简要的。对给出的系统体系结构的概貌,细化到主要子系统即可。识别影响项目可行性的风险。考虑时间、经费、技术、项目规模和效益等因素。关注业务情况,制订出开发计划。
6.2     细化阶段
识别出剩余的大多数用况。对当前迭代的每个用况进行细化,分析用况的处理流程、状态细节以及可能发生的状态改变。细化流程时,可以使用程序框图和合作图,还可以使用活动图、类图分析用况。
6.3     构造阶段
识别出剩余的用况。每一次迭代开发都针对用况进行分析、设计、编码(如类声明、属性声明、范围声明、函数原型声明和继承的声明等)、测试和集成过程,所得到产品满足项目需求的一个子集。由于细化阶段的软件设计已经完成,这样各项目组可以并发开发。
在代码完成后,要保证其符合标准和设计规则,并要进行质量检查。对于新出现的变化,要通过逆向工具把代码转换为模型,对模型进行修改,再重新产生代码,以保证软件与模型同步。
此阶段要建立类图、交互图和配置图;如一个类具有复杂的生命周期,可绘制状态图;如算法特别复杂,可绘制活动图。
6.4     移交阶段
这一阶段完成最后的软件产品和最后的验收测试,并完成用户文档编制以及用户培训等工作。
7.   总结
建模工具是帮助设计者实现任何复杂的工程项目的有力工具,在软件工程中,它能够把模型与实际应用紧密地联系起来。通过模型与代码之间的映射,可以直接为不同的程序开发环境生成系统结构的框架,通过建立模型和代码间的映射,可以确保代码改进时模型也随之更新了,而且通过模型与代码间的自动连接,建模工具可以确保良好的设计实施。
References (参考文献
[1] 张龙详, UML 与系统分析设计 [M] ,人民邮电出版社, 2001 , p2-10
[2] 史济民、顾春华等,软件工程 - 原理、方法与应用 [M] ,高等教育出版社, 2002 , p143-148
   [3] 周之英,现代软件工程 [M] ,科学出版社, 1999

建模语言UML在软件开发中的应用相关推荐

  1. 对软件开发中uml建模的理解和图形整理(一)

    由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的 ...

  2. uml图中的各种箭头_一次搞懂建模语言UML

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到 ...

  3. 一次搞懂建模语言UML

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到 ...

  4. 统一建模语言UML整理之开篇

    引言: 这段时间将致力于写UML方面的博客,由于个人能力的有限,如果博客中出现错误的地方还请广大博友批评指正.为了更好地了解一个过程或者事物,人们通常根据所研究对象的某些特征(形状.结构.或行为等)建 ...

  5. 统一建模语言UML轻松入门(3)――静态建模:类和对象

    统一建模语言UML轻松入门(3)――静态建模:类和对象 --------------------------------------------------------------------- 宋宝 ...

  6. uml 时序图_面向对象设计与统一建模语言UML

    面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...

  7. 统一建模语言UML轻松入门(1)――基本概念

    统一建模语言UML轻松入门(1)――基本概念 --------------------------------------------------------------------- 宋宝华 ema ...

  8. [摘]UML学习二:标准建模语言UML的静态建模机制

    任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外. UML的静态建模机制包括 用例图(Use case diagram).类图(Class diagram).对象图(Object dia ...

  9. 软件开发中会使用到的图

    文章目录 软件开发中会用到的图 一.背景 二.图为了解决什么问题 三.不同流程中适合运用的图 四.实际的运用 五.结语 软件工程中的各种图 软件工程用的15种图 数据关系流图怎么画?这款软件教你轻松绘 ...

最新文章

  1. 设置select下拉框不可修改的→“四”←种方法
  2. 【js】v-for 的一些用法 :class {{index}}
  3. 体验.net2.0的优雅(4):Provider、策略、控制反转和依赖注入
  4. html/jquery 常用的输入与获取参数
  5. Python-各种结构解析以及生成器(列表解析,字典解析,集合解析,元组构成的生成器)
  6. 工厂模式IDAL具体解释
  7. SAP UI5 setProperty 的执行逻辑单步调式和分析
  8. oracle 查看内存参数配置,Oracle内存参数配置及版本问题
  9. 崇天老师python123测验6_嵩天老师python123测验1: Python基本语法元素 (第1周)
  10. 文件不能自动求和_Excel求和公式函数的使用方法教程
  11. python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别
  12. python练手经典100例-python零基础练手项目100+
  13. Python实现 ---【简易】12306爬虫
  14. SIM800系列模块GSM/GPRS建立TCP连接到远端服务器过程——新浪博客迁移
  15. 最新图解 FileZilla Server + FlashFXP 快速傻瓜式搭建FTP服务 1
  16. 计算机id换系统会变吗,小雷问答丨手机恢复出厂设置后会变成最原始的系统吗?...
  17. excel在线_图片转Excel表格在线工具,分享几款不错的工具
  18. win10电脑右键视频或者图片文件卡死
  19. 腾讯地图位置服务器,腾讯地图推出地形图服务
  20. 摩尔庄园不同服务器账号互通吗,《摩尔庄园手游》数据互通情况说明 游戏服务器数据互通吗...

热门文章

  1. 喜马拉雅FM抓包之旅
  2. 2380318-57-8,Thalidomide-O-PEG4-Azide通过点击化学与炔烃或DBCO、BCN连接的分子反应的PROTAC连接物
  3. Oracle 实用技巧之不知道密码情况下 dblink 的迁移
  4. 各种友(e)善(xin)数论总集(未完待续),从入门到绝望
  5. 【C++】阶段性学习总结(一)
  6. Appium 连接夜神模拟器并启动
  7. pandas中的窗口对象(窗口函数)
  8. 网友自制 MIUI 13 海报被疯传
  9. Arduino (一)——面包板与固定导线长度
  10. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes 题解 C/C++