后端技术面试 38 讲
李智慧
同程艺龙交通首席架构师,前 Intel& 阿里架构师,《大型网站技术架构》作者
37373 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
不定期加餐 (1讲)
后端技术面试 38 讲
15
15
1.0x
00:00/00:00
登录|注册

09丨软件设计实践:如何使用UML完成一个设计文档?

详细设计阶段
概要设计阶段
需求分析阶段
详细设计阶段
需求分析阶段
需求分析阶段
概要设计阶段
概要设计阶段
不同阶段
需求分析阶段
详细设计阶段
详细设计阶段
概要设计阶段
需求分析阶段
活动图
状态图
用例图
部署图
组件图
序列图
类图
详细设计
概要设计
需求分析
总结
思考题
使用合适的UML模型构建一个设计文档
UML规范
软件开发阶段
4+1视图模型
为什么要建模
软件设计实践:如何使用UML完成一个设计文档?

该思维导图由 AI 生成,仅供参考

在上一篇文章中,我们讨论了为什么要建模,以及建模的 4+1 视图模型,4+1 视图模型很好地向我们展示了如何对一个软件的不同方面用不同的模型图进行建模与设计,以完整描述一个软件的业务场景与技术实现。但是软件开发是有阶段性的,在不同的开发阶段用不同的模型图描述业务场景与设计思路,在不同阶段输出不同的设计文档,对于现实的开发更有实践意义。
软件建模与设计过程可以拆分成需求分析、概要设计和详细设计三个阶段。UML 规范包含了十多种模型图,常用的有 7 种:类图、序列图、组件图、部署图、用例图、状态图和活动图。下面我们讨论如何画这 7 种模型图,以及如何在需求分析、概要设计、详细设计三个阶段使用这 7 种模型输出合适的设计文档。

类图

类图是最常见的 UML 图形,用来描述类的特性和类之间的静态关系。
一个类包含三个部分:类的名字、类的属性列表和类的方法列表。类之间有 6 种静态关系:关联、依赖、组合、聚合、继承、泛化。把相关的一组类及其关系用一张图画出来,就是类图。
类图主要是在详细设计阶段画,如果类图已经设计出来了,那么开发工程师只需要按照类图实现代码就可以了,只要类方法的逻辑不是太复杂,不同的工程师实现出来的代码几乎是一样的,这样可以保证软件的规范、统一。在实践中,我们通常不需要把一个软件所有的类都画出来,把核心的、有代表性的、有一定技术难度的类图画出来,一般就可以了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何使用UML进行软件建模和设计文档的编写。首先介绍了软件建模与设计过程的三个阶段:需求分析、概要设计和详细设计,并列举了常用的UML模型图。接着详细介绍了每种模型图的特点和在不同设计阶段的应用场景。强调了正确使用UML模型图表达设计意图,并指导如何组织成一套完整的设计文档,以指导开发并在团队内外达成共识。文章内容丰富,涵盖了软件设计的不同阶段如何使用正确的模型进行软件建模,为读者提供了全面的指导和建议。文章结尾提出了思考题,引发读者对于自身软件开发中是否使用UML建模的思考。文章内容丰富,适合需要了解UML建模和软件设计文档编写的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端技术面试 38 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(27)

  • 最新
  • 精选
  • To be is to do
    老师,可以推荐一下 mac上做UML,时序图的软件吗?

    作者回复: http://astah.net/ https://www.draw.io/

    2019-12-09
    5
    16
  • 睡浴缸的人
    以前做业务开发的时候被业务逼着走,没有什么意识。后来做独自坐通用模块时,感觉这样不行,看了点软件工程的书,慢慢开始画UML图进行设计,设计完后有时候写代码简直如尿奔~

    作者回复: 😁

    2020-01-17
    2
    6
  • golangboy
    老师, 1.设计模式的图例只适合画静态类图? 2.详细设计阶段是要确定软件的细节和逻辑的基本框架,用设计模式可以提高程序的扩展性,我这样理解对吗? 3.实际开发中,有很多都是那种需求都不明确,探索性的,随时要变,甚至推倒重来。像这种情况,我也不可能一开始就有全局的视野,有啥好的实践经验或者推荐?

    作者回复: 1 还可以画时序图 2 是的。不过有的设计模式在概要设计阶段就需要了,像策略模式,可能会影响整个系统的架构 3 越是随时要变的,越是更要有全局视野,不然变来变去迷失了。你可以先设计一个你认为的蓝图规划,然后随着变化调整你的设计。

    2019-12-10
    2
    6
  • Peter
    一直有个问题没搞清楚,就是关联关系和组合关系之间的关系区别是什么,我怎么觉得都是类A中包含一个成员变量类B

    作者回复: 站在业务视角看: 用户和订单关联,但是不能说用户由订单组成。但是订单可以由订单项组成。

    2021-06-19
    4
  • Seven.Lin澤耿
    我们会画图,但是没按照规范,应该是四不像,但是也能用😂

    作者回复: 👍

    2020-05-12
    3
  • 天天向上
    部署图主要用在概要设计阶段,请问有推荐的工具吗?

    作者回复: 画 UML 的工具,可以是很复杂的,用像 EA 这样的大型软件设计工具,不过是收费的,也可以是 draw.io 这样在线、免费的工具,一般来说,都建议先从简单的用起。

    2023-12-31归属地:浙江
  • Farewell丶
    "流程图也比较有普适性,可以在需求分析阶段描述业务流程,也可以在概要设计阶段描述子系统和组件的交互,还可以在详细设计阶段描述一个类方法内部的计算流程。" 应该是“活动图”,写错了。

    作者回复: 谢谢指正,尽快修改~

    2020-01-15
  • 台风骆骆
    本章学习总结: 1、基本上开发分为需求分析、概要设计、详细设计阶段。 2、常用的UML图有类图、时序图、活动图、用例图、组件图、部署图、状态图七种。 类图是用来描述类之间的关系以及类中包含的属性和方法的,可以在需求分析阶段的领域模型用简化的类图来表示,详细设计阶段详细描述类图。 时序图是用来描述类、组件、模块之间的调用关系的,可以在需求分析、概要设计、详细设计都用得到。 活动图则是表达了过程和业务逻辑的,有点像流程图,在三个阶段都可以应用。 用例图是用来表达用户与软件系统的交互,用来表达这个软件系统的功能需求。一般用于需求分析。 组件图是表达了各个组件之间的关系,一般是依赖关系,是静态的,如果要表达调用关系需要用时序图或活动图,一般用于概要设计阶段。 部署图是用于表达物理上面的软件部署情况,一般用于概要设计阶段。 状态图则是表达某个组件或某个类的状态迁移情况。可以用于详细设计和需求分析阶段。 3、不同阶段需要描述的东西不一样,用的图也不一样相同。
    2019-12-09
    15
  • Paul Shan
    我现在自己写代码基本不画图,主要因为写的软件不够复杂(Android开发)。 我画类图和时序图主要是用来分析别人写的代码,画得过程中往往能搞清楚代码的意图。
    2019-12-09
    11
  • 卡特
    小结一下 uml图主要有7类 我用的mac,工具astash 或者planuml 从需求分析,概要设计,详细设计依次画这些图 1,用例图 体现角色和软件系统的功能 2,活动图 体现核心流程 3, 状态图 体现核心状态变化 4,部署图 软件的物理结构 5,组件图 软件的模块结构 6,时序图 核心和逻辑 7,类图 领域模型和具体功能设计 可以比较好的为软件建模
    2020-02-15
    3
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部