前一篇说了原理,软件架构本质上是绘制一幅复杂素描所打的草稿,我还说,如果你罩得住,可以不需要这个草稿。

但这只是“理论上”,我们写软件,基本上不是在写只有几千行的代码的小程序,而是写数千万行的大型程序。《道德经》说得好,大曰逝,逝曰远,远曰反。一件事情变大以后,原来近在眼前的事情看到的策略,方法,都会反过来。我举简单程序的例子,是反向化简模型,所谓“执古之道以御今之有。能知古始, 是谓道纪”,是让读者从原始的推演中重新理解我们面对复杂问题时的应该把握的判断模型,是给你讲“道纪”。所以,看我的文章,你不要看我的结论,你要看我的Pattern,我的结论在不同的情形下是不断会变的,我要给你讲的是Pattern,不是要给你讲结论。

我们很多工程师在没有经验的时候,想架构问题都会基于逻辑来想。但如果没有经验,这常常是错误的。 我前面举了个例子,我刚入行的时候(其实现在很多人还有这个误区),当我们发现需求做错了,实现和设计不一致的时候,我们都会做出一个判断:这是需求文档写得不够严谨,设计文档不接地气。这个判断方向基本上是缘木求鱼。我是认为干了好几年,还是抱这种心思的工程师,基本上架构设计水平也就到此为止了。因为你始终无法坚持要“守弱”这个基本原则,你不相信事实,而去相信你的理想了。你写了几年的程序,一直以来需求文档都不够严谨,设计文档一直不接地气,甚至从来没有改进过,你还不断相信,你有一天能写出“严谨”的文档?你完全被你的个人想象蒙蔽了眼睛,从来没有好好看过这个世界啊。

这个问题到底是什么?是工作量啊。整个软件,其实就是一组逻辑,每行软件代码,都是针对不同角度的的逻辑判断。而我们在控制这个软件的所有逻辑被建成以前。我们的逻辑量永远都是不足的啊,如果足了,你根本就不需要设计(包括架构设计)了,你已经拥有你的代码了。所以,构架设计是要在逻辑量不足(逻辑不严谨)的情况下对未来进行预判和控制。而你指望建设好所有的逻辑来解决这个问题?这么明显的逻辑死循环你都没有注意到吗?那你已经忘掉架构设计本来的工作是什么了。

就好比一个领导者,他的工作本应是告诉大家想什么方向走,保证团队能走目的地。你的工作照理说是研究情报,确认对整个团队影响最大的情报,在模凌两可的情况下强行选定方向等等。但这些事情他不去干,而跑去给团队做饭,去充当斥侯探路之类的,看起来很“亲民”,和团队打成一片,但他自己的本职工作呢?

领导者的本职工作是隐形的,是“无名”的,做好了饭,拿到了情报,这些都是有形的,选好方向,让饭做好了,让情报发挥作用,这些行动,并不直接可见,领导者想拿“名”,团队就会失去领导,团队就会失败,团队失败了,领导者也就无所谓名了,整个团队都会被历史淘汰。这就是为什么圣人无私才能成其私,放弃掉你的名,你才让整个团队拥有名,拥有整个团队的名,你才能有你的名。这就是作为领导者的大格局。

而架构师,就是设计团队的设计领导者。

写到这里,我看我还是得把这个链接放出来:《道德经》讲了什么?为什么它广受推崇? - in nek 的回答 。那么辛苦建那个逻辑空间,就是为了描述构架设计的时候,有很多基础概念可以用,否则,后面要描述那些具体技巧的时候,简直不知道应该怎么描述了。

所以,要接着看下去,读者还是看看那个链接吧。我后面会原来越多使用里面的概念的。

