UML建模在软件开发模型通俗易懂中的作用及UML模型图多少种?

关注BeTester,学习更多知识让碎片成体系,让测试更专业1、UML概述1.1 为什么需要建模建模是为了理解事物而对事物作出的一种抽象,是对事物的一种通用、明确的书面描述。假如让你建造一栋属于自己的房子,你第一件思考的事情是什么?是思考去哪里买什么材料吗?非也!你一般会先了解建筑的大小、形状,进而做出相应的规划与图纸,甚至模型。如果在规划过程中有更好的想法,还可以不断对图纸和模型进行调整,直至满意后才开始动工。1.2 为什么需要语言日常生活中,我们都用普通话进行交流,看起来稀疏平常,但是如果存在地域差异的话(如胡建人),那就很容易引起误会或笑话。在各类编程语言的世界里,大家可以通过编程语言(如Python、Java)所特有的语法进行交流,Linux之父Linus曾说“Talk is cheap. Show me the code.”,代码是程序员最好的沟通工具。但是,身为资深Python程序员的你确定能看得懂神级Java程序员写的代码吗?这时候再Show the code就变得毫无意义了。1.3 UML由来面向过程把世界看作是由一个个相互关联的小系统组成,每个小系统都有着明确的开始和明确的结束,开始和结束之间有着严谨的因果关系。常见的面向过程编程语言有C、Fortran、VBScript等。HTML、Markdown、CSS等“语言”在大多数程序员眼中并不属于编程语言,因为其仅仅作为对文本的扩展,并没有严谨的语法和逻辑处理能力。面向对象是把世界看作是一个个相互独立的对象,相互之间并无因果关系,它们平时是“老死不相往来”。只有在某种外部力量的驱动下,对象之间才会依据某种规律相互传递信息。常见的面向对象编程语言有Java、Python、PHP、JavaScript等。面向对象的兴起提供了一种新的思维模式,一种关于计算机与信息结构的新思维。由于当时面向对象还处于比较新颖的阶段,分析方法百花齐放。面向对象分析(OOA)是建立于以前的信息建模技术基础之上从问题中发现类和对象的概念来考察需求的分析方法。面向对象设计(OOD)把焦点从问题转移到了了解空间,包含对设计系统的逻辑与物理过程的描述,以及静态和动态模型的设计。OOA与OOD衍生出许多不同流派的方法论,这样非常不利于软件工程师的交流,阻碍了计算机的快速发展。为了统一各种建模方法,UML被批准成为标准建模语言。Talk is cheap. Show the UML.1.4 UML定义UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。UML的目标是尽可能简单的同时能够对实际需要建立的系统的各个方面建模。UML有足够的表达能力以处理现代系统的所有概念,譬如并发和分布式,以及软件工程中使用的技巧,如封装和组件。2、UML元素2.1 UML事物2.1.1 类类是指具有相同属性、方法、关系和语义的对象的集合。类在UML中,第一个框是类的名称,第二个框是属性,第三个框是方法名。2.1.2 接口接口是指类或组件所提供的服务,描述了类或组件对外可见的动作。接口在UML中,第一个框是类的名称,第二个框是方法名。2.1.3 组件组件描述软件组件与组件之间的关系,组件反映了代码的物理模块,显示了代码的结构。一个组件应当是一个独立的业务模块,有着完备的功能,可独立部署,一个组件可以看成是一个完备的服务。动态链接库(DLL)、子系统(定位子系统、前端)都可以被认为是组件。2.1.4 节点节点被定义为在运行时存在的物理元素。2.1.5 状态状态由一系列对象的状态组成,它是有用的,一个对象在其生命周期的状态是很重要的。2.1.6 包封装是唯一一个分组事物可收集结构和行为的东西,简单来说,包就像一个“文件夹”,把文件“代码”组织起来。2.2 UML关系UML的关系以类关系为主,本章节主要介绍的关系主要是类相关的。在UML类图中,描述类的内部结构和类与类之间的关系有: 泛化、实现、关联、聚合、组合、依赖。关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。2.2.1 泛化泛化表示 is-a 的关系,是继承的关系,子类继承父类,子接口继承父接口。Tester is a Person 表示 Tester 继承自 Person,Person是父类,Tester是子类。2.2.2 实现一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。2.2.3 依赖依赖是指一个类使用(use)另一个引用B(变量或类或函数等)作为参数,这种关系具有偶然性、临时性。但B的变化会影响到A,比如Tester实例要写测试报告,需要使用电脑,此时Tester实例与电脑的关系就是依赖。2.2.4 关联关联是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联的关系既可以是单向也可以是双向。Tester实例一般都有自己的测试账号Account,而Account都会记录Tester实例的信息。关联也包括聚合和组合关系。2.2.5 聚合聚合表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。在类图使用空心的菱形表示,菱形从局部指向整体。譬如测试人员都有工具来协助提升测试效率。2.2.6 组合表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期,是一种更强的聚合关系。部分不能脱离整体存在。在类图使用实心的菱形表示,菱形从局部指向整体。譬如人类都是由细胞组成。3、UML图3.1 类图类图Class Diagram通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的,它显示出什么可以产生影响但不会告诉你什么时候产生影响。类图显示集合的类,接口,关联,协作和约束,它也被称为作为结构图。3.2 对象图对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。对象图显示某时刻对象和对象之间的关系。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。3.3 用例图用例图描述了作为一个外部的观察者的视角对系统的印象,强调这个系统是什么而不是这个系统怎么工作。用例图与情节紧紧相关的,情节scenario是指当某个人与系统进行互动时发生的情况。3.4 顺序图顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。3.5 协作图协作图也是互动的图表。他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色。在序列图中,对象的角色放在上面而消息则是连接线。3.6 活动图活动图是一个很特别的流程图。活动图和状态图之间是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程。3.7 状态图对象拥有行为和状态。对象的状态是由对象当前的行动和条件决定的。状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移。3.8 组件图组件图又称为构件图,描述在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。组件图给提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。3.9 部署图部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。部署图通常用来帮助理解分布式系统,一个系统模型只有一个部署图,用于可视化的软件组件部署的系统中的物理组件的拓扑结构。4、小结UML是软件领域的通用语言,掌握UML从事软件行业人员的必备技能。掌握UML,走到软件哪里都不怕!—— 更多文章 ——软件工程专题:软件测试流程软件工程专题:看板软件工程专题:Scrum框架软件工程专题:极限编程软件工程专题:敏捷开发流程软件工程专题:软件工程概述}

我要回帖

更多关于 软件开发模型通俗易懂 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信