李智慧 · 高并发架构实战课
李智慧
同程艺龙交通首席架构师,前 Intel & 阿里架构师,《大型网站技术架构》作者
23286 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 26 讲
李智慧 · 高并发架构实战课
15
15
1.0x
00:00/00:00
登录|注册

01 | 软件建模与文档:架构师怎样绘制系统架构蓝图?

绘制部署图
绘制用例图
活动图(方法逻辑)
类时序图
类图
组件活动图
组件时序图
组件图
部署图
状态图
类图(简化)
时序图
活动图
用例图
活动图
状态图
用例图
部署图
组件图
时序图
类图
设计淘宝早期系统架构
架构文档:不同相关方需不同模型图
架构元素:服务器、组件、类、消息、用例、状态
详细设计
概要设计
需求分析
文档组成:软件模型 + 文字说明
描绘软件蓝图
阐释软件设计诉求
常用UML图
使用UML工具进行建模
明确开发模块和依赖关系
控制系统架构和进展
抽象软件系统的特征和组成
保证软件质量和团队协作
确定设计满足用户需求
输出工作成果
设计软件架构
思考题
架构与相关人员
设计阶段与UML模型应用
软件设计文档
软件设计方法
软件建模
架构师的工作
软件建模与文档

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

你好,我是李智慧。
我在开篇词中说过,我们课程中的一系列软件架构设计是用设计文档的形式呈现的。所以,在拆解一个个案例之前,我们先来了解一些关于软件设计文档的基础知识,这样你在学习后面的具体案例时,就能更加清楚地理解文档是基于什么方式来组织的了。
首先,请你设想这样一个场景:如果公司安排你做架构师,要你在项目开发前期进行软件架构设计,你该如何开展你的工作?如何输出你的工作成果?如何确定你的设计是否满足用户需求?你是否有把握最后交付的软件是满足要求的?是否有把握让团队每个工程师清楚自己的职责范围并有效地完成开发工作……
这些问题其实都是软件开发管理与技术架构的核心诉求,而架构师的核心工作就是做好软件设计,解决这些诉求。这些问题搞定了,软件的开发过程和结果也就都得到了保证。那怎么实现这些诉求呢?我们主要的手段就是软件建模,以及将这些软件模型组织成一篇有价值的软件设计文档

软件建模

所谓软件建模,就是为要开发的软件建造模型。
模型是对客观存在的抽象,例如著名的物理学公式 ,就是质量能量转换的物理规律的数学模型。除了物理学公式以外,还有一些东西也是模型,比如地图是对地理空间的建模;机械装置、电子电路、建筑设计的各种图纸是对物理实体的建模。而软件,也可以通过各种图进行建模。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