软甲架构设计软件_大型软件架构设计相关推荐

  1. 个性签名设计软件_佩服!我用Python设计了一个签名软件

    临近年末,大家都忙着签发礼品,写的一手好的签名,会让大家更有成就感,今天,小安就带领大家来设计一个基于tkinter+爬虫的签名设计软件,方便大家设计签名. 要设计这款软件,就需要了解tkinter与 ...

  2. 用计算机设计软件,平面设计中计算机设计软件的作用

    摘要:计算机平面设计在整个平面作品的设计中扮演着十分重要的角色,通过有效的计算机平面设计能够为人们提供更多的平面设计作品.为此,文章在阐述平面设计中计算机设计软件应用意义的基础上,为如何将计算机设计软 ...

  3. HTML5期末大作业:甜品店网站设计——美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品

    HTML5期末大作业:甜品店网站设计--美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品 常见网页设计作业题材有 个人. 美食. 公司 ...

  4. 软甲架构设计软件_软件架构设计

    导读 本文一文总结软件架构设计常用概念.原则与思想,包括面向对象六大原则,DID原则,ACID.CAP.BASE理论,中间层思想,缓存思想等. 面向对象设计六大原则 一 单一职责原则(SRP): 定义 ...

  5. 软甲架构设计软件_用什么工具画 软件架构设计图

    展开全部 UIDesigner是腾讯用户研究与体验设计部(CDC)设计研发的一款设计类软件,打造一款可以让62616964757a686964616fe58685e5aeb93133333761376 ...

  6. 软甲架构设计软件_几种常用软件架构设计指南

    几种常用软件架构设计指南 软件架构( software architecture )是一系列相关的抽象模式,用于指导大型 软件系统各个方面的设计. 软件架构是一个系统的草图. 软件架构描述的对象是 直 ...

  7. 软考高级-系统架构师-第五章软件架构设计

    本篇博文目录: 一.软件架构设计 1.软件架构的定义 2.体系结构设计(SA)与生命周期 (1) 需求分析阶段 (2) 设计阶段 (3) 实现阶段 (4) 构建组装阶段 (5) 部署阶段 (6) 后开 ...

  8. 基于AUTOSAR开发工具链的AUTOSAR软件实战开发-软件架构设计(一)

    按照需求划分软件功能模块和需求映射 前面介绍了基于工具链的开发流程,本节开始将针对开发流程中的各个环节展开详细介绍,首先从软件架构开始介绍,软件架构的前置输入是软件需求,当软件需求下发后,要制定相应的 ...

  9. uml活动图 各个功能的操作流程和分支_做软件架构设计,你不得不知道这些图...

    作为一名架构师,你设计的架构其实是要给很多人看的,包括公司领导.产品.开发.测试和运维,那么你该如何把你设计的架构展示给别人呢? 这就是Relax今天想跟大家聊的内容.大家还是不妨先花个两三分钟好好想 ...

最新文章

  1. linux中deb怎样安装
  2. nginx limit_rate突然限速失败
  3. java cloneable 用途_java中cloneable的使用
  4. 信息系统项目管理师:第8章:项目质量管理-章节真题+解析
  5. BugKuCTF WEB web2
  6. c语言 字符串分隔,c语言字符串分割–strtok | 逗号分隔-huangea的博客
  7. 【BZOJ3759】【cogs1603】饥饿游戏,博弈
  8. java 二叉树_拼多多Java开发1234面:二叉树+负载均衡+MySQL+Redis+高并发
  9. ffmpeg系列-协议操作解析-AVIOContext,URLContext,URLProtocol,HTTPContext
  10. Node.js:Node基础
  11. ddk开发 c语言,使用DDK提供的build进行编译驱动一点总结
  12. 【动画消消乐|CSS】083.纯CSS实现卡通齿轮效果
  13. 最好的python视频教程_比较好的python视频教程
  14. [SV]SystemVerilog Structured Procedures --- always_comb、always_ff、always_latch
  15. Google Paly 开发者账号需要注意的小细节
  16. keep跑步数据修改器_卖轻食、造手环,Keep你变了
  17. Chrome关闭密码检查弹窗:更改您的密码 某个网站或应用发生了数据泄露导致您的密码外泄
  18. 分水岭算法--语义分割
  19. 解决联想笔记本E40 安装VM虚拟机后每次启动都会导致电脑蓝屏问题
  20. 如何用html布天猫页面,天猫前端系列教材 (四十七)- 其他页面 - 登录页面

热门文章

  1. 单像空间后方交会(C语言)
  2. 由参数方程确定的函数的一阶导数与二阶导数
  3. excel中if多条件判断语句
  4. DirectX11 绘制字体
  5. 汇编学习教程:编译、连接、运行
  6. Windows 10资源管理器经常无故自动重启
  7. 5款Linux最佳照片管理软件
  8. jsp+ssm+mysql java实现的校园二手市场交易平台
  9. 第1天:基础入门-概念名词
  10. ClickHouse-入门及Linux单机安装