后端技术面试38讲
李智慧
同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者
立即订阅
3682 人已学习
课程目录
已更新 16 讲 / 共 38 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 掌握软件开发技术的第一性原理
免费
软件的基础原理 (8讲)
01丨程序运行原理:程序是如何运行又是如何崩溃的?
02丨数据结构原理:Hash表的时间复杂度为什么是O(1)?
03丨Java虚拟机原理:JVM为什么被称为机器(machine)?
04丨网络编程原理:一个字符的互联网之旅
05丨文件系统原理:如何用1分钟遍历一个100TB的文件?
06丨数据库原理:为什么PrepareStatement性能更好更安全?
07丨编程语言原理:面向对象编程是编程的终极形态吗?
答疑丨Java Web程序的运行时环境到底是怎样的?
软件的设计原理 (6讲)
08丨软件设计的方法论:软件为什么要建模?
09丨软件设计实践:如何使用UML完成一个设计文档?
10 | 软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?
11丨软件设计的开闭原则:如何不修改代码却能实现需求变更?
12 | 软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?
13丨软件设计的里氏替换原则:正方形可以继承长方形吗?
不定期加餐 (1讲)
加餐 | 软件设计文档示例模板
后端技术面试38讲
登录|注册

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

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

类图

类图是最常见的 UML 图形,用来描述类的特性和类之间的静态关系。
一个类包含三个部分:类的名字、类的属性列表和类的方法列表。类之间有 6 种静态关系:关联、依赖、组合、聚合、继承、泛化。把相关的一组类及其关系用一张图画出来,就是类图。
类图主要是在详细设计阶段画,如果类图已经设计出来了,那么开发工程师只需要按照类图实现代码就可以了,只要类方法的逻辑不是太复杂,不同的工程师实现出来的代码几乎是一样的,这样可以保证软件的规范、统一。在实践中,我们通常不需要把一个软件所有的类都画出来,把核心的、有代表性的、有一定技术难度的类图画出来,一般就可以了。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《后端技术面试38讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

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

    作者回复: http://astah.net/

    https://www.draw.io/

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

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

    2019-12-10
    1
  • Heidi
    计算机类专业大一大二内容
    2019-12-09
    1
    1
  • Paul Shan
    我现在自己写代码基本不画图,主要因为写的软件不够复杂(Android开发)。
    我画类图和时序图主要是用来分析别人写的代码,画得过程中往往能搞清楚代码的意图。
    2019-12-09
    1
  • 灰灰
    打卡
    2019-12-19
  • 靠人品去赢
    这个我最常用序列图设计功能和UML设计数据库来着。。。。
    总算有一份把把UML说的全一点文章了,最开始不怎么画图,但是设计到一个稍微复杂点的和别的系统有交互的功能从0到1,画一下序列图什么确实有帮助。把这个过程能梳理清楚一些,比直接写代码要头脑更清楚。
    2019-12-18
  • 秦凯
    接触到的项目基本都没有这样全面可以窥探系统全貌的架构设计文档。而且实际工作中,项目组小伙伴们接到各自的需求都是在各自的点上做开发,很少从面或体上面去考虑需求、设计和实现,这样就导致判断分支、冗余代码、不必要的复杂逻辑越来越多。大家有没有好的办法走出这种困境?
    2019-12-09
    1
  • 许童童
    登录了下 draw.io 确实是一个画图利器,业务中如果涉及到很复杂的功能需求,确实是需要画出UML图的,团队基于UML很容易达成共识,还可以指导开发。
    2019-12-09
  • 台风骆骆
    本章学习总结:
    1、基本上开发分为需求分析、概要设计、详细设计阶段。
    2、常用的UML图有类图、时序图、活动图、用例图、组件图、部署图、状态图七种。
         类图是用来描述类之间的关系以及类中包含的属性和方法的,可以在需求分析阶段的领域模型用简化的类图来表示,详细设计阶段详细描述类图。
         时序图是用来描述类、组件、模块之间的调用关系的,可以在需求分析、概要设计、详细设计都用得到。
         活动图则是表达了过程和业务逻辑的,有点像流程图,在三个阶段都可以应用。
         用例图是用来表达用户与软件系统的交互,用来表达这个软件系统的功能需求。一般用于需求分析。
         组件图是表达了各个组件之间的关系,一般是依赖关系,是静态的,如果要表达调用关系需要用时序图或活动图,一般用于概要设计阶段。
         部署图是用于表达物理上面的软件部署情况,一般用于概要设计阶段。
         状态图则是表达某个组件或某个类的状态迁移情况。可以用于详细设计和需求分析阶段。
    3、不同阶段需要描述的东西不一样,用的图也不一样相同。
    2019-12-09
收起评论
9
返回
顶部