软件建模与文档在系统架构设计中扮演着关键角色。通过软件建模,架构师可以利用UML工具绘制类图、时序图、组件图等,清晰描述软件系统的静态和动态关系,从而实现软件设计的可控性和透明度。软件设计文档则是架构师的主要成果,通过软件模型描述系统的完整蓝图,包括需求分析、概要设计和详细设计三个阶段。不同阶段使用不同的UML模型进行建模,并配以文字说明,构成了完整的软件设计文档。设计文档的撰写需要考虑不同阅读者的关注点,如客户、测试人员、开发人员等,以确保传达架构师的设计意图。总体而言,软件设计是在软件开发之前对业务问题和系统进行思考,并通过软件模型表达出来的过程,需要架构师具备构建蓝图并付诸实践的能力。文章还提到了关于架构的架构图和方法论的重要性,以及对读者提出了一个思考题,引发读者思考和探讨。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《李智慧 · 高并发架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • 术子米德
    🤔☕️🤔☕️🤔 * 📖:架构师的核心工作是软件设计,主要手段是软件建模,组织为有价值的软件设计文档 * 🤔:架构师,开展架构活动,开展软件设计,这两句话似乎都说得通,但似乎都没有说到点子上,有点正确的废话感。老师能否对于架构师在做的事情,跟软件工程师在做的事情,都存在所谓的架构活动,或者所谓的软件设计,这之间有什么明显的差别嘛,或者说这之间有本质差别嘛?这个挺困惑到我。 * 🤔:架构师最终要把工作成果组织为有价值的设计文档,这个“有价值”在课程里并没有充分阐释,老师能否就何谓有价值的设计,或者说如何度量有价值的设计,给更多些指示嘛?或者能否给些指导,哪些文章或书籍,有专门开展这方面的论述。

    作者回复: 1 架构师的核心产出是设计文档,工程师的核心产出是代码。当然架构师也需要写代码,工程师也可以做架构,当架构师写代码的时候,他的角色就是工程师,当工程师做架构的时候,他的角色就是架构师。所以,架构师是一个角色,而不是一个职位,当你承担架构设计这个角色,以产出架构设计文档作为你的核心产出的时候,你就是架构师。 2 这篇专栏中有一张架构的架构图,架构设计文档的价值是相关人能否从架构文档中得到自己想要的信息。文中多次写到,老板和客户看你的文档能否知道未来这个系统长什么样,需要多少台服务器。工程师看你的文档,能否知道未来开发怎么做,模块有哪些。文档就是蓝图,在工作没有开始的时候,大家就知道未来的工作该怎么做,做出来的东西是什么样。

    2022-02-21
    13
  • Geek_862694
    UML绘图软件有推荐吗

    编辑回复: 老师在思考题里提到的www.draw.io,或者亿图图示。都可以试一试哦

    2022-02-17
    3
    6
  • 学斌
    时序图与活动图感觉很像,总会混淆。请问下老师两者的区别与使用场景

    作者回复: 两个图样子长得很不一样,看起来不会混淆。 应用场景中,如果关注对象间交互,用时序图;如果关注一个业务的流程,用活动图。比如,描述一个处理逻辑的分支判断,不涉及到多个对象的交互,那就只能用活动图。

    2022-02-22
    4
  • zhaozp
    老师,各种图形的绘图工具 能分享下吗?

    作者回复: 亿图

    2022-04-17
    2
  • Y024
    这么多内容,具体怎么组织,是否有模板/样例,可以参考下?也能有比较好的感官认知。

    编辑回复: 有示例文章,我联系您

    2022-02-16
    8
    2
  • 空海扎西
    作者的时序图 图例, 生命线是实线.但讲的是虚线. 容易让初学晕头.

    作者回复: 谢谢提醒,不同UML绘图软件虚实线不同,编辑的时候换了图导致文图不符。 删掉虚实线的说明,不重要。

    2022-04-20
    1
  • 学员5
    请问老师,接口设计和数据库表的设计是在详细设计阶段吗?用什么UML图画呢,或者有更好的工具表示吗?

    作者回复: 是的,接口设计和库表设计是在详细设计阶段。 接口设计一般就是请求响应参数描述,不需要画图,而且因为变化比较频繁,建议单独写一个《接口设计文档》。库表设计可以用逻辑数据模型或者物理数据模型,不过这些模型UML不支持,需要使用其他建模工具,具体画法可以参考网盘设计一文

    2022-03-26
    1
  • 冬天的树
    有个疑问就是,比如两周一个迭代需求,是不是每个迭代都需要这设计文档?还是在一开始的时候就把挑选核心的做需求分析,概要和详设。系统太大全部类图画出来工程就大了

    作者回复: 迭代需求如果只是在原有设计方案上修改、扩展一些小的功能,我认为不需要做设计。 文中的建议的设计文档是整个系统的设计,在立项的时候进行的设计,系统迭代维护的过程中,如果有涉及到架构重构、或者影响到架构的较大的新增特性开发,可以在原来的架构文档中进行修改。 类图挑选有代表性的画出来就可以了,如果都是CRUD,没必要都画。

    2022-02-23
    3
    1
  • 日月
    多长时间更新一次呀

    编辑回复: 每周一、三、五各更新一篇正文~

    2022-02-16
    1
  • xmlu
    样例文档,在哪领取呀?

    作者回复: 本专栏所有设计案例都是样例文档

    2022-09-29归属地:北京
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部