后端技术面试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讲
登录|注册

08丨软件设计的方法论:软件为什么要建模?

李智慧 2019-12-06
我们开发的绝大多数软件都是用来解决现实问题的。通过计算机软件,可以用高效、自动化的方式去解决现实中低效的、手工的业务过程。
因此软件开发的本质就是在计算机的虚拟空间中根据现实需求创建一个新世界。阿里的工程师在创造一个“500 平方公里”的交易市场,百度的工程师在创造一个“一万层楼”的图书馆,新浪微博的工程师在创造“两亿份报纸”,腾讯的工程师在创造“数 10 亿个聊天茶室和棋牌室”。
现实世界纷繁复杂,庞大的软件系统也需要很多人合作,开发出众多的模块和代码。如何使软件系统准确反映现实世界的业务逻辑和需求?庞大的软件系统如何能在开发之初就使各个相关方对未来的软件蓝图有清晰的认知和认可,以便在开发过程中使不同工程师们能够有效合作,能够让软件的各个模块边界清晰、易于维护和部署?
这个由软件工程师创造出来的虚拟世界,是一个恢弘大气的罗马都城,还是一片垃圾遍地的棚户区,就看软件工程师如何设计它了,而软件设计的主要过程就是软件建模。

软件建模

所谓软件建模,就是为要开发的软件建造模型。模型是对客观存在的抽象,我们常说的数学建模,就是用数学公式作为模型,抽象表达事务的本质规律,比如著名的 ,就是质量能量转换的物理规律的数学模型。除了数学公式是模型,还有一些东西也是模型,比如地图,就是对地理空间的建模。各种图纸,机械装置的图纸、电子电路的图纸、建筑设计的图纸,也是对物理实体的建模。而软件,也可以通过各种图进行建模。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《后端技术面试38讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • 北天魔狼
    组织头脑风暴列出所有用户故事,根据用户故事业务关联划分领域模型,随后创建代码模型。这是我的理解结果,希望老师能予以点评
    2019-12-06
    7
  • vega
    关键是公司或者客户自己都不知道要什么吧……
    2019-12-08
    1
    2
  • delete is create
    希望老师举个具体的案例 来阐述建模,比如自己在开发什么软件什么功能的时候用到了建模这个方法 用了比不用强在哪里等等,太形而上的东西像我这样刚入行的菜鸟领悟不了0.0
    2019-12-07
    1
  • 许童童
    现在公司都采用敏捷开发,很少画UML画了,我们都知道这样不好,但却没有人站出来,可能是缺少一个架构师这样的角色吧。
    2019-12-06
    2
    1
  • 灰灰
    打卡
    2019-12-19
  • 靠人品去赢
    首先是技术选型,微服务,分布式,分流控制都要考虑,保证以后面对更多的挑战。
    第二是业务分析,不要陷入当前的业务,在更高的一个高度进行抽象,保证以后业务的可扩展性,现在不流行DDD吗
    第三架构设计,确定大体的结构
    最后是技代码设计,做到服务之间解耦
    2019-12-18
  • Zend
    没有统一的沟通语言,在软件设计的初期勾勒出软件模型,在开发的过程中真的扯皮比较多,真的很缺架构师,但为什么公司就没有这样一个角色,有时候出现连产品经理都没有,只有技术总监几句话,参照一下竞品,这样团队合作起来真的很麻烦
    2019-12-11
  • 探索无止境
    感觉可以两篇的内容放在一篇来讲解
    2019-12-07
  • Paul Shan
    我想问一下李老师,像unix ,linux,等超大型的软件系统有没有这样的4+1的建模文档,多谢!

    作者回复: 我不是很确定,Unix和Linux的情况是很不一样的,根据我在Apache开源社区开发的经验,大概率推测Linux是没有的。开源软件极少看到有完整软件建模的文档的,大部分关于设计的说明会通过论文的方式发表,里面也很少有常规意义上的软件模型。

    2019-12-06
收起评论
9
返回
顶部