步调员必知必会7种UML图(类图、序列图、组件图、部署图、用例图、状态图和 ...

打印 上一主题 下一主题

主题 1007|帖子 1007|积分 3021

众所周知,软件开辟是一个分阶段举行的过程。不同的开辟阶段需要使用不同的模型图来形貌业务场景和设计思绪,在不同的阶段输出不同的设计文档也是必不可少的,比方,在需求分析阶段需要输出领域模型和业务模型,在架构阶段需要输出物理架构设计,在详细设计阶段需要输出数据库设计等。如许做可以更好地实践软件开辟,并提高软件开辟的实用性。
软件建模与设计过程可以分为三个阶段:需求分析、架构设计和详细设计。在这三个阶段中,大量使用符合 UML 规范的模型图,其中常用的有 7 种,包罗类图、序列图、组件图、部署图、用例图、状态图和活动图。
在需求分析阶段,使用用例图和领域模型图形貌用户需求和业务场景。在架构设计阶段,使用组件图和部署图形貌软件体系的构成部分和部署情况。在详细设计阶段,使用类图、序列图和状态图形貌软件体系的实现细节。
下面我们将探究怎样绘制这 7 种模型图,以及怎样在不同阶段使用这些模型来天生相应的设计文档。
类图

类图是软件设计中使用最广泛的 UML 图形之一,用来形貌类的特性以及类之间的静态关系。在一个类图中,每个类都由三个部分构成:类名、属性列表和方法列表。
除了形貌类的根本特征,类图还用来表现类之间的关系,其中包罗六种静态关系:

  • 关联(Association):表现一个类对象与另一个类对象之间的关系,好比订单与客户之间的关系。
  • 依赖(Dependency):表现一个类对另一个类的使用或调用,好比客户下订单时需要使用订单类。
  • 组合(Composition):表现一种包罗关系,表现一个类对象包罗另一个类对象,好比一个订单包罗多个商品。
  • 聚合(Aggregation):也表现一种包罗关系,但是聚合关系中包罗的类对象可以被多个类共享,好比一个学校包罗多个班级。
  • 继承(Inheritance):表现一个类继承自另一个类,可以从父类中继承属性和方法,并且可以添加新的属性和方法。
  • 泛化(Generalization):与继承关系相似,但泛化关系可以用来表现更抽象的关系,好比多个类都实现了一个接口。
通过绘制类图,我们可以清楚地形貌一个软件体系中的类及其之间的关系,帮助开辟职员更好地明白软件体系的布局和功能。
在UML工具中把相关的一组类及其关系用一张图画出来,就是类图。

如上图所示,形貌的就是一个典型的责任链模式的实现类图。
类图主要是在 详细设计 阶段画,一旦类图设计完成,开辟工程师可以根据类图来实现代码。只要类方法的逻辑不是太复杂,不同工程师实现的代码几乎是一样的,这有利于保证软件的规范和同一性。在现实应用中,通常不需要画出所有类的类图,只需要画出核心、代表性、技术难度较高的类图即可。

除了在详细设计阶段绘制类图外,还可以在需求分析阶段使用类图来表现关键领域模型对象。在这个阶段中,我们不要将注意力会合在属性或活动上,而应该专注于辨认领域对象及其之间的关系。因此,可以使用简化的类图来形貌,只需要绘制类的名称和它们之间的关系即可。
如上所示形貌的是在需求分析阶段挖掘出SIM卡、运营商、手机、手机厂商等模型对象之间的关系。
序列图

类图之外,另一种常用的图形是序列图。
类图形貌类之间的静态关系,而序列图用于形貌参与者之间的动态调用关系。每个参与者都有一条垂直向下的生命线,该生命线用虚线表现。参与者之间的消息按照从上到下的顺序表现它们的调用顺序关系,这就是序列图这个词的来源。每个生命线都有一个激活条,它是图中的细长矩形条,只有在参与者活动时才是激活的。

通常使用序列图表现对象之间的交互,这些对象可以是类对象,也可以是更大的参与者,如组件、服务器、子体系等。总之,只要涉及到不同参与者之间的交互,都可以使用序列图,好比下面这张图就是业务分析阶段,体系建设后完成后的业务流程。

记住,在软件设计的不同阶段都可以使用序列图。
组件图

组件是比类更大粒度的设计元素,通常一个组件中包罗多个类。组件图有时与包图的用途相似,通常用于形貌物理组件,如JAR、DLL等。在实践中,我们更多地使用组件图举行模块设计。

组件图形貌组件之间的静态关系,主要是依赖关系。如果想要形貌组件之间的动态调用关系,可以使用组件序列图,以组件作为参与者,形貌组件之间的消息调用关系。
由于组件的粒度较大,通常用于形貌和设计软件的模块及其之间的关系。因此,在设计的早期阶段就需要画出组件图,一般用于架构设计阶段。
部署图

部署图形貌的是软件体系终极的物理部署情况,包罗需要部署的服务器数量、关键组件的部署位置等。它是软件体系终极呈现的物理蓝图,能够让客户、老板和工程师清楚地了解体系的终极运行状态,以及与现有体系和第三方服务器的关系。通过部署图,可以预估服务器和第三方软件的采购成本。
因此,部署图是整个软件设计模型中相称宏观的一种图,需要在设计早期就绘制。各方可以根据部署图讨论是否承认该方案,只有对部署图告竣共识,才气继续背面的细节设计。部署图主要用于架构设计阶段,并且与组件图要相互呼应。

用例图

用例图分为业务用例和体系用例,业务用例图主要体现在 业务分析阶段, 形貌一个承建体系的组织对外提供的本领,体系用例体现在需求分析阶段形貌体系对外提供的本领。

这张图中,左边是业务用例图,右边是体系用例图。虽然它们的画法相似,但它们本质上有很大的区别,具体可以查看我之前写的这篇文章。
图中的人形元素称为角色,角色可以是人也可以是其他体系。由于体系的功能可能很复杂,用例图可能仅包罗其中的一小部分功能,这些功能被画在一个矩形框内,这个矩形框是用例界限。矩形框里面的椭圆表现单个功能,它们可以相互依赖或需要扩展。由于用例图中的功能形貌相对简单,以是通常需要配以笔墨阐明以形成需求文档。
状态图

状态图用来展现单个对象生命周期中的状态变迁。
在业务体系中,许多紧张的领域对象都有相称复杂的状态变革,好比订单,它们可以有待付款、待稽核、待发货、待收货、交易关闭和交易完成等各种状态。
这些状态变革可以在用例图中用文本情势形貌,并随着各个用户的不同操作而改变。但是,使用这种方法形貌状态时,状态会分散到不同的地方,如许可能会导致开辟错误以及产品经理在设计时的困惑。
采用UML状态图可以有效地解决这些题目,由于它可以在一张图表中展示对象的整个生命周期以及各个状态和变迁之间的关系。好比下面的图表展示了一个订单从创建到交易完成的状态变革。

状态图要在需求分析阶段画,形貌状态变迁的逻辑关系,在详细设计阶段也要画,这个时候,状态要用枚举值表现,以指导具体的开辟。
活动图

活动图常用于形貌体系或业务流程中的动态活动。它可以清楚地展现从一个活动到另一个活动的控制流,描画出体系或业务流程的逻辑和流程,让开辟职员更好地了解整个体系的运作方式。
在活动图中,实心圆表现流程的开始,空心圆表现流程的结束,圆角矩形表现活动,菱形表现分支判定。这些符号的使用能够使活动图更加规范化和可读性,有助于提高体系开辟的效率和质量。

别的,活动图引入了一个紧张的概念——泳道。活动图可以根据活动的范围,将活动根据领域、体系和角色等划分到不同的泳道中,使流程界限更加清楚。
流程图也比较有普适性,可以在需求分析阶段形貌业务流程,也可以在架构设计阶段形貌子体系和组件的交互,还可以在详细设计阶段形貌一个类方法内部的盘算流程。
使用合适的 UML 模型构建一个设计文档

UML 模型图自己并不难掌握,但怎样在正确的场合下用适当的 UML 模型表达设计意图,形成一套清楚且详细的软件模型,并在团队表里告竣共识的设计文档则需要注意。
根据软件设计不同阶段的需要,我们可以使用不同的模型图举行建模。
需求分析阶段,我们可以使用用例图、活动图、时序图和简化的类图举行领域模型抽象和关系形貌。
架构设计阶段,通过组件图、组件时序图和部署图形貌体系物理蓝图和模块关系。
详细设计阶段,主要偏重于类图和类的时序图,而对于复杂的方法逻辑,可以使用方法的活动图举行形貌。
小结

掌握类图、时序图、组件图、部署图、用例图、状态图、活动图这七种UML模型图,根据现实场景,在需求分析、架构设计和详细设计阶段选择并奇妙应用对应的模型图,有助于有效地举行软件建模和体系设计,成为一个掌控大局、指导技术团队的优秀架构师。
要注意模型图的规范和注释,遵照定名规范,对模型元素举行定名,注释模型元素的关系和属性等,简洁明了。别的,UML模型图只是设计文档的一部分,需要与其他文档相结合,如需求文档、设计文档、测试文档等,形成一个完整的设计文档,指导软件开辟。
对于画UML的工具,有收费的专业软件设计工具像EA(Enterprise Architect) 、Astah和亿图,以及免费的在线工具好比draw.io,processon等,建议可以根据自身需要选择合适的工具,同时也建议从简单易用的工具入手。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表