【UML建模】(8) UML建模之组件图
组件图介绍组件图是用来描述组件与组件之间关系的一种UML图,组件图在宏观层面上显示了构成系统某一特定方面的实现结构。它是一种结构型图表。组件图明确了系统设计,降低了沟通成本,而且按照面向对象方法进行设计的系统和子系统保证了低耦合度,提高了可重用性。组件图可以用来显示编译、链接或执行时组件之间的依赖关系,以及组件的接口和调用关系。组件图的组成元素组件图由组件,接口,组件图中的关系,端口组成组件(Component)组件(Component)是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组接口。组件是一个封装好的物理实现单元,它具有自己的身份标示和定义明确的接口。由于它对接口的实现过程与外部元素独立,所以组件具有可替换性。一般来说,组件就是一个实际的文件或者多个文件组成的可执行程序。组件分为如下几种:1.源代码组件:一个源代码文件或者与一个包对应的若干个源代码文件。2.二进制组件:一个目标码文件,一个静态的或者动态的库文件。3.可执行组件:在一台处理器上可运行的一个可执行的程序单位,即所谓可执行程序。接口对于一个组件而言,它有两类接口,提供接口与需求接口。1.提供接口:又被称为导出接口或供给接口,是组件为其他组件提供服务的操作的集合。2.需求接口:又被称为引入接口,是组件向其他组件请求相应服务时要遵循的接口。商品组件提供商品相关的接口,订单组件需要调用商品组件提供的接口。端口(Port)端口(Port) 是一个被封装的组件的对外窗口,在封装的组件中,所有出入组件的交互都要通过端口。它是被封装的组件与外界的交互点,遵循指定接口的组件通过它来收发消息。组件间的关系组件间的关系有两种:1.依赖关系依赖关系分为两种,一种是组件与需求接口之间建立依赖关系;另一种是组件与组件之间建立依赖关系,说明在运行过程中A某些行为上依靠组件B的支持2.泛化关系组件与提供接口之间建立实现关系组件图的建模技术1.对源代码结构建模识别出同一功能点的源代码文件集合,并建模为组件如果系统规模较大,使用包对组件进行分组使用接口和依赖关系来表示这些源文件之间的关系检查组件图的合理性,并识别源代码文件的优先级以便进行开发工作2.对可执行程序结构建模识别出相关的运行组件集合考虑集合中每个组件的类型如果系统规模较大,可以使用包对组件进行分组。这里包的使用可以对应于相应文件的文件存储结构。分析组件之间的关系,使用接口和依赖关系建模这些关系。考量建模结果是否实现了组件的各个特性,对建模的结果进行细化。综合例子下图展示了一个购物网站的组件图。总结本文详细介绍了组件图,组件图是一种描述组件以及组件之间关系的结构型图表。首先介绍了组件中的各种组成元素,接着介绍组件的建模技术,最后提供了一个实际案例。希望对读者朋友们有所帮助。参考UML之组件图
【UML建模】(7) UML建模之部署图
部署图的介绍部署图是运行时进行处理的节点以及在节点上存在制品的配置的图。它阐述了在实际应用中软件和它的运行环境的关系,并且描述了软件部署在硬件上的具体方法。基本元素部署图的基本元素包含节点,节点与节点之间的关联关系。节点节点是运行时的物理对象,代表一个计算资源。它主要分为两种处理器:是一些具有计算能力的节点,并且一般可以运行软件,其表示如下:设备:是一些不具备计算能力的节点,它们可能作为一些输入输出设备或者本身是处理器的外部连接设备。其表示如下:组件:组件就是在节点中具体运行的软件,在组件图中会详细介绍。部署图中的关系部署图的节点之间使用关联关系来表示节点之间的通信路径,称为连接。一般对关联关系不进行命名,而是使用构造型来区分不同类型的通信路径或通信的实现方式,例如<<Ethernet>>、<<TCP/IP>>和<<HTTP>>等能表明通信协议或网络类型的内容。建模步骤找到需要部署的各个节点,如网络硬件设备、服务器设备等。确定各个节点之间的链接及通信方式从性能、可扩展性、可维护性、可执行角度确定各类节点的数目及部署方式绘制部署图综合例子参考UML之时序图
【UML建模】(6) UML建模之状态机图
状态机图介绍状态机图展示了一个对象如何根据当前状态对不同事件做出反应的动态行为。状态机图是一种行为图。状态机状态机的介绍状态机时一种行为,它说明对象在其生命周期中的状态变化,这些状态变化由响应事件或者监视条件触发。一般情况下,一个状态机依附于一个类,用来描述这个类的实例的状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可以依附于用例,操作,协作等元素上,描述他们的执行过程。状态机从初始状态开始,响应事件并执行某些动作,从而引起状态的转换;在新状态下又继续响应事件并执行动作,如此循环进行到对象的终结状态。状态机的组成状态机主要由状态、转换、事件、动作和活动5部分组成:状态表示对象的生命周期中的一种条件或情况。转换表示两种状态间的一种关系事件表示在某一时间与空间下所发生的有意义的事情。动作表示一个可执行的原子操作,是UML能够表达的最小计算单元活动表示状态机中的非原子执行,一般由一系列动作组成。状态机图的组成状态机图由简单状态、转换、伪状态三部分组成。简单状态简单状态:状态图的重要组成部分,它描述了一个对象稳定在某一个持续过程或所处状态,与动态行为的执行所产生的结果。当对象满足某一状态的条件时,该状态被称为激活的。简单状态就是没有嵌套的状态。初态和终态是两个特殊的状态。分别表示状态机的入口状态和出口状态。对于一个不含嵌套结构的状态机,只能有一个初态,可以有一个或多个终态甚至没有终态。转换转换是两种状态间的一种关系,它指明当特定事件发生或特定条件满足时,处于某状态(源状态)的对象将执行某一动作或活动并进入另一状态(目标状态)。转换表示从源状态指向目标状态的实线箭头,并附有转换的标签。转换的标签格式如下:⌊转换名称:⌋opt 事件名称opt ⌊(参数列表)⌋opt ⌊[监护条件]⌋opt ⌊/效果列表⌋opt转换-转换名转换名称是转换的标识符。在实际使用中,为了防止转换名称与转换的触发器或监护条件混淆,一般不必为转换命名。转换-事件事件是在某一时间与空间下所发生的有意义的事情,是系统执行中发生的值得建模的事物。事件一般被状态或转换所发送和接收。在转换中被接收的事件也被称为该转换的触发器或触发事件。事件包含一个参数列表(可能为空),用于从事件的产生者向其接收者传递信息。能够在触发器中接收的事件有以下四种:1.调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结果是事件的接收者触发一个转换并执行相应的操作。2.改变事件:改变事件的发生依赖于事件中某个表达式所表示的布尔条件。改变事件没有参数,要一直等到条件被满足才能发生。3.信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组对象的信号可能触发每个对象的不同转换。4.时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生该事件。转换-监护条件监护条件是一个转换被激发之前必须满足的一个条件。监护条件是一个布尔表达式,可以根据触发器事件的参数、属性和状态机所描述的对象的链接等写成。当转换接收到触发事件后,只有监护条件为真,转换才能被激活。转换-效果列表效果列表是一个过程表达式,在转换被激活时执行,表示转换附加的效果。效果列表包含多个动作,可以根据操作、属性、拥有的对象的链接、触发器事件的参数等写成。动作可以是一个赋值语句、算术运算、发送事件、调用对象的属性或操作、创建或销毁对象等。效果的表达语法与其实现的具体内容有关。伪状态伪状态指的是状态机中具有状态的形式,却具有特殊行为的顶点。当一个伪状态处于活动时,系统不会处理事件,而是瞬间自动转换到另一个状态,并且这种转换没有事件进行显示的触发。最常见的伪状态包括初态、选择、分叉与结合、历史状态等。状态机图的作用状态机图用于对系统的动态方面进行建模,适合描述一个对象在其生命周期中的各种状态及状态的转换。状态机图描述了状态转换时所需的触发事件和监护条件等因素,有利于开发人员捕捉程序中需要的事件。状态机图清楚地描述了状态之间的转换及其顺序,这样就可以方便地看出事件的执行顺序,状态机图的使用节省了大量的描述文字。清晰的事件顺序有利于开发人员在开发程序时避免出现事件错序的情况。状态机图通过判定可以更好地描述工作流在不同的条件下而出现的分支。画状态机图需要的注意事项避免把某个“程序动作”当作一种“状态”来处理,那么如何区分“动作”和“状态”?动作是不稳定的,没有条件触发,“动作”一旦执行完毕就结束了;而状态是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。状态划分时漏掉一些状态,导致跳转逻辑不完整。所以在设计状态机时,我们需要反复的查看设计的状态图或状态表。实战案例新生入学后,学校在三个月内按照国家招生规定对其进行复查。复查合格者予以注册,取得学籍。复查不合格者,学校区别情况予以处理,直至取消入学资格。
学生有如下情况之一者,应予休学:
(一)因伤病经学校指定医院诊断,须停课治疗、休养一学期1/3时间;
(二)一学期请假缺课超过该学期总学时的1/3;
(三)传染性肝炎、肺结核等传染性疾病;
(四)因某种特殊原因,学校认为必须休学。
学生休学至少一学期,一般以一年为限。学生复学后,休学之前已记入成绩档案的考核成绩继续有效,并作为学籍处理依据.
学生复学按下列规定办理:
(一)学生因伤病休学申请复学时,须持有二级甲等以上医院诊断书,证明身体健康,并经学校指定医院复查合格,方可复学;
(二)学生休学期满后应于学期的注册期内持有关证明,经教务处核准后编入原专业相应班级选课学习;
学生有下列情况之一者,应予退学:
(一)学生在读期间,3次出现在一学期中取得的课程学分不足10学分(不含重修和补考学分;毕业学期除外;第一次提出警告,第二次提出退学警告,由教务处公布名单,院系负责通知学生家长);
(二)休学、保留学籍期满,在规定期限内不办理复学手续; (三)休学累计满二年,经复查不合格;
(四)因伤病需要休学,经学校动员后仍不办理休学手续; (五)经学校指定医院确诊患有疾病,或意外伤残无法继续在校学习;
(六)未请假离校连续2周末参加学校规定的教学活动; (七) 超过学校规定期限未注册而又无正当事由; (八)本人要求退学。
学生在规定的学习年限(4年制3~6年,5年制4~7年)内修完本专业培养计划规定的全部教学环节,取得注册专业规定的毕业学分,准予毕业,发给毕业证书。画图步骤1.确定有哪些状态除了初态和终态以外,一共可以罗列出1. 入学;2. 休学;3. 复学;4. 退学 这四种状态。2.确定触发事件或监听条件上面标粗的部分都是触发条件。最终的状态机图。参考UML之状态机图
【UML建模】(5) UML建模之活动图
活动图的介绍活动图可以看成是面向对象版的流程图,它是一种行为型模型图,主要用于表达系统某个功能的流程。活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间的转移的控制流,并且它采用了一种着重逻辑过程的方式来叙述。主要元素活动图主要动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等元素。动作和活动一、动作代表一个原子操作,操作可能是任何合法的行为。动作可以是并且不限于:创建或删除对象、发送消息、调用接口、甚至数学运算以及返回表达式的求值结果。如下图所示就是各种类型的动作(Action):普通的原子操作(Atomic),调用接口(Call Behavior),调用操作(Call Operation),接受事件(Accept Event),接受时间事件(Accept Time Event),发送信号(Send Signal)输入变量(Write Variable)返回表达式的求值结果(Value Specification)创建对象(Create Object)删除对象(Destroy Object)其他(Other)二、活动节点活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图例上的表达方式和动作相同,其图标表示如下图所示:开始和终止活动图中的开始和终止是两个标记符号,分别标记了业务流程的起始位置和结束位置。活动图中有且仅有一个开始标记,一般至少有一个结束标记(死循环的情况下可能没有结束标记)。开始的图标结束的图标控制流控制流是活动图中用于标示控制路径的一种符号,它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到下一个动作或者活动节点。控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导者各个动作的连续执行。判断节点判断节点是活动图中进行逻辑判断,并创造分支的一种方法。它有一个进入控制流和至少两个导出控制流。判断节点具有多个导出流,对于每条导出流而言,应当在表示该控制流的箭头上附加控制条件。分叉(fork)和汇合(join)分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进行控制流和多个离开控制流。分叉节点的所有离开流程是并发关系,即分叉节点使执行过程进入多个动作并发的状态。汇合节点是将多个并发控制流收束回同一流程的节点标记,功能上与合并节点类似。结合节点的各个进入控制流间具有并发关系,它们在系统中同时运行。泳道泳道是将活动图中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。除了以上的对线性流程进行分区以外,使用泳道表示法还可以更清晰地表示并发。案例:在线填写请假条,三天以下,直接上级审核即可,三天以上需要总监同意和人事批准,以上情况都通过,即可请假。发送信号与接收信号发送信号一种操作,可以将消息或信号发送给另一个活动,或同一活动中的并发线程。消息的类型和内容可以通过操作的标题或其他注释中指定的信息看出。活动图的建模技术对业务流程建模选择一个将要描述的重要过程,过程中尽量涉及数量少但是关键的对象或参与者,将无关或关联很小的对象排除在外。在总体业务流程中提取关键的动作或活动节点,并且将他们与对象或者参与者相对应;若发现有些动作无法对应,则考虑动作是否在这个流程中起关键作用,或者是否遗漏了某些对象或参与者。规定初始状态:确定过程可能的结束位置,为活动图添加开始和结束节点。从业务流程的开始节点开始,把过程中发生的动作按事件顺序排列,依次把这些动作添加到活动图中。把局部的过于复杂的动作序列加以总结,绘制成一个活动节点;如果需要,把这个动作序列使用另外的活动图进行建模。找出连接这些动作和活动节点的控制流,并且准确找到过程中的分支、分叉、合并与结合节点。如果业务流程中有一些关键对象的值或状态需要加以描述,使用对象流添加这些对象在某些动作或活动节点前后的状态描述。对用例交互建模选择概念用例–即从系统对客户提供的各种服务中确定出一个关键业务,这个关键业务可能是在多个相同或者不同的情况下反复出现,或者是系统需要提供的一个关键服务或进行的关键操作。对于当前选择的用例,通过事件流进行顺序叙述,并找出所有的参与者主动动作,把这些动作整理成动作或或活动节点。把参与者和系统划分为两个泳道,如果有除了主参与者以外的其他参与者,也为它们分别划分泳道。把活动节点纵向按照事件发生顺序,横向按照参与角色和系统角色对应填入活动图中。综合例子总结本文详细介绍了UML活动图的信息。参考UML之活动图UML官网UML 活动图
【UML建模】(X) UML建模之Enterprise Architect 15的使用
EA的介绍Enterprise Architect (后面简称EA)是一款优秀的UML建模软件。它兼容UML2.0中的所有图表。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发与部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。主要优点1.可以继承丰富的外部工具,大大提升生产力2.创建模型和解决方案速度快3.统一业务和技术团队的工作主要用途Enterprise Architect 非常适合如下场景:战略建模需求开发和管理业务流程建模和分析软件开发系统工程和数据库工程企业架构测试和调试EA的下载这里使用的是EA 15 版本EA的使用EA界面的整体结构如下图所示。顶部为导航栏,最左边为窗口区,中间为绘图区,最右边为元素属性区。比较重要的几个栏目是:Browser 是项目的浏览区Toolbox 是工具栏,模型图所需要的构造块都在该区域TRIAL Edition 是绘图区Properties 是事物的属性区新建项目按下快捷键 Ctrl+N 即可创建一个新项目。或者如下选中EA的图表,点击 New Project 也可以创建一个新项目。新建包创建好项目之后就可以点击如下图标即可创建一个包。因为所有的模型图都要放在一个指定的包下。新建模型图右键选中包,点击Add Diagram 即可打开新建模型图的弹框。在创建模型图的弹框中,输入模型名称,在下方 UML Structural (结构型模型图)或者UML Behavioral (行为型模型图)关于各个模型图的介绍可以查看 【UML建模】(1) UML建模的初了解,概述,组成,作用 本文。这里选择一个你需要创建的模型图。本例中选中 Class 创建了一个类图。绘图模型图创建好之后,这时候的模型图还只是一个空的模型图。想要绘图的话必须请出 Toolbox (工具箱)。找出工具箱(ToolBox)找出工具箱的方式有三种:1.在顶部导航栏找到 Design—>Toolbox。2.按下 Ctrl+Shift+3 快捷键3.点击下方的箭头Toolbox 找到之后接下来就是绘图了。Toolbox (工具箱)中主要包含UML 中的构造块中的事物以及关系。属性说明这里我向绘图区中拖入了一个接口和一个类。选中接口或者类之后,在下方的Fetures 中即可给该接口添加属性或者操作。这里指定了方法的名称,参数类型,返回值类型以及作用域。各属性的意思在此就不在详述了。选中某个构造块之后即可看到该构造块所有的属性。类图代码的导出按下Crtl+Alt+K 快捷键或者 如下方操作即可导出生成类图对应的代码。默认的语言是java 语言,如果需要修改语言的话,则可以如下图设置还需要修改我们项目的源码类型,在包上右键选择properties>properties:参考UML官网
【UML建模】(4) UML建模之时序图
时序图的介绍时序图是按照时间顺序显示对象交互的图。它显示了参与交互的对象和所交互信息的先后顺序,用来表示用例图中的行为,用例图是一种交互图在UML中,时序图将交互关系表示为一张二维图。其中,纵向标示时间轴,时间沿竖线从上向下进行,按照时间依次列出各个对象所发出和接受的消息,横坐标标示了交互中的各个对象。基本元素时序图中包含如下几个元素: 对象,生命线,激活,消息,结构化控制对象时序图中的对象其实就是功能需求的各个参与者,在时序图中可以被激活的参与者都可以作为对象。UML中对象的名称默认放在生命线顶部的方框中。生命线生命线标示一个对象存在的生命周期,具体来说,在生命线所代表的时间内,对象一直都可以被访问,可以一直给对象发消息,两个对象之间通过消息连接起来。消息消息用于对象之间传递信息,对象之间互通信息就是通过消息,消息分为:同步消息(Synchronous Message):用于对象间同步调用异步消息(Aynchronous Message):用于对象间异步调用返回消息(Return Message):用于一个对象对另一个对象的响应自关联消息(Self-Message): 自关联消息用于对象内部自己调用如下图所示,展示了各种消息的示例。激活当一个对象发出消息或者接收到消息,则该对象就会被激活。结构化控制结构化控制主要用于表示代码中判断,循环,终止等情况,在时序图中的结构化控制有如下几种:Alternative fragment(denoted “alt”) 标示 if…then…else 表示一种多条件分支表示当 balance>0 时执行accept()方法,否则执行 reject()方法Option fragment (denoted “opt”) 标示Switch, 表示一种单条件分支当参数校验正确时则调用 保存数据的接口。3. Parallel fragment (denoted “par”) 标示同时发生,表示并发执行表示save(),notify()以及entrypoint()三个方法同时并发执行。Loop fragment(denoted “loop”) 标示for,表示循环的意思不限制次数的循环限制次数的循环该循环最少执行5次,最多执行10次,当保护条件 size<0 条件为假时循环终止执行。Break fragment(denoted “break”) 标示break, 表示退出循环综合例子下面以客人到餐厅就餐为例进行说明:客人到餐厅就餐,服务员提供菜单,客人点菜后把菜单交给服务员。服务员向客人确定菜单后,将菜单提交给大堂经理。大堂经理把菜单提交给大厨,大厨完成菜品后传递给大堂经理,大堂经理安排服务员传菜。有的客人可能需要酒水,有的客人不需要酒水。客人结束用餐后,服务员提供账单,客人结账。1.确定对象这里的对象有: 客人,服务员,大堂经理,后厨。2.确定交互消息就餐, 提供菜单,确定菜单,将菜单提交大堂经理等都是消息3.要考虑到一些结构化控制比如有的客人可能需要酒水,有的客人不需要酒水。4.画时序图参考UML之时序图UML官网
【UML建模】(3) UML建模之类图
类图的介绍类图是显示一组类、接口以及它们之间关系的图.类图包含的元素基本元素: 类(Class), 接口(interface)元素之间的关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。类(Class)类是一组拥有相同的属性、操作、方法、关系和行为的对象地描述符。在UML中,类表达成一个有三个分隔区的矩形。其中顶端显示类名,中间显示类的属性,尾端显示类的操作。参数列表:是一些按照顺序排列的属性定义了操作的输入。例如:oper(arg1:int, arg2:double=3.2)接口(interface)接口代表了一份契约,实现该接口的类元必须履行它,在UML中接口由一个带名称的小圆圈表示;也可以表示为带有<>构造型的类。泛化关系(Generalization)泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能,uml中使用带空心三角箭头的实线标示,由子类指向父类。关联关系(Association)使类可以感知到其他类的行为和属性,关联分为双向关联和单向关联,如下:企鹅类和气候类是关联关系,是属于同一层次的对象。聚合关系(Aggregation)聚合是关联关系的一种,聚合主要描述整体与部分直接的关系,聚合有分为基本聚合和组合聚合,1.基本聚合:对应基本聚合来说部分类的生命周期独立于 整体类 的生命周期,uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个未填充棱形标示:一个汽车有4个轮子组成,轮子的生命周期不依赖与车的,因为车轮可以独立于车独立存在。2. 组合聚合:组合聚合是聚合的一种情况,不同在于部分类的生命周期依赖整体类,uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个填充棱形标示:一个公司有至少一个部门组成,部门要依赖于公司的存在而存在,不会存在一个部门而它不属于某一个公司。关联和聚合的区别关联关系所涉及的两个对象是处于同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如:电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。组合关系:代表整体的对象负责部分对象的生命周期。公司不存在了,部门也没有意义了。再比如:人和五脏六腑,和四肢的关系实现关系(Realization)实现是接口和类的关系,指类实现接口中定义的方法。uml中用带空心三角箭头的虚线,箭头指向接口类依赖关系(Dependency)即一个类的实现需要其他类的协助,代码表现为方法参数,局部变量,静态方法,uml中使用一条箭头的虚线,从依赖方指向被依赖的类。关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖类图关系综合例子1、企鹅与气候是关联关系2、鸭与唐老鸭是继承关系3、大雁与飞翔是实现的关系4、雁群与大雁是聚合关系5、动物与氧气,水是依赖关系6、鸟与翅膀是组成关系类图多重性的说明多重性是用来说明两个类之间的数量关系,表示为一个整数范围n…m,整数n定义所链接的最少对象的数目,m为最多对象数目(但不确定最大数时,可以*号表示)。如何阅读类图类图的阅读还是遵循先整体,后部分的原则。先理清楚类和接口,掌握类图的整体结构看看类的内部结构以及类之间存在的关系结合多重性来理解类图的结构特点以及各个属性和方法的含义。如何进行类图建模呢?李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。1. 提取类&职责分析书籍类(Book):从需求描述中,可找到书名,类别,作者,出版社,书号;借阅记录类(BorrowRecord):借阅人(朋友),借阅时间,借阅的图书ID,归还时间图书类别类(BookCategory): 枚举类操作书籍接口(BookService):新增,修改,查询,统计(按照特定时限统计册数与金额)借阅记录操作接口(BorrowService): 主要职责就是添加记录(借出),修改记录(归还)以及打印借阅记录2. 限定与修改导航性:Book与BookService之间,BorrowRecord与BorrowService之间是依赖关系,而Book和BorrowRecord之间则是双向关联,也无需添加约束:Book对象创建后就不能被删除只能修改,因此在Book类边上加上用自由文本写的约束限定符:一本书只有一册,因此能够被借一次,因此对于一本书而言只能有一个有效的RecordId与其对应参考UML官网UML之类图
【UML建模】(2) UML建模之用例图
用例图介绍用例图主要用来描述软件的使用者是谁,软件提供哪些功能,它用来表示一个系统中用例与参与者及其关系的图,主要用于需求分析阶段用例图包含的元素1.基本元素: 参与者(Actor), 用例(Use Case)2.元素之间的关系:关联关系(Association), 包含关系(Include),扩展关系(Extend)以及泛化关系(Generalization)。参与者(Actor)参与者是独立于系统主体之外的类元,这个类元可能是人,可能是组织,可能是外部系统,参与者不属于系统的一部分,在系统边界之外。在uml中用使用小人符号表示。如何确认参与者?通过对参与者进行关注和分析,我们可以把重点放在如何与系统进行交互这一问题上,进一步确认系统的边界。另外,参与者也决定了系统需求的完整性。确定参与者可以从如下几个角度考虑:1.为系统提供输入的人或事物2.接收系统输出的人或事物3.需要接入的第三方系统或设备4.负责支持或维护系统中信息的人一个系统的参与者的数量没有限制。用例(Use Case)用例是系统的功能单元,在uml中用使用椭圆标示。关联关系(Association)关联关系主要用来描述参与者与用例之间的关系,在UML中用直线连接参考UML官网泛化关系(Generalization)泛化关系是将特化的用例和一般的用例连接起来,即子用例继承与父用例。 在uml中用例泛化用一个空心三角箭头从子用例指向父用例。强调的是复用关系。如下:登录是一个一般用例,用户名和密码登录 以及手机号登录是特殊用例。包含关系(Include)一个用例(基用例)可以包含其他用例具有的行为,强调整体和部分的关系,这uml中用一个虚线箭头附加上《include》的构造型,箭头从基用例指向包含用例。角色管理用例包含的用例有:新增角色,编辑角色,删除角色。扩展关系(Extend)在基础功能的基础上添加新的功能,是对基用例的补充。扩展与包含的箭头方向是相反的,这表明扩展取决于扩展用例而非基用例,扩展用例决定扩展的执行时机,基用例对此一无所知。举例说明如上图展示了一个庭审后台管理系统的用例图,庭审后台系统包括的功能有 庭审后台管理,庭审后台管理由角色信息管理,消息模板管理组成,而角色信息管理包括新增角色,编辑角色,删除角色。参考UML官网
【UML建模】(1) UML建模的初了解,概述,组成,作用
UML的介绍UML (Unified Modeling Language)是一种通用的可视化的建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。它不是一种程序设计语言。UML 是独立于过程的,它可以在软件生命周期的各个阶段运用,不过主要应用于软件开发的设计与分析阶段。模型什么是模型呢?模型就是对现实的简化。比如:我们在设计一款新汽车时首先需要设计该汽车的模型,只有模型设计好之后才会开始汽车的生产开发。建模的作用1.模型有助于按照实际情况或按照所需要的样式对系统进行可视化。2.支持独立于编程语言和开发过程的规范。3.模型给出了指导构造系统的模板。4.模型对做出的决策进行文档化。UML的组成UML由构造块,规则和公共机制这三部分组成。1.构造块:UML组成中构造块是对模型中最具有代表性的成分的抽象2.规则:UML有一套规则,这些规则描述了一个结构良好的模型看起来应该像什么3.公共机制: UML中有4种贯穿整个语言且一致应用的公共机制,因此使得UML变得较为简单。构造块构造块由事物,关系,模型图三个部分组成。事物:UML模型中最基本的组成元素,可以把事物理解成汉语中的单词和词语关系:关系是把事物紧密联系在一起,可以把关系理解成汉语中的语法模型图:模型图是事物和关系的可视化展示,可以把模型图理解成汉语中的文章。构造块之事物事物分为结构事物,行为事物,分组事物,注解事物四种。结构事物:指的是模型中的静态部分,用于呈现概念或者实体的表现元素。行为事物:指模型里随着时空不断变化的部分。分组事物:可以把分组事物看成一个"盒子",模型可以在其中被分解。注解事物:UML模型的解释部分下面就分别对这几种事物进行介绍结构事物结构事物下有类,用例,接口,协作,活动类,组件,节点1.类:类是指具有相同属性、方法、关系和语义的对象的集合;2.用例:定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标;3.接口:定义行为规范,描述了类或组件对外可见的动作;4.协作:合作完成某个特定任务的一组类及其关联的集合5.活动类:活动类的对象有一个或多个进程或线程。活动类和类很相象6/组件:组件是物理的、可替换的部分,包含接口的集合7.节点:系统在运行时存在的物理元素,代表一个可计算的资源行为事物行为事物分为交互,状态机两种交互:由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作;交互就是指时序图中的消息。状态机:状态机由一系列对象的状态组成。分组事物分组事物只有一个就是包包:结构事物、动作事物甚至分组事物都有可能放在一个包中构造块之四种基本关系在UML中的关系有四种基本关系,分别是1.泛化关系:就是继承关系,子类和父类的关系,比如鸟与动物的关系就是泛化关系,实线的三角箭头从子类指向父类。2.实现关系:实现关系是实现类与接口之间的关系,比如大雁实现了飞翔的功能。他是虚线的三角箭头从实现类指向接口。如下图所示:3.关联关系:一组对象之间连接的结构关系,如下图老师,学生与课程之间的关系。老师和学生之间是双向关联关系,老师有多个学生,学生也可能有多名老师。但是学生与某个课程间的关系是单向关联关系,一个学生可能要上多门课程,但是课程是个抽象的东西它不拥有学生。4.依赖关系:一个类的实现必须依赖于其他类的协助,比如人依赖空气。这四种关系的强弱顺序是:泛化=实现>关联>依赖构造块之模型图UML模型图图表共有十三种,本文将对其中比较常用的图表进行详细介绍。首先让我们来看看这些图表的介绍以及作用。UML建模的图表按照种类可以分为结构型图表和行为型图表。结构型图表:从不同的抽象和实现程度上描述了一个系统和系统构建的静态结构,并且描述他们是如何直接关联到一起的。该类型的图表包括:类图(Class Diagram),对象图(Object Diagram),包图(Package Diagram),组件图(Component Diagram),部署图(Deployment Diagram),复合结构图(Composite Structure)行为型图表:展示系统中的对象的动态行为,它描述了一个系统中的对象如何随时间变化而变化。该类型的图表包括:用例图(Use Case Diagram),活动图(Activity Diagrams),状态图(State Machine Diagram),时序图(Sequence Diagram),通信图(Communication Diagram)交互概览图(Interaction Overview Diagram):定时图(Timing Diagram):规则命名:为事物、关系和图起名。范围:给一个名称以特定含义的语境可见性:怎样让其他人使用或者看见名称完整性:事物如何正确、一致地相互联系执行:运行或模拟动态模型的含义是什么公共机制公共机制分为:规则说明,修饰,通用划分,扩展机制规则说明规格说明提供了对构造块的语法和语义的文字描述规格说明用来描述系统的细节UML的规格说明提供了一个语义底版,它包含了一个系统的各个模型的所有部分,并且各部分相互联系,并保持一致。总而言之,规格说明就是UML图的产品说明书修饰修饰:UML表示法中的每个元素都有一个基本符号,可以把各种修饰细节加到这个符号上。通用划分类/对象二分法(class/object dichotomy): 类是一个抽象,对象是这个抽象的一个具体表现形式,UML的每一个构造块几乎都存在像类/对象这样的二分法。例如:用例和用例实例(场景),构件和构件实例,节点和节点实例等。接口/实现二分法(interface/realization dichotomy)接口声明了一个契约,而实现则表示了对该契约的具体实施,它负责如实地实现接口的完整语义。几乎每一个UML的构造块都有像接口/实现这样的二分法。例如:用例和实现它们的协作,操作和实现他们的方法。如下图所示:扩展机制对UML图示符号的扩展。包含:构造型Stereotype-标注值Taggedvalue-约束Constraint。如下图所示:UML的应用范围如上图展示了UML在软件生命周期中的应用范围。在需求分析阶段可以通过用例图来描述系统的使用者,以及系统有哪些功能在分析与设计阶段经常需要使用到类图、包图、组件图几种静态视图,以及所有动态视图。静态视图用来描述系统的设计类,动态视图用来确定任一时刻某一对象或者实体需要执行的操作,或者应该处于的状态。在开发阶段根据UML图表来编写代码,在测试阶段根据UML图表来设计测试用例,使用活动图来辅助测试在部署阶段根据部署图来部署项目。参考UML官网
powerDesigner不能用该如何进行UML建模呢?国产CHINER建模工具解你燃眉之急
由于众所周知的原因,某些软件我们可能不能用。这时候就需要使用国产替代方案了。本文将主要介绍powerDesigner的国产替代软件CHINER。CHINER是一款支持多种数据库,独立于具体数据库之外的数据库关系模型设计工具,相比powerDesigner更加轻量。必备的知识数据库建模: 简单的说就是通过E-R图表的形式抽象表示现实中的信息。而E-R图就是实体关系图。以图书管理系统为例。读者可以表示为实体,而读者借阅图书的行为则是一种关系。安装与配置CHINER的安装非常简单。软件下载地址:https://gitee.com/robergroup/chiner/releases这里请根据你的操作系统选择不同的安装包。这里我的操作系统是Windows系统。所以,我选在了Windows安装版本。下载好安装包之后,一直点击下一步就可以顺利的安装好软件。软件的欢迎界面如下图所示:这里CHINER贴心的为我们提供了两个参考模板以及操作手册。想使用的小伙伴可以先看下参考模板和操作手册。新建项目创建项目只需要点击 新建 按钮,在弹框汇总输入项目名和保存位置即可。如下图创建了一个名为图书管理系统的项目。数据域与数据类型在介绍数据表之前,首先,需要了解下数据域和数据类型,由于CHINER支持多种数据库,并且可以生成实体代码,这就有了数据类型。CHINER内置了6种数据类型,以字串为例,他在不同的数据库中的数据类型略有不同。而数据域不仅指定了数据类型,还指定了数据的长度,默认字串的长度是255位。而像小数 还会指定小数位数。数据表管理创建好项目之后,接下来就是在项目中新建表了,选中数据表右键 新增数据表。创建一个表之后,CHINER会给新建的表指定一些默认字段。当然,我们也可以自行添加默认字段。点击设置按钮即可。点击新增即可增加列,下面就新增了两行分别是ID和NAME,说白了就是向Reader表增加了两个字段。选中字段代码列对字段进行批量大小写转换。添加索引的话只需要切换到索引的tab页,点击新增即可。这里我新建了三个表,分别是读者表,借阅表,书籍表。关系图管理关系图用于表示数据表之间的关系。新建好关系图之后,只需要把数据表中的图表拖动到面板中。那么如何表示这三个表之间的关系呢?我们都是到Reader表跟 Borrow是1对n的关系,Book表和 Borrow表示1对n的关系,而Reader表跟Book表示n对n的关系。这里以Reader表和Borrow表为例。选中Reader表,Reader表外边显示多个锚点拖动锚点至目标形状,如下图:就给Reader表和Borrow表建立了管理。当然,默认的关系是1对n的关系,当然我们也可以手动编辑关系。总结本文详细介绍了国产数据库建模软件CHINER的使用。