你会使用UML完成一个设计文档吗?

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

软件建模与设计过程可以拆分成需求分析、概要设计和详细设计三个阶段。UML规范包含了十多种模型图常用的有7种类图、序列图、组件图、部署图、用例图、状态图和活动图本篇笔记重点探讨如何使用这七种模型图在需求分析、概要设计、详细设计中输出合适的设计文档。

类图

类图用来表述类的特性和类之间的静态关系。

一个类包含三个部分类的名字、类的属性列表和类的方法列表。类之间的静态关系有6种关联、依赖、组合、聚合、继承、泛化。把相关的一组类及其关系用一张图画出来就是类图。

类图主要是在详细设计阶段画图设计出类图开发工程师就可以按照类图实现代码只要类方法的逻辑不是太复杂不同的工程师实现出来的代码几乎是一样的这样就可以保证软件的规范、统一。在日常开发中不需要画出所有的类图把核心的、有代表性和有技术难度的类图画出来即可。

序列图

序列图主要用来描述参与者之间的动态调用关系。

每个参与者有一条垂直向下的生命线这条线用虚线表示而参与者之间的消息从上到下表示其调用的前后顺序关系这正是序列图这个词的由来每个生命线都有一个激活条只有参与者活动的时候才是激活的。

序列图通常用于表示对象之间的交互这个对象可以是类对象也可以是更大粒度的参与者比如组件、服务器、子系统等等只要是描述不同参与者之间交互的都可以使用序列图。

组件图

组件是比类更大的设计元素一个组件中通常包含很多个类。组件图有的时候和包图的用途比较接近组件图通常用来描述一个物理上的组件。在进行模块设计的时候更多的是用组件图。

组件图描述的是组件之间的静态关系主要是依赖关系不能描述组件之间的动态调用关系如果要描述组件之间的调用关系可以使用序列图。

部署图

部署图描述的是软件系统的最终部署情况比如使用多少服务器关键组件都部署在哪些服务器上。

部署图是描述软件系统最终物理呈现的蓝图根据部署图可以让客户、老板、工程师清晰了解到最终运行的系统在物理上是什么样子根据部署图可以估算服务器和第三方软件的采购成本。部署图主要用于概要设计阶段。

用例图

用例图主要用在需求分析阶段通过反映用户和软件系统的交互描述系统的功能需求。

image

图中小人形象的元素被称为角色角色可以是人也可以是其他系统。对于复杂的功能系统一张用例图只能包含其中的一小部分所以这些功能被一个矩形框框起来矩形框是用例的边界框中的椭圆表示一个个功能。用例图中功能描述的比较简单通常还需要对用例图配以文字说明形成需求文档。用例图一般在需求分析阶段使用。

状态图

状态图是用来展示单个对象生命周期的状态变迁业务系统中很多重要的领域对象都有比较复杂的状态变迁比如账号有创建状态、激活状态、冻结状态、欠费状态等等各种状态。此外用户、订单、商品、红包这些常见的领域模型都有多种状态。

这些状态的变迁描述可以在用例图中用文字描述随着角色的各种操作而改变但是用这种方式描述状态散乱在各处不要说开发的时候容易搞错就是产品经理自己在设计的时候也容易搞错对象的状态变迁。

举例门的三种状态开 opened、关 closed 和锁 locked用状态图展示就是

image

状态图在需求分析阶段画主要是描述状态变迁的逻辑关系在设计阶段画时状态用剧吐的枚举表示以指导具体的开发。

活动图

活动图主要是描述过程逻辑也业务流程UML中没有流程图活动图大多数时候都是当流程图在用。实心圆代表流程开始空心圆代表流程结束圆角矩形表示活动菱形表示分支判断。活动图引入了一个重要的概念——泳道。活动图可以根据活动的范围将活动根据领域、系统和角色等划分到不同的泳道中使流程边界更加清晰。

活动图可以在需求分析阶段描述业务流程也可以在概要设计描述子系统和组件的交互在详细设计阶段描述一个类方法内部的计算流程等待比较具有普适性。

使用合适的UML模型构建一个设计文档

UML模型图单拆开看都比较简单难的是在合适的场合使用正确的UML模型表达设计意图形成一套完整的软件设计模型进而组织成一个层次分明即可指导开发又可以在团队内外达成共识的设计文档。

梳理各个阶段如何使用正确的模型进行软件建模根据系统具体分析也每次设计也不是需要把所有的模型都给用一遍能清晰表达出要设计思想即可。

  • 需求分析阶段可以使用用例图来描述系统的功能与使用场景可以通过活动图来描述关键的业务流程可以用时序图来描述新系统和原来子系统的调用关系可以用简化的类图来进行领域模型抽象并描述核心领域对象间的关系可以用状态图来描述对象内部的复杂状态变化。
  • 概要设计阶段通过部署图描述系统最终的物理蓝图通过组件图以及组件时序图设计软件主要模块及其关系可以用组件活动图描述组件间的流程逻辑。
  • 详细设计主要输出类图和类的时序图来指导最终的代码开发如果类的方法内部有很复杂的逻辑可以画出方法的活动图进行描述。

总结

主要学习了UML建模中7中模型图具体是什么怎么用用在哪些阶段解决哪些问题搞好系统设计。

此文章为2月Day01学习笔记内容来源于极客时间《后端技术面试 38 讲》推荐该课程

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